Inhalt
Wer sich etwas eingehender mit dem Thema Hausautomatisierung beschäftigt, wird schnell bemerken, dass es ein schier unüberschaubare Menge an Systemen verschiedener Hersteller dafür gibt. Bald sieht man aber auch, dass viele Wege in die Sackgasse führen: geringes Angebot an Sensoren und Aktoren, mangelnde Kompatibilität mit Produkten anderer Hersteller, Bindung an Cloud-Systeme und oft hohe Kosten sind nur einige der Gründe dafür.
Es gibt zwar auch universelle Systeme [5], die offen für für andere Protokolle und Produkte sind, aber neben den Kosten bleibt auch dabei ein ungutes Gefühl der Abhängigkeit.
Dabei sind fast alle Komponenten dieser Smart-Home-Zentralen heute auch als Open Source Software verfügbar und laufen problemlos auf billigen und energieeffizienten Plattformen wie dem Raspberry Pi.
Nach den durchwachsenen Erfahrungen mit den DECT-ULE-Komponenten von AVM und Telekom [6] heißt das Projekt nun: Aufbau einer Hausautomatisierungszentrale auf Basis von Raspberry Pi mit Open Source Software, die zunächst Komponenten von homematic, später auch andere Systeme wie ZigBee, WLAN/Tasmota oder Infrarot-Empfänger steuern kann.
Hardware
Jede Hardware, auf der ein Standard-Linux-System installiert werden kann, ist geeignet. Die Leistungsanforderungen sind eher gering. Bei mir tut es ein älterer RaspberryPi 2B. Die zusätzliche Leistung der 3er Serie ist nicht unbedingt nötig, aber die eingebaute WLAN-Unterstützung kann hilfreich sein. Andere Einplatinenrechner wie Orange- oder BananaPi, ODROID oder CubieBoard oder sogar ein Mini-x86-System sind ebenso geeignet, brauchen dann aber ein anderes Betriebssystem-Image.
Das System landet beim RasPi auf einer SD-Karte von mindestens 4GByte; weiterer Speicher ist nicht nötig.
Systeminstallation
Die Grundinstallation des RasPi-Systems bietet keinerlei Besonderheiten. Es wird das schlanke Raspbian Lite benutzt, da kein grafischer Desktop nötig ist - alle Zugriffe laufen später entweder über eine ssh-Console oder einen Web-Browser.
- Raspbian Lite von [1] herunterladen, entpacken und z.B. mit dd oder Etcher auf SD-Karte schreiben
- File ’ssh’ im root-Verzeichnis der SD-Karte anlegen, um ssh-daemon zu starten
- feste IP-Adresse in cmdline.txt eintragen:
dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=PARTUUID=c7cb7e34-02 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait quiet init=/usr/lib/raspi-config/init_resize.sh ip=192.168.2.22
- Pi booten und per ssh verbinden (User: pi, passwort: raspberry)
- sudo raspi-config ausführen, Partition vergrößern
- Mit sudo apt-get update und sudo apt-get upgrade aktuelle Linux-Updates installieren
Basis-Applikationen installieren
- node.js und node-red:
bash <(curl -sL https://raw.githubusercontent.com/node-red/linux-installers/master/deb/update-nodejs-and-nodered)
- Mosqitto:
wget http://repo.mosquitto.org/debian/mosquitto-repo.gpg.key
sudo apt-key add mosquitto-repo.gpg.key
cd /etc/apt/sources.list.d/
sudo wget http://repo.mosquitto.org/debian/mosquitto-stretch.list
sudo apt-get update
sudo apt-get install mosquitto
sudo systemctl enable mosquitto.service
Homematic Support
Homematic arbeitet mit dem Funkprotokoll BidCoS auf dem 868 MHz Band. Dafür ist ein zusätzlicher USB-Funkstick nötig, der als nanoCUL bekannt ist. Basis ist ein kleines Arduino-Board mit einem CC1101-Funkmodul und entsprechender Firmware.
Den Stick kann man entweder selbst nach der Anleitung in [7] zusammenbasteln oder für etwa 25 Euro als Fertigteil kaufen. Alternativ kann man auch das Original-CUL-Modul von Busware benutzen, das aber mit etwa 50€ zu Buche schlägt.
Auf dem Pi benötigen wir noch ein Softwaremodul zur Kommunikation mit dem CUL. Dafür eignet sich das homegear-Projekt [4], das so installiert wird:
sudo wget https://apt.homegear.eu/Release.key && sudo apt-key add Release.key && sudo rm Release.key
sudo echo 'deb https://apt.homegear.eu/Debian/ stretch/' >> /etc/apt/sources.list.d/homegear.list
sudo apt update
sudo apt install homegear homegear-nodes-core homegear-management
sudo apt install homegear-homematicbidcos
sudo vi /etc/homegear/families/homematicbidcos.conf
Zigbee-Support
Zwar könnte man Zigbee-Geräte auch direkt aus node-red heraus ansprechen, um aber eine einheitliche Einbindung aller Endgeräte über MQTT zu haben, ist die Kommunikation über zigbee2mqtt sinnvoller. Die Installation erklärt [8] ausführlich.
Sonoff/Tasmota Support
Um die verbreiteten Sonoff-Komponenten ohne Hersteller-Cloud-Zwang benutzen zu können, müssen sie zunächst mit einer neuen Firmware versehen werden. Das wird in vielen Tutorials ausführlich erklärt, etwa in [9]. Alternativ kann man bei diversen Versendern auch bereits umgeflashte Sonoff-Switche kaufen.
In der Tasmota-Web-Oberfläche jedes Sonoff-Gerätes wird dann der MQTT-Zugang zu unserem Server konfiguriert. So können die Sonoffs über MQTT Schaltbefehle empfangen und Statusmeldungen senden.
Auf den meisten Sonoff-Switches sind auch ein oder mehrere GPIO-Ports des Prozessors herausgeführt. So kann man die Funktionen auch leicht erweitern, etwa um zusätzliche Kontakte. Die Tasmota-Firmware ist darauf bereits eingerichtet.
Infrarot-Support
Zur Steuerung älterer Hardware ohne Netzwerk-Interface braucht man einen Infrarot-Sender und Empfänger im Netzwerk. Neben dem Selbstbauprojekt IR-WLAN-Gateway, das unter anderem im FHEM-Wiki vorgestellt wird, gibt es fertige Gateways der chinesischen Firma Broadlink. Unter den verschiedenen Modellen mit unterschiedlichen Sendeleistungen und mit oder ohne 433-MHz-Funkmodul.
Ich habe mich für das sehr einfache Modell Mini RM 3 entschieden, dass neben dem IR-Sender und -Empfänger lediglich ein WLAN-Modul besitzt. Es wird bei den bekannten Versendern für etwa 20€ angeboten und meist direkt aus China geliefert.
Die mitgelieferte Smartphone-App funktioniert nur über das Cloud-Gateway des Herstellers und ist entsprechend unzuverlässig. Stattdessen verwende ich die MQTT Broadlink Bridge von Fredrick Bäcker, die als Open Source über Github verfügbar ist. Sie ist eigentlich für die Nutzung unter OpenHAB gedacht, funktioniert aber unter NodeRed genau so gut. Sie wird nach Anleitung manuell als Node.js-Modul installiert.
Mein Modell wurde nicht sofort erkannt, da es offensichtlich eine neuere Firmware-ID (0x27de) besaß. Sie kann recht einfach in /srv/openhab2-conf/broadlink-mqtt-bridge/node_modules/broadlinkjs-rm/index.js unter „RM Devices (without RF support)” (Zeile 9ff) nachgetragen werden und wurde inzwischen auch in das Modul aufgenommen.
Zum Anlernen der Befehle der Infrarot-Fernbedienungen benutzt man am besten den Web-Server, den die MQTT Broadlink Bridge unter Port 3000 offeriert. Jede Taste einer Fernbedienung sendet eine Sequenz von Infrarot-Signalen, die im Anlern-Modus von der Bridge empfangen und als Datei unter /srv/openhab2-conf/broadlink-mqtt-bridge/commands abgespeichert wird.
Zum Aufzeichnen trägt man zunächst auf der Homepage den Kommando-Namen unter „Topic” ein, etwa „av/technics/power” für die Power-Taste auf der Fernbedienung meines alten Technics-Receivers. Dann auf „Record IR” klicken, den RM Mini mit der Fernbedienung anpeilen und innerhalb von 30 Sekunden die Taste drücken.
Die Aufnahme landet dann in /srv/openhab2-conf/broadlink-mqtt-bridge/commands/av/technics/power.bin. So fährt man mit allen Tasten aller Fernbedienungen fort. Alle Tasten einer Fernbedienung sollen in einem Device-Verzeichnis (hier: „technics”) landen, die Fernbedienungen einer Gruppe in einem Gruppen-Verzeichnis (hier: „av”). Das ist zwar etwas mühsam, geht aber schneller als man denkt.
Mit dem „Play”-Knopf kann man die Kommandos zum Test wieder abspielen. Im späteren Betrieb werden sie aber vom MQTT-Broker gesteuert. Unter NodeRed sendet man für das oben aufgenommene Kommando eine Message mit der Payload „play” und dem topic „broadlink/av/technics/power” an den MQTT-Broker - einfach, oder?
Konfiguration
homegear
Eindeutige Adresse für die Zentrale festlegen und rpc-Server absichern:
- in /etc/homegear/families/homematicbidcos.conf editieren:
centralAddress = 0xFD<xxxx> - absichern: alle rpc-Server nur auf interface ::1 (localhost) hören lassen
Mosquitto
- anonyme Logins verbieten
- Username/Passwort für node-red und homegear setzen
- ggfs. SSL einschalten
node-red
- admin absichern:
sudo npm install -g node-red-admin node-red-admin hash-pw vi /home/pi/.node-red/settings.js sudo service nodered restart
- https erzwingen
- key und certificate erzeugen (hier: letsencrypt)
- in settings.js require https setzen (var fs = require(„fs”);)
- unter https key und certificate eintragen
Broadlink
Zugangsdaten des MQTT-Borkers in /srv/openhab2-conf/broadlink-mqtt-bridge/config/local.json (nicht in default.json !) konfigurieren:
{
"mqtt": {
"host": "127.0.0.1",
"port": 1883,
"protocol": "mqtt",
"subscribeBasePath": "broadlink",
"username": "meinMqttUserName",
"password": "meinMqttPasswort"
},
"recording": {
"timeout": {
"ir": 30,
"rf": 30
},
"path": null
},
"gui": {
"port": 3000
}
}
Geräte anlernen
Sowohl bei homegear/homematic als auch bei Zigbee muss jedes Gerät vor der Benutzung erst mit seiner Steuerzentrale gepaart werden. Das geschieht meist durch langes Drücken eines Tasters am Gerät; eventuell muss die Software vorher in den Anlernmodus versetzt werden. Genaueres erfährt man in den jeweiligen Software-Dokumentationen.
Flows in node-RED anlegen
Schließlich kann man die gepaarten Geräte über die MQTT-Knoten in der Node-RED-GUI verwenden. Unten ein einfacher Beispiel-Flow zum Schalten einer Zigbee-Steckdose.
Umzug auf neue Hardware
Es gibt Fälle, in denen man das System von einem alten RasPi nicht komplett auf den neuen mitnehmen kann. Das ist zum Beispiel beim Umzug von einem Pre-4-RasPi auf den RasPi 4 der Fall: dort ist zwingend mindestens ein Raspbian Buster nötig; eine alte Installation läuft auch nach einem Upgrade nicht.
Dann installiert man im neuen System alle Softwarekomponenten wie oben beschrieben und kopiert nur die Konfigurationen vom alten System. Im Einzelnen sind das:
- Node-Red:
- ~/.node-red/*
- MQTT
- /etc/mosquitto/*
- nur bei Persistenz: /var/lib/mosquitto.db
- Homematic/Homegear:
- /etc/homegear/*
- /var/lib/homegear/db.sql
- Zigbee2mqtt
- /opt/zigbee2mqtt/data/*
- Broadlink-Bridge
- /srv/openhab2-conf/broadlink-mqtt-bridge/commands/*
Quellen:
- Raspbian: https://www.raspberrypi.org/downloads/raspbian
- node-red: https://nodered.org/docs/hardware/raspberrypi
- Mosquitto: https://mosquitto.org/blog/2013/01/mosquitto-debian-repository
- Homegear: https://doc.homegear.eu/data/homegear/installation.html
- Universelle Smart-Home-Zentralen, c’t 8/2019, Seite 114ff, https://www.heise.de/select/ct/2019/8/1554821800579135
- Smart Home unter FRITZ!OS, https://edv.mueggelland.de/fritz-smarthome/
- nanoCUL Homepage https://www.nanocul.de
- Zigbee2MQTT Installation http://www.zigbee2mqtt.io/getting_started/running_zigbee2mqtt.html
- Sonoff mit Tasmota flashen https://creationx.shop/ratgeber/sonoff/flashen
2 Kommentare