Heim-Automation mit Open Source

Beim letzten Chaos-Treff zeigte uns Thomas, wie man ohne fremde Clouds und mit Freier Software seine eigene Heim-Automation bauen kann.

Dazu zählen beispielsweise folgende Funktionen:

  • Schalten von Steckdosen
  • Regeln der Temperatur
  • Schalten und Regeln von Lampen (z.B. Helligkeit oder Farbe)
  • Überwachen von Sensoren (z.B. Temperatur oder Fensterkontakte)
  • Programmieren von Abhängigkeiten (z.B. Zeitsteuerungen oder Messwerten wie Temperatur oder Fensterkontakt)

Server

Das Herz der Automatisierung übernimmt ein GNU/Linux-System, hier ein Raspberry Pi.

Das System übernimmt mehrere Aufgaben:

  • Kommunikation mit Sensoren und Aktoren über verschiedene Protokolle (MQTT, BidCOS, Hue, …)
  • Zentralisierung der Daten in einem Broker (MQTT)
  • Auswertung und Reaktion auf Daten (Node-RED)
  • Weboberfläche für Steuerung und Programmierung (Node-RED Dashboard)

Zentralisierung der Daten

Damit die verschiedenen Sensoren, Aktoren und Programme miteinander kommunizieren können, benötigt es einen gemeinsamen Datenaustausch-Standard.

MQTT stellt ein solches Protokoll bereit, für welches man viele Programme und Geräte findet. Es ist ein Protokoll für die „Machine-to-Machine Communication“. Für Geräte, welche nicht selbst MQTT sprechen finden sich häufig Gateways – Programme, welche auf der einen Seite mit den Geräten kommunizieren können und sich auf der anderen Seite mit dem MQTT-Broker verbinden.

MQTT organisiert die Daten in „Topics“. Alle eingehenden Daten werden hierarchisch nach Standort, Gerät und Sensor oder Aktor benannt, z.B.

  • Auto/Rad/3/Luftdruck
  • Küche/Herd/Temperatur
  • Homegear/Wohnzimmer/Heizung/Ventil

So kann jeder Informationskanal von jedem angeschlossenen Gerät eindeutig adressiert werden. Andere Dienste können sich Topics abonnieren – dh. sie erreichen jene Daten, welche sie abonniert haben, weitergereicht und können damit agieren. Umgekehrt können in Topics auch Daten – Steuerinformationen – geschrieben werden. Beispielsweise um eine Lampe einzuschalten oder ein Heizungsventil zu steuern.

Als MQTT-Broker setzt Thomas die Freie Software Mosquitto ein.

Steuerung und Programmierung

Zur Programmierung von Aktionen – z.B. ein Steuerelement um eine Lampe per Webseite ein- und auszuschalten – kann man Node-RED, ein grafisches Programmierwerkzeug, verwenden. Node-RED unterstützt MQTT, dh. man kann MQTT-Topics sowohl als Eingabe (Ereignisse, Messwerte) als auch auch Ausgabe (Aktionen) verwenden.

So lassen sich grafisch verschiedene Eingaben – z.B. ein Steuerelement auf einer Webseite und Messwerte – miteiander verknüpfen und nach gewünschten Kriterien Ausgaben erzeugen, welche zurück in MQTT-Topics geschrieben werden, z.B. „WENN Homegear/Wohnzimmer/Fensterkontakt = offen DANN SETZE Homegear/Wohnzimmer/Heizung/Ventil = 0“.

Für die Bedienung kann das Plugin Node-RED Dashboard verwendet werden. Es bietet eine Weboberfläche, auf der Steuer- und Anzeige-Elemente frei platziert werden können. Diese können dann ebenso wie MQTT-Topics als Ein- oder Ausgabe dienen, beispielsweise als Schalter mit dem ein Licht gesteuert werden kann oder eine Temperaturanzeige.

Node-RED läuft als Web-Anwendung auf node.js.

Flows

Solche in Node-RED programmierten Abläufe und Zusammenhänge nennt man „Flows“. Man kann diese per Mausklick aus Node-RED als Text importieren und exportieren, was den Austausch mit anderen Heim-Automatisierern vereinfach. Ausserdem findet man auf der Webseite von Node-RED eine Bibliothek von Flows zur freien Verwendung.

Geräte

ELV HomeMatic (BidCOS)

Von ELV gibt es die Produktkategorie „HomeMatic“ – sie umfasst Funksteckdosen, Heizungsventile und diverse Sensoren.

Zur Vernetzung wird BidCOS, ein Funksystem basierend auf 868 MHz verwendet, welches speziell für IoT-Anwendungen entwickelt wurde und die Batterien der Geräte schont.

ELV bietet Bausätze für Raspberry Pis an um diese um ein BidCOS-Funkmodul zu erweitern. Die Software Homegear stellt die Verbindung zwischen den BidCOS-Geräten und dem MQTT-Broker her.

Alternativ bietet cod.m eigene Hardware-Erweiterungen für den Rasperry Pi an: https://shop.codm.de/bundles/9/cc1101-spi-bundle-4cm/2.0dbi

ESP32

ESP32 sind kleine Microcontroller aus China, welche günstig zu beschaffen und sehr universell einsetzbar sind. Sie sind in sehr vielen billigen IoT-Geräten zu finden. Meist können diese Geräte dann mit einer alternativen Firmware bestückt werden, um die voreingestellten Cloud-Dienste zu entfernen und eigene Funktionen und Schnittstellen einzubauen.

Darüberhinaus können ESP32-basierende Systeme günstig als Bausatz gekauft werden um eigene IoT-Geräte herzustellen.

Alexa

Einige Geräte – z.B. die Tasmota-Firmware für ESP32-Systeme – bieten eine Hue-Schnittstelle an. Solche Geräte machen im Netzwerk auf sich aufmerksam und stellen ihre Funktionalität (Licht an/aus, Dimmer oder Farbton) zur Verfügung. Alexa kann diese Geräte automatisch im Netzwerk finden und somit ansprechen. Das Gerät wird von Alexa unter dem Gerätenamen, der im Gerät selbst eingestellt wurde (z.B. „Wohnzimmer“) und dessen Funktion („Licht“) angesprochen – „Alexa, schalte Wohnzimmer Licht ein.“

 

Allgeek Techblog

Folgender Artikel beschreibt den Aufbau eines vergleichbaren Heim-Automationssystems mit den og. Komponenten sehr gut:

Homematic mit node-red über homegear