diff --git a/template.yaml b/template.yaml index 313a591..a4f9dbe 100644 --- a/template.yaml +++ b/template.yaml @@ -54,25 +54,25 @@ unit_of_measurement: "W" icon: mdi:flash state: > - {% set total = states('sensor.netzleistung') | float %} - {% set solar = states('sensor.balkonkraftwerk_power') | float %} - {% set raumduft = states('sensor.flur_raumduft_power') | float %} - {% set keller = states('sensor.keller_power') | float %} - {% set anrichte = states('sensor.kuche_anrichte_power') | float %} - {% set musik = states('sensor.kuche_musik_power') | float %} - {% set bett = states('sensor.schlafzimmer_bett_power') | float %} - {% set heimkino_sz = states('sensor.schlafzimmer_heimkino_power') | float %} - {% set deko = states('sensor.schreibtisch_deko_power') | float %} - {% set schreibtisch = states('sensor.schreibtisch_power') | float %} - {% set serverraum = states('sensor.serverraum_power') | float %} - {% set heimkino_wz = states('sensor.wohnzimmer_heimkino_power') | float %} - {% set spieleschrank = states('sensor.wohnzimmer_spieleschrank_power') | float %} - {% set kuehlschrank = states('sensor.tz3000_ww6drja5_ts011f_leistung') | float %} - {% set kaffeemaschine = states('sensor.kaffeemaschine_leistung_2') | float %} - {% set waeschetrockner = states('sensor.ikea_of_sweden_inspelning_smart_plug_leistung') | float %} - {% set waschmaschine = states('sensor.waschmaschine_leistung') | float %} - {% set arcade = states('sensor.arcade_automat_leistung') | float %} - {% set spuelmaschine = states('sensor.spulmaschine_leistung') | float %} + {% set total = states('sensor.netzleistung') | float(0) %} + {% set solar = states('sensor.balkonkraftwerk_power') | float(0) %} + {% set raumduft = states('sensor.flur_raumduft_power') | float(0) %} + {% set keller = states('sensor.keller_power') | float(0) %} + {% set anrichte = states('sensor.kuche_anrichte_power') | float(0) %} + {% set musik = states('sensor.kuche_musik_power') | float(0) %} + {% set bett = states('sensor.schlafzimmer_bett_power') | float(0) %} + {% set heimkino_sz = states('sensor.schlafzimmer_heimkino_power') | float(0) %} + {% set deko = states('sensor.schreibtisch_deko_power') | float(0) %} + {% set schreibtisch = states('sensor.schreibtisch_power') | float(0) %} + {% set serverraum = states('sensor.serverraum_power') | float(0) %} + {% set heimkino_wz = states('sensor.wohnzimmer_heimkino_power') | float(0) %} + {% set spieleschrank = states('sensor.wohnzimmer_spieleschrank_power') | float(0) %} + {% set kuehlschrank = states('sensor.tz3000_ww6drja5_ts011f_leistung') | float(0) %} + {% set kaffeemaschine = states('sensor.kaffeemaschine_leistung_2') | float(0) %} + {% set waeschetrockner = states('sensor.ikea_of_sweden_inspelning_smart_plug_leistung') | float(0) %} + {% set waschmaschine = states('sensor.waschmaschine_leistung') | float(0) %} + {% set arcade = states('sensor.arcade_automat_leistung') | float(0) %} + {% set spuelmaschine = states('sensor.spulmaschine_leistung') | float(0) %} {{ (total + solar - raumduft - keller - musik - bett - heimkino_sz - deko - schreibtisch - serverraum - heimkino_wz - spieleschrank - kuehlschrank - kaffeemaschine - waeschetrockner - waschmaschine - arcade - spuelmaschine) | round(1) }} device_class: power state_class: measurement @@ -86,11 +86,8 @@ unique_id: '2385816278013' unit_of_measurement: 'W' state: > - {% if (states('sensor.line_power_channel_a_power')|float + states('sensor.line_power_channel_b_power')|float + states('sensor.line_power_channel_c_power')|float) > 0 %} - {{ (states('sensor.line_power_channel_a_power')|float + states('sensor.line_power_channel_b_power')|float + states('sensor.line_power_channel_c_power')|float)|round(1) }} - {% else %} - {{ 0 }} - {% endif %} + {% set v = (states('sensor.line_power_channel_a_power')|float(0) + states('sensor.line_power_channel_b_power')|float(0) + states('sensor.line_power_channel_c_power')|float(0)) %} + {% if v > 0 %}{{ v | round(1) }}{% else %}0{% endif %} device_class: power state_class: measurement icon: mdi:transmission-tower-export @@ -102,11 +99,8 @@ unique_id: '9143524256421' unit_of_measurement: 'W' state: > - {% if (states('sensor.line_power_channel_a_power')|float + states('sensor.line_power_channel_b_power')|float + states('sensor.line_power_channel_c_power')|float) < 0 %} - {{ ((states('sensor.line_power_channel_a_power')|float + states('sensor.line_power_channel_b_power')|float + states('sensor.line_power_channel_c_power')|float) * -1 ) | round(1) }} - {% else %} - {{ 0 }} - {% endif %} + {% set v = (states('sensor.line_power_channel_a_power')|float(0) + states('sensor.line_power_channel_b_power')|float(0) + states('sensor.line_power_channel_c_power')|float(0)) %} + {% if v < 0 %}{{ (v * -1) | round(1) }}{% else %}0{% endif %} device_class: power state_class: measurement icon: mdi:transmission-tower-import @@ -118,9 +112,12 @@ unique_id: '3502047649408' unit_of_measurement: 'W' state: > - {% if (states('sensor.power_export')|float(0)) > 0 and (states('sensor.balkonkraftwerk_power')|float(0) - states('sensor.power_export')|float(0)) < 0 %} - {% elif (states('sensor.power_export')|float(0)) > 0 and (states('sensor.balkonkraftwerk_power')|float(0) - states('sensor.power_export')|float(0)) > 0 %} - {{ ((states('sensor.balkonkraftwerk_power')|float(0)) - states('sensor.power_export')|float(0)) | round(1) }} + {% set pe = states('sensor.power_export')|float(0) %} + {% set bk = states('sensor.balkonkraftwerk_power')|float(0) %} + {% if pe > 0 and (bk - pe) < 0 %} + 0 + {% elif pe > 0 and (bk - pe) > 0 %} + {{ ((bk) - pe) | round(1) }} {% else %} {{ (states('sensor.power_import')|float(0) + states('sensor.balkonkraftwerk_power')|float(0)) | round(1) }} {% endif %} @@ -134,53 +131,53 @@ - name: internet_speed_in unique_id: '9519483670666' state: > - {{ (( states('sensor.wan_in_derivative') | float * 8 / 1000000 ) | round(2)) }} + {{ (( states('sensor.wan_in_derivative') | float(0) * 8 / 1000000 ) | round(2)) }} unit_of_measurement: 'Mbps' - attributes: - last_reset: '1970-01-01T00:00:00+00:00' - name: internet_speed_out unique_id: '9519483670667' state: > - {{ (( states('sensor.wan_out_derivative') | float * 8 / 1000000 ) | round(2)) }} + {{ (( states('sensor.wan_out_derivative') | float(0) * 8 / 1000000 ) | round(2)) }} unit_of_measurement: 'Mbps' - attributes: - last_reset: '1970-01-01T00:00:00+00:00' # ── Kalender-Ereignisse für epaperframe ── +# Note: calendar.privat and calendar.tkrz_kalender are the source calendars. +# The caldav integration only exposes description/start_time for *currently active* events. +# For future/tomorrow events we need an automation (see below). - text_sensor: - # ─── HEUTE (today) ─── - # Privat heute + # ─── HEUTE (today) — works when calendar.privat is currently "on" ─── + - name: "Kalender heute Privat" unique_id: kalender_heute_privat state: >- - {%- if is_state('calendar.privat', 'on') %} - {{- (state_attr('calendar.privat', 'description') | default(state_attr('calendar.privat', 'message'), true)) - | replace('\n', ', ') | trim | truncate(60) -}} - {%- endif -%} + {% if is_state('calendar.privat', 'on') and state_attr('calendar.privat', 'description') %} + {{ state_attr('calendar.privat', 'description') | replace('\n', ', ') | trim | truncate(60) }} + {% else %} + - + {% endif %} - # Arbeit heute - name: "Kalender heute Arbeit" unique_id: kalender_heute_arbeit state: >- - {%- if is_state('calendar.tkrz_kalender', 'on') %} - {{- (state_attr('calendar.tkrz_kalender', 'description') | default(state_attr('calendar.tkrz_kalender', 'message'), true)) - | replace('\n', ', ') | trim | truncate(60) -}} - {%- endif -%} + {% if is_state('calendar.tkrz_kalender', 'on') and state_attr('calendar.tkrz_kalender', 'description') %} + {{ state_attr('calendar.tkrz_kalender', 'description') | replace('\n', ', ') | trim | truncate(60) }} + {% else %} + - + {% endif %} - # Zeit heute (Privat) - name: "Kalender heute Privat Uhrzeit" unique_id: kalender_heute_privat_uhrzeit state: >- - {%- if is_state('calendar.privat', 'on') and state_attr('calendar.privat', 'start_time') %} - {{- as_timestamp(state_attr('calendar.privat', 'start_time')) - | timestamp_custom('%H:%M', true) -}} - {%- endif -%} + {% if is_state('calendar.privat', 'on') and state_attr('calendar.privat', 'start_time') %} + {{ as_timestamp(state_attr('calendar.privat', 'start_time')) | timestamp_custom('%H:%M', true) }} + {% else %} + - + {% endif %} - # Zeit heute (Arbeit) - name: "Kalender heute Arbeit Uhrzeit" unique_id: kalender_heute_arbeit_uhrzeit state: >- - {%- if is_state('calendar.tkrz_kalender', 'on') and state_attr('calendar.tkrz_kalender', 'start_time') %} - {{- as_timestamp(state_attr('calendar.tkrz_kalender', 'start_time')) - | timestamp_custom('%H:%M', true) -}} - {%- endif -%} + {% if is_state('calendar.tkrz_kalender', 'on') and state_attr('calendar.tkrz_kalender', 'start_time') %} + {{ as_timestamp(state_attr('calendar.tkrz_kalender', 'start_time')) | timestamp_custom('%H:%M', true) }} + {% else %} + - + {% endif %}