In den letzten Wochen habe ich mich damit beschäftigt, wie ich meinen Zigbee Bewegungsmelder von Aqara (Affiliate Link) mit den über KNX gesteuerten Lampen im Flur verbinden kann. Hintergrund dazu ist, dass ich eine Automatismus schaffen will, der die Flur Lichter einschaltet bei Bewegung.
Architektur
Bevor wir in die Konfiguration gehen, möchte ich einen kurzen Überblick über die Architektur geben. Damit ist es etwas einfacher, den Weg der Daten und Steuersignale zu verstehen. Es gibt dafür eine einfache Zeichnung und eine etwas komplizierte.
Die einfache Zeichnung zeigt, worauf es im Wesentlichen ankommt. Auf der linken Seite habe ich einen Zigbee-Sensor und auf der rechten Seite ein über KNX gesteuertes Licht. In der Mitte verwende ich Home Assistant, um beide Welten miteinander zu verbinden.
Die komplexere Zeichnung zeigt die verschiedenen Dienste, die bei meinem Setup im Spiel sind.
Der Zigbee Sensor kommuniziert mit einem Zigbee2MQTT Container. Dieser transferiert die Sensorsignale in MQTT Messages und übergibt diese an meinen Mosquitto MQTT Broker.
Der MQTT Broker ist im Home Assistant eingebunden, um Änderungen zu identifizieren. Der Home Assistant kann dann über ein KNX Netzwerk Interface den KNX Schaltaktor entsprechend bedienen.
Zeit- oder Helligkeitsgesteuert
Die nächste Frage, die ich mir gestellt habe, war ob die Automation nur in einem bestimmten Zeitintervall aktiv sein soll oder wenn eine gewisse Helligkeit unterschritten wird. Um das besser entscheiden zu können, habe ich den Sensor mal für ein paar Wochen in den Flur gestellt und die Helligkeitswerte aufgezeichnet. Um es besser auswerten zu können, habe ich zusätzlich etwas in Grafana gebaut.
Leider ist da nicht wirklich ein großer Unterschied feststellbar, an dem ich die Steuerung orientieren möchte. Deshalb habe ich mich an dieser Stelle für eine Zeitautomatik entschieden.
Konfiguration
Da ich bereits erklärt habe, wie man KNX Geräte und ZigBee Geräte in Home Assistant einrichtet, werde ich darauf an dieser Stelle verzichten und mich nur auf die Automatisierung konzentrieren.
Ich habe mich im ersten Schritt daran versucht, das ganze im Frontend von Home Assistant zu konfigurieren, habe mir damit aber sehr schwer getan. Aus diesem Grund bin ich für die Automatisierung direkt in die Konfigurationsdatei gegangen. Meine Konfiguration für die Automatisierung sieht wie folgt aus:
- id: '1711699735716'
alias: Licht Kinderzimmer
description: ''
trigger:
- platform: state
entity_id:
- sensor.treppe_occupancy
from: '0'
to: '1'
for:
hours: 0
minutes: 0
seconds: 0
id: 'On'
- platform: state
entity_id:
- sensor.treppe_occupancy
from: '1'
to: '0'
for:
hours: 0
minutes: 0
seconds: 10
id: 'Off'
condition:
- condition: time
after: '18:00:00'
before: 08:00:00
weekday:
- sun
- sat
- thu
- fri
- wed
- tue
- mon
action:
- choose:
- conditions:
- condition: trigger
id: 'On'
sequence:
- service: light.turn_on
target:
entity_id: light.flur_og
data: {}
default:
- service: light.turn_off
target:
entity_id: light.flur_og
data: {}
Grundsätzlich ist die Automatisierung erstmal so aufebaut wie jede andere.
Zwei Bereiche sind mir hier besonders wichtig, weshalb ich diese etwas erläutern möchte: Triggers und Actions.
Bei den Triggern habe ich zwei unterschiedliche states definiert. Der erste Trigger ist der Wechsel von 0 zu 1 bzw. das gerade eine Bewegung erkannt wurde. Dieser State hat von mir die ID On bekommen. Der zweite Trigger ist der Wechsel von 1 auf 0. Damit ist gemeint, ab wann die erkannte Bewegung abgelaufen ist und neu geprüft werden soll. Dieser hat von mir die ID Off bekommen und einen Timer von 10 Sekunden.
Anschließend kommt der Condition Bereich, in dem ich die Zeitschaltung realisiert habe.
Bei den Actions habe ich eine Condition und einen Default. Der Default ist bei mir, dass das Licht ausgeschaltet ist. Die Condition ist so aufgebaut, dass wenn der Trigger auf die ID On wechselt, das Licht angeschaltet wird.
Soweit zu dieser Automatisierung. Habt ihr etwas ähnliches im Einsatz? Oder gibt es etwas, was ihr anders machen würdet? Ich freue mich auf euer Feedback.