2

Fibaro HomeCenter 2 steuert Androiden

by okatzer17. Februar 2018

Was sich hinter dieser mysteriösen Überschrift verbirgt, erfahrt Ihr in diesem Gast-Artikel von okatzer.

Die Idee zu diesem Projekt existierte schon lange in meinen Gedanken. Der Ausgangspunkt war ein kleines Android-Tablet an der Wand, welches im zentralen Bereich meiner Wohnung hängt und als Informations- und Bedieneinheit für mein Fibaro HomeCenter 2 gute Dienste leistet. Dieses Tablet sollte aber eigentlich noch mehr Aufgaben erfüllen können.

Tablet im Flur als zentrale Bedieneinheit für Fibaro HC2

Tablet im Flur als zentrale Bedieneinheit für Fibaro HC2

Als Erstes kamen mir da akustische Benachrichtigungen von Ereignissen – und zusätzliche visuelle Hinweise in den Sinn. Für eine bessere Akustik wurde das Tablet per Bluetooth mit einem Mini-Lautsprecher-Würfel gekoppelt. Dieser liegt unsichtbar auf dem Garderobenschrank und ist in der ganzen Wohnung gut zu hören.

Bluetooth Speaker für bessere Akustik am Tablet

Bluetooth Speaker für bessere Akustik am Tablet

Inspiriert vom Waschmaschinen-Skript, sollte diese Idee dann umgesetzt werden. Dass das Fibaro HomeCenter 2 Push-Mitteilungen verschicken kann, ist ja nichts Neues. Problematisch bei Push-Mitteilungen ist allerdings die Kommunikation über das Internet, da diese Kommunikation über mehrere Server (GCM – Google Cloud Messaging) verteilt abläuft. Dadurch besteht die Gefahr, dass Nachrichten nicht zeitnah am Gerät ankommen. Ich habe teilweise mehrere Minuten Versatz feststellen können.
Dies kann man vielleicht bei der Benachrichtigung über das Ende des Waschvorgangs tolerieren, aber spätestens wenn man das Betätigen der Haustürklingel gemeldet bekommen möchte, ist dies ein absolutes NoGo. Schnell war klar, dass so etwas nur mittels einer Kommunikation innerhalb des lokalen WLAN-Netzes zu erreichen ist. Nach viel Recherche und Tests habe ich folgende Lösung gefunden:

Autoremote und Tasker für lokale Pushnachrichten

Mit der Kombination AutoRemote und Tasker der Firma joaoapps.com sollte dies möglich sein. Beide Apps können im Google Playstore geladen werden.

Tasker ist ja bekannt als eierlegende Wollmilchsau, was die Steuerung von Android Geräten angeht. Es gibt kaum etwas das Tasker nicht kann. Vom Verändern der Lautstärke, der Helligkeit bis hin zum Ein- und Ausschalten des Tablets ist alles möglich.
Hier alle Funktionen zu beschreiben würde den Rahmen sprengen, aber im Netz findet man genügend Tutorials  dazu!
Nur die prinzipielle Arbeitsweise von Tasker sei hier erwähnt. Tasker setzt sich aus drei Bereichen zusammen.
Profile, Tasks und Szenen. In den Profilen beschreibt man die auslösenden Ereignisse z.B. ein bestimmter Tag, Uhrzeit, Position, Status des WLAN und so weiter.
Was dann passieren soll wird in den Tasks beschrieben. Hier ist es möglich ganze Abläufe zu programmieren. Schleifen, If-Abfragen, Zugriff auf Variablen, fast alles ist hier machbar.
Szenen dienen dazu Bedien- und Anzeigeoberflächen zu gestalten und werden durch eine Task aufgerufen.
Buttons, Textboxen, Labels, Menüs und vieles mehr stehen zur Verfügung und können wenn gewünscht durch eine Task dynamisch mit Informationen befüllt werden.
Also kurz gesagt, Tasker ist das Arbeitstier das all das macht was wir und so vorstellen.
Kommen wir zu AutoRemote. AutoRemote ist eine App vom selben Hersteller und dient dazu Meldungen zwischen verschiedenen Geräten auszutauschen.
Handys, Tablets und sogar PC‘s können mittels eines Chrome Plugins erreicht werden.
AutoRemote integriert sich als Plugin in Tasker und kann dort in Profilen als auslösendes Ereignis verwendet werden oder in Tasks Messages an andere AutoRemote-Geräte senden.
Also zum Beispiel: wenn eine Meldung von AutoRemote mit dem Textinhalt „Waschmaschine“ kommt, dann führe den Task „DoWaschmaschiene“ aus.
Es ist möglich die AutoRemote Meldung zu zerlegen und in Variablen abzulegen, auf die man dann in den Tasker Tasks zugreifen kann.
Im Normalfall bedient sich AutoRemote auch der Kommunikation über das Internet mittels GCM, hat aber einen „Autoremote-WiFi-Service“ mit an Bord der, wenn er gestartet ist, die lokale Kommunikation im WLAN-Netz ermöglicht.
Bis jetzt ist dieses Feature in der AutoRemote App leider noch nicht aktivierbar, sondern muss mittels einer Tasker Tasks durchgeführt werden.
AutoRemote versucht standardmäßig erst im lokalen WiFi-Netz den Adressaten zu erreichen, wenn das nicht möglich ist geht der Weg ins Internet zu den Servern von joaoapps.com
Bis jetzt hat das Ganze ja noch nichts mit unserer HC2 zu tun, aber mittels http-requests ist es möglich mit AutoRemote Kontakt aufzunehmen.
Leider wird es jetzt etwas knifflig was die Umsetzung der http-requests angeht. Fibaro hat leider zwei unterschiedliche Klassen für http-requests in LUA-Szenen und in virtuellen Modulen.
Ich beschreibe jetzt mal was ich geschafft habe zu realisieren und was nicht geht, was aber nicht bedeutet das es nicht doch möglich ist.
In LUA-Szenen kann man http-requests versenden die AutoRemote Geräte über das Internet/GCM erreichen
In LUA-Szenen hab ich es nicht geschafft über das lokale WLAN den AutoRemote WiFi-Service zu erreichen.

Beim starten dieser Szene wird an die targetUrl das Kommando ‚Waschmaschine‘ gesendet.
Die targetUrl erhält man indem die von der AutoRemote App vergebene kurz Url in einen Browser eingibt. Die Kommando wird per GCM übertragen.

fibaro_android

Weboberfläche

Mit der Fibaro Klasse für http-requests in virtuellen Modulen, habe ich es nicht geschafft mit AutoRemote Kontakt aufzunehmen.
Aber es gibt von „krikroff“ ein Toolkit-Framework in dem ein http-request realisiert ist der funktioniert. Dieses Toolkit-Framework ist Opensource und kann auf github herunter geladen werden.
current release: http://krikroff77.github.io/Fibaro-HC2-Toolkit-Framework/
latest release: https://github.com/Krikroff77/Fibaro-HC2-Toolkit-Framework/releases/latest
Dieses Toolkit-Framework funktioniert allerdings nur in virtuellen Modulen.
Der Framework-Code wird einfach in die Mainloop oder den Lua-Bereich eines Buttons kopiert und kann dann aufgerufen werden.

fibaro_android2

Virtuelles Device im Fibaro HC2



Um jetzt auch von Szenen aus Befehle versenden zu können bediene ich mich zweier globaler Variablen die in der HC2-Steuerung angelegt werden müssen.
Dies sind ‚AutoRemoteTarget‘ und ‚AutoRemoteCmd‘. In ‚AutoRemoteTarget‘ wird der Klarname des Ziel-Gerätes z.B. ‚Android1‘ oder ‚Samsung‘ oder ‚Xperia‘ abgelegt.
In ‚AutoRemoteCmd‘ wird der zu sendende Text-Befehl hinterlegt. Ist das geschehen, wird der Button ’sende Befehl‘ des virtuellen Moduls per Code gedrückt.
Der Klarname des Ziel-Gerätes wird im virtuellen Modul in einen IP-Adresse umgewandelt.

Wenn alles richtig läuft, sollte jetzt auf dem Ziel-Gerät eine Toast-Meldung von AutoRemote erscheinen. Diese wird an Tasker weitergeleitet und kann in einem Profil gefiltert eine Task auslösen.
Fazit:
Es ist ein langer Weg bis alles funktioniert, aber es lohnt sich.
Das System hat viel Potential und kann kreativ benutzt werden.
siio-App
About The Author
okatzer
okatzer

Leave a Response