- Offizieller Beitrag
©2019-2020 Stefan K. (alias 66er) - ausführlicher Hinweis dazu am Ende der Anleitung
Hallo zusammen,
um den Shelly 2.5 in Homematic einzubinden, braucht es keine Fremdfirmware, die man flashen muß.
Für den Modus "2-fach Schaltaktor" stelle ich meine Lösung mit der Originalfirmware vor:
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.)
DIe Vorteile aus meiner Sicht:
- sehr günstiger Preis (19,99€) gegenüber dem Homematic-Original(59,95€)
- alle Shelly2.5 -Eigenschaften bleiben erhalten, da ich die Aktoren mit der originalen Herstellerfirmware betreibe
- alle zukünftigen Shelly2.5 -Aktualisierungen/ -updates werden nutzbar sein
- Volle Shelly-App-Bedienbarkeit parallel zur Homematic-Automatisierung
- Als manueller Schalter können markenunabhängig alle vorhandenen Schalter (weiter) genutzt werden
- Betrieb als lokale Lösung oder über Shelly-Cloud, zusätzlich Homematic
Folgende Funktionen habe ich auf der Homematic-Seite umgesetzt:
- unabhängiges Schalten der 2 Schaltkanäle
- Aktualisierung des aktuellen Schaltzustandes in frei einstellbarem Intervall, unabhängig davon, ob die Bedienung über Homematic oder Shelly-App oder Taster erfolgt
- Optionale Überwachung des Onlinestatus (Erreichbarkeit im WLAN)
Die Ansicht der Anbindung:
Bild 1
Die 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.
Hier gibt es bei Bedarf eine Anleitung zum Anlegen des CUxD-Exec-Gerätes.
Anlegen einer CUxD (40) 16-Kanal Universalsteuerung als Schalter
Davon werden je Shelly2 als 2-fach-Aktor 2 Tasten benötigt (siehe Bild 1):
Schalter 1 --> für Kanal 1
Schalter 2 --> für Kanal 2
Die Einstellungen der Kanäle:
Kanaleinstellungen Schalter 1:
Schalter 1:
Einstellung für SWITCH|CMD_SHORT:
Einstellungen für SWITCH|CMD_LONG:
und entsprechend für den Schalter/Kanal 2:
Schalter 2:
Einstellung für SWITCH|CMD_SHORT:
Einstellungen für SWITCH|CMD_LONG:
IP-Adresse des Shelly2.5 jeweils anpassen !
Damit sind die Schalter schon einsatzbereit.
Was noch fehlt ist die autom. Aktualisierung des Schaltstatus und die optionalen Anzeige des Onlinestatus.
Die Anzeige des Onlinestatus erfolgt wie bei allen anderen Kopplungen auch mittels Systemvariable und CUxD-Ping-Gerät(28) .
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.
Für die optionale Anzeige des Onlinestatus wird 1 Systemvariable benötigt, deren Name natürlich frei an eigene Ideen angepasst werden kann:
Achtung:
Die Namen der Systemvariablen dürfen keine Leerzeichen und keine Umlaute enthalten!
Die SV für den Onlinestatus:
Wichtig ist, beide Variablen dem entsprechenden Taster-Kanal der 16-fach Universalsteuerung zuzuweisen, damit sie dort auch angezeigt werden ! (Ob man sie dem 1. Kanal zuweist oder 2. Kanal bleibt dem eigenen Geschmack überlassen und ändert funktional nichts.)
Den Onlinestatus überwacht und steuert ein CUxD-Ping Kanal. D.h. mit 1 CUxd-Ping-Gerät (28) können bis zu 16 Shelly2.5 überwacht werden. Natürlich kann auch ein freier Kanal eines schon vorhandenen CUxD-Ping genutzt werden.
Shelly-Ping.JPGIP-Adresse des Shelly anpassen!
Einstellungen für SWITCH|CMD_EXEC_TRUE:
Einstellungen für SWITCH|CMD_EXEC_FALSE:
Name der Systemvariablen jeweils anpassen! (hier: Onlinestatus_Shelly2-5_1)
Aktualisierung Schaltstatus:
Für die autom. Aktualisierung des Schaltstatus benötigen wir 1 Timer ...
Aktualisierung alle 60 Sekunden (Zeit variabel)
... der das Programm zur Aktualisierung triggert:
Alternativ kann auch im WENN auch auf "Timerevent" des Timers ausgelöst werden.
Fehlt nur noch das Skript:
!Skript zur Statusaktualisierung Shelly 2.5 mit Originalfirmware als 2-fach Schalter (c) by 66er V2.5.3
! Publiziert und Updates auf https://smarthome-forum.eu/forum/index.php?board/145-homematic/
!***** Schaltstatus auslesen Schalter 1 ****
!In der folgenden Zeile die IP des Shelly2 anpassen
var url = "http://192.168.1.131/relay/0/status";
!In den folgenden 4 Zeilen die CUxD-Exec-Geräteadresse anpassen (hier: 2801001:2)
dom.GetObject("CUxD.CUX2801001:2.CMD_SETS").State("wget -q -O - '"#url#"'");
dom.GetObject("CUxD.CUX2801001:2.CMD_QUERY_RET").State(1);
string Antwort = dom.GetObject("CUxD.CUX2801001:2.CMD_RETS").State();
dom.GetObject("CUxD.CUX2801001:2.CMD_SETS").State("0");
!WriteLine(Antwort);
!In diesem Abschnitt NICHTS ändern
string word = "ison:";
integer word_laenge = word.Length();
integer word_position = Antwort.Find(word);
string daten = Antwort.Substr((word_position + word_laenge +4), 5);
integer word_position = daten.Find(word);
daten = daten.Substr(0, (word_position -3));
Antwort = "true";
!WriteLine(daten);
!**** Zustand Kanal 1 aktualisieren ****
!In den folgenden 3 Abschnitten die CUxD-Adresse für den Kanal1 des Shelly2 anpassen
var zustand = dom.GetObject("CUxD.CUX4000007:1.STATE").State();
!WriteLine(zustand);
if ((daten == "true,") && (zustand != true) )
{dom.GetObject("CUxD.CUX4000007:1.SET_STATE").State(1);
WriteLine("if ON");
}
if ((daten == "false") && (zustand != false)) {
dom.GetObject("CUxD.CUX4000007:1.SET_STATE").State(0);
WriteLine("if off");
}
!***** Schaltstatus aktualisieren Schalter 2 ****
!In der folgenden Zeile die IP des Shelly2 anpassen
var url = "http://192.168.1.131/relay/1/status";
!In den folgenden 4 Zeilen die CUxD-Exec-Geräteadresse anpassen (hier: 2801001:2)
dom.GetObject("CUxD.CUX2801001:2.CMD_SETS").State("wget -q -O - '"#url#"'");
dom.GetObject("CUxD.CUX2801001:2.CMD_QUERY_RET").State(1);
string Antwort = dom.GetObject("CUxD.CUX2801001:2.CMD_RETS").State();
dom.GetObject("CUxD.CUX2801001:2.CMD_SETS").State("0");
WriteLine(Antwort);
!In diesem Abschnitt NICHTS ändern
string word = "ison:";
integer word_laenge = word.Length();
integer word_position = Antwort.Find(word);
string daten = Antwort.Substr((word_position + word_laenge +4), 5);
integer word_position = daten.Find(word);
daten = daten.Substr(0, (word_position -3));
Antwort = "true";
WriteLine(daten);
!**** Zustand Kanal 2 aktualisieren ****
!In den folgenden 3 Abschnitten die CUxD-Adresse für den Kanal2 des Shelly2 anpassen
var zustand = dom.GetObject("CUxD.CUX4000007:2.STATE").State();
!WriteLine(zustand);
if ((daten == "true,") && (zustand != true) )
{dom.GetObject("CUxD.CUX4000007:2.SET_STATE").State(1);
WriteLine("if ON");
}
if ((daten == "false") && (zustand != false)) {
dom.GetObject("CUxD.CUX4000007:2.SET_STATE").State(0);
WriteLine("if off");
}
daten = "0";
!Ende Skript
Alles anzeigen
Gemäß den Hinweisen im Skript sind anzupassen:
IP des Shelly2.5
CUxD-Exec-Kanal (Im Skript: CUX2801001:3)
CUxD-Kanaladressen der Schalter (im Skript CUX40000007:1 ind CUX40000007:2)
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-2020 Stefan K. (alias 66er)
Alle Rechte vorbehalten
____________________________________________________________