Regeln¶
Mit Regeln reagiert ein Element auf mehr als nur seinen eigenen Zustand. Es gibt sie bei jeder Art von Element: Lichtern, LED-Streifen, Geräten, der Station des Saugroboters, Möbeln, Textelementen und Räumen.

Wie Regeln ausgewertet werden¶
rules ist eine geordnete Liste. Jede Regel hat Bedingungen (if) und Ausgaben. Für jedes Ausgabefeld gewinnt die erste Regel, deren Bedingungen alle zutreffen und die dieses Feld setzt. Eine Regel ohne if ist der Standard.
rules:
- if: [ ... ] # alle Bedingungen müssen zutreffen (UND)
color: red
- color: blue # kein "if": gilt, wenn keine frühere Regel eine Farbe gesetzt hat
Bedingungen¶
Bedingungen kannst du in zwei Modi schreiben. Jede Regel hat einen Schalter Nach Entitäten / Jinja-Vorlage; beim Wechsel von Entitäten zu Jinja werden die vorhandenen Bedingungen umgewandelt.
Eine Bedingung ist {entity, attribute?, state | state_not | above | below}. state und state_not dürfen eine Liste sein. {any: [Bedingungen]} ist eine ODER-Gruppe.
if:
- entity: climate.living_room
attribute: hvac_action
state: heating
- entity: sensor.outdoor_temperature
below: 5
- any:
- entity: binary_sensor.window
state: "on"
- entity: binary_sensor.door
state: "on"
Im Formular hat jede Bedingung eine Entität (mit der Abkürzung diese Entität), ein optionales Attribut, und der Operator lautet ist / ist nicht / größer als / kleiner als / Vorlage. Neue Bedingungen werden mit der Entität des Elements vorausgefüllt (ein Raum nimmt seinen Temperatursensor).
Eine einzelne Bedingung {template: "{{ ... }}"}. Home Assistant rendert sie live, und sie ist wahr bei true, on, yes, 1 oder einer Zahl ungleich null.
if:
- template: "{{ is_state('binary_sensor.front_door', 'on') and states('sensor.outdoor_temperature') | float(0) < 0 }}"
Eine text-Ausgabe, die {{ }} enthält, ist ebenfalls eine Vorlage.
Ausgaben¶
| Ausgabe | Wirkung |
|---|---|
color |
Färbt das Symbol und den Badge-Rand ein; bei Möbeln Umriss und Füllung; bei einem Licht überschreibt sie die Lampenfarbe (Badge, Leuchten, Streifen); beim Roboter ersetzt sie die Designfarbe, auch in der Station |
glow |
Fügt ein Leuchten um das Element hinzu |
animate |
Überschreibt active eines Geräts: true / false. animate: false stoppt auch die Symbolanimation |
wave |
Farbe der Wärmewellen des Heizkörpers |
text |
Ersetzt den Text unter dem Symbol (einfach oder eine Vorlage) |
tint (oder color) |
Bei einem Raum: färbt den Boden ein; opacity legt die Stärke fest (Standard 0,14) |
hide |
Blendet das Element aus (bei einem Raum: seine Beschriftung) |
icon |
Tauscht das Symbol aus (Geräte, Lichter, Möbel, die Station). none entfernt es; wähle es mit der Symbolauswahl |
background |
Hintergrund eines Textelements |
fx |
Ringanimation: ring, radar, comet, countdown, spin, orbit, breath, blink, heartbeat, shake, none |
progress |
Eine Entität, die einen countdown antreibt (siehe unten) |
progress_total |
Eine Länge in Minuten für einen countdown |
Farben: red, orange, yellow, green, blue, purple, pink, white, black, jeder im Formular gewählte Farbname des Designs (unter dem Namen gespeichert, zum Beispiel teal) oder jede CSS-Farbe (Hex, rgb(...), var(...)).
Lichter, LED-Streifen, die Station und Möbel haben keine eigene Ringanimation, der Ring erscheint also nur, wenn eine Regel fx setzt. Der Ring eines LED-Streifens sitzt in der Mitte des Streifens, bei Möbeln in der Mitte des Rechtecks.
Für die Ausgabe eines Rings gilt die Priorität: Regel, dann die eigene Einstellung des Geräts, dann der Alarm-Standard nach Zustand.
Countdown¶
fx: countdown zeichnet einen schrumpfenden Bogen. Woher er seinen Fortschritt bekommt:
progress: timer.kitchen: eintimer(aktiv oder pausiert),progress: sensor.dryer_remainingmitdevice_class: duration(Sekunden, Minuten oder Stunden; die Gesamtdauer istprogress_total, sonst der bisher höchste gesehene Wert),progress: sensor.dryer_endmitdevice_class: timestamp(die Endzeit; der Start ist daslast_changeddes laufenden Geräts, sonstprogress_total),progress: sensor.dryer_progressin%: der Ring füllt sich wie ein Akku (0 % leer, 100 % voll),progress_total: 45ohne Entität: ein Countdown dieser Länge in Minuten, gemessen ab der Änderung der Bedingungsentität der Regel (bei einem Gerät ab dem Moment, in dem es zu laufen beginnt).
Ohne eine dieser Angaben ist der Countdown ein dekorativer Zyklus von 4 Sekunden.
Regeln als YAML¶
Jede Regel hat in ihrer Kopfzeile eine Schaltfläche { }, die nur diese Regel als YAML im Code-Editor von Home Assistant öffnet (Syntaxfarben, Zeilennummern, Vorschläge für Entitäten und Symbole). Die Änderung wird übernommen, wenn du den Editor verlässt. Dasselbe YAML siehst du im Planformat.

KI-Assistent (AI Task)¶
Wenn dein Home Assistant eine ai_task.*-Entität hat, die Datengenerierung unterstützt, zeigt der Abschnitt Regeln Mit KI vorschlagen. Beschreibe in einem Satz, was du willst. Der Editor sendet die Beschreibung zusammen mit dem Regelformat, den für dieses Element erlaubten Ausgaben, seiner Entität (Zustand und Attribute), den aktuellen Regeln und einer Liste deiner Entitäten (bis zu 1500, ohne update-, event-, scene- und script-Entitäten) an ai_task.generate_data. Die Antwort kommt als YAML und öffnet sich als Entwurf; erst Vorschlag übernehmen ersetzt die Regeln. Lässt sich die Anfrage nicht erfüllen, antwortet der Assistent mit einem Satz, den du als Meldung siehst.
Beispiele¶
Waschmaschine fertig¶
devices:
- id: washer
kind: generic
name: Waschmaschine
entity: sensor.washer_state
icon: mdi:washing-machine
x: 1.2
z: 3.4
rules:
- if:
- entity: sensor.washer_state
state: running
color: blue
animate: true
fx: countdown
progress: sensor.washer_finish_time # device_class: timestamp
- if:
- entity: sensor.washer_state
state: finished
color: green
fx: blink
text: Fertig
Tür bleibt offen¶
Eine Vorlage mit now() wird jede Minute neu gerendert, die Regel schaltet sich also fünf Minuten nach dem Öffnen der Tür ein.
rooms:
- id: hall
name: Flur
points: [[0, 0], [3, 0], [3, 2.5], [0, 2.5]]
rules:
- if:
- template: >-
{{ is_state('binary_sensor.front_door', 'on')
and (now() - states.binary_sensor.front_door.last_changed).total_seconds() > 300 }}
tint: orange
opacity: 0.3
Leckalarm¶
devices:
- id: leak
kind: generic
name: Leck
entity: binary_sensor.kitchen_leak
x: 2.0
z: 1.0
rules:
- if:
- entity: binary_sensor.kitchen_leak
state: "on"
color: red
glow: true
fx: blink
text: Leck!
- hide: true
Die letzte Regel hat keine Bedingung, das Element wird also immer ausgeblendet, wenn es kein Leck gibt.
Prozent-Ring im Akku-Stil¶
devices:
- id: phone_battery
kind: generic
name: Handy
entity: sensor.phone_battery_level
x: 4.0
z: 2.0
rules:
- if:
- entity: sensor.phone_battery_level
below: 20
color: red
fx: countdown
progress: sensor.phone_battery_level
- fx: countdown
progress: sensor.phone_battery_level
color: green
Timer-Countdown¶
Ein Backofen, der ab dem Einschalten 45 Minuten herunterzählt:
devices:
- id: oven
kind: generic
name: Backofen
entity: switch.oven
x: 3.1
z: 0.4
rules:
- if:
- entity: switch.oven
state: "on"
fx: countdown
progress_total: 45
color: orange
Und ein Küchentimer als Helfer, der den Ring antreibt:
rules:
- if:
- entity: timer.kitchen
state: active
fx: countdown
progress: timer.kitchen
color: yellow
Heizkörper, der auf Fenster, Boost und Ventil reagiert¶
devices:
- id: radiator_living
kind: radiator
entity: climate.living_room
x: 4.3
z: 1.1
rules:
- if:
- entity: switch.boost_living_room
state: "on"
color: yellow
- if:
- any:
- entity: binary_sensor.living_room_window
state: "on"
- entity: binary_sensor.balcony_door
state: "on"
color: blue
- if:
- entity: switch.valve_living_room
state: "on"
color: orange
animate: true
wave: red
- animate: false
Zurück zu Elemente oder zum Planformat.