🧪Template-Tester
Home Assistant nutzt Jinja2-Templates für berechnete Werte, Bedingungen und Nachrichten. Hier werten Sie Templates gegen das Musterhaus aus – mit denselben typischen Fehlern wie im echten System.
💡 states() liefert immer Text.
Ergebnis
Im Wohnzimmer hat es 21.4 °C.
Benutzte Entitäten:
sensor.wohnzimmer_temperaturHome Assistant merkt sich diese Entitäten, um Template-Sensoren nur bei deren Änderung neu zu berechnen.
⚠️ Nachbau: Dieser Tester ist eine eigene, sichere Auswertung einer Teilmenge von Jinja2 und den HA-Erweiterungen – ohne eval, mit Rechenschritt-Limit. Echtes Home Assistant kennt „hunderte“ Funktionen, Filter und Tests, nutzt eine Sandbox-Umgebung und wandelt Ergebnisse zusätzlich in native Typen um. Zum Prüfen am echten System: Entwicklerwerkzeuge → Template.
Musterhaus verändern
Unterstützt
Syntax
{{ … }} {% if/elif/else %} {% for … in … %} {% set %} {# … #} {{- -}} a if b else c + - * / // % ** ~ == != < > <= >= and or not in is defined/number/…
Funktionen
states('x')is_state('x','on')state_attr('x','a')is_state_attrhas_valuestates.<domain>.<id>expand()float(d)int(d)round(n)bool(d)iif(c,a,b)now()utcnow()area_namearea_idarea_entitiesfloor_namefloor_areaslabel_entitiesdevice_attris_numberrangeminmaxFilter
floatintroundabsdefaultupperlowertitlecapitalizetrimreplacejoinlistcount/lengthfirstlastsortreverseuniquesumminmaxmapselectrejectselectattrrejectattrslugifytojsoniifis_numbertimestamp_customas_timestampNicht dabei: Makros, Regex-Filter, Zeitrechnung mit timedelta, Namespaces u. v. m.
🎯Die drei häufigsten Fallen
⚠️ 1 · states() ist Text
states('sensor.x') > 20 vergleicht Text mit Zahl → Fehler. Immer | float(0) oder | int(0) davor.⚠️ 2 · unknown & unavailable
Beim Start oder bei Funkproblemen sind Werte
unknown/unavailable. has_value() prüft das, ein Default fängt es ab.💡 3 · states.x.y vs. states('x.y')
states.sensor.x.state liefert bei fehlender Entität einen Fehler bzw. nichts, states('sensor.x') dagegen unknown. Die Doku empfiehlt die Funktionsform.# Template-Sensor (UI: Helfer → Template → Sensor, oder YAML)
template:
- sensor:
- name: "Leistung gesamt"
unit_of_measurement: "W"
device_class: power
state_class: measurement
state: >
{{ states('sensor.stromzaehler_leistung') | float(0)
+ states('sensor.kaffeemaschine_leistung') | float(0) }}
availability: "{{ has_value('sensor.stromzaehler_leistung') }}"