Virtuelle Geräte in homee mit Node-RED

Vor wenigen Minuten wurde eine Beta Version des homee Node-RED Plugins (node-red-contrib-homee) veröffentlicht. Neben Verbesserungen der bestehenden Nodes, gibt es nun die Möglichkeit, beliebige Geräte über die homee-in-homee Funktion einzubinden.

Während bisher eine Integration von nicht offiziell unterstützen Geräten über die Simulation von Wemo oder Homematic Geräten nur mit Einschränkungen möglich war, lassen sich nun sämtliche unterstütze Geräte mit allen Eigenschaften simulieren. Beispielsweise können nun auch RGB-Lampen von einer HUE-Bridge samt Farbauswahl in homee angelernt werden.

Installation

Um die Beta Version testen zu können, ist eine manuelle Installation im Benutzerverzeichnis von Node-RED (~/.node-red) erforderlich.

Bitte beachtet, dass eure Flows durch die umfangreichen Änderungen des Plugins nicht mehr funktionieren werden und angepasst werden müssen. Bei Beta-Versionen ist es immer ratsam, nicht euer Produktivsystem zu nutzen. In jedem Falle macht es Sinn, vorher alle Flows und Einstellungen zu sichern 😉

cd ~/.node-red
npm install node-red-contrib-homee@beta

Neuerungen bei der homee-API

Bisher stand für die homee-API nur ein Node zur Verfügung, der auch die Kommunikation mit Eurem homee übernommen hat. Das brachte den Nachteil mit sich, dass nur ein Node eingesetzt werden konnte.

In der neuen Version des Plugins wurde die Kommunikation mit eurem homee nun auf einen Konfigurationsnode ausgelagert. Einmal konfiguriert kann dieser mit beliebig vielen homeeAPI-Nodes genutzt werden.

Neuer Konfigurationsnode für die homee Api

Virtuelle Geräte in homee

Virtuelle Geräte in homee

Um die neuen virtuellen Geräte nutzen zu können, ist zuerst die Einrichtung eines virtuellen homee's erforderlich. Dies geschieht wie bei der API auch über einen Konfigurationsnode. Hier müsst ihr einen Namen, einen Benutzer und ein Passwort angeben. Diese Angaben braucht ihr später bei Einrichtung der homee-in-homee Funktion.

Konfigurationsnode für den virtuellen homee

Nach Eingabe der Daten die gewünschten Geräte angelegt werden. Dabei müssen folgende Hinweise beachtet werden:

  • Die Node- und Attribut-IDs müssen jeweils einzigartig sein. Beim deployen des Flows werden die IDs überprüft.
  • Das Feld Name ist ein Pflichtfeld. Das ist der Name der auf dem Node und in homee erscheint.
  • Die Profil-ID kann aus einer Liste von unterstützten Geräten ausgewählt werden. Gebt dazu in das Suchfeld einfach einen Suchbegriff, wie z.B. "Switch" ein.
  • Die Attribute müssen im JSON Format als Array angegeben werden. Bei der Eingabe findet der von Node-RED bereitgestellte Syntax-Check statt. Achtet hier auch auf die korrekte Angabe der Node-ID. Für die Zukunft ist hier eine Eingabehilfe geplant.

Beispielkonfiguration eines virtuellen Geräts

[{
        "id": 10,
        "node_id": 10,
        "instance": 0,
        "minimum": 0,
        "maximum": 1,
        "current_value": 0,
        "target_value": 0,
        "last_value": 0,
        "unit": "",
        "step_value": 1,
        "editable": 1,
        "type": 1,
        "state": 1,
        "last_changed": 12345555,
        "changed_by": 1,
        "changed_by_id": 0,
        "based_on": 1,
        "data": ""
    }]

Nach dem Deploy des Flows dauert es ein paar Sekunden, bis die Geräte verfügbar sind. Am Node seht ihr den Status online, sobald diese vom virtuellen homee registriert wurden.

Ein- und Ausgang der Nodes

Die homeeDevice-Nodes bieten sowohl einen Ein- als auch einen Ausgang. Sobald die Geräte über die homee-in-homee Verbindung eine Attributänderung erfahren (das Gerät wird im physischen homee geschaltet) wird eine Nachricht mit folgenden Payload versendet:

{ "attributeId": 10, "targetValue": 1 }

Das bedeutet, dass das Attribut mit der ID 10 auf den Wert 1 gesetzt werden soll. Wer sich ein wenig mit dem Life-Cycle von Attributänderungen in homee auskennt: Die angefragte Änderung wird automatisch durch den virtuellen homee bestätigt, so dass die Änderung als erfolgt gilt.

Soll der Wert eines Attributs über den Flow geändert werden, muss der Eingang des homeeDevice-Nodes geändert werden. Dazu wird ein Payload mit folgendem Inhalt an den Node gesendet:

{ "id": 10, "value": 1 }

Das sollte selbsterklärend sein. Die ID entspricht der ID des zu ändernden Attributs, value enthält den neuen Wert. Beide Parameter müssen Zahlen sein.

Credits, Fehler und Support

Ein großes Dankeschön geht an Tobias Graf, der mit homeejs den notwendigen Grundstein für die Erweiterung dieses Plugins gelegt hat. Erhebliche Teile finden sich nun in node-red-contrib-homee wieder. Ebenfalls Danke an Micha aus der homee-Community, der die ersten Versionen mit großem Elan getestet hat.

Natürlich schleicht sich auch schon mal der ein oder andere Fehler in eine Software ein. Wenn du einen gefunden hast, öffne doch einfach ein Issue auf Github.

Das Plugin und dessen Nutzung ist kostenlos. Jedoch verschlingt die Entwicklung, Pflege, Tests und das Schreiben der Erläuterungen eine ganze Menge Zeit. Ich freue mich immer über Unterstützung. Sei es durch Hilfe bei der Entwicklung oder durch einen Kaffee.

Und wenn ihr mal auf Github seit, lasst einen Star für dieses Plugin und die homee-API da.

Share this post!

Das könnte dich auch interessieren

Node-RED Projects - Versionsverwaltung von Flows mit Git

28.03.2019

Wer Node-RED Produktiv und mit mehreren Flows einsetzt, hat vielleicht schonmal über die Sicherung der Flows nachgedacht. Mit Version 0.18 wurden Node-RED Projects vorgestellt, die eine relativ einfache Möglichkeit zur Versionsverwaltung von Flows in Node-RED bieten.

weiterlesen

Node-RED mit Docker auf der Synology Diskstation

27.11.2018

Node-RED lässt sich auf zwei verschiedenen Wegen auf einer Synology Diskstation betreiben. Neben der manuellen Installation über SSH kann Node-RED auch via Docker auf der Diskstation laufen.

weiterlesen

So geht’s: Harmony Hub mit Philips Hue verbinden

25.11.2018

Ein Zuhause wird erst dann richtig smart, wenn man nicht mehr manuell eingreifen muss. Ein Beispiel dafür ist eine automatisierte Beleuchtungssteuerung bei einem Filmabend.

weiterlesen