diff --git a/.HA_VERSION b/.HA_VERSION index 1bdb457..74e4adb 100644 --- a/.HA_VERSION +++ b/.HA_VERSION @@ -1 +1 @@ -2025.10.4 \ No newline at end of file +2025.12.2 \ No newline at end of file diff --git a/.ha_run.lock b/.ha_run.lock index 07fc1c2..ebc762d 100644 --- a/.ha_run.lock +++ b/.ha_run.lock @@ -1 +1 @@ -{"pid": 68, "version": 1, "ha_version": "2025.10.4", "start_ts": 1764005948.2089655} \ No newline at end of file +{"pid": 68, "version": 1, "ha_version": "2025.12.2", "start_ts": 1765482884.5000265} \ No newline at end of file diff --git a/binary_sensors.yaml b/binary_sensors.yaml index cad36e2..c7b19de 100644 --- a/binary_sensors.yaml +++ b/binary_sensors.yaml @@ -1,14 +1,17 @@ ---- +# --- +# IMPORTANT NOTE: all sensors here having templates have been migrated/fixed to template.yaml as per Deprecation of platform: Template +# #### Return true if current time is within from and to time -- platform: template - sensors: - dont_disturb_nighttime: - # all variables below (excluding hour & minute) hold UTC times converted to timestamps (int) - # as internally HA times are in UTC - # nothe that you have to have sensor.time_utc configured - unique_id: dont_disturb_nighttime - value_template: > - {% set from = state_attr('input_datetime.dont_disturb_nighttime_from','timestamp') %} - {% set to = state_attr('input_datetime.dont_disturb_nighttime_to','timestamp') %} - {% set cur = ( now().hour * 3600 + now().minute * 60 ) %} - {{ (cur < to or from <= cur) if from > to else from <= cur < to }} +# - platform: template +# sensors: +# dont_disturb_nighttime: +# # all variables below (excluding hour & minute) hold UTC times converted to timestamps (int) +# # as internally HA times are in UTC +# # nothe that you have to have sensor.time_utc configured +# unique_id: dont_disturb_nighttime +# value_template: > +# {% set from = state_attr('input_datetime.dont_disturb_nighttime_from','timestamp') %} +# {% set to = state_attr('input_datetime.dont_disturb_nighttime_to','timestamp') %} +# {% set cur = ( now().hour * 3600 + now().minute * 60 ) %} +# {{ (cur < to or from <= cur) if from > to else from <= cur < to }} + diff --git a/sensors.yaml b/sensors.yaml index 0465c1e..56dab08 100644 --- a/sensors.yaml +++ b/sensors.yaml @@ -1,59 +1,46 @@ ---- -#### Scala-Taverna motion custom Sensor -- platform: template - sensors: - scala_taverna_motion: - unique_id: scala_taverna_motion - friendly_name: Scala Taverna Motion Sensor - value_template: >- - {% if states('binary_sensor.presenza_bassa_scala_taverna_occupancy') == 'on' or states('binary_sensor.presenza_alta_scala_taverna_occupancy') == 'on' %} - on - {% else %} - off - {% endif %} - icon_template: mdi:motion-sensor +# --- +# IMPORTANT NOTE: all sensors here having templates have been migrated/fixed to template.yaml as per Deprecation of platform: Template - evcharge_total_power: - unique_id: evcharge_total_power - friendly_name: EVcharge total power - unit_of_measurement: "kW" - value_template: >- - {{ ( ( (states('sensor.evcharge_front_power') | float) + (states('sensor.evcharge_back_power') | float) ) / 1000 ) }} +# - platform: template +# sensors: +# evcharge_total_power: +# unique_id: evcharge_total_power +# friendly_name: EVcharge total power +# unit_of_measurement: "kW" +# value_template: >- +# {{ ( ( (states('sensor.evcharge_front_power') | float) + (states('sensor.evcharge_back_power') | float) ) / 1000 ) }} +# hp_power_kw: +# unique_id: hp_power_kw +# friendly_name: Heating Pump power +# unit_of_measurement: "kW" +# value_template: >- +# {{ ( (states('sensor.hp_power') | float ) / 1000 ) }} +# home_only_power: +# unique_id: home_only_power +# unit_of_measurement: "kW" +# friendly_name: Home Power without HP Pump and EVcharge +# value_template: >- +# {{ (states('sensor.pw_load_power') | float) - (states('sensor.evcharge_total_power') | float) - ((states('sensor.hp_power') | float ) / 1000) }} +# ev_heat_power: +# unique_id: ev_heat_power +# unit_of_measurement: "kW" +# friendly_name: HP Pump and EVcharge Power +# value_template: >- +# {{ (states('sensor.evcharge_total_power') | float) + ((states('sensor.hp_power') | float ) / 1000) }} +# entities_count: +# friendly_name: "Number of Entities" +# value_template: >- +# {{ states | rejectattr('state', 'eq', 'unavailable') | list | count}} +# na_entities_count: +# friendly_name: "Number of NA Entities" +# value_template: >- +# {{ states | selectattr('state', 'eq', 'unavailable') | map(attribute='entity_id') | list | count }} +# holiday: +# friendly_name: "Holiday" +# value_template: >- +# {% if states.calendar.holidays_in_italy.state == 'on' %} +# {{ states.calendar.holidays_in_italy.attributes.message }} +# {% else %} +# none +# {% endif %} - hp_power_kw: - unique_id: hp_power_kw - friendly_name: Heating Pump power - unit_of_measurement: "kW" - value_template: >- - {{ ( (states('sensor.hp_power') | float ) / 1000 ) }} - - home_only_power: - unique_id: home_only_power - unit_of_measurement: "kW" - friendly_name: Home Power without HP Pump and EVcharge - value_template: >- - {{ (states('sensor.pw_load_power') | float) - (states('sensor.evcharge_total_power') | float) - ((states('sensor.hp_power') | float ) / 1000) }} - - ev_heat_power: - unique_id: ev_heat_power - unit_of_measurement: "kW" - friendly_name: HP Pump and EVcharge Power - value_template: >- - {{ (states('sensor.evcharge_total_power') | float) + ((states('sensor.hp_power') | float ) / 1000) }} - - entities_count: - friendly_name: "Number of Entities" - value_template: >- - {{ states | rejectattr('state', 'eq', 'unavailable') | list | count}} - na_entities_count: - friendly_name: "Number of NA Entities" - value_template: >- - {{ states | selectattr('state', 'eq', 'unavailable') | map(attribute='entity_id') | list | count }} - holiday: - friendly_name: "Holiday" - value_template: >- - {% if states.calendar.holidays_in_italy.state == 'on' %} - {{ states.calendar.holidays_in_italy.attributes.message }} - {% else %} - none - {% endif %} diff --git a/templates.yaml b/templates.yaml index d9772a5..deaf672 100644 --- a/templates.yaml +++ b/templates.yaml @@ -1,5 +1,5 @@ +--- # Storage for Bubble Card Modules - - trigger: - trigger: event event_type: bubble_card_update_modules @@ -10,3 +10,58 @@ attributes: modules: "{{ trigger.event.data.modules }}" last_updated: "{{ trigger.event.data.last_updated }}" + +#### Return true if current time is within from and to time +- binary_sensor: + - unique_id: dont_disturb_nighttime + default_entity_id: binary_sensor.dont_disturb_nighttime + state: + "{% set from = state_attr('input_datetime.dont_disturb_nighttime_from','timestamp') + %} {% set to = state_attr('input_datetime.dont_disturb_nighttime_to','timestamp') + %} {% set cur = ( now().hour * 3600 + now().minute * 60 ) %} {{ (cur < to or + from <= cur) if from > to else from <= cur < to }}" + name: dont_disturb_nighttime + +###### power sensors (Essential for all dashboards) +- sensor: + - unique_id: evcharge_total_power + unit_of_measurement: kW + default_entity_id: sensor.evcharge_total_power + name: EVcharge total power + state: "{{ ( ( (states('sensor.evcharge_front_power') | float) + (states('sensor.evcharge_back_power') | float) ) / 1000 ) }}" + +- sensor: + - unique_id: hp_power_kw + unit_of_measurement: kW + default_entity_id: sensor.hp_power_kw + name: Heating Pump power + state: "{{ ( (states('sensor.hp_power') | float ) / 1000 ) }}" + +- sensor: + - unique_id: home_only_power + unit_of_measurement: kW + default_entity_id: sensor.home_only_power + name: Home Power without HP Pump and EVcharge + state: "{{ (states('sensor.pw_load_power') | float) - (states('sensor.evcharge_total_power') | float) - ((states('sensor.hp_power') | float ) / 1000) }}" + +- sensor: + - unique_id: ev_heat_power + unit_of_measurement: kW + default_entity_id: sensor.ev_heat_power + name: HP Pump and EVcharge Power + state: "{{ (states('sensor.evcharge_total_power') | float) + ((states('sensor.hp_power') | float ) / 1000) }}" + +- sensor: + - default_entity_id: sensor.entities_count + name: Number of Entities + state: "{{ states | rejectattr('state', 'eq', 'unavailable') | list | count}}" + +- sensor: + - default_entity_id: sensor.na_entities_count + name: Number of NA Entities + state: "{{ states | selectattr('state', 'eq', 'unavailable') | map(attribute='entity_id') | list | count }}" + +- sensor: + - default_entity_id: sensor.holiday + name: Holiday + state: "{% if states.calendar.holidays_in_italy.state == 'on' %} {{ states.calendar.holidays_in_italy.attributes.message }} {% else %} none {% endif %}"