nach dem erfolgreichen Einbinden des Shelly1 in Homematic, habe ich nun erfolgreich den Shelly2 als Rollladenaktor eingebunden.
DIe Vorteile aus meiner Sicht:
- sehr günstiger Preis (19,99€)
- alle Shelly2-Eigenschaften bleiben erhalten, da ich die Aktoren mit der originalen Herstellerfirmware betreibe
- Schutzfunktionen des Shelly2 wie z.B. Überlast bleiben erhalten
- Volle Shelly-App-Bedienbarkeit parallel zur Homematic-Automatisierung
- Als manueller Schalter können markenunabhängig alle vorhandenen Rollladenschalter (weiter) genutzt werden
- Betrieb als lokale Lösung oder über Shelly-Cloud, zusätzlich Homematic
- Rollladen öffnen (Behanghöhe 100%)
- Rollladen schließen (Behanghöhe 0%)
- laufende Fahrt Stop
- Anfahren von 1 definierte Beschattungsposition
- Aktualisierung der aktuellen Behanghöhe in frei einstellbarem Intervall, unabhängig davon, ob die Bedienung über Homematic oder Shelly-App oder Taster erfolgt
- Überwachung des Onlinestatus (Erreichbarkeit im WLAN)
Bild 1
Die Umsetzung:
(Auf die Beschreibung des Anlegens der CUxD-Geräte verzichte ich an dieser Stelle, dafür gibt es diverse Einträge hier im Forum und vor Allem die CUxD-Doku!)
Falls noch nicht vorhanden, bitte ein Gerät (28) System Exec anlegen! Darüber werden die Befehle abgesetzt.
Anlegen einer CUxD (40) 16-Kanal Universalsteuerung als Taster
Davon werden je Rollladenaktor (Shelly2) 2 Tasten benötigt (siehe Bild 1):
Taste 1 für AUF und AB und optional die Darstellung der Behanghöhe und des Onlinestatus
Taste 2 für STOP und definierte Beschattungsposition
(Im Bild 1 sind die Kanäle 3 bis 16 der Universalsteuerung deaktiviert und daher nicht sichtbar, für eine 2. Aktor würde man Kanal 3 und 4 aktivieren).
Die Einstellungen der Kanäle:
Taste 1:
Einstellung für SWITCH|CMD_SHORT:
Code: Alles auswählen
wget -q -O - 'http://<IP des Shelly2>/roller/0?go~3dopen'
Einstellungen für SWITCH|CMD_LONG:
Code: Alles auswählen
wget -q -O - 'http://<IP des Shelly2>/roller/0?go~3dclose'
Taste 2:
Einstellung für SWITCH|CMD_SHORT:
Code: Alles auswählen
wget -q -O - 'http://<IP des Shelly2>/roller/0?go~3dstop'
Einstellungen für SWITCH|CMD_LONG:
Code: Alles auswählen
wget -q -O - 'http://<IP des Shelly2>/roller/0?go~3dto_pos~26roller_pos~3d20'
IP-Adresse des Shelly2 jeweils anpassen
Damit ist die eigentliche Steuerung schon einsatzbereit.
Für die optionale Anzeige von Behanghöhe und Onlinestatus werden je 1 Systemvariable benötigt, deren Name natürlich frei an eigene Ideen angepasst werden kann:
Die SV für den Onlinestatus:
Die SV für die Behanghöhe:
Wichtig ist, beide Variablen dem entsprechenden Taster-Kanal der 16-fach Universalsteuerung zuzuweisen, damit sie dort auch angezeigt werden
Den Onlinestatus überwacht und steuert ein CUxD-Ping Kanal. D.h. mit 1 CUxd-Ping-Gerät (28) können bis zu 16 Shelly2 überwacht werden. Natürlich kann auch ein freier Kanal eines schon vorhandenen CUxD-Ping genutzt werden.
Einstellungen für SWITCH|CMD_EXEC_TRUE:
Code: Alles auswählen
extra/timer.tcl Onlinestatus_Shelly_Roll_SZ 1
Code: Alles auswählen
extra/timer.tcl Onlinestatus_Shelly_Roll_SZ 0
Nun fehlt noch die Behanghöhe (hierfür muß der Shelly2 bereits kalibriert sein!):
Dazu einen Timer (als Auslöser der Aktualisierung):
(hier wird der Wert alle 60 Sekunden aktualisiert)
und 1 Programm für die Aktualisierung:
Das Programm braucht nur den Timer als Auslöser! Mehrere Shelly2 können in weiteren DANN-Zeilen jeweils ansteigend verzögert hinzugefügt werden,
Und zum Schluß noch das Skript:
Code: Alles auswählen
!Skript zur Behanghöheaktualisierung (%) Shelly2 als Rollladenaktor mit Originalfirmware (by 66er V2.0)
!Raumbezeichnung (nur zur Orientierung, ggf anpassen)
!****Abfrage des Shelly2 als Rollladenaktor*****
!In der folgenden Zeile IP des Shelly2 anpassen!
var url = "http://192.168.1.xxx/roller/0";
!In den folgenden Zeilen die CUxD-Exec-Kanal anpassen
dom.GetObject("CUxD.CUX2801001:3.CMD_SETS").State("wget -q -O - '"#url#"'");
dom.GetObject("CUxD.CUX2801001:3.CMD_QUERY_RET").State(1);
string Antwort = dom.GetObject("CUxD.CUX2801001:3.CMD_RETS").State();
string t = dom.GetObject("CUxD.CUX2801001:3.CMD_RETS").State();
dom.GetObject("CUxD.CUX2801001:3.CMD_SETS").State("0");
!WriteLine(Antwort);
!WriteLine(t);
!****Auswertung des Antwortstrings *** Mein Dank an Black für die Unterstützung *** ****
string s;
foreach (s,t.Split (",")) {
if (s.LTrim ("{").StartsWith ('"current_pos"')) {
string e = (s.StrValueByIndex (":",1).RTrim ("}"));
! WriteLine(e);
}
}
!**** Variable Rollladenbehanghöhe setzen****
!Variablennamen anpassen
dom.GetObject("Shelly_Behanghoehe_Rollladen_SZ").State(e);
IP des Shelly2
CUxD-Exec-Kanal (Im Skript: CUX2801001:3)
Name der Variablen (Im Skript: Shelly_Behanghoehe_Rollladen_SZ)
Mein Dank an dieser Stelle nochmal an Black, der mir bei der Auswertung der Behanghöhe helfend zur Seite stand.
LG und ggf. viel Spass damit.
Stefan