Home Assistant Beleuchtung mit Timer richtig smart machen

Ich nutze in meinem Smarthome einige ZigBee-Lampen, die ich je nach Situation ein- und ausschalte. In der Regel wird von einem Bewegungsmelder eine Bewegung erkannt und sofern gewisse Bedingungen erfüllt sind, geht eine Lampe für ein paar Minuten an. Mit einem Timer kann man dies jedoch deutlich smarter und somit anwenderfreundlicher umsetzen! Wie das konkret geht, beschreibe ich im Folgenden!

Ich beschreibe einen sinnvollen Nutzen des Timers an dem konkreten Beispiel einer ZigBee-Lampe und eines ZigBee-Bewegungsmelders. Das Ausgangsszenario ist hierbei folgendes: Sobald der Bewegungsmelder eine Bewegung registriert und die Sonne nicht „am Himmel ist“, soll die ZigBee-Lampe angehen, damit man sich das Betätigen eines Lichtschalters spart.

Man läuft durch einen Raum oder holt etwas in einem Raum und hierfür soll das Licht automatisch an- und ausgehen.

Aqara Bewegungsmelder, Benötigt Hub, Zigbee-Verbindung,...
Aqara Bewegungsmelder, Benötigt Hub, Zigbee-Verbindung,...*
Sprachsteuerung: Kompatibel mit Apple HomeKit und Alexa für freies Sprechen; Breiterer Erkennungsbereich: Bis zu 22 6 m bei 170° Betrachtungswinkel

Bislang hatte ich dies über eine simple Automation umgsetzt:

- alias: 'Wohnzimmer-Licht'
  trigger:
  - platform: state
    entity_id: binary_sensor.bewegungsmelder_wohnzimmer_z2m_occupancy
    from: 'off'
    to: 'on'
  condition:
  - condition: template
    value_template: "{{ states.sun.sun.attributes.elevation | int < 1 }}"
  - condition: state
    entity_id: light.kamin_z2m
    state: 'off'
  action:
  - service: light.turn_on
    data:
      entity_id: light.kamin_z2m
  - delay:
      minutes: 3
  - service: light.turn_off
    data:
      entity_id: light.kamin_z2m

Als Trigger dient der Bewegungsmelder, der von „off“ zu „on“ wechselt und als Bedingungen habe ich zum einen den Zustand der Sonne (Elevation <1) und, dass die ZigBee-Lampe aktuell ausgeschaltet ist.

Du magst Home Assistant? Dann abonniere kostenlos meine Beiträge mit Tipps, Tricks und Anleitungen rund um Home Assistant:

Follow Home Assistant
( 410 Followers )
X

Follow Home Assistant

E-mail : *
* Ich stimme der Datenschutzerklärung zu!

Garantiert kein Spam, keine Werbung und immer mit Abmelde-Link, solltest du es dir anders überlegen!

Also Action folgt dann das Einschalten der ZigBee-Lampe, eine Verzögerung (Delay) von 3 Minuten und dann erneut das Ausschalten der ZigBee-Lampe.

Einfach und wenig komplex, aber eben auch anfällig für folgendes Szenario: Die Automation wird ausgelöst und die Lampe geht an. Ich halte mich aber länger als 3 Minuten in dem Raum auf. Dann wird es dunkel und erst nach einer erneut erkannten Bewegung durch den ZigBee-Bewegungsmelder, geht die ZigBee-Lampe wieder für 3 Minuten an.

Dieses Problem löse ich nun durch einen Timer von Home Assistant und gehe hierbei wie folgt vor:

Automation 1:

  1. Trigger: Der Bewegungsmelder erkennt eine Bewegung
  2. Kondition: Sofern die Lampe nicht eingeschaltet ist und die Sonne untergegangen ist
  3. Action: wird die Lampe eingeschaltet und
  4. Action: der Timer gestartet

Automation 2:

  1. Trigger: Der Bewegungsmelder erkennt eine Bewegung
  2. Kondition: der Timer läuft, ist also >0
  3. Action: der Timer wieder neu gestartet

Automation 3:

  1. Trigger: Der Timer erhält den Wert „inaktiv“
  2. Action: die Lampe wird ausgeschaltet

Mit allen 3 Automatisierungen aufgesetzt, sollte die ZigBee-Lampe nun nur eingeschaltet werden, wenn sie nicht zuvor (manuell) eingeschaltet wurde und die Sonne unter dem Horizont ist und der Bewegungsmelder entsprechende Aktivitäten erkannt hat. Für 3 Minuten (Timer) bleibt die Lampe dann eingeschaltet. Erkennt der Bewegungsmelder eine weitere Bewegung und der Timer ist noch aktiv, wird der Timer erneut gestartet, also um 3 Minuten verlängert. Erreicht der Timer irgendwann den Wert „inaktiv“, wird die Lampe ausgeschaltet.

Aqara Bewegungsmelder, Benötigt Hub, Zigbee-Verbindung,...*
  • Hinweise: Aqara Hub ist erforderlich und separat erhältlich....
  • Erkennung von unbefugtem Eintreten: Wenn unerwartete Bewegungen...

Soviel zur Theorie und hier noch der dazugehörige Code:

Code für den eigentlichen Timer (bspw. in der configuration.yaml):

timer:
  livingrom_light_off:
    duration: '00:03:00'

Automation 1: Erkennt eine Bewegung und sofern die Lampe nicht bereits eingeschaltet ist und die Sonne unter dem Horizont ist, wird die Lampe eingeschaltet, sowohl der Timer gestartet:

- alias: 'Wohnzimmer-Licht'
  trigger:
  - platform: state
    entity_id: binary_sensor.bewegungsmelder_wohnzimmer_z2m_occupancy
    from: 'off'
    to: 'on'
  condition:
  - condition: template
    value_template: "{{ states.sun.sun.attributes.elevation | int < 1 }}"
  - condition: state
    entity_id: light.kamin_z2m
    state: 'off'
  action:
  - service: light.turn_on
    data:
      entity_id: light.kamin_z2m
  - service: timer.start
    entity_id: timer.livingrom_light_off

Automation 2: Erkennt eine Bewegung und sofern der Timer aktiv ist wird der Timer erneut gestartet (also um 3 Minuten verlängert):

- alias: 'Wohnzimmer-Licht Timer'
  trigger:
  - platform: state
    entity_id: binary_sensor.bewegungsmelder_wohnzimmer_z2m_occupancy
    from: 'off'
    to: 'on'
  condition:
  - condition: state
    entity_id: timer.livingrom_light_off
    state: 'active'
  action:
  - service: timer.start
    entity_id: timer.livingrom_light_off 

Automation 3: Schaltet die Lampe aus, sofern der Timer abgelaufen ist:

- alias: 'Wohnzimmer-Licht Timer aus'
  trigger:
  - platform: state
    entity_id: timer.livingrom_light_off 
    to: idle
  action:
  - service: light.turn_off
    data:
      entity_id: light.kamin_z2m

Zugegeben: Vorher hatte ich eine Automation, die die ZigBee-Lampe ein- und ausgeschaltet hat. Aber die Lampe wurde stupide nach 3 Minuten ausgeschaltet – egal, ob es länger sinnvoll gewesen wäre.

Dieser Beitrag ist Teil einer kleinen Beitrags-Serie rund um den hass.io Home Assistant.

Produktempfehlungen

6 Gedanken zu „Home Assistant Beleuchtung mit Timer richtig smart machen“

  1. Hm,
    nehmen wir mal an ich Bewege mich 3 Minuten in meiner Küche. Mein Hue Motion Sensor steht dann durchgängig auf Bewegung, sprich der Timer wird nur einmal am Anfang ausgelöst, läuft nach 3 Minuten ab und das Licht geht aus, obwohl ich mich die ganze Zeit bewege…

    Antworten
    • In einem solchen Szenario würde ich die Automatisierung komplett anders aufbauen! Das Ziel ist ja dann eher: Schalte das Licht aus, wenn es für X Minuten keine Bewegung gegeben hat. Also würde ich als Trigger nehmen, dass der Bewegungsmelder für diese X Minuten inaktiv gewesen sein muss und dann das Licht ausschalten.

      Antworten
  2. Kleiner Tipp: Du musst deiner ursprünglichen Automation lediglich ein mode: restart hinzufügen, damit sparst du dir die zwei zusätzlichen Automationen. mode: restart sorgt dafür, dass die Automation bei erneuter Bewegung wieder neu startet, der delay also wieder bei 3 Minuten anfängt. (https://www.home-assistant.io/docs/automation/modes/)

    – alias: ‚Wohnzimmer-Licht‘
    mode: restart
    trigger:
    – platform: state
    entity_id: binary_sensor.bewegungsmelder_wohnzimmer_z2m_occupancy
    to: ‚on‘
    condition:
    – condition: template
    value_template: „{{ states.sun.sun.attributes.elevation | int < 1 }}"
    – condition: state
    entity_id: light.kamin_z2m
    state: 'off'
    action:
    – service: light.turn_on
    data:
    entity_id: light.kamin_z2m
    – delay:
    minutes: 3
    – service: light.turn_off
    data:
    entity_id: light.kamin_z2m

    Antworten
    • Jein, da meine Automation ja eben nur greifen soll, wenn die Lampe zuvor nicht manuell eingeschaltet wurde. Somit dürfte ich hier mit einem Restart der Automation nicht den gewünschten Effekt erzielen, oder?

      Antworten
  3. Hi,

    ich bin mittlerweile wieder von Timern, die länger als 10 Sekunden laufen, abgekommen.
    Irgendwie kam es regelmäßig zu Problemen, weil während des Timers irgendwas mit HA „passiert“ ist und deshalb der Timer abgebrochen wurde.
    Ich löse alles mit Hilfsvariablen, die vom Bewegungsmelder immer wieder auf 1 oder 0 gesetzt werden.
    Jedes Mal, wenn der Bewegungsmelder Bewegung erkennt, dann Variable auf 1, wenn nicht mehr (für bestimmte Zeit), dann auf 0 gesetzt.
    Wenn Variable auf 0 (für bestimmte Zeit), dann Licht aus…..
    Das läuft bei mir sauberer.

    Antworten
    • Auch ein interessanter Ansatz! Letztlich benötigt man den runterzählenden Timer in den meisten Fällen gar nicht, sondern es geht nur um den Zustand des Timers >0.

      Was mich auf die Idee bringt, es komplett ohne Hilfsvariablen und Timer zu machen: wenn es für X Minuten keine Bewegung gegeben hat, schalte das Licht aus. Jede Bewegung innerhalb der x Minuten verlängert die Zeit ja somit auch wieder. Das werde ich auch einmal ausprobieren! 🙂

      Antworten

Schreibe einen Kommentar