Der vorgestellte Ansatz betrachtet die Differenz des DAX zum Vortag und setzt in Abhängigkeit vom Vorzeichen die Farbe der Lampen auf rot oder grün. Doch wie bekommt man diese Informationen in den IO-Broker? Es existiert kein spezieller Adapter, der Börsenkurse liefert. Es gibt aber den Parser-Adapter, mit dem Sie beliebige Werte von Webseiten auslesen. Die Installation funktioniert wie bei allen anderen Adaptern.
Das Setup besteht daraus, die Regeln anzulegen, mit denen Sie Werte aus einer Webseite extrahieren. Für jede Regel vergeben Sie einen eindeutigen Namen. Danach legen Sie fest, welche Datenquelle Sie heranziehen. Hier sind neben URLs auch Dateien möglich. Unser Beispiel verwendet als Datenquelle die Webseite Finanzen.net [8].
Mithilfe eines regulären Ausdrucks legen Sie fest, welchen Wert Sie aus der Quelle verwenden möchten. Reguläre Ausdrücke sind ein mächtiges Werkzeug in der Informationsverarbeitung und nicht leicht zu verstehen. Ein Tutorial zu der Technik finden Sie online [9].
Um reguläre Ausdrücke gegen einen bestimmten Datenbestand zu testen, verwenden Sie am besten einen Online-Checker [10]. Der reguläre Ausdruck, um die prozentuale Veränderung zum Vortag zu erhalten, sieht wie folgt aus:
\d{0,3}.\d{0,3},\d{2}(?=<span>%)
Zu guter Letzt legen Sie noch die Rolle und den Typ fest. Als Rolle verwenden Sie hier wert und als Typ string. Das automatische Konvertieren nach zahl funktioniert nicht, weil die Webseite ein Komma zwischen Vor- und Nachkommastellen verwendet. Der IO-Broker erwartet hier aber die angelsächsische Schreibweise mit einem Punkt. Das Programm muss den Wert also konvertieren.
Die Software dazu wurde mit Blockly erstellt (Abbildung 4). Bislang war es dem Autor möglich, alle Problemstellungen damit lösen. Das Umwandeln eines Kommas in einen Punkt ist allerdings schon etwas abenteuerlich. Das Programm produziert für die minimale Funktion recht viel Log-Output. Das sorgt immerhin dafür, dass Sie das Beispiel einfach nachvollziehen können.
Unter der Haube
Nun geht es um die Frage, was Sie alles anstellen müssen, um direkt mit dem Trådfri-Gateway zu kommunizieren. Es versteht nur das Constrained Application Protocol CoAP, das die Nachrichten im JSON-Format überträgt. Die Parameter, die Sie beeinflussen dürfen, sind Zahlen, keine Namen im Klartext. Für die Kommunikation benötigen Sie einen speziellen Kommandozeilen-Client. Listing 1 zeigt die für eine Installation unter RasPi OS nötigen Schritte.
Listing 1
CoAP-Client installieren
$ sudo apt-get install build-essential autoconf automake libtool $ git clone --recursive https://github.com/obgm/libcoap.git $ cd libcoap $ git checkout dtls $ git submodule update --init --recursive $ ./autogen.sh $ ./configure --disable-documentation --disable-shared $ make $ sudo make install
Nach der Installation des Clients benötigen Sie zunächst einen Account auf dem Gateway, den Sie mit dem Kommando aus Listing 2 erzeugen. Mit USER legen Sie den Namen des Accounts fest, den Sie frei wählen dürfen. Wichtig ist, für die weitere Kommunikation stets diesen Namen mit dem dazugehörigen USER_KEY zu verwenden. Die Ziffernfolgen in der Ausgabe haben alle eine Bedeutung; eine Übersicht der Codes finden Sie online [11].
Listing 2
Account und Key erstellen
$ coap-client -m post -u "Client_identity" -k "GATEWAY_KEY" -e "{\"9090\":\"USER\"}" "coaps://IP-Adresse:5684/15011/9063"
v:1 t:CON c:POST i:765f {} [ ]
decrypt_verify(): found 24 bytes cleartext
decrypt_verify(): found 51 bytes cleartext
{"9091":"USER_KEY","9029":"1.13.0021"}
Mit dem neu erstellten Account greifen Sie nun auf die Informationen des Gateways zu. Mit dem passenden Kommando erhalten Sie eine Liste der verbundenen Lampen (Listing 3, erster Aufruf). Um die Details zu einer bestimmten Lampe zu erhalten, verwenden Sie stets dasselbe Kommando und hängen nur die ID der konkreten Lampe an (Listing 3, Zeile 6).
Um die Lampe einzuschalten, senden Sie ein Kommando, das den passenden Parameter setzt (Listing 3, Zeile 10). Um die Lampe wieder auszuschalten, nutzen Sie das Kommando aus Zeile 11. Für alle Funktionen der Lampe existieren bestimmte Parameter, die Sie verändern dürfen.
Listing 3
Abfrage der verbundenen Lampen
$ coap-client -m get -u "USER" -k "USER_KEY" "coaps://IP-Adresse:5684/15001/" v:1 t:CON c:GET i:6336 {} [ ] decrypt_verify(): found 24 bytes cleartext decrypt_verify(): found 30 bytes cleartext [65539,65536,65538] $ coap-client -m get -u "USER" -k "USER_KEY" "coaps://IP-Adresse:5684/15001/65538" decrypt_verify(): found 24 bytes cleartext decrypt_verify(): found 240 bytes cleartext {"9001":"TRADFRI remote control","9003":65539,"9002":1614887334,"9020":1615066388,"3":{"0":"IKEA of Sweden","1":"TRADFRI remote control","9":74,"2":"","3":"2.3.014","6":3,"7":4545},"9054":0,"9019":1,"15009":[{"9003":0}],"5750":0} $ coap-client -m put -u "USER" -k "USER_KEY" -e '{ "3311": [{ "5850": 1 }] }' "coaps://IP-Adresse:5684/15001/65538/" $ coap-client -m put -u "USER" -k "USER_KEY" -e '{ "3311": [{ "5850": 0 }] }' "coaps://IP-Adresse:5684/15001/65538/"
Fazit
Es ist beeindruckend, wie leicht und schnell sich selbst ausgefallene Ideen rund um die Hausautomation mit IO-Broker umsetzen lassen. Der Blick unter die Haube macht erst richtig klar, was die Software alles im Hintergrund erledigt. Der einheitliche Zugriff über Objekte auf die Geräte unterschiedlicher Hersteller macht vieles einfacher.






