Wie binde ich den Shelly2 als Rollladenaktor ein?

22.02.2019 / Stefan & Black (HomeMatic-Forum) / 2.464

Bei Shelly2 handelt es sich um einen günstigen Rollladenaktor, den es in allen gängigen Shops zu kaufen gibt und sich relativ einfach in das HomeMatic-System einbinden lässt. Der folgende Artikel beschreibt die Integration des Aktors und entstand in Zusammenarbeit von Stefan & Black aus dem HomeMatic Forum.

Im Gegensatz zu den herkömmlichen Aktoren aus dem HomeMatic Sortiment ist der Shelly2 ein sehr preiswerte Alternative (~ 20 EUR). Zusätzlich sind folgende Vorteile herauszuheben:

  • Sämtliche Shelly2-Eigenschaften bleiben erhalten (u.a. auch die Schutzfunktion vor Überlast)
  • 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)

Folgende Funktionen wurden durch die Autoren dabei umgesetzt:

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

Ansicht der Anbindung

Bild

Umsetzung

Für die Integration ist das HomeMatic-AddOn "CUx-Daemon" nötig, das als Zusatzsoftware auf der CCU installiert wird. Nähere Informationen zu diesem AddOn sind der beiliegenden und sehr ausführlichen Dokumentation zu entnehmen. Wichtig ist, dass das Gerät CUx-D (28) System Exec angelegt wurde, welches eine absturzsichere Variante des "system.exec"-Befehls implementiert.

Zusätzlich muss noch das Gerät CUxD (40) 16-Kanal Universalsteuerung als Taster angelegt werden. Von diesem Gerät werden je Rollladenaktor 2 Tasten benötigt (siehe oberes Bild). Die Taste 1 wurd dabei für AUF und AB sowie optional für die Darstellung der Behanghöhe und des Onlinestatus benötigt. Die Taste 2 dient als STOP sowie zum Anfahren einer definierten Beschattungsposition.

Einstellung der Kanäle

Bild

Bitte beachten:

Bitte in den folgenden Code-Abschnitten die IP-Adresse des Shelly2-Aktors eintragen.

Taste 1

Einstellung für SWITCH|CMD_SHORT:

wget -q -O - 'http://<IP des Shelly2>/roller/0?go~3dopen'

Einstellung für SWITCH|CMD_LONG:

wget -q -O - 'http://<IP des Shelly2>/roller/0?go~3dclose'

Taste 2

Einstellung für SWITCH|CMD_SHORT:

wget -q -O - 'http://<IP des Shelly2>/roller/0?go~3dstop'

Einstellung für SWITCH|CMD_LONG:

wget -q -O - 'http://<IP des Shelly2>/roller/0?go~3dto_pos~26roller_pos~3d20'

Hinweis

Die "20" am Ende dieses Codes entspricht der Behanghöhe 20% und kann frei im Wertebereich 1 bis 99 angepasst werden.

Anzeige der Behanghöhe & des Onlinestatus

Im Prinzip ist die eigentliche Steuerung des Shelly2-Aktors nach den obigen Schritten bereits abgeschlossen und sollte funktionieren. Möchte man zusätzlich noch die Behanghöhe und den Onlinestatus angezeigt bekommen, sind je eine Systemvariable anzulegen:

Systemvariable für die Behanghöhe

Bild

Systemvariable für den Onlinestatus

Bild

Bitte beachten:

Beide Systemvariablen sind dem entsprechenden Taster-Kanal der 16-fach Universalsteuerung zuzuweisen, damit sie dort auch angezeigt werden (könnn).

Den Onlinestatus überwacht und steuert dabei ein so genannter CUx-D Ping Kanal. Das dazu passende Gerät (CUx-D (28) Ping) bietet dabei 16 unabhängige Kanäle, das bis zu 16 Shelly2 überwachen könnte. Natürlich kann auch ein freier Kanal eines schon vorhandenen CUxD-Ping genutzt werden:

Bild

Einstellung für SWITCH|CMD_EXEC_TRUE:

extra/timer.tcl Onlinestatus_Shelly_Roll_SZ 1

Einstellung für SWITCH|CMD_EXEC_FALSE:

extra/timer.tcl Onlinestatus_Shelly_Roll_SZ 0

Hinweis

Die Namen der Systemvariablen sind entsprechend anzupassen (hier: OnlinestatusShellyRollSZ)

Damit die Behanghöhe stimmt, muss der Shelly2-Aktor zuvor kalibriert werden.

Anschließend nutzt man einen CUx-D Timer, der als Auslöser der Aktualisierung dient:

Bild

Das eigentliche Programm, welches auf den zuvor definierten Timer auslöst, sieht dabei wie folgt aus:

Bild

Hinweis

Das Programm braucht nur den Timer als Auslöser! Mehrere Shelly2 können in weiteren DANN-Zeilen jeweils ansteigend verzögert hinzugefügt werden.

Das aufgerufene Skript muss noch vor dem Einsatz wie folgt bearbeitet werden:

  • IP-Adresse des Shelly2 eintragen
  • Ggf. CUxD-Exec-Kanal (Im Skript: CUX2801001:3) anpassen
  • Ggf. Name der Variablen (Im Skript: Shelly_Behanghoehe_Rollladen_SZ) anpassen
!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);
- Code scannen, um zur Orginalseite zu gelangen -