Shelly1 mit Original-Firmware - Zustandsaktualisierung [gelöst]

Allgemeines zur HomeMatic Haussteuerung

Moderator: Co-Administratoren

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

Shelly1 mit Original-Firmware - Zustandsaktualisierung [gelöst]

Beitrag von 66er » 01.01.2019, 16:42

:?: Hallo zuammen,

erstmal alles Gute für 2019 :D

Ich habe meine ersten Shellys mit der originalen Firmware verbaut und bin insgesamt sehr zufrieden. :D
(Fremdfirmware flashen möchte ich nicht)

Mittels CUxD 16-fach Universalsteuerung kann ich Shelly schalten:

AUS:

Code: Alles auswählen

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

Code: Alles auswählen

wget -q -O - 'http://192.168.1.124/relay/0?turn~3don'
Über den Browser lässt sich auch der Status mit folgendem Befehl abfragen:

Code: Alles auswählen

http://192.168.1.124/relay/0/status
Die Rückmeldung ergibt folgenden Code:
bei AUS:

Code: Alles auswählen

{"ison":false, "has_timer":false}
bei EIN:

Code: Alles auswählen

{"ison":true, "has_timer":true}
Da ich auch die internen Shelly-Timer nutze, würde ich gerne per CUxD-Timer den Zustand zyklisch abfragen und den CUXD-Schalter entsprechend setzen, was dem Wert von "ison" entspricht.

Ist das mit einem Skript möglich :?:
Ich denke ja, aber wie :?: :roll:
Oder kann ich das über ein CUxD-EXEC-Device direkt realisieren :?: (Da bin ich gerade beim Handbuch-Studium drüber gestolpert. :wink: )

Für Hilfe wäre ich sehr dankbar.

LG
Stefan

Hier zur Lösung

Edit: Status gelöst
Edit 2: Link zur Lösungszusammenfassung eingefügt.
Zuletzt geändert von 66er am 11.01.2019, 16:10, insgesamt 2-mal geändert.

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

Re: Shelly1 mit Original-Firmware - Zustand ?

Beitrag von 66er » 05.01.2019, 10:25

Schade,

aber nach gefühlt 1000 Versuchen gebe ich auf. Meine CUxD-Versuche scheiterten teilweise schon daran, dass die gemachten Einträge nach dem Speichern nicht mehr vorhanden waren.

Skripte selbst erstellen kann ich (leider) nicht.

Was soll's, geht auch so.

LG
Stefan

mcbert
Beiträge: 69
Registriert: 03.07.2018, 18:51

Re: Shelly1 mit Original-Firmware - Zustand ?

Beitrag von mcbert » 05.01.2019, 10:39

Hab zur Zeit leider kein funktionierendes Testsetup um großartig was auszuprobieren.
An sich bin ich aber auch kein Freund der Scripte ... manchmal muss man halt trotzdem durch :D (die Tutorials sind echt hilfreich)
Wo genau hängt es bei dir? Nur am auslesen und zerschneiden des Rückgabewertes true/false?

Hast du dir schon mal die MQTT Schnittstelle in Verbindung mit NodeRed angeschaut?
Ist imho etwas einfacher, setzt halt ein paar zusätzliche Installationen (MQTT Broker, NodeRed und z.B. eins der addons von hobbyquaker um mit HM zu reden) voraus.

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

Re: Shelly1 mit Original-Firmware - Zustand ?

Beitrag von 66er » 05.01.2019, 12:19

mcbert hat geschrieben:
05.01.2019, 10:39
...
Wo genau hängt es bei dir? Nur am auslesen und zerschneiden des Rückgabewertes true/false?
Ja genau.

Den http-Request für den Zustand zu senden ist gar kein Problem und funktioniert ja genau wie das EIn-/Ausschalten.

Meine Idee war inzwischen mittels der SWITCH|RCV_SHORT bw. SWITCH|RCV_LONG Datenfelder des CUxD-Schalters in der Antwort den Parameter "ison" auszuwerten und damit den zughörigen CUxD-Schalter für das Licht (den Shelly) in die entsprechende Schaltstellung zu bringen / korrigieren.

Ob das nun per CUxD erfolgt oder per Skript im Programm ist egal.

Da das mit dem nötigen Wissen m.E. möglich sein müßte, bräuchte ich mich halt mit zusätzlichen Adaptern und Addons ...
mcbert hat geschrieben:
05.01.2019, 10:39
... setzt halt ein paar zusätzliche Installationen (MQTT Broker, NodeRed und z.B. eins der addons von hobbyquaker um mit HM zu reden) voraus.
... nicht zu beschäftigen.

Bitte versteh' das nicht falsch, ich selbst habe sehr großes techn. Interesse und bin im techn. Service seit 36 Jahren tätig. Der techn. Wandel hat (leider) mittlererweile aber so rasant Fahrt aufgenommen, dass ich schon mit dem Erlernen der neuen Techniken im beruflichen Umfeld mehr als genug beschäftigt bin.

Homematic ist ein Hobby, das mir sehr viel Spass macht und aus einer ursprünglichen Notlösung zur Erweiterung einer konventionellen Alarmanlage wurde inzwischen (aus unserer Sicht) ein tagesablauf erleichterndes Allroundtalent.

Nur mit dem Skripten komme ich nicht wirklich klar, auch wenn ich schon einiges aus dem Forum für meine Zwecke anpassen konnte. :wink:

LG
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

Matthias K.
Beiträge: 1165
Registriert: 14.02.2016, 12:32
System: Alternative CCU (auf Basis OCCU)
Wohnort: Heidenheim
Hat sich bedankt: 57 Mal
Danksagung erhalten: 225 Mal

Re: Shelly1 mit Original-Firmware - Zustand ?

Beitrag von Matthias K. » 05.01.2019, 15:14

Das wird schon. Bin auch kein absoluter Skript-Experte, aber hab es ähnlich für meine Poolsteuerung mittels eines zyklisch laufenden Skripts umgesetzt.

Du kannst bei deiner CUxD-Universalsteuerung über den Datenpunkt SET_STATE den ausgelesenen Status als aktuellen Status setzen ohne dass dies eine Aktion ausführt.
Mal grob zusammengebastelt:

Code: Alles auswählen

string stdout;
string stderr;
string state;
string url="'http://192.168.1.124/relay/0/status'";
system.Exec("wget -t 1 -T 3 -q -O - " # url, &stdout, &stderr);
state = stdout.Substr(8, 4); !4 Zeichen ab 8. Stelle
if (state == "true") {
  dom.GetObject("CUxD.CUX4000001:1.SET_STATE").State(1);
} else {
  dom.GetObject("CUxD.CUX4000001:1.SET_STATE").State(0);
}
Ich habe bei dem wget-Aufruf absichtlich die Timeout-Werte recht niedrig gesetzt, damit die Skript-Ausführung deine CCU im Fehlerfall nicht zu lange blockiert.
Die CUxD-Seriennummer und Kanal musst du natürlich noch an deine Gegebenheiten anpassen. Eine vorherige Abfrage des tatsächlichen Status des entsprechenden Kanalstatus könnte man natürlich noch in der if-Abfrage ver-"und"-en.

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

Re: Shelly1 mit Original-Firmware - Zustand ?

Beitrag von 66er » 05.01.2019, 15:20

Hallo scorpionking,

vielen Dank schon mal. :D

Wenn ich Dein Skript richtig verstehe, führe ich zyklisch ein Programm aus, dass dann dieses Skript ausführt?

Oder wird das Skript direkt im CUxD-Gerät eingefügt?

LG
Stefan

Matthias K.
Beiträge: 1165
Registriert: 14.02.2016, 12:32
System: Alternative CCU (auf Basis OCCU)
Wohnort: Heidenheim
Hat sich bedankt: 57 Mal
Danksagung erhalten: 225 Mal

Re: Shelly1 mit Original-Firmware - Zustand ?

Beitrag von Matthias K. » 05.01.2019, 15:41

Du musst ein Programm anlegen, das das Skript zyklisch ausführt, z.B. alle 5 Minuten. Nicht zu kurze Abstände wählen, da bei Nichterreichbarkeit des Shelly das Skript bis zu 7 Sekunden die CCU bzw. deren weitere Programmausführung komplett blockiert (hab ich schmerzlich gelernt, als meine Poolsteuerung mal offline war und plötzlich keine Rollläden mehr fuhren, etc). Der Default ist bei wget recht hoch (glaub 15 minuten oder so).

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

Re: Shelly1 mit Original-Firmware - Zustand ?

Beitrag von 66er » 05.01.2019, 15:52

So getestet. :arrow: funktioniert 1a. :D :D :D

D A N K E

Aber eine weitere Frage habe ich jetzt noch:

Durch das zyklisch ausgeführte Programm wird der CUxD-Schalter jedesmal virtuell betätigt und auch der Schaltbefehl an den Shelly gesendet, was natürlich etwas unschön ist.

Insofern wäre dieser Schritt interressant:
scorpionking hat geschrieben:
05.01.2019, 15:14
...
Du kannst bei deiner CUxD-Universalsteuerung über den Datenpunkt SET_STATE den ausgelesenen Status als aktuellen Status setzen ohne dass dies eine Aktion ausführt.
...
Wie bringe ich das (Programm und CUxD-Datenfeld) jetzt zusammen :?: :roll:

Ich hätte jetzt mal die Idee, eine Variable zwischenzuschalten. Also Skript schaltet Variable und nur Änderung der Variable schaltet Shelly-Schalter.
O.k. oder geht es auch einfacher?

LG
Stefan

Matthias K.
Beiträge: 1165
Registriert: 14.02.2016, 12:32
System: Alternative CCU (auf Basis OCCU)
Wohnort: Heidenheim
Hat sich bedankt: 57 Mal
Danksagung erhalten: 225 Mal

Re: Shelly1 mit Original-Firmware - Zustand ?

Beitrag von Matthias K. » 05.01.2019, 15:58

CUxD-Handbuch, (40) 16-Kanal-Universalsteuerung, Datenpunkte:
"SET_STATE: Gerätestatus (STATE, LEVEL, MOTION) manuell setzen, ohne eine Aktion auszuführen."

Und genau das rufst du in dem Skript auf: dom.GetObject("CUxD.CUX4000001:1.SET_STATE").State(1);

Wenn das also trotzdem eine Aktion ausführt, wäre das ein Fall für Uwe bzw. den CUxD-Foren-Teil...

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

Re: Shelly1 mit Original-Firmware - Zustand ?

Beitrag von 66er » 05.01.2019, 16:02

Ok., vielen Dank nochmal.

Schau mir das nochmal genauer an.

Dank Deiner Hilfe bin ich ja schon deutlich weiter gekommen. :D

LG
Stefan

Edit:

Mit CUxD und der Aktualisierung passt alles, wie ich jetzt durch der Zeitstempel des Geätes feststellen konnte. Ich habe die Statusänderung falsch interpretiert. Der Schalter wird nicht ausgeführt bei Aktualisierung. :D

Antworten

Zurück zu „HomeMatic allgemein“