Handle missing sensors with default float value

This commit is contained in:
2026-07-10 00:58:50 +02:00
parent 4f6ea199d4
commit 7c3186563a
+56 -59
View File
@@ -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 %}