Open Source Home Automation

In unserem Teamcamp 2022 haben wir uns vor die Herausforderung gestellt, mit Netatmo-Produkten unser Office neu und innovativ zu gestalten.

Netatmo ist eine Firma, die vor allem Sicherheitssysteme, wie Kameras oder smarte Türklingeln herstellt, aber auch Smart-Home-Geräte verkauft. Wir haben in unserem Office einen Raumluftsensor und eine smarte Lampe installiert. Mit diesen beiden Geräten haben wir uns nun verschiedene Ziele gesetzt:

  • Zum Einen wollten wir mit dem Raumluftsensor erreichen, dass je nach CO2 Gehalt in der Luft eine andere Farbe auf unserer Philips Hue angezeigt wird. Philips Hue ist eine smarte Lampe, die intelligent über eine App gesteuert werden kann.
  • Zum Anderen war unser Ziel, Presence Detection so einzurichten, dass sie, immer wenn eine Person das Büro betritt oder verlässt, ein Lichtsignal via Philips Hue Lampe sendet, damit wir indirekt über die Anwesenheit unserer Kollegen in den anderen Stockwerken informiert werden.

Projekt Raumluftsensor

Zu Beginn wollten wir die Umsetzung mit IFTTT gestalten, doch dies haben wir schnell wieder verworfen, da die Kommunikation mittels Payload unter den Automationen nicht gut genug unterstützt wurde. Also sind wir zur Open Source Smart Home Zentrale “Home Assistant” gewechselt. Dafür haben wir zunächst die verschiedenen Hardware Komponenten in Home Assistant integriert. Die Hue Bridge sollte dabei mit einer Lampe verbunden werden und der Raumluftsensor, sowie unser Presence Detection via Unifi Network musste eingerichtet werden.

Nun ging es an die Umsetzung der CO2-Anzeige. Nachdem wir die verschiedenen Integrationen miteinander verknüpft hatten, haben wir eine neue Automation mit Triggern eingebaut. So hat die Lampe bei einem CO2 Gehalt von 700 ppm grün geleuchtet, bei 700 - 1000 ppm orange und bei einem Wert von über 1000 ppm rot.

Im Codesnippet unten wird gezeigt, wie solche Automatisierungstrigger in einer YAML-Datei definiert werden können. Über einen Service kann die Lampe eingeschaltet werden und die Farbe für den jeweiligen Zustand mitgegeben werden.

- id: '1662450819142'
 alias: Netatmo C02
 description: ''
 trigger:
 - platform: numeric_state
 entity_id: sensor.buro_sensor_1_co2
 below: '700'
 - platform: numeric_state
 entity_id: sensor.buro_sensor_1_co2
 above: '700'
 below: '1000'
 - platform: numeric_state
 entity_id: sensor.buro_sensor_1_co2
 above: '1000'
 condition: []
 action:
 - choose:
 - conditions:
 - condition: numeric_state
 entity_id: sensor.buro_sensor_1_co2
 below: '700'
 sequence:
 - service: light.turn_on
 data:
 rgb_color:
 - 0
 - 255
 - 0
 brightness_pct: 100
 target:
 entity_id: light.hue_color_lamp_1
 - conditions:
 - condition: numeric_state
 entity_id: sensor.buro_sensor_1_co2
 above: '700'
 below: '1000'
 sequence:
 - service: light.turn_on
 data:
 rgb_color:
 - 255
 - 136
 - 0
 brightness_pct: 100
 target:
 entity_id: light.hue_color_lamp_1
 - conditions:
 - condition: numeric_state
 entity_id: sensor.buro_sensor_1_co2
 above: '1000'
 sequence:
 - service: light.turn_on
 data:
 rgb_color:
 - 255
 - 0
 - 0
 brightness_pct: 100
 target:
 entity_id: light.hue_color_lamp_1
 default: []
 mode: single
Ezgif com video to gif

Projekt Presence Detection

Neben dem Ziel, die Raumluftqualität zu visualisieren, sollte ein Lichtsignal via Philipps Hue Lampe gesendet werden, immer wenn eine Person das Büro betritt oder verlässt. Je nachdem, ob eine Person kommt oder geht, sollte ein entsprechender Effekt - fade in, fade out - ausgelöst werden.

Die persönliche Farbe wird dann für 30 Sekunden angezeigt. Davon 20 Sekunden im statischen Modus und 10 Sekunden lang als Verlauf. Wenn mehrere Personen das Büro betreten, sollen die Signale nacheinander angezeigt werden.

In der Umsetzung haben wir neue Entities für Personen erstellt, um diese mit der MAC Adresse zu verknüpfen. Auch hier haben wir eine Automation mit Triggern eingefügt, für welche wir eine neue Queue in das System einarbeiteten.

Umsetzung der Presence

  • Neue Entities für Personen um MAC Address zu verknüpfen

  • Neue Automation mit Trigger (Status der Person ändert sich → home und not_home)

  • Automation wird in einer Queue abgearbeitet

  • Persönliche Farbe des Mitarbeiters via einer API abfragen (diese wurde von einem anderen Projektteam gebaut)

  • Je nach Fall (enter, leave) wird ein fade-in oder fade-out mit der geforderten Farbe mit der Lampe angezeigt (20 Sekunden statisch, 10 Sekunden Verlauf)

Kommunikation zwischen den Automationen umsetzen

  • Neue Automation (sync) mit Trigger (Queue 0 oder > 0)
  • Ziel: CO2 Anzeige kann nicht Presence Anzeige überschreiben, sobald Presence Automation(en) abgearbeitet wurden, wird die Luftqualität wieder angezeigt

  • Wenn die letzte Person aus der Queue geht (0) wird Netatmo Automation enabled und ausgelöst

  • Wenn die erste Person die Queue betritt, wird die Netatmo Automation disabled