Shelly1 mit Original-Firmware + CUxD inkl. Status

Problemlösungen und Hinweise von allgemeinem Interesse zur Haussteuerung mit HomeMatic

Moderator: Co-Administratoren

66er
Beiträge: 2582
Registriert: 23.08.2015, 11:06
Danksagung erhalten: 3 Mal

Shelly1 mit Original-Firmware + CUxD inkl. Status

Beitrag von 66er » 20.01.2019, 13:52

Hallo zusammen,

nachdem es öfter schon Thema war, ob man zur Einbindung des Shelly 1 unbedingt Fremdfirmware flashen muß, kann ich nun meine Lösung mit der Originalfirmware vorstellen:

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
  • Neu: optionale Überwachung der Erreichbarkeit des Shelly im Netzwerk (Onlinestatus)
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:
CUxD Shelly.JPG

Einstellungen der einzelnen Kanäle (1 Kanal = 1 Shelly):
Schaltereinstellung.JPG

Einstellung für SWITCH|CMD_SHORT:

Code: Alles auswählen

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

Einstellungen für SWITCH|CMD_LONG:

Code: Alles auswählen

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. :D



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


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 :!: :idea:

Und wenn das Programm unter Verwendung von "Timerevent" nicht triggert, so kann man stattdessen auch "bei Timerget im Wertebereich kleiner1 - bei Änderung" auslösen. :idea:




Fehlt noch das Skript:

Code: Alles auswählen

!Skript zur Statusaktualisierung Shelly1 mit Originalfirmware (by 66er V1.0)
!Raumbezeichnung
var url = "http://192.168.1.124/relay/0/status";
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);

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

var zustand = dom.GetObject("CUxD.CUX4000005:1.STATE").State();
!WriteLine(zustand);

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

Was das Skript angeht, möchte ich noch anmerken, dass ich mir das aus verschiedenen Beiträgen zusammengetragen habe. Von daher kann ich nicht ausschließen, dass es im Skript Optimierungspotential gibt. Als Skript-Laie freue ich mich, dass es funktioniert. :wink:

Viel Spass damit und LG
Stefan

29.01.2019 Edit:
Die Lösung wurde optional um die Überwachung des Onlinestatus des Shelly1 erweitert, hier die zugehörige Beschreibung.

(dadurch notwendige Textanpassungen in diesem Beitrag)

31.01.2019 Edit:
Grammatik korrigiert

04.03.2019 Edit:
Hinweis auf Timerget als Alternative zu Timerevent beim Programm zur Aktualisierung
Zuletzt geändert von 66er am 04.03.2019, 19:49, insgesamt 3-mal geändert.
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 | 3x USV APC ES400 | Visualisierung + Audio: Home24-Apps

CCU2 (2.25.15) Uptime-Rec. 163 Tage
addons: CUx-Daemon 1.8a / eMail-Addon 1.6.0 / XML-API 1.12 / HUE-Addon V1.4.1 / Sonos-Addon
150 Kanäle in 44 Geräten und 236 CUxD-Kanäle in 26 CUxD-Geräten
Heizung, Licht, SSD und Erweiterung GMA

bidirektional vernetzt mit


Charly in Betrieb seit 21.10.2018 ( 3_37_8) Uptime-Rec. >300 Tage
addons: CUx-Daemon 2.1.0 /CUxD-Highcharts 1.4.5 / eMail-Addon 1.6.8a / XML-API 1.18 /HUE-Addon V1.4.1 / Sonos-Addon
55 Kanäle in 20 Geräten und 279 CUxD-Kanäle in 26 CUxD-Geräten
Rollläden, SSD, Wetter, Logging, Licht, RM, Sonos, Shelly


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

radierer
Beiträge: 56
Registriert: 06.04.2014, 00:43

Re: Shelly1 mit Original-Firmware + CUxD inkl. Status

Beitrag von radierer » 26.01.2019, 20:32

Nabend Stefan,

ich sage auch hier nochmals vielen Dank für dein Engagement und die saubere Doku. Mir hilft sowas ungemein und ohne solch engagierten Forenmitglieder hätte ich wohl vieles, was aktuell auf meinerCCU2 läuft, so nicht umsetzen können. Mein Dank hier an Stefan gilt daher allen anderen Mitgliedern ebenso, die hier mit Rat und Tat zur Seite stehen. :)

Mein Shelly ist gestern angekommen, wurde direkt verbaut und verrichtet zuverlässig seinen Dienst. Das alles ohne Adapter für die Wippe, zusätzlichen Taster o.ä. Einfach hinter den vorhandenen Schalter und fertig. Ich bin begeistert .. :D

66er
Beiträge: 2582
Registriert: 23.08.2015, 11:06
Danksagung erhalten: 3 Mal

Re: Shelly1 mit Original-Firmware + CUxD inkl. Status

Beitrag von 66er » 27.01.2019, 05:45

:D :D :D Danke für's positive Feedback. :D :D :D
radierer hat geschrieben:
26.01.2019, 20:32
... Das alles ohne Adapter für die Wippe, zusätzlichen Taster o.ä. Einfach hinter den vorhandenen Schalter und fertig. Ich bin begeistert .. :D
Neben dem Preis ein weiterer Vorteil gegenüber den Homematic-Pendants. :wink:

Hinweis für andere Interessierte:
Zum Einbau hinter dem Schalter braucht man in der Dose den N-Leiter.

LG
Stefan

davezero78
Beiträge: 1
Registriert: 14.01.2018, 15:08

Re: Shelly1 mit Original-Firmware + CUxD inkl. Status

Beitrag von davezero78 » 27.01.2019, 20:41

Das Script und die Erklärung sind super.
Allerdings wird CUX4000005:1 nicht zwangsläufig benötigt.

Es genügt auch im Script anstatt CUX4000005:1 einfach die CUX2801001:2 (oder wie es im eigenen Script heißt) weiter zu verwenden.
Vorteil ist, dass man kein zusätzliches CUxD Gerät benötigt. Die Zeitabfrage in dem Fall einfach über die Zeitsteuerung im Programm einrichten.

Und im Ergebnis hat man einen Schalter, mit dem man sowohl die Befehle für AN und AUS sendet und der zusätzlich auch den Status im gewählten Intervall ändert.

66er
Beiträge: 2582
Registriert: 23.08.2015, 11:06
Danksagung erhalten: 3 Mal

Re: Shelly1 mit Original-Firmware + CUxD inkl. Status

Beitrag von 66er » 27.01.2019, 21:21

Danke. :D

Funktional ist Deine Aussage ev. richtig, habe ich so nicht getestet.

Aber ich habe mir halt ein anderes System angewöhnt:
1 CUxD-Exec für Befehle im System und je 1 (oder auch mehrere) 16-Kanal Universalsteuerung je Gerätegruppe (HUE, Shelly, Osram-Plugs usw.) :wink:

Ist wohl Ansichtssache, ich finde es so übersichtlicher.

LG
Stefan

66er
Beiträge: 2582
Registriert: 23.08.2015, 11:06
Danksagung erhalten: 3 Mal

Re: Shelly1 mit Original-Firmware + CUxD inkl. Status

Beitrag von 66er » 29.01.2019, 21:49

Hallo zusammen,

:D angespornt von den Rückmeldungen (überwiegend per PN), da der Nutzerkreis meiner Lösung größer scheint als die bisherigen Threadreaktionen vermuten lassen, und auch wegen der eigenen Entdeckung einer "Schwachstelle" habe ich für mich noch eine Schippe nachgelegt und möchte Euch diese Option nun ebenfalls nachfolgend vorstellen:

(Wichtiger Hinweis: Im 1. Beitrag ging es um die Darstellung des Schalt-Status, hier nun um den Online-Status des Shelly1)

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

Hier mal vorab das Ergebnis:
(So kann schon hier jeder für sich entscheiden, ob das Thema für den Einzelnen relevant ist und weiterverfolgt wird :wink: )

Onlinestatus des Shelly.JPG

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" (siehe 2.)
Was wird zusätzlich zur Einrichtung im 1. Beitrag 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 1.Bild dieses Beitrages)

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

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

SWITCH|IP_DNS_ADR: IP des Shelly anpassen

SWITCH|CMD_EXEC_TRUE:

Code: Alles auswählen

extra/timer.tcl Onlinestatus_Shelly_Fitnessraum 1
SWITCH|CMD_EXEC_FALSE:

Code: Alles auswählen

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

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

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: Alles auswählen

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!

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

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

Vielleicht kann auch diese Erweiterung jemand brauchen.

Viel Spass damit und LG
Stefan

Mein Dank zu 2. an dieser Stelle nochmal an @uwe111, der mich zur Syntax auf den richtigen Weg gebracht hat. :D
Zuletzt geändert von 66er am 31.01.2019, 03:20, insgesamt 1-mal geändert.

mazta
Beiträge: 34
Registriert: 27.07.2018, 12:40
Hat sich bedankt: 2 Mal

Re: Shelly1 mit Original-Firmware + CUxD inkl. Stati

Beitrag von mazta » 30.01.2019, 08:28

Finde ich sehr interessant, vielen Dank für deine Mühe und das Teilen!

Werde das demnächst auch im ersten Shelly ausprobieren.

Rein interessehalber: Wie schaltest du denn deine Lampen an/aus, wenn du den konventionellen Schalter nicht nutzt? Bei Schalter aus,ist ja auch der Shelly aus, sofern er in der Lampe sitzt.

Viele Grüße

66er
Beiträge: 2582
Registriert: 23.08.2015, 11:06
Danksagung erhalten: 3 Mal

Re: Shelly1 mit Original-Firmware + CUxD inkl. Status

Beitrag von 66er » 30.01.2019, 11:51

Hallo,

da ich Hausautomation betreibe, erfolgen die meisten Lichtschaltungen programmgesteuert. :wink:

Manuell schalten wir nur selten über 6-Fach Wandtaster oder Tablet. Eine permanente manuelle Bedienung führt m.E. Hausautomation ad absurdum.

(Der alte Schalter dient nach Plan nur noch dem Shelly-Neustart, sollte der mal nötig sein.)

LG
Stefan

66er
Beiträge: 2582
Registriert: 23.08.2015, 11:06
Danksagung erhalten: 3 Mal

Re: Shelly1 mit Original-Firmware + CUxD inkl. Status

Beitrag von 66er » 23.02.2019, 09:04

Da die Shellys sehr zuverlässig funktionieren, habe ich mich inzwischen auch mit dem Selly2 als Rollladenaktor beschäftigt und die Einbindung hier erläutert.

Auch die Shelly2 laufen mit der Herstellerfirmware.

LG
Stefan

davimas
Beiträge: 35
Registriert: 11.09.2017, 11:27
Hat sich bedankt: 8 Mal

Re: Shelly1 mit Original-Firmware + CUxD inkl. Status

Beitrag von davimas » 04.03.2019, 18:14

Hey,

also ich habe es nicht zum laufen bekommen nach deiner Anleitung.
Hab mich langsam durchgeforstet und die Behle > Aktion erstmal versucht zu verstehen.....

Das mit dem Timer war die Fehlerquelle, es wurde einfach das Script nicht alle 30 sek automatisch ausgeführt.
Nur wenn ich das Programm manuell gestartet habe, dann übernahm er den Status der Shellys.
Ich habe dann den Timer gelöscht und es über das Zeitmodul gemacht:
1111111111111.png
Screenshot_2019-03-04 HomeMatic WebUI.png
Man sieht da ist die Einstellung alle 10 sekunden.
Zudem habe ich die Scriptbefehle in "sofort" Ausführung, bei Dir verzögert - weshalb? (bin noch Neu in dem Thema)

Das Ganze funktioniert jetzt und ich bin Happy :-)



EDIT:

Nun sehe ich bei der Anleitung für die Shelly2 Aktoren, dass das mit dem Timer anders als hier ist, statt Timer_Event steht da Timer_Get......
download/file.php?id=58297&mode=view

Antworten

Zurück zu „HomeMatic Tipps & Tricks - keine Fragen!“