Von OpenHAB zu ioBroker

Nachdem ich letztes Jahr mit OpenHAB mein Smart Home startete, bin ich nun zu ioBroker gewechselt und muss sagen, der Umstieg hat viele Vorteile gebracht.

Bei ioBroker werden die Zigbee Geräte durch einen eigenen Adapter unterstützt. Dadurch kann man neue Geräte relativ einfach durch Bedienung der Weboberfläche hinzufügen. Auch der Ärger durch parsen der JSON-Daten des MQTT entfällt.

Leider gibt es keinen Skript-Interpreter für Python Skripte im ioBroker. Nun gut, lerne ich halt JavaScript. Dafür ist die Unterstützung von Blockly im ioBroker deutlich besser. Es sind alle benötigten Funktionen als Elemente vorhanden. Da man sich für ein erstelltes Blockly auch den JavaScript Code anzeigen lassen kann, kann man sehr einfach herausfinden, welche Funktionen man in JavaScript benötigt. Das erleichtert das Lernen ungemein.

Nachteil an ioBroker: Mein Beamer wurde nicht unterstützt.

Am Anfang habe ich das darüber gelöst, dass ich den Beamer weiterhin über OpenHAB angesteuert habe. Im ioBroker gibt es einen OpenHAB-Adapter, über den man die entsprechenden Datenpunkte aus OpenHAB ansprechen kann. Da das am Ende der einzige Grund war, OpenHAB noch laufen zu lassen, habe ich mich entschlossen kurzerhand einen entsprechenden Adapter für ioBroker selber zu schreiben. Dies ist nicht sehr aufwendig und ging dementsprechend schnell (siehe hier).

OpenHAB 3 und Zigbee-Geräte

Da steht man im Ikea, möchte Rollos für seine Wohnung besorgen und sieht FYRTUR mit Motor – sehr nett. Zu Hause stellt man dann fest, dass die Rollos Zigbee sprechen und da man sowieso noch einen Raspberry PI rumstehen hat, besorgt man ihm kurzerhand einen Zigbee-USB-Adapter und schon wird die Lernkurve steil.

Ein paar Tipps dazu:

  • Ein Raspberry 3 Modell B (1 GB Hauptspeicher) ist mit OpenHAB 3 ganz schnell an den Grenzen des Hauptspeichers angekommen. OpenHAB ist in Java implementiert und geht alles andere als sparsam mit dem Hauptspeicher um
  • Beim Eintragen neuer Geräte in die Konfigurationsdatei von Zigbee2mqtt (configuration.yaml) muss man, wenn man einen Friendly-Name eingetragen hat zigbee2mqtt neu starten bevor man das nächste Gerät hinzufügt, ansonsten sind die eigenen Änderungen direkt wieder weg.
  • Das Hinzufügen eines Zigbee-Gerätes in OpenHAB ist mir am Anfang, als Neuling der Materie, sehr unklar gewesen und ich habe lange gebraucht, aufgrund eher schlechter Beschreibungen im Netz, herauszufinden, wie ich die Kanäle eines Zigbee-Gerätes konfigurieren muss um tatsächlich Daten empfangen und senden zu können:
    • Die Kommunikation läuft über MQTT, wie Zigbee2mqtt schon verät.
    • Man fügt in OpenHAB einen MQTT Broker hinzu
    • Nun kann man Generic MQTT Things erzeugen
    • Jedem Ding kann man nun die entsprechenden Kanäle hinzufügen für alle auslesbaren Werte und mögliche Steuerungen.
    • Das MQTT State Topic muss dabei auf zigbee2mqtt/<zigbeename> gesetzt werden (<zigbeename> ist dabei der friendly name, welchen man in der zigbee2mqtt-Konfiguration hinterlegt hat) – nur benötigt, wenn der entsprechende Kanal gelesen werden kann.
    • Das MQTT Command Topic muss auf zigbee2mqtt/<zigbeename>/set gesetzt werden – nur benötigt wenn auf dem entsprechenden Kanal geschrieben werden kann.
    • Damit man dann auch sinnvolle Werte erhält muss man Show advanced aktivieren und bei Incoming Value Transformations den Text JSONPATH:$.<kanalname> eintragen (nur wenn der Kanal gelesen werden kann)
      und bei Outgoing Value Format so etwas wie {„<kanalname>“:%s} eintragen (nur wenn auf dem Kanal geschrieben werden kann).
      Hat man hierbei einen Zahlenwert, so muss statt %s im Outgoing Value Format %d eingetragen werden.

Die entsprechenden Kanalnamen kann man für das entsprechende Gerät in der Liste der unterstützen Geräte nachlesen. Dort steht für jedes Gerät auch die Anleitung, wie das Gerät dem Netzwerk hinzugefügt werden kann.

Und falls mal ein Gerät in der Liste steht, jedoch bei Euch einfach nicht funktionieren möchte, könnte es sein, dass Ihr zigbee2mqtt aktualisieren müsst. Auf der Website ist der aktuelle Stand der unterstützen Geräte. In einer älteren Version sind womöglich weniger Geräte unterstützt und dementsprechend nicht verwendbar.

Falls das noch nicht klappen sollte, überprüft, dass das Add-on JSONPATH Transformation eingebunden ist unter Einstellungen – Add-ons – Transformations.

Nachtrag: Natürlich gibt es auch das TRÅDFRI Gateway von Ikea, welches auch als eigenes Gerät in OpenHAB unterstützt wird. Damit fällt das Eintragen der einzelnen Geräte über Generic MQTT Things weg, allerdings redet das Gateway (vermutlich) nur mit Ikea-Geräten. Da ich mir direkt auch Geräte anderer Hersteller besorgt habe (Fensterkontakte, Temperatur- und Luftfeuchtigkeits-Sensor), war das kein Weg, den ich gehen wollte.