Shelly 1 in Homematic einbinden - mit der Originalfirmware

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



    Hallo zusammen,


    um den Shelly1 in Homematic einzubinden, braucht es keine Fremdfirmware, die man flashen muß.


    Nachfolgend stelle ich nun meine Lösung mit der Originalfirmware vor:


    Möglichkeiten:

    • Einschalten
    • Ausschalten
    • Zustandsanzeige
    • Aktualisierung in frei einstellbarem Intervall (wichtig, falls z.B. parallel per Shelly-App oder Shelly-Timer geschaltet wird)
    • Nutzung in Programmen
    • optionale Überwachung der Erreichbarkeit des Shelly im Netzwerk (Onlinestatus)


    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.)


    Umsetzung:


    (Auf die Beschreibung des Anlegens der CUxD-Geräte verzichte ich an dieser Stelle, dafür gibt es die CUxD-Doku!)

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


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


    Anlegen einer CUxD (40) 16-Kanal Universalsteuerung als Schalter:

    CUxD Shelly.JPG


    Einstellungen der einzelnen Kanäle (1 Kanal = 1 Shelly)

    Schaltereinstellung.JPG


    Einstellung für SWITCH|CMD_SHORT:

    Code
    1. wget -q -O - 'http://192.168.1.124/relay/0?turn~3doff'


    Einstellungen für SWITCH|CMD_LONG:


    Code
    1. wget -q -O - 'http://192.168.1.124/relay/0?turn~3don'

    IP-Adresse des Shelly1 jeweils anpassen



    Damit funktioniert schon mal das EIN- und AUS-Schalten. :)



    Für die Statusaktualisierung benötigt man neben dem CUxD-Exec noch einen CUxD-Timer.


    Nachtrag;

    Darauf kann man seit Firmware 1.5.0 ggf. verzichten, wenn man zur Statusaktualisierung die "Actions" in den Shelly nutzt. Vor- und Nachteile wurden in diesem Thread erörtert.


    Auch die Einrichtung der Actions ist dort beschrieben. ;)




    Im Timer wird die gewünschte Aktualisierungzeit (hier 30 Sekunden) eingetragen:
    Timer.JPG


    Nun braucht es noch 1 Programm, welches den Schalterstatus zyklisch aktualisiert:


    Programm Shelly aktualisieren.JPG

    Die zusätzlichen WENN-Prüfungen sind natürlich optional und auf meinen Aufbau angepasst. Funktional muß nur die 1. WENN-Zeile im Programm stehen !;)



    Und wenn das Programm unter Verwendung von "Timerevent" nicht triggert, so kann man stattdessen auch

    "bei Timerget im Wertebereich kleiner1 - bei Änderung"

    auslösen.


    Fehlt noch das Skript:

    Achtung:
    Anzupassen sind:

    • Zeile 2: Bezeichnung kann angepasst werden (! xyz)
    • Zeile 3: IP-Adresse des Shelly1
    • 4x : die Adresse des CUxD-Exec (im Skript: CUX2801001:2)
    • 3x : die Adresse des zu aktualisierenden CUxD-Schalters (im Skript: CUX4000005:1)


    Bei einem Aktualisierungsintervall von 30 Sekunden und aktuell 3 Shelly1 ist keine größere Veränderung der CCU3-Auslastung zu bemerken. :)



    Optionale Überwachung des Onlinestatus des Shelly1
    (Erreichbarkeit im (W)LAN)


    Hier mal vorab das Ergebnis:

    Onlinestatus des Shelly.JPG


    (So kann schon hier jeder für sich entscheiden, ob das Thema für den Einzelnen relevant ist und weiterverfolgt wird ;) )

    Vorteile der optionalen Überwachung:

    • Ausfallüberwachung
    • Online-Status im bereits angelegten "CUxD-Shelly-Gerät" sichtbar
    • Möglichkeit auf Nichterreichbarkeit eines Shelly1 individuell zu reagieren, z.B. mit eMail-Benachrichtigung, Anzeige o.ä.
    • projektabhängige zusätzliche EInflußnahme auf den Schaltzustand des "CUxD-Shelly"

    Was wird zusätzlich zur bisherigen Einrichtung benötigt:

    • 1 CUxD-Gerät (28) Ping (1Kanal / Shelly1)
    • 1 Systemvariable je Shelly1


    Die Systemvariable(n):
    Je Shelly wird 1 Systemvariable vom Typ Logik angelegt:

    Sysvar.JPG


    und mit dem entsprechenden Kanal des "CUxD-Shelly" verknüpft.


    Dadurch wird die Variable im CUxD-Gerät sichtbar (siehe Bild unter Ergebnis)


    Gesteuert wird die Variable direkt durch das Gerät "CUxD-Ping". (Sinnvollerweise ordnet man die Kanäle 1:1 den Shellys zu wie beim CUxD-Schalter. ;))



    Nun ergeben sich 2 Möglichkeiten:


    1. Onlinezustand nur anzeigen



    Dazu ist je Shelly1 der zugeordnete CUxD-Ping-Kanal wie folgt einzustellen:

    Shelly-Ping.JPG

    (Die Zeiten können beliebig verändert werden. (solange Euer System nicht in die Knie geht. ^^ )
    SWITCH|IP_DNS_ADR: IP des Shelly anpassen


    SWITCH|CMD_EXEC_TRUE:

    Code
    1. extra/timer.tcl Onlinestatus_Shelly_Fitnessraum 1


    SWITCH|CMD_EXEC_FALSE:

    Code
    1. extra/timer.tcl Onlinestatus_Shelly_Fitnessraum 0

    Achtung: In beiden Codes...


    "Onlinestatus_Shelly_Fitnessraum" durch den Namen Eurer Systemvariablen ersetzen! (Achtung: keine Leerzeichen im Namen verwenden!)


    :) Ab jetzt überwacht das CUxD-Ping den Shelly1 und aktualisiert ggf. den Status online/offline in der Systemvariablen automatisch. :)


    Stimmt nach dem Anlegen der Zustand der Systemvariablen nicht mit dem realen Onlinestatus überein, so muß der reale Onlinestatus einmalig geändert werden (z.b. durch Ausschalten des Shelly). Nach Abwarten der im PING eingestellten Überwachungszeit und Wiedereinschalten des Shelly erfolgt dann die autom. Aktualisierung.


    2. zusätzlich bei Status "Offline" den CUxD-Schalter des Shelly in Stellung "AUS" bringen
    (ohne das unnötigerweise Befehle ins Netzwerk gesendet werden)


    Sinn und Zweck:


    Mangels N-Leiter in den Schalterdosen habe ich meine Shelly1 in den Lampen verbaut. Wird nun das Licht versehentlich (oder auch gewollt) über den herkömmlichen Schalter ausgeschaltet, so ist nicht nur das Licht aus, sondern auch der Shelly1 (=offline). Die CCU würde das aber nicht mitbekommen und folglich den CUxD-Schalter weiterhin im Zustand 1 belassen.



    Durch einen 2.Befehl im Code für SWITCH|CMD_EXEC_FALSE kann der CUxD-Shelly-Schaltkanal auf AUS gesetzt werden, ohne dass unnötige Befehle ins Netzwerk gesendet werden. Insgesamt sieht der erweiterte Eintrag dann so aus:

    Code
    1. extra/timer.tcl Onlinestatus_Shelly_Fitnessraum 0; extra/timer.tcl CUxD.CUX4000005:1.SET_STATE 0

    "Onlinestatus_Shelly_Fitnessraum" durch den Namen Eurer Systemvariablen ersetzen! (Achtung: keine Leerzeichen im Namen verwenden!)


    Außerdem bitte die CUxD-Adresse des Shelly-Schalt-Kanal anpassen!


    :) Durch die erweiterte Befehlszeile wird nun zusätzlich zum Status in der Systemvariablen bei OFFLINE auch der Schalter auf Position AUS gesetzt. :)



    (SWITCH|CMD_EXEC_TRUE braucht nicht erweitert zu werden, da bei ONLINE der Schaltzustand des Shelly1 ja eh aktualisiert wird.) ;)


    Viel Spass damit

    ____________________________________________________________

    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).


    © 2019 Stefan K. (alias 66er)

    Alle Rechte vorbehalten

  • Hallo Bandsalat ,


    Dein Hinweis ist korrekt.


    Die gepostete Lösung ist allerdings schon älter.


    Sie war zunächst in einem anderen Forum publiziert und wurde erst kürzlich von mir hier neu veröffentlicht. ;)

  • Hallo zusammen,


    in #1 wurde die Statusrückmeldung via "Actions" in den Shelly ergänzt. ;)


    Schönen Sonntag.

  • coole Erklärung passt genau, hab auch den online/offline status der shellys in meine Homematic eingepflegt nur hab ich die Aktualisierung der Stati mit den Bordmiteln "Auslösen zu Zeitpunkten" gelöst also ohne cuxd timer... und funkt auch recht zuverlässig...mache die Aktualisierung der shellys stockweise...habe noch ne gute alte CCU und die Aktualiserungen laufen ohne Stress

    bild1.PNG


    bild2.PNG

  • Hallo roli , willkommen im Forum :)


    Danke für's Lob.:thumbup: und schön dass alles funktioniert.8)


    Für wenige Shelly geht das mit der internen Zeitsteuerung, werden es mehr, solltest Du auf CUxD-Timer umsteigen.


    Natürlich bleibt das aber Deine Entscheidung.;)


    Viel Spass.