NEWS
HowTo: MediolaGW über iobroker ansteuern
-
Hallo zusammen,
vorab: das hier ist keine Frage, sondern eine kleine HowTo mit Scripts.
Ich habe jetzt mehrere Wochen daran gearbeitet das Mediola-GW aus iobroker anzusteuern. Ich verfasse den folgenden Beitrag in der Hoffnung, dass ich damit jemand anderem den Tag erleichtern kann und vielleicht finden sich ja auch Interessenten, die das hier zu einem vollen Adapter weiterentwickeln.Das Problem
Ich benötigte für mein Heim ein paar intelligente Jalousien, kann hier aber nur mit Aufputz-Motoren arbeiten, wodurch die Auswahl sehr eng wurde und ich quasi gezwungen war WIR Elektonik Jalousien (eW940-f-m) zu verwenden, die nur über das Mediola-GW properitär angesprochen werden können. Die häufigste Lösung – nämlich den iobroker aus IQontrol anzusteuern, kam für mich nicht in Frage, weil meine Oberfläche in VIS zu weit fortgeschritten war, als dass ich die noch mal neu bauen wollte. Weiterhin finde ich die UI von Mediola einfach abgrundtief hässlich und schlussendlich habe ich einfach keine Lust meine ganze Heimautomatisierung von einer schlecht gesicherten Blackbox mit Abokosten abhängig zu machen. Kurz: das Mediola-GW soll als „blöde Bridge“ am iobroker hängen.Die Umsetzung in der Übersicht:
Ich habe unterhalb von Userdata ein neues Device mediolagw angelegt, in dem die Basisdaten gespeichert werden. Darunter muss jedes Gerät als ein Channel mit entsprechenden Datenpunkten angelegt werden. Pro Channel muss dann ein Parser angelegt werden und abschließend ein Javascript, an dem allerdings keine Anpassungen mehr notwendig sind, wenn ihr euch exakt an die Anleitung haltet. Das ganze Konstrukt steuert Jalousien über das MediolaGW (in der Theorie sollte das auch mit anderen Herstellern als WIR gehen – untested) und erkennt auch manuelle Änderungen an den Jalousien und schreibt sie in den iobroker zurück, falls ihr mal direkt an der Jalousie gesteuert habt oder die eingebauten Automatiken benutzt.Anleitung:
0_userdata.0.MediolaGW-template.json
Importiert die angehangene mediolagw-template.json in eure Objekte. Unterhalb von 0_userdata.0 sollte sich dann eine neues Device „mediolagw“ finden. Dort drin müsst ihr die Standard-Einstellungen für die IP-Adresse, Username und Passwort des Gateways vornehmen. Weiter findet ich schon beispielhaft 2 Channels. „JalousieTuer“ und „JalousieFenster“ mit den entsprechenden unter Datenpunkten. Dort müsst ihr die Adresse und den Type eurer Aktoren angeben. Die findet ihr heraus, in dem ihr folgend URL im Browser aufruft:http://(IP des GW)/command?XC_USER=(user)&XC_PASS=(passwort)&XC_FNC=GetStates
Ihr erhaltet eine Json zurück, in der jeder Aktor mit Typ (z.B. „WR“) und Adresse (z.B. „1E501601“) steht. Übernehmt diese in die Datenpunkte „Type“ und „Address“ unterhalb der Aktoren.
Einrichtung Parser:
Ihr müsst pro Aktor eine Regel im Parser hinzufügen. Der Name der Regel muss dem Namensschema „mediolagw.(Aktorname).State“ folgen. Für die beiden Beispiele also „mediolagw.JalousieTuer.State“ und „mediolagw.JalousieFenster.State“. In die URL tragt ihr die URL ein, über die ihr gerade die Objekte ermittelt habt. Die Regex lautet „"state":"01([0-9a-fA-F]{2})00"“ bei Num noch die Reihenfolge der Aktoren von 0 beginnend hochzählen.Einrichtung JavaScript:
MediolaGW.js
Ein neues Javaskript im iobroker anlegen und den Inhalt aus MediolaGW.js reinkopieren. Wenn ihr euch – vor allem im Parser – exakt an die Namensgebung gehalten habt, sollte das alles gewesen sein.
Ihr könnt die Jalousien jetzt im VIS mit einem beliebigen Jalousie-Widget steuern, in dem ihr den Datenpunkt mediolagw/(Name des Aktors)/Set ansteuert mit Prozentzahlen von 0 (offen) bis 100 (komplett geschlossen).Ich freue mich über Fragen und Feedback
-
@falkoz Wow, da hast du aber ganz schön viel "basteln" müssen! Cool, dass du das mit allen teilst.
Ich frage mich: würde es nicht Sinn machen, das ganze in einen Adapter zu packen?
-
@UncleSam Das würde total viel Sinn machen, aber ich habe keine echte Ahnung, was von hier aus noch alles nötig ist, um das ganze in einen Adapter zu gießen und zusätzlich ist mein Urlaub bald vorbei uns ich hab dann auch mal erst keine Zeit dafür. Wie Eingangs gesagt: sollte sich jemand berufen fühlen das hier weiter zu entwicklen, unterstütze ich gerne
-
@falkoz Wenn ich dein JavaScript anschaue, glaube ich, dass du schon etwas programmieren kannst.
Einen Adapter zu machen ist eigentlich ganz einfach: mit dem Adapter Creator die Grundlage erstellen und dann deinen Code abfüllen. Natürlich müsste dann auch das Auslesen der Aktoren sowie das Parsen der Nachrichten vom Adapter übernommen werden, aber das könnte man Schritt für Schritt hinzufügen.
Wenn du willst, kann ich dich unterstützen - ich habe zwar Urlaub aber bin meist nur am Handy.
-
@falkoz Ich möchte anstatt Jalousien Rolläden ansteuern. Ein öffnen bzw. schließen mit 0 - 100% funktioniert da nicht. Ich muss wahrscheinlich ein Flag für auf/zu senden. Kannst du mir da behilflich sein? Ich habe bisher 2 Rolläden im Mediola eingelernt. Das Ergebnis der Typen und Adressen findest du im angehängten File. Brauche ich auch den Parser nachdem meine Rolläden keinen Status haben. Kann man da nicht einfach über Blockly einen http Request für auf bzw. ab absetzen? Wie müsste dieser in meinem Fall aussehen?
Rolläden.json