Aus Linux-Magazin 04/2018

IO-Broker integriert diverse Smart-Home-Protokolle

© maksym yemelyanov, 123RF

Der Smart-Home-Markt wächst und mit ihm auch die Anzahl unterschiedlicher Systeme. Um sie unter einen Hut zu bekommen, bedarf es eines fähigen Vermittlers.

Ohne einheitliche Sprache, das lehrt der Turmbau zu Babel, drohen Stillstand und Verwirrung. Auch das eigene Smart-Home-Projekt kann scheitern, wenn sich seine Komponenten untereinander nicht verstehen. Leider gibt es aber für die Gebäude-Automation keine einheitlichen Sprache. Es muss also ein Dolmetscher her, der die Protokolle aller beteiligten Systeme spricht und ihnen beim Informationsaustausch hilft.

Fähiger Dolmetscher

Als äußerst fähiger Vermittler erweist sich das 2014 ins Leben gerufene und seitdem sehr engagiert unterstützte Projekt IO-Broker [1]. Seit der letzten Vorstellung im Linux-Magazin [2] hat sich viel bei der frei nutzbaren IoT-Plattform getan. Die Anzahl der so genannten Adapter ist von etwa 100 auf mehr als 180 angewachsen – Tendenz weiter steigend. Gute Chancen also, der babylonischen Sprachverwirrung zu entkommen.

In der IO-Broker-Welt stellen Adapter die Interfaces zu den verschiedenen Smart-Home-Systemen bereit. Das sind einzeln installierbare Softwarekomponenten, die sich in die Administrations-Weboberfläche von IO-Broker einklinken und spezifische Fähigkeiten mitbringen.

Abbildung 1 zeigt die stark überarbeitete Administrationsumgebung (Admin-Adapter in der Version 3.1.7) mit der nach Beleuchtungsanwendungen gefilterten Ansicht. IO-Broker unterstützt aktuell allein zehn unterschiedliche Systeme der Beleuchtungssteuerung, inklusive der beliebten Osram-Lightify-Geräte, der Philips-Hue-Produkte und der Ikea-Trådfri-Komponenten.

Abbildung 1: Die IO-Broker-Admin-Oberfläche im neuen Stil.

Abbildung 1: Die IO-Broker-Admin-Oberfläche im neuen Stil.

Schon für knapp 60 Euro lässt sich ein Smart-Home-Universal-Gateway aufbauen. Ein Raspberry Pi (vorzugsweise Modell 3), ein passendes Netzteil, eine Micro-SD-Karte (mit zum Beispiel 16 GByte) sowie Gehäuse und Patch-Kabel reichen aus. Falls der Raspi mehrere USB-Schnittstellen zu bedienen hat, empfiehlt sich zudem der Einsatz eines externen USB-Hub, um Stabilitätsprobleme wegen der schwachen USB-Stromversorgung zu vermeiden.

Passende SD-Images [3] hat das IO-Broker-Team für eine Vielzahl an Mini-Computern parat. Außer diversen Raspi-Builds stehen auch Downloads für Banana Pi, Cubietruck, Pine 64, Cubox, Tinkerboard, Orange Pi, Rock64 sowie für Windows bereit. Besonders aufgeräumt wirkt die Installation des IO-Broker-Gateway mit einem speziellen Hutschienengehäuse für den Raspi (Abbildung 2, links unten) sowie einem USB-Hub (Mitte links) und LAN-Switch (Mitte rechts), ebenfalls in Hutschienenmontage.

Abbildung 2: IO-Broker mit Raspi als Hutschieneninstallation.

Abbildung 2: IO-Broker mit Raspi als Hutschieneninstallation.

Auto-Discovery

Für die ersten Schritte mit IO-Broker ist die Windows-Version durchaus eine gute Testplattform, um sich mit den grundlegenden Konzepten vertraut zu machen. Später sollte das ganze System auf einen kleinen stromsparenden Mini-Computer umziehen. Der erwähnte Raspberry Pi 3 und damit das SD-Image für Raspbian light auf Debian-Stretch-Basis sind eine gute Basis für den 24/7-Dauerbetrieb und damit voll Smart-Home-tauglich.

Den IO-Broker konfiguriert der Anwender komplett im Browser. Nach der Installation und der Eingabe einiger Daten zur Geoposition bietet der Setup-Assistent an, automatisch nach verfügbaren Geräten im lokalen Netzwerk zu suchen. Der Discovery Adapter leistet dabei ordentliche Arbeit und hat in der Testinstallation 21 Geräte und elf Services gefunden und für die erkannten Fritz-Boxen und einen Influx-DB-Datenbankserver direkt Adapterinstanzen angelegt.

Zusätzlich finden sich nach dem Discovery-Durchlauf bereits Instanzen für die später noch benötigte Javascript-Umgebung sowie für den Ping-Adapter, dem bereits die IP-Adressen und Hostnamen der gefundenen Geräte zugeordnet sind.

Systemübergreifende Vermittlung

Ein Beispiel, das demonstriert, wie unterschiedliche Smart-Home-Systeme dank IO-Broker Daten austauschen können, zeigt Abbildung 3. Das IO-Broker-System vermittelt hier zwischen einem Harmony-Hub, das ist ein Zusatzteil einer Logitech-Universalfernbedienung, dem KNX-System [4] und einer Philips-Hue-Beleuchtung, genauer gesagt der Hue-Bridge. Obwohl alle drei Systeme unterschiedliche Sprachen sprechen, funktioniert der Austausch einwandfrei.

Abbildung 3: Beispielaufbau mit IO-Broker als zentralem Vermittler.

Abbildung 3: Beispielaufbau mit IO-Broker als zentralem Vermittler.

Mit dieser Konfiguration ist bereits eine anspruchsvolle Automation möglich, wie das folgende Beispiel zeigt. Vorbedingung ist, dass alle Einzelsysteme für sich funktionsfähig sind. Im Einzelnen heißt das:

  • Über den Harmony-Hub wurde eine Aktivität »Fernsehen« angelegt.
  • Im KNX-System existiert eine KNX-Szene »Fernsehen«.
  • Über die Hue-Bridge wurden alle Leuchten angelernt.

Die Automation besteht nun darin, dass der Anwender durch Betätigen der “Fernsehen”-Taste auf einer Harmony-Fernbedienung die KNX-Szene »Fernsehen« anwählt. Diese Szene hat dann wiederum zur Folge, dass sich nicht nur der Fernseher einschaltet, sondern über die Hue-Bridge gleichzeitig auch die Fernsehbeleuchtung.

Über den KNX-Bus könnte die Szene natürlich noch beliebige weitere Aktionen auslösen, etwa das Schließen der Jalousien oder das Dimmen anderer Leuchtmittel (außerhalb des Hue-Systems).

Diese innerhalb der Einzelsysteme definierten Vorgänge sind für das IO-Broker-Beispiel aber nicht relevant. Vielmehr liegt der Schwerpunkt darauf, die Brücken zwischen dem Harmony-Hub und KNX einerseits sowie zwischen KNX und dem Hue-System andererseits zu schlagen.

Adapter-Einbindung

Damit IO-Broker mit diesen Teilsystemen kommunizieren kann, sind insgesamt vier Adapter notwendig:

  • Javascript: »javascript« (existiert nach dem Auto-Discovery bereits).
  • KNX-System: »knx«.
  • Logitech-Harmony-Hub: »harmony«.
  • Philips-Hue-System/Bridge: »hue«.

Bei der Installation des Philips-Hue-Adapters ist lediglich die IP-Adresse der Hue-Bridge wichtig (Feld »Bridge-Adresse«) und entweder ein neuer User anzulegen oder ein bereits bestehenden User im Feld »Bridge-Anwender« einzutragen (Abbildung 4).

Abbildung 4: Konfiguration des Hue-Adapters.

Abbildung 4: Konfiguration des Hue-Adapters.

Im Sidebar-Menü »Instanzen« sollte der neu hinzugefügte Adapter mit dem Namen »hue.0« aufgeführt sein und die Status-LED mit Grün signalisieren, dass die Verbindung zum Host (der Hue-Bridge) eingerichtet ist. Ebenso einfach ist die Instanz des Harmony-Adapters erzeugt. Die Dialogbox erfordert nur zwei Eingaben: den Hub-User und das Hub-Passwort.

Ein klein wenig mehr Konfigurationsaufwand ist nur für den KNX-Adapter notwendig. Der Assistent erwartet die IP-Adresse der KNX-IP-Schnittstelle oder des KNX-IP-Routers, den zugehörigen Port (3671) und die physikalische KNX-Adresse der Schnittstelle (etwa 1.1.249). Außerdem bietet der Assistent an, eine bestehende ETS-Projektdatei (Format ».knxproj«) einzubinden.

Diese Datei lässt sich mit der ETS-Software [5] über die Export-Funktion erzeugen. Der Import der ETS-Datei kann auf einem kleinen System wie dem Raspi durchaus ein paar Minuten dauern und wird am Ende mit einer Information über die Anzahl der erzeugten IO-Broker-Objekte quittiert (Abbildung 5).

Abbildung 5: Einrichten des KNX-Adapters.

Abbildung 5: Einrichten des KNX-Adapters.

Diese Objekte repräsentieren die in der ETS-Projektdatei enthaltenen KNX-Gruppenadressen. Sie tauschen später Nachrichten zwischen IO-Broker und KNX aus. Allgemeiner gesagt sind die IO-Broker-Objekte, die automatisch nach der Installation der Adapter angelegt wurden, der Dreh- und Angelpunkt der Kommunikation. Das Schreiben auf eines dieser Objekte löst bei dem verbundenen System eine Aktion aus (etwa KNX-Szene abrufen). Erzeugt das verbundene System eine Information, wird diese innerhalb von IO-Broker ebenso in einem Objekt widergespiegelt (zum Beispiel passend wäre die Aktivierung einer Harmony-Hub-Activity).

Bleibt zuletzt noch die Einbindung des Javascript-Adapters. Der wurde normalerweise schon während des Autodiscovery-Vorgangs installiert. Um später bei der Javascript-Programmierung mehr Unterstützung beim Debugging zu haben, bietet es sich aber an, im IO-Broker-Reiter »Instanzen« die Expertenansicht zu aktivieren. Zu finden ist der entsprechende Button direkt über der Listendarstellung der Adapterinstanzen in Form einer kleinen blauen Figur auf einem Klemmbrett. Bei aktivierter Expertenansicht lässt sich die Log-Stufe in der gleichnamigen Spalte von »Info« auf »Debug« anheben, was während der Javascript-Entwicklung für bessere Konsolenausgaben sorgt.

Sind alle Adapter ordnungsgemäß konfiguriert, zeigt die Instanzenansicht für jeden Adapter die grüne Status-LED (Abbildung 6). Übrigens lassen sich auch mehrere Instanzen für einen Adapter erzeugen. Eine zweite vorhandene Hue-Bridge würde beispielsweise nach der gleichen Prozedur eingebunden, hätte aber dann die Instanzbezeichnung »hue.1«, statt »hue.0«.

Abbildung 6: Alle benötigten Adapter sind hier erfolgreich eingebunden.

Abbildung 6: Alle benötigten Adapter sind hier erfolgreich eingebunden.

Kommunikation über Objekte

IO-Broker hat automatisch bereits während der Adapter-Installation jede Menge Objekte erzeugt. Über den Reiter »Objekte« lassen sich alle Objekte in einer hierarchischen Ansicht öffnen, inspizieren und modifizieren. Dieser zentrale Datenspeicher ist eine der großen Stärken von IO-Broker. Im Prinzip handelt die Software darüber die Kommunikation zwischen den einzelnen Smart-Home-Systemen ab. Die Ansicht aktualisiert sich automatisch, wenn sich Objekte ändern. Ebenso lässt sich sehr einfach eine Aktion in einem angebundenen System auslösen, indem man den zugehörige Objektwert in der Spalte »Wert« manuell überschreibt.

Die Kommunikation mit einem externen Gerät lässt sich einfach ausprobieren. Das folgende Beispiel soll eine Hue-Leuchte einschalten. In der Objekt-Ansicht wird die hierarchische Liste so weit ausgeklappt, bis die gesuchten Objekte gefunden sind. Je nach Adapter ist die Hierarchie unterschiedlich aufgebaut. Der Pfad für eine Hue-Leuchte würde beispielsweise so aussehen:

hue.0 | Philips_hue | Wz | Hängelampe_vorne

Die Bezeichnungen »Wz« (für Wohnzimmer) und »Hängelampe_vorne« stammen aus der Hue-Bridge-Konfiguration. Sie reflektieren die Benutzereinstellungen zum Zeitpunkt der Hue-System-Inbetriebnahme.

Wenn die letzte Hierarchiestufe aufgeklappt ist, stellt IO-Broker die benutzbaren Objekte dar. An dieser Stelle reicht es, den Wert für das Objekt »on« in der Spalte »Wert« von »false« auf »true« zu setzen, um die Leuchte »Hängelampe_vorne« anzuschalten (Abbildung 7). Automatisch aktualisieren sich als Antwort darauf die Objekte »level« auf »100« und »bri« (Brightness) auf »254«.

Abbildung 7: Gerätebedienung über Objekte-Ansicht.

Abbildung 7: Gerätebedienung über Objekte-Ansicht.

Da es sich in dem Beispiel um eine mehrfarbige LED-Leuchte handelt, liegt es nahe, etwas Farbe ins Spiel zu bringen. Wird das Objekt »effekt« mit dem Wert »colorloop« beschrieben, wechselt die Hue-Leuchte permanent die Farbe. Der Wert »none« stoppt das Spektakel. Nähere Informationen zum Hue-Farbmodell sind auf den Developer-Webseiten [6] zusammengetragen.

Automation mit Javascript

IO-Broker-Objekte lassen sich nicht nur manuell lesen und beschreiben, sondern natürlich auch automatisiert. Andernfalls hätte sich die ganze Arbeit bis hierher ja auch nicht gelohnt. Dazu hält IO-Broker drei Konzepte bereit: Szenen (bitte nicht verwechseln mit den KNX-Szenen), Flows in Node-Red [7] und Javascript. Die Funktionsweise von Szenen und Flows erläutert [2]. Auf die mächtigste der drei Varianten, nämlich das Schreiben eigener kleiner Javascript-Programme, geht jetzt dieser Beitrag ein.

Der Reiter »Skripte« führt zur eingebauten Javascript-Entwicklungsumgebung von IO-Broker. Ein Klick auf das Symbol »Neues Skript« erzeugt im Verzeichnis »common« ein leeres Textfile mit dem Namen »Skript1«. Das File lässt sich beliebig umbenennen. Vor dem Speichern der noch leeren Datei sollte der Entwickler noch die Checkbox »Hilfe-Ausgaben« aktivieren. In dem eingebauten Editor kann er mit dem Automatisieren loslegen. Um sich mit den IO-Broker-spezifischen Erweiterungen von Javascript vertraut zu machen, lohnt ein Blick in die Dokumentation auf Github [8].

Die Umsetzung der oben genannten Beispielautomation (Fernseh-Taste auf Fernbedienung löst KNX-Szene »Fernsehen« aus, die wiederum eine zusätzliche Hue-Leuchte schaltet) ist in Listing 1 dargestellt. Zeile 1 enthält den wohl wichtigsten Bestandteil: Die »on()«-Anweisung definiert eine Callback-Funktion, die immer dann zum Zuge kommt, wenn sich der Zustand des Objekts »harmony.0.Harmony-Hub.activities.currentActivity« ändert. Die komplette Pfadangabe des Objekts ergibt sich durch die hierarchische Anordnung im Objektbaum. Der angegebene String lässt sich in der »Objekt«-Ansicht durch das Clipboard-Symbol über einem Objektnamen gewinnen.

Listing 1

Fernseh-Szene

01 on('harmony.0.Harmony-Hub.activities.currentActivity', function (obj) {
02  var neueActivity = "";
03  var alteActivity = "";
04
05  console.log ("Harmony Hub Activity Event erkannt:");
06  neueActivity = obj.state.val;
07  alteActivity = obj.oldState.val;
08
09  console.log ("neue activity: " + neueActivity);
10  console.log ("alte activity war: " + alteActivity);
11
12  switch (neueActivity) {
13  case "Fernsehen":
14  console.log ("activity Fernsehen erkannt.");
15  // KNX-Szene Fernsehen auslösen
16  setState('knx.0.Zentral.Szenen.Szenen_Fernsehen', 0, false /*kein ack*/);
17  break;
18  }
19 });
20
21 on('knx.0.Zentral.Szenen.Szenen_Fernsehen', function (obj) {
22  var szenenNr = toInt(obj.state.val) + 1;
23  console.log ("KNX-Szene wird abgerufen, Nr.:" + szenenNr);
24
25  switch (szenenNr) {
26  case 1:
27  console.log ("Hue Lampe anschalten.");
28  setState('hue.0.Philips_hue.Wz._Hängelampe_vorne.on', 1, false /*kein ack*/);
29  break;
30  }
31 });

Die Funktion ermittelt im weiteren Verlauf den Wert des »currentActivity«-Objekts und gibt ihn zu Demonstrationszwecken zusammen mit dessen vorherigem Wert in der Konsole aus. Die »switch()«-Anweisung in Zeile 12 betrachtet unterschiedliche Werte der Activity, und Zeile 16 löst schließlich die KNX-Szene »Fernsehen« aus.

Das geschieht einfach dadurch, dass das entsprechende IO-Broker-Objekt über die Funktion »setState()« beschrieben wird. Der Wert »0« repräsentiert die KNX-Szene mit der Nummer 1 (Wert ist Szenennummer minus 1). Damit der Adapter den Wert auch tatsächlich setzt, muss der Anwender einen dritten Parameter auf »false« setzen. Das klingt zunächst etwas unlogisch, ist aber im IO-Broker-Wiki [9] einleuchtend erklärt.

Im Gruppenmonitor der ETS-Software ist schön zu erkennen, wie die Fernseh-Szene KNX-seitig ausgelöst wurde. Das Szenen-Objekt mit der KNX-Gruppenadresse 15/4/8 erhält den Wert »0«, was bedeutet, dass das Programm die Szene 1 abruft.

Die zweite »on()«-Anweisung in Zeile 21 schaltet auch die Hue-Lampe »Hängelampe_vorne« an, wenn jemand die KNX-Szene »Fernsehen« aktiviert. Man hätte den »setState()«-Funktionsaufruf aus Zeile 28 natürlich auch direkt unter den ersten »setState()«-Aufruf aus der Harmony-Callback-Funktion packen können. Eine eigene Callback-Funktion wie in Listing 1 hat aber den Vorteil, dass die Hue-Lampe auch dann eingeschaltet wird, wenn die KNX-Szene nicht über IO-Broker ausgelöst wurde, sondern zum Beispiel nur innerhalb des KNX-Systems.

Fazit

Bereits mit geringen Kenntnissen in Javascript lassen sich über die IO-Broker-Plattform beinahe beliebige Smart-Home-Teilsysteme in ein großes Ganzes integrieren. Möglich machen das einerseits die Vielzahl verfügbarer Adapter, andererseits die geniale Objektdatenbank. IO-Broker entpuppt sich einmal mehr als eine echte Top-Lösung für kostengünstige Vernetzung in den eigenen vier Wänden. Bleibt nur zu hoffen, dass die engagierte Community auch künftig fleißig an IO-Broker und an neuen und verbesserten Adaptern arbeitet.

Infos

  1. Projekt-Homepage: http://www.iobroker.net
  2. Stefan Heinle, “Vermittlerdienste”: Linux-Magazin 07/17, S. 40
  3. IO-Broker SD-Images: http://www.iobroker.net/docu/?page_id=2563&lang=de
  4. Stefan Heinle, “KNX – Bussystem für intelligente Gebäudetechnik”: Linux-Magazin 12/16, S. 30
  5. KNX-ETS-Software: https://www.knx.org/knx-de/software/uebersicht/index.php
  6. Webseite für Philips-Hue-Developer: https://developers.meethue.com/documentation/core-concepts
  7. Homepage von Node-Red: http://www.nodered.org
  8. IO-Broker Javascript: https://github.com/IO-Broker/IO-Broker.javascript/blob/master/doc/en/javascript.md
  9. IO-Broker-Status: https://github.com/IO-Broker/IO-Broker/wiki/Adapter-Development-Documentation#commands-and-statuses

Der Autor

Stefan Heinle ist Diplom-Ingenieur der Elektrotechnik und zugleich ein begeisterter Heimautomatisierer. Er ist zertifizierter KNX-Partner, Autor des Buches “Heimautomation mit KNX, DALI, 1-Wire und Co.”, das bei Rheinwerk erschienen ist, und bietet auf der Seite http://www.heimautomation-buch.de regelmäßig Zusatzinformationen zum Buch sowie einen professionellen Smart-Home-Planungsservice.

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 5 HeftseitenPreis €0,99
(inkl. 19% MwSt.)
LINUX-MAGAZIN KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS Readly Logo
E-Mail Benachrichtigung
Benachrichtige mich zu:
0 Kommentare
Älteste
Neuste Beste Bewertung
Nach oben