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.
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
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:
- Trigger: Der Bewegungsmelder erkennt eine Bewegung
- Kondition: Sofern die Lampe nicht eingeschaltet ist und die Sonne untergegangen ist
- Action: wird die Lampe eingeschaltet und
- Action: der Timer gestartet
Automation 2:
- Trigger: Der Bewegungsmelder erkennt eine Bewegung
- Kondition: der Timer lรคuft, ist also >0
- Action: der Timer wieder neu gestartet
Automation 3:
- Trigger: Der Timer erhรคlt den Wert „inaktiv“
- 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.
- 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.
Produktempfehlungen
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โฆ
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.
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
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?
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.
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! 🙂