Zum Inhalt springen
HomeTinker.io
EN

Lichtautomatisierung in Home Assistant: Nachtlicht und Timer, die dein manuelles Licht respektieren

Nachtlicht mit Home Assistant, das nur die eigenen Lichter steuert. Manuell eingeschaltete Lampen bleiben an, Merker und Gruppen-Logik erklärt.

Von ·· 7 Min. Lesezeit

Ein Nachtlicht im Flur ist schnell gebaut: Bewegung erkannt, Licht gedimmt an, nach einer Weile wieder aus. In der Praxis gibt es dabei ein Problem. Kocht jemand spät in der Küche mit hellem Licht, und im Flur geht jemand vorbei, dimmt eine naive Automation das Küchenlicht herunter. Genau das will man nicht.

Dieser Beitrag zeigt, wie man eine Nachtlicht-Automation baut, die nur das anfasst, was sie selbst eingeschaltet hat, und manuell eingeschaltete Lichter in Ruhe lässt.

Das Ziel

Für die Nacht (00:00 bis 06:30) gelten vier Regeln:

  1. Alles aus, Bewegung: Flur und Küche gehen auf 2 % und warmes Licht (2000 K).
  2. Mindestens ein Licht an, Bewegung: Die ausgeschalteten Lichter übernehmen Helligkeit und Farbtemperatur des hellsten eingeschalteten Lichts. Bereits eingeschaltete Lichter bleiben unverändert.
  3. Keine Bewegung für 30 Sekunden: Nur die Lichter, die die Automation selbst eingeschaltet hat, gehen aus. Manuell eingeschaltete Lichter bleiben an.
  4. Gedimmte Nachtlichter (höchstens 10 von 255) gehen ebenfalls aus.

Baustein 1: Bewegung als Gruppe

Mehrere Sensoren werden zu einer Gruppe zusammengefasst. Die Gruppe ist „an”, sobald ein Sensor Bewegung meldet. Für die Ausschaltregel muss die Gruppe 30 Sekunden am Stück „aus” sein.

So muss die Automation nur auf eine einzige Entität hören, und neue Sensoren kommen einfach in die Gruppe. In Home Assistant richtest du sie unter Einstellungen → Geräte & Dienste → Helfer → Gruppe ein.

Baustein 2: Merken, was die Automation eingeschaltet hat

Der wichtigste Trick ist ein Merker. Ein Textfeld-Helfer input_text.nachtlicht_automatisch_an speichert die Entitäten, die die Automation selbst eingeschaltet hat, zum Beispiel light.flur,light.kueche.

  • Beim Einschalten werden die Lichter, die aus waren, in den Merker geschrieben.
  • Beim Ausschalten werden nur die Lichter im Merker ausgeschaltet. Danach wird der Merker geleert.

Schaltest du die Küche von Hand ein, steht sie nicht im Merker, und die Automation fasst sie nie an.

Baustein 3: Zustand prüfen, nicht raten

Bevor die Automation handelt, prüft sie den Zustand:

  • Einschalten nur, wenn Flur, Küche und Bad alle aus sind.
  • Übernehmen der Helligkeit nur, wenn mindestens ein Licht an ist. Dann nimmt sie den Wert des hellsten eingeschalteten Lichts.
  • Ausschalten nur bei Lichtern, die im Merker stehen oder gedimmt sind.

Die Helligkeit eines Lichts liest du mit einer numeric_state-Bedingung auf das Attribut brightness. Diese Bedingung ist nativ und wird beim Laden geprüft. Ein Template wäre hier fehleranfälliger.

Die vollständige Automation

Hier die komplette Automation. Die Sensornamen sind Beispiele, passe sie an deine Installation an.

yaml
alias: Nachtlicht Flur
description: "Nachtlicht 00:00-06:30. Passt sich dem Zustand an und merkt sich eigene Lichter."
triggers:
- trigger: state
entity_id:
- binary_sensor.bewegung_flur
- binary_sensor.bewegung_kueche
to: "on"
id: bewegung_erkannt
- trigger: state
entity_id: binary_sensor.nachtlicht_bewegung
to: "off"
for:
seconds: 30
id: keine_bewegung_mehr
conditions:
- condition: time
after: "00:00:00"
before: "06:30:00"
actions:
- choose:
# Fall 1: alles aus, Bewegung -> Nachtlicht auf 2 %
- conditions:
- condition: trigger
id: bewegung_erkannt
- condition: state
entity_id: [light.flur, light.kueche, light.bad]
state: "off"
sequence:
- action: input_text.set_value
target:
entity_id: input_text.nachtlicht_automatisch_an
data:
value: "light.flur,light.kueche"
- action: light.turn_on
target:
entity_id: [light.flur, light.kueche]
data:
brightness_pct: 2
color_temp_kelvin: 2000

# Fall 2: mindestens ein Licht an -> die aus sind übernehmen das hellste
- conditions:
- condition: trigger
id: bewegung_erkannt
- condition: or
conditions:
- condition: state
entity_id: light.flur
state: "on"
- condition: state
entity_id: light.kueche
state: "on"
- condition: state
entity_id: light.bad
state: "on"
sequence:
- variables:
lampen: [light.flur, light.kueche, light.bad]
- variables:
hellstes: >-
{% set ns = namespace(id='', b=-1) %}{% for l in lampen if is_state(l, 'on') %}{% set b = state_attr(l, 'brightness') | int(0) %}{% if b > ns.b %}{% set ns.id = l %}{% set ns.b = b %}{% endif %}{% endfor %}{{ ns.id }}
- variables:
helligkeit: "{{ state_attr(hellstes, 'brightness') | int(255) }}"
kelvin: "{{ state_attr(hellstes, 'color_temp_kelvin') | int(4000) }}"
aus: "{{ lampen | select('is_state', 'off') | list }}"
- action: light.turn_on
target:
entity_id: "{{ aus }}"
data:
brightness: "{{ helligkeit }}"
color_temp_kelvin: "{{ kelvin }}"
continue_on_error: true
- action: input_text.set_value
target:
entity_id: input_text.nachtlicht_automatisch_an
data:
value: "{{ (states('input_text.nachtlicht_automatisch_an').split(',') + aus) | select('match', 'light.') | unique | join(',') }}"

# Fall 3: keine Bewegung mehr -> gedimmte Lichter und eigene Lichter aus
- conditions:
- condition: trigger
id: keine_bewegung_mehr
sequence:
- if:
- condition: numeric_state
entity_id: light.flur
attribute: brightness
below: 11
then:
- action: light.turn_off
target:
entity_id: light.flur
- if:
- condition: numeric_state
entity_id: light.kueche
attribute: brightness
below: 11
then:
- action: light.turn_off
target:
entity_id: light.kueche
- if:
- condition: numeric_state
entity_id: light.bad
attribute: brightness
below: 11
then:
- action: light.turn_off
target:
entity_id: light.bad
- action: light.turn_off
target:
entity_id: "{{ states('input_text.nachtlicht_automatisch_an').split(',') | select('match', 'light.') | list }}"
continue_on_error: true
- action: input_text.set_value
target:
entity_id: input_text.nachtlicht_automatisch_an
data:
value: ""
mode: restart
max_exceeded: silent

Was die Automation tut

Einschalten, alles aus: Flur und Küche gehen auf 2 % und 2000 K. Beide Lichter kommen in den Merker, damit später nur sie ausgehen.

Einschalten, mindestens ein Licht an: Die Automation sucht das hellste eingeschaltete Licht und übernimmt dessen Helligkeit und Farbtemperatur für alle ausgeschalteten Lichter. Die eingeschalteten bleiben unverändert. Die neu eingeschalteten kommen in den Merker.

Keine Bewegung für 30 Sekunden: Gedimmte Lichter unter 11 von 255 gehen aus. Danach gehen die Lichter aus, die im Merker stehen, und der Merker wird geleert. Ein Licht, das du von Hand eingeschaltet hast und das hell ist, bleibt an.

Warum es so gebaut ist

  • Der Merker macht die Automation nur für ihre eigenen Lichter zuständig.
  • Der Helligkeitsvergleich verhindert, dass ein helles Küchenlicht gedimmt wird, auch wenn der Flur leer ist.
  • Die Gruppe als einziger Ausschalt-Auslöser macht die 30-Sekunden-Regel für alle Räume gleich.
  • Die Zeitbedingung begrenzt die Automation auf die Nacht. Tagsüber bleibt sie inaktiv.

Übersteuern: wann die Automation nicht eingreifen soll

Bei einem Badezimmer mit Bewegungsmelder wird es heikel. Sitzt jemand regungslos in der Wanne, meldet der Sensor nach 30 Sekunden keine Bewegung mehr, und das Licht geht aus. Das gilt nur für Lichter, die die Automation eingeschaltet hat. Für eine Übersteuerung gibt es mehrere Wege:

  • Bademodus: Ein Timer-Helfer, z. B. 90 Minuten, schaltet das automatische Ausschalten ab.
  • Manuell einschalten: Ein Licht, das von Hand eingeschaltet wurde, steht nicht im Merker und bleibt an, bis du es ausschaltest.
  • Automation pausieren: Im Dashboard die Automation ausschalten. Danach daran denken, sie wieder einzuschalten.

Fallstricke

  • Gedimmt von Hand: Stellst du ein Licht selbst auf 5 %, erkennt die Automation es als Nachtlicht und schaltet es aus. Die Schwelle von 10 von 255 ist deshalb ein Kompromiss.
  • Zigbee-Schalter mit Batteriepfad: Manche Schalter melden sich als schlafende Geräte, obwohl sie netzbetrieben sind. Schreibbefehle an sie können dann scheitern. Abhilfe: den Befehl im Moment des Tastendrucks absetzen, nicht später.
  • Templates in Zielen: Lassen sich Lichter nicht nativ auswählen, bleibt ein Template im Ziel. Der Checker von Home Assistant meldet das als Hinweis. Das funktioniert, ist aber schwerer zu prüfen.

Alternativen: Blueprints und HACS-Pakete

Unsere Lösung ist maßgeschneidert, aber nicht die einzige Möglichkeit.

Blueprints aus der Community

Light: Switch (Any) + Motion Sensor, Unified Logic with Manual Mode & Lockout. Dieses Blueprint trennt das Licht in zwei Modi. Schaltest du das Licht von Hand ein, wechselt es in den Handmodus und bleibt an, solange noch Bewegung erkannt wird. Nach einem manuellen Ausschalten folgt eine kurze Sperre, damit die Bewegung das Licht nicht sofort wieder einschaltet. Dafür braucht es einen Input-Boolean und einen Timer als Helfer.

Manual Light Control With Auto OFF. Pausiert die Abschaltzeit, solange Bewegung erkannt wird, wenn das Licht von Hand eingeschaltet wurde. Das deckt den Kernwunsch ab, dass ein manuelles Licht nicht ausgeht.

Die Blueprints sind ideal für einen einzelnen Raum mit einem Sensor. Was sie nicht können, ist die raumübergreifende Logik: die Helligkeit des hellsten eingeschalteten Lichts auf andere Räume zu übertragen und nur die eigenen Lichter auszuschalten. Dafür braucht es einen Merker.

HACS-Pakete

Adaptive Lighting passt Helligkeit und Farbtemperatur an den Tagesverlauf an und erkennt manuelle Änderungen. Sobald du ein Licht von Hand anpasst, pausiert die Integration die Anpassung für dieses Licht. Für Nachtlicht mit Bewegung ist sie nicht die richtige Lösung, für die Lichtfarbe am Tag aber sehr praktisch.

Area Occupancy Detection berechnet aus mehreren Sensoren, ob ein Raum belegt ist. Das eignet sich als Ersatz für eine einfache Sensorgruppe, wenn du unterschiedliche Sensortypen kombinierst und eine Wahrscheinlichkeit brauchst.

Was du wählen solltest

  • Ein Raum, ein Sensor: Blueprint mit Handmodus.
  • Mehrere Räume, gemeinsame Helligkeit: eigene Automation mit Merker, wie hier beschrieben.
  • Tageslicht-Farbe: Adaptive Lighting, unabhängig von der Bewegungslogik.
  • Präsenz aus mehreren Sensoren: Area Occupancy als Grundlage, die Nachtlicht-Automation baut darauf auf.

Fazit

Eine gute Lichtautomation ist vor allem eine Frage der Zuständigkeit: Die Automation darf nur das anfassen, was ihr gehört. Mit einem Merker, einer Gruppe für die Bewegung und sauberen Zustandsprüfungen funktioniert ein Nachtlicht, das sich dem Alltag anpasst, statt ihn zu stören.