Ein Use Case, den ich bei mir sehe, ist die Verbindung von Node-RED mit der Philips Hue Bridge zur Steuerung von Lampen. Hier möchte ich eine beispielhafte, noch recht simple Konfiguration zeigen.
Wir benötigen
- eine inject Node
- eine http request Node
- eine json Node und
- eine debug Node.
In diesem Fall wäre es zu empfehlen, den Workflow per Button Click zu starten, um eben per Mausklick die Lampen steuern zu können. Daher benötigt die inject Node keine spezifische Konfiguration.
Die Nodes werden der Reihe nach verbunden: inject Node -> http request Node -> json Node -> debug Node.
Die Konfiguration der http request Node erfordert kurzes Nachdenken: Da die Philips Hue Bridge per default kein valides SSL-Zertifikat hat, es aber doch empfehlenswert wäre, wo immer möglich, Webservices per HTTPS anzusprechen, müssen wir eine TLS-Konfiguration erstellen, die invalide Zertifikate akzeptiert. Dazu erstellen wir eine TLS-Konfiguration, bei der wir das Häkchen bei „Serverzertifikat überprüfen“ entfernen (siehe Galerie unten).
Außerdem müssen wir auf der Philips Hue Bridge einen API User erstellen, den wir für die URL in der http request Node brauchen. (Die IP der Philips Hue Bridge lässt sich über https://discovery.meethue.com herausfinden.) Zur Erstellung des API Users gehen wir auf https://<bridge ip address>/debug/clip.html und geben als URL /api ein und als Message Body folgendes:
{"devicetype":"<application id>#<device id>"}
Zum Beispiel könnte <application id> durch „my_hue_app“ ersetzt werden und <device id> durch „nodered“ (jeweils ohne Anführungszeichen). Daraufhin klicken wir auf den POST Button. Als Response sollte eine Fehlermeldung im JSON-Format zurückkommen, die uns sagt, dass der „link button not pressed“ wurde. Also begeben wir uns physisch zur Philips Hue Bridge und pressen den Button. Beim zweiten Versuch, den Payload abzuschicken, sollte etwas wie folgt zurück kommen:
[ { "success": { "username": "A7ENnfH2PMd7wUQNGgUGq8Sx5StvcJaO8Yy4QNwt" } } ]
Diesen Username kopieren wir uns an einen sicheren Ort, damit wir diese Prozedur nicht öfter durchführen müssen, da wir den Username vergessen haben.
Nun können wir die vorhandenen Lampen abrufen per GET Request an
https://<bridge ip address>/api/<username von oben>/lights
Selbstredend bitte <username von oben> durch den Username von oben ersetzen. Diese URL können wir nun beispielhaft in der Node-RED http request Node verwenden, um die Config als JSON abzurufen. Deshalb habe ich oben die json Node mit rein gepackt.
Für Instruktionen, wie genau man mit einem PUT Request Lampen an und aus schalten oder die Farbe verändern kann, verweise ich höflichst auf den Getting Started Guide von Philips Hue.