OpenRemote Erste Schritte

OpenRemote Erste Schritte

7. September 2016 4 134 Von Bastian

Weiter geht es mit der Artikelserie zu OpenRemote. Dieser Teil beschäftigt sich mit der Schnittstelle zum Home Center 2, dem Erstellen eines ersten Switches sowie die Einrichtung der App auf einem Android Tablet.

OpenRemote Artikelserie

OpenRemote Artikelserie

Fibaro Schnittstelle (API)

OpenRemote unterstützt sehr viele Protokolle (siehe Artikel). Zur Anbindung des Home Center 2 wird jedoch nur HTTP verwendet, indem die von Fibaro zur Verfügung gestellte API genutzt wird. Damit lassen sich Status abfragen, Geräte ein- und ausschalten und Szenen starten.

Die Fibaro API Befehle

Das Fibaro Home Center 2 stellt von Haus aus eine API zur Verfügung mit der man (fast) alle Geräte und Szenen per Aufruf einer URL steuern bzw. deren Status abfragen kann. Nachfolgend die wichtigsten Befehle:

Status

ID = device ID
http://DEINE-HC2-IP/api/devices?id=75

Geräte

ID = device ID
name = action
arg1 = (z.B. Dimmerwert)
http://DEINE-HC2-IP/api/callAction?deviceID=75&name=turnOn
http://DEINE-HC2-IP/api/callAction?deviceID=75&name=turnOff
http://DEINE-HC2-IP/api/callAction?deviceID=79&name=setValue&arg1=39

Virtuelle Geräte

ID = device ID
arg1 = button ID
arg2 = slider value (nur für Slider)
http://DEINE-HC2-IP/api/callAction?deviceID=15&name=pressButton&arg1=2
http://DEINE-HC2-IP/api/callAction?deviceID=51&name=setSlider&arg1=8&arg2=30

Scharfschalten und Entschärfen

arg1 = 1 – Armed
arg1 = 0 – Disarmed

http://DEINE-HC2-IP/api/callAction?deviceID=51&&name=setArmed&arg1=0

Szene starten

ID = SceneID

http://DEINE-HC2-IP/api/sceneControl?id=14&action=start
http://DEINE-HC2-IP/api/sceneControl?id=14&action=stop

OpenRemote Designer

Im Building Modeler beherbergt OpenRemote Befehle und Statusabfragen für Devices bzw. Geräte. Ein Device besteht in der Regel aus mehreren Status und Befehlen. So benötigen wir zur Visualisierung eines Fibaro Switches beispielsweise je einen Befehl zum Einschalten, Ausschalten, Statusermittlung, für den Sensor sowie den eigentlichen Switch der alle Befehle und Sensoren zu einem bedienbaren Schalter zusammenfasst.

Organisation

Zur Erstellung eines vollständigen Interfaces mit diversen Schaltern und Sensoren ist eine Vielzahl von Geräten notwendig. Die daraus resultierende Liste wird recht schnell lang und unübersichtlich. Auf Grund dessen – und weil sich die Befehle später nicht mehr in andere Geräte verschieben lassen – empfehle ich, die „Devices“ als Ordner zu verstehen und den einzelnen Befehlen eindeutige Namen zu geben.

So habe ich bei mir eine Struktur aus Räumen und Aufgaben erstellt. Alle steuerbaren Geräte sind nach Räumen aufgeteilt, die Sensoren nach Ihrer Funktion bzw. den Daten die geliefert werden.

des-devicesHier lässt sich mit guter Planung eine Menge Arbeit sparen. Die abgebildete Kombination hat sich bei mir bewährt. Befehle lassen sich schnell finden und in die Interfaces einbinden.

My first Switch

Wenn wir schon da sind, dann können wir auch gleich mal ein neues Gerät anlegen und konfigurieren. In diesem Beispiel habe ich in meinem Badezimmer einen Double Switch von Fibaro verbaut um Decken- und Spiegellicht zu bedienen und den Status zu visualisieren.

Es wird die Fibaro ID des Gerätes aus dem Home Center benötigt. Diese ist in den Eigenschaften innerhalb der Weboberfläche zu finden. In diesem Fall ist es die ID 75 für das Spiegellicht im Badezimmer.

des-devices-new-3

New Device

Als erstes erstellen wir im Building Modeler unter Devices mit einem Klick auf New -> New Device ein neues Gerät bzw. einen neuen Raum um die Übersichtlichkeit nicht zu verlieren (siehe Organisation oben) und nennen diesen „Bad“. Die beiden Felder Vendor und Model sind Pflichtfelder, wobei das eingetragene keine Auswirkungen hat. Bei mir sieht es so aus. des-neuer-raumNach dem Klick auf „Next“ erscheint ein Eingabefeld zur Erstellung von Befehlen, Sensoren, Schaltern und Slidern.

des-devices-new-2

Die Commands

Die ersten Befehle die hinzugefügt werden sind das Ein- und Ausschalten der Lampe am Spiegel im Bad. Ein Klick auf die Schaltfläche „Add command“ öffnet die Eingabemaske zur Erstellung eines Befehls. Diesen wird nach seiner Funktion benannt „Bad-Spiegel (ON)“ bzw. „Bad-Spiegel (OFF)“ und als Protokoll „HTTP“ ausgewählt. Der Befehl zum einschalten des Fibaro Switches über die API (siehe oben) lautet:


Als Methode wird GET ausgewählt sowie Benutzername und Passwort eingetragen und gespeichert.

Command Bad ON

Command Bad ON

Die Statusabfrage

Das war recht einfach und in der Theorie ist OpenRemote jetzt schon in der Lage die Lampe ein- und auszuschalten. Jedoch ist der Status der Lampe nicht bekannt. Der Controller weiß also nicht, ob er die Lampe nun ein- oder ausschalten soll. Zur Abfrage des Status wird ein weiterer Befehl benötigt, mit dem wir den gegenwärtigen Zustand der Lampe auswerten können. Schauen wir uns dafür einmal den Gerätestatus an und öffnen in einem Browser die URL:


Hier finden wir alle Informationen zu unserem Fibaro Switch im JSON Format. Der aktuelle Status versteckt sich in der Zeile 57 hinter dem Wert


oder vollständig


Im Moment ist die Lampe ausgeschaltet, daher ist der Status false. Nach dem Einschalten wechselt dieser auf true. Genau dieser Status muss mit einem OpenRemote Command abgefragt und ausgewertet werden, aber keine Angst es wird kein handgeschriebener Parser benötigt. Diesen liefert der Controller gleich mit.

Die Statusabfrage erfolgt ebenfalls mit einem Command und sieht folgendermaßen aus:

Statusabfrage Spiegellampe

Statusabfrage Spiegellampe

Im Gegensatz zu den ON und OFF Befehlen wertet OpenRemote hier die Rückgabe des Home Center 2 aus. Die Statusabfrage erfolgt in diesem Fall alle 2s (Polling Interval) und der Wert des JSON Pfades $.properties.value wird herausgefiltert. Der Controller überprüft nun also alle 2 Sekunden, welchen Zustand die Spiegellampe im Bad hat. Also true oder false. Die Auswertung des Status erfolgt mit einem Sensor.

Der Sensor

Der Fibaro Switch liefert je nach Zustand true (an) oder false (aus) zurück. Er könnte aber auch OFF und ON, X und Y oder einfach 4711 zurückliefern. Um dem OpenRemote Controller das Ergebnis der Abfrage verständlich zu machen wird ein weiterer Baustein benötigt, ein Sensor. Mit diesem wird definiert welche Art von Rückgabe erfolgt und wie diese zu verwenden ist.

Einen Sensor erstellen

Einen Sensor erstellen

Mit einem Sensor lassen sich unterschiedliche Arten von Status auswerten. Liefert die Statusabfrage ONund OFFzurück wird der Type Switch ausgewählt. Handelt es sich um einen numerischen Wert, wie beispielsweise bei einer Temperatur verwendet man Level. Der Type Range wird beispielsweise bei einem Dimmer verwendet der den Bereich 0 bis 99 zurückgibt. Da die Statusabfrage des Fibaro Switch aber true oder false zurückgibt muss mit dem Type Custom eine individuelle Zuordnung stattfinden.

Custom Sensor

Custom Sensor

Der Switch

Nachdem nun alle nötigen Commands und Sensoren für das Schalten der Spiegellampe im Bad eingerichtet sind, kann der eigentliche Schalter hinzugefügt werden. Dies erfolgt durch einen Klick auf New -> Switch. Im sich öffnenden Formular werden Sensor sowie Ein- und Ausschaltbefehl ausgewählt.

Switch Spiegellampe

Switch Spiegellampe

Fertig

Wir haben soeben den ersten Schalter eingebunden und OpenRemote ermöglicht diesen zu Schalten und den gegenwärtigen Zustand zu visualisieren.

Das Userinterface

Der Switch allein reicht aber noch nicht um die Lampe auch tatsächlich zu schalten. Dafür wird ein Userinterface benötigt welches vom Endgerät angezeigt wird und den Switch zum Schalten anbietet. Dafür wird vom Building Modeler in den UI Designer gewechselt.

UI Designer

UI Designer

Die Interfaces oder auch Panels

OpenRemote ist sehr generisch und flexibel aufgebaut. Es lassen sich Interfaces für jede erdenkliche Auflösung erstellen und designen. Eine automatische Skalierung der Interfaces erfolgt nicht. Daher ist es wichtig vor dem Erstellen die Auflösung des Zielgerätes zu kennen.

Ich verwende bei mir ein günstiges ASUS ZenPad 8 mit dem aktuellen Android zur Visualisierung. Das Tablet hat eine Auflösung von 1280×800 Pixeln.

ASUS Panel

ASUS Panel

Die Auflösung lässt sich nachträglich noch verändern, jedoch passen sich die eingefügten Objekte nicht automatisch der neuen Auflösung an, so dass eine sorgfältige Einstellung viel nachträgliche Arbeit erspart.

Neues Panel

Ein neues Endgerät bzw. Panel wird mit einem Klick auf New -> New Panel erstellt. Hier finden sich ein paar Geräte zur Vorauswahl: iPad, iPhone, Android und Archos7. Bei diesen ist die Auflösung fix eingestellt und lässt sich nicht anpassen. Daher sollte immer mittels New -> Custom Panel ein eigenes Panel erstellt und mit der passenden Auflösung versehen werden. Es wird hier immer von der Auflösung in der Hochkant-Stellung des Gerätes ausgegangen. In meinem Fall also 800×1280. Weiterhin wird die Höhe der Tab bar angegeben. Dazu später mehr.

Nach dem Erstellen des neuen Panels wird automatisch die Default Group zur Gruppierung von unterschiedlichen Interfaces sowie der Startbildschirm Starting Screen erstellt.

Switch einfügen und testen

Der eben erstellten Switch wird nun in das neu erstellte Userinterface integriert. Dafür links im Menübaum auf den Starting Screen wechseln und aus der Widget Palette auf der rechten Seite den Switchauf die Oberfläche ziehen.

Neues Switch erstellen

Neues Switch erstellen

Ist der neue Switch im Interface ausgewählt, erscheinen unter der Widget Palette die Eigenschaften des Switches. Hier wird unter SwitchCommand der gerade im Building Modeler erstellte Befehl Bad-Spiegelausgewählt. Anschließend ist alles mit der kleinen Diskette in der Menüleiste zu speichern.

Konfiguration übertragen

Nach Erstellung der Befehle und dem Einrichten des Switches in der UI muss die gespeicherte Konfiguration noch auf den lokalen Controller übertragen werden. Dies erfolgt über die Weboberfläche des OpenRemote Controllers mit dem Link

http://IP-des-Controllers:8688/controller/

OpenRemote Controller

OpenRemote Controller

Hier wird der Online Account der auch zur Anmeldung an den Designer verwendet wird eingetragen und mit einem Klick auf Sync with Online Designer die Konfiguration übertragen.

Tablet konfigurieren

Auch die Konfiguration des Tablets ist denkbar einfach. Aus dem App- bzw. PlayStore die OpenRemote App installieren und starten. Ist das Tablet mit demselben Netzwerk verbunden wie der Controller wird dieser automatisch gefunden und zur Auswahl angeboten.

Android Tablet Config

Android Tablet Config

Nach einem Klick auf die Controller Adresse erscheint ggf. die Auswahl des Panels. Hier das gerade erstellte auswählen und schon erscheint das Userinterface mit dem Switch auf dem Tablet. Ein Klick auf dem Button schaltet die Lampe ein bzw. aus und aktualisiert den Status.

Zusammenfassung

In diesem Artikel wurde die Fibaro API und die Komponenten des Designers vorgestellt, die Commands und der Sonsor für einen Fibaro Switch angelegt, sowie ein Userinterface zur Nutzung auf einem Tablet erstellt, übertragen und getestet.

So geht es weiter

Der nächste Artikel beschäftigt sich mit der Visualisierung der unterschiedlichen Module aus dem Home Center 2. Insbesondere die Darstellung von Dimmern, Wallplugs und deren Verbrauch, sowie die Anzeige geöffneter Fenster und ausgelöster Motion Sensoren wird vorgestellt.

Der Autor

Moin, ich heiße Bastian und bin Autor dieser kleinen bescheidenen Seite. Zwanghaft, ja fast schon neurotisch beschäftige ich mich seit Jahren mit jedem erdenklichen technischen Schnick-Schnack. Nichts, was einen Stecker hat ist vor mir sicher. So war es klar, dass ich eines Tages das Haus auf den Kopf stellen und alles vernetzen würde.

Da ich bei meinem Vorhaben sehr viel Hilfe und Unterstützung in diversen Foren, Blogs und Boards erfahren habe, möchte ich diesen Blog zum sammeln meiner Smarthome- und Technikerrungenschaften nutzen um der Community zumindest ein klein wenig was zurückgeben zu können.

Artikel teilen