Shelly2 mit Originalfirmware als 2-fach Schaltaktor

User stellen ihre Haussteuerung vor

Moderator: Co-Administratoren

Antworten
66er
Beiträge: 3083
Registriert: 23.08.2015, 11:06
System: CCU
Hat sich bedankt: 116 Mal
Danksagung erhalten: 111 Mal

Shelly2 mit Originalfirmware als 2-fach Schaltaktor

Beitrag von 66er » 02.03.2019, 23:53

Hallo zusammen,

nach dem erfolgreichen Einbinden des Shelly1 und des Shelly2 als Rollladenaktor, habe ich nun auch den Shelly2 als 2-fach-Schaltaktor 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
  • alle zukünftigen Shelly2-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)
  • Optinale Anzeige des Schaltleistung (Shelly-seitig nur als Gesamtleistung beider Kanäle)
Die Ansicht der Anbindung:
Schalter.JPG
Bild1 die CUxD-Schalter (2 Kanäle)


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 Schalter

Davon werden je Shelly2 als 2-fach-Aktor 2 Tasten benötigt (siehe Bild 1):
Schalter 1 :arrow: für Kanal 1
Schalter 2 :arrow: für Kanal 2


Die Einstellungen der Kanäle:



Kanaleinstellungen Schalter 1:
Einstellungen Schalter 1.JPG

Schalter 1:
Einstellung für SWITCH|CMD_SHORT:

Code: Alles auswählen

wget -q -O - 'http://192.168.1.128/relay/0?turn~3doff'

Einstellungen für SWITCH|CMD_LONG:

Code: Alles auswählen

wget -q -O - 'http://192.168.1.128/relay/0?turn~3don'
und entsprechend für den Schalter/Kanal 2


Schalter 2:
Einstellung für SWITCH|CMD_SHORT:

Code: Alles auswählen

wget -q -O - 'http://192.168.1.128/relay/1?turn~3doff'

Einstellungen für SWITCH|CMD_LONG:

Code: Alles auswählen

wget -q -O - 'http://192.168.1.128/relay/1?turn~3don'
IP-Adresse des Shelly2 jeweils anpassen :!:


Damit sind die Schalter schon einsatzbereit. :D

Was noch fehlt ist die autom. Aktualisierung des Schaltstatus und die optionalen Anzeigen von Leistung und Onlinestatus.

Die Anzeige des Onlinestatus erfolgt wie beim Shelly 1 mittels Systemvariable und CUxD-Ping-Gerät(28) und ist beim Shelly1 bereits ausführlich beschrieben und kann im entsprechenden Thread nachgelesen werden! :wink:

Für die autom. Aktualisierung des Schaltstatus und die optionalen Anzeigen von Leistung werden zunächst 1 CUxD-Timer

Timer.JPG
Aktualisierung alle 60 Sekunden (Zeit variabel)

und eine Systemvariable benötigt, die wie beim Shelly1 dem entsprechenden CUxD-Schalter-Kanal zugeordnet wird (siehe oben Bild1).

Sysvar Leistung.JPG

Nun noch 1 Programm für die Aktualisierungen:

Programm.JPG

Skript 1:

Code: Alles auswählen

!Skript zur Statusaktualisierung Shelly2 mit Originalfirmware als 2-fach Schalter (by 66er V2.2.0)

!***** Schaltstatus auslesen Schalter 1 ****
!In der folgenden Zeile die IP des Shelly2 anpassen
var url = "http://192.168.1.128/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.CUX4000005:15.STATE").State();
!WriteLine(zustand);

if ((daten == "true,") && (zustand != true) )
{dom.GetObject("CUxD.CUX4000005:15.SET_STATE").State(1);
WriteLine("if ON");
}
if ((daten == "false") && (zustand != false)) {
dom.GetObject("CUxD.CUX4000005:15.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.128/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.CUX4000005:16.STATE").State();
!WriteLine(zustand);

if ((daten == "true,") && (zustand != true) )
{dom.GetObject("CUxD.CUX4000005:16.SET_STATE").State(1);
WriteLine("if ON");
}
if ((daten == "false") && (zustand != false)) {
dom.GetObject("CUxD.CUX4000005:16.SET_STATE").State(0);
WriteLine("if off");
}


daten = "0";

Gemäß den Hinweisen im Skript sind anzupassen:
IP des Shelly2
CUxD-Exec-Kanal (Im Skript: CUX2801001:3)
CUxD-Geräte-Kanäle der Schalter (Im Skript: CUX4000005:15 und CUX4000005:16)


Skript 2:

Code: Alles auswählen

!**** Leistungsaufnahme Shelly2 als 2-fach-Schalter aktualisieren   (by66er V 2.3.0)****
!In der folgenden Zeile die IP-Adresse des Shelly2 anpassen
var url = "http://192.168.1.128/meter/0?power";


!**** Abfrage des Shelly2 ****
!In den folgenden Zeilen jeweils den CUxD-Exec-Kanal anpassen (5x)
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   ****
!In diesem Abschnitt NICHTS ändern
string s;
foreach (s,t.Split (",")) {
   if (s.LTrim ("{").StartsWith ('"power"')) {
   string e =  (s.StrValueByIndex (":",1).RTrim ("}")).ToInteger();
!   WriteLine(e);




!**** Variable Shelly2_Leistung-Gesamt setzen****
!Variablennamen anpassen
dom.GetObject("Shelly2_Schaltleistung-Test").State(e);

   }
}  
Gemäß den Hinweisen im Skript sind anzupassen:
IP des Shelly2
CUxD-Exec-Kanal (Im Skript: CUX2801001:3)
Name der Variablen (Im Skript: Shelly2_Schaltleistung-Test)

LG und ggf. viel Spass damit. :wink:
Stefan
Ich übernehme keine Haftung für von mir gegebene Antworten, Tipps und veröffentlichte Projekte! Jeder ist für sich selbst verantwortlich! Arbeiten an 230V sind von einer Elektrofachkraft auszuführen!

Homematic in Betrieb seit 15.08.2015, > 60 HM-Komp. | 3x USV APC ES400 | Visualisierung auf ioBroker | Audio: Home24-Apps

Raspberrymatic auf DS923+ in VMM (Produktivsystem1)
Rollläden, SSD, Wetter, Logging, Licht, RM, Sonos, Shelly

Raspberrymatic auf DS923+ in VMM (Produktivsystem2 )
Erweiterung GMA, Heizung, Licht, Shelly, SSD, Sonos

>100 Shelly-Geräte an Homematic | CCU2 endgültig in Rente | 3 Raspis als Rückfallebene für Raspimatic und ioBroker

Shelly an Homematic | Infrarot-Heizungssteuerung | Fensteröffnungszeit überwachen

Antworten

Zurück zu „Projektvorstellungen“