ShellyPlus-2PM goes Homematic - mit der Originalfirmware (2-Kanal-Mode)

  • ©2022 Stefan K. (alias 66er) - ausführlicher Hinweis dazu am Ende der Anleitung

    Alle Rechte vorbehalten!


    Entwickelt und getestet auf ShellyPlus-2PM-Firmware:

    0.10.0 beta3


    Hallo liebe Homematic-Freunde. :)

    Heute geht es um die Einbindung des ShellyPlus 2PM als 2-Kanal-Schaltaktor.


    Mein Dank an den Homematic-Forum-User @ MichaelN, der mir gestattet hat, sein Skript "JSON universell auslesen" in meinen Skripten zu verwenden. Danke Michael :thumbup:

    Quelle des Skriptes: https://homematic-forum.de/for…opic.php?p=672027#p672027

    (weitere Hintergrundinfos und Quellangaben hier)


    Das Ganze funktioniert natürlich wie immer ohne Fremdfirmware. ;)

    Die Kopplung hat folgende Möglichkeiten:

    • Ein- und Ausschalten der Schaltkanale inkl. Rückmeldung, wenn über die App oder per Schalter geschaltet wird
    • Überwachung des Onlinestatus, kein CUxD-Ping-Device nötig, optional
    • Alle notwendigen Systemvariablen werden automatisiert erstellt und dem passenden Schaltkanal zugeordnet, daher sehr leicht einzurichten
    • Anzeige der aktuellen Leistung / Kanal, Nutzung frei wählbar
    • Aktualsierung direkt nach Übergang von OFFLINE --> ONLINE (Aktualisierung des Schaltzustandes, falls umgeschaltet wurde, während die CCU den Shelly als Offline erkannte)


    Das Ganze sieht dann im maximalen Endausbau so aus:

    Plus2PM-2-Kanal-Aktor.PNG


    techn. Voraussetzungen:

    • kompatibel mit den Homematic-Systemen CCU2*, CCU3, Charly, sowie allen Ablegern wie RaspberryMatic und piVCCU.

    • installiertes Addon CUxD in aktueller Version

      (Das Wissen um den Umgang CUxD, wie z.B. Geräte anlegen, setze ich an dieser Stelle voraus, sonst "explodiert" diese Anleitung. Danke für's Verständnis.)

    Ich möchte Euch an dieser Stelle empfehlen, vor der Umsetzung mal einen Blick in diesen Thread zu werfen:

    (Auch die übrigen angepinnten Themen sind übrigens zum Lesen empfohlen, gerade auch für Neueinsteiger ;))

    Und nun geht's los. :)

    __________________________________________________________________________________

    ©2022 Stefan K. (alias 66er) - ausführlicher Hinweis dazu am Ende der Anleitung

    Alle Rechte vorbehalten!

  • ©2022 Stefan K. (alias 66er) - ausführlicher Hinweis dazu am Ende der Anleitung

    Alle Rechte vorbehalten!


    Falls noch nicht vorhanden, bitte ein Gerät (28) System Exec anlegen! Darüber werden die Befehle abgesetzt.

    Hier gibt es bei Bedarf eine Anleitung zum Anlegen des CUxD-Exec-Gerätes.

    (Im CUxD-Exec selbst werden keine Eintragungen gemacht!)


    Für den ShellyPlus 2PM benötigen wir 2 Kanäle eines ggf. vorhandenen oder neu anzulegenden

    CUxD Gerätetyps (40) 16 Kanal Universalsteuerung als Schalter:

    CUxD anlegen.PNG

    (Den Namen könnt Ihr natürlich frei vergeben und anpassen. ;) )

    Damit können 8 ShellyPro 2PM abgebildet werden.


    Ein- und Ausschalten der Kanäle:


    Um den Shelly mit dem CUxD-Device zu schalten müssen nun noch pro Kanal 1 Haken gesetzt und 2 Eintragungen gemacht werden:

    1.) Haken setzen bei "SWITCH|CMD_EXEC"

    2.) Eintrag für "SWITCHCMD_SHORT":

    jeweils IP-Adresse des Shelly anpassen!

    2.1 Kanal 1 (im Shelly = 0)

    Code
    wget -q -T2 -t2 -O - 'http://192.168.2.91/rpc/Switch.Set?id~3d0~26on~3dfalse'

    2.2 Kanal 2 (im Shelly = 1)

    Code
    wget -q -T2 -t2 -O - 'http://192.168.2.91/rpc/Switch.Set?id~3d1~26on~3dfalse'

    3.) Eintrag für "SWITCHCMD_LONG":

    jeweils IP-Adresse des Shelly anpassen!

    3.1 Kanal 1 (im Shelly = 0)

    Code
    wget -q -T2 -t2 -O - 'http://192.168.2.91/rpc/Switch.Set?id~3d0~26on~3dtrue'

    3.2 Kanal 2 (im Shelly = 1)

    Code
    wget -q -T2 -t2 -O - 'http://192.168.2.91/rpc/Switch.Set?id~3d1~26on~3dtrue'


    Das Ganze sollte also jetzt so aussehen:

    Einstellungen Kanäle.PNG

    Damit funktioniert schon mal das EIN- und AUS-Schalten des ShellyPlus 2PM . :)


    __________________________________________________________________________________

    ©2022 Stefan K. (alias 66er) - ausführlicher Hinweis dazu am Ende der Anleitung

    Alle Rechte vorbehalten!

  • ©2022 Stefan K. (alias 66er) - ausführlicher Hinweis dazu am Ende der Anleitung

    Alle Rechte vorbehalten!


    Rückmeldung des Schaltzustandes:

    Damit der Status der Schaltkanäle auch stimmt, wenn am Shelly oder per App oder Web-UI geschaltet wird, bedienen wir uns der Webhooks des Shelly (ehem. ACTIONS).

    Diese müssen (am Besten über das Web-UI) im Shelly eingerichtet werden:

    Für das Erstellen der Webhooks müsst Ihr jeweils den einzustellenden Kanal anklicken. Dann erscheint der Button "Webhooks".

    Webhooks.PNG


    Pro Kanal müssen 2 Webhooks angelegt werden (1x Schaltzustand EIN und 1x Schaltzustand aus)


    Webhook für "Ausgang eingeschaltet":

    Kanal 1 (im Shelly Switch_0) --> OUT=ON

    OUT=ON.PNG


    Request-Code:

    Code
    http://192.168.2.141:8181/66er.exe?Antwort=dom.GetObject(%22CUxD.CUX4000001:12.SET_STATE%22).State(1)

    IP-Adresse und CUxD-Adresse / CUxD-Kanal anpassen!


    Webhook für "Ausgang ausgeschaltet":

    OUT=OFF.PNG


    Request-Code:

    Code
    http://192.168.2.141:8181/66er.exe?Antwort=dom.GetObject(%22CUxD.CUX4000001:12.SET_STATE%22).State(0)

    IP-Adresse und CUxD-Adresse / CUxD-Kanal anpassen!


    Diese Schritte hinsichtlich der Webhooks müsst Ihr nun für den 2. Schaltkanal wiederholen!


    Nun wird auch schon der Status der Kanäle aktualisiert, wenn von außerhalb der CCU geschaltet wird. :)


    __________________________________________________________________________________

    ©2022 Stefan K. (alias 66er) - ausführlicher Hinweis dazu am Ende der Anleitung

    Alle Rechte vorbehalten!

  • ©2022 Stefan K. (alias 66er) - ausführlicher Hinweis dazu am Ende der Anleitung

    Alle Rechte vorbehalten!


    Werte-Aktualisierung:

    1. optionale Aktualisierung des Online-Status

    Um den Onlinestatus anzuzeigen muß nur im Setup des unten folgenden Skript die Option auf „J“ gesetzt sein. Dadurch wird die Variable autom. erstellt und dem Kanal zugeordnet. „N“ deaktiviert diese Option.

    2. Programm

    Um nun zum guten Schluß noch die Werte (Leistung und optional den Onlinestatus) in die entsprechenden Systemvariablen / Kanäle zu bekommen, muß ein Programm angelegt werden, das die Werte zyklisch und nach jedem Schaltvorgang vom Shelly abfragt.

    Zusätzlich kann durch Aktivieren der Schaltstatusaktualisierung im Skript ergänzend im Programmablauf auch der aktuelle Schaltstatus abgefragt und dadurch in Homematic ggf. korrigiert werden.


    Ob man im WENN die interne Zeitsteuerung nutzt oder einen CUxD-Timerkanal als Trigger nutzt, kann man dabei frei entscheiden.

    (In meinem Beispiel wurde das interne Zeitmodul genutzt.)

    Das Programm:

    Programm.PNG

    Ob man im WENN die interne Zeitsteuerung nutzt oder einen CUxD-Timerkanal als Trigger nutzt, kann man dabei frei entscheiden.

    (In meinem Beispiel wurde das interne Zeitmodul genutzt.)

    Hinweis:

    Bitte kein zu kurzes Intervall wählen um Ablaufverzögerungen des Gesamt-Homematic-Systems zu vermeiden!


    Einstellungen im Zeitmodul:

    Zeitmodul.PNG

    Das Aktualisierungsintervall kann natürlich angepasst werden, wobei zu beachten ist:

    Je kürzer das Intervall desto höher die Systembelastung für die Homematic-Zentrale. Hier muß / kann man testen. Ab wann die Performance leidet hängt natürlich zum Einen von der eingesetzten Hardware und zum Anderen vom Umfang der Installation ab.

    Bei Umsetzung der kompletten Anleitung wird eh bei jedem Statuswechsel syncronisiert. ;)


    __________________________________________________________________________________

    ©2022 Stefan K. (alias 66er) - ausführlicher Hinweis dazu am Ende der Anleitung

    Alle Rechte vorbehalten!

  • ©2022 Stefan K. (alias 66er) - ausführlicher Hinweis dazu am Ende der Anleitung

    Alle Rechte vorbehalten!

    2. Das Skript

    Bitte den Bereich "Setup" anpassen und Hinweise beachten!

    Ausserhalb des Setup sind keine Änderungen oder Eintragungen nötig!


    Bitte außerdem beachten:

    Im Skript ist RestrictLogin schon enthalten. Wie sich erst später herausstellte, wird das aber aktuell in der Firmware/vom Gerät nicht unterstützt!

    Daher bitte im Setup nicht aktivieren!

    Im eingestellten Intervall und bei jeder Statusänderung eines Schaltkanals werden nun entsprechend den aktivierten Feature Schaltkanalaktualisierung und Onlinestatus aktualisiert. :)


    Changelog:


    V1.0.3 | 20.02.2022

    Erstpublizierung


    ____________________________________________________________

    Die Anleitung inkl. der Skripte und Bilder unterliegt dem Urheberrecht. Wer gegen das Urheberrecht verstößt (z.B. Bilder oder Texte unerlaubt kopiert und auf anderen Webseiten publiziert), macht sich gem. §§ 106 ff UrhG strafbar, kann zudem kostenpflichtig abgemahnt werden und muss Schadensersatz leisten (§ 97 UrhG).

    An dieser Stelle nochmals Dank an MichaelN aus dem Homematic-Forum für die freundliche Zustimmung, sein Skript "Json universell auslesen" in meine Shelly-Skripte einbauen zu dürfen.

    © 2022 Stefan K. (alias 66er)

    Alle Rechte vorbehalten


    ____________________________________________________________