[Gelöst] CUxD 2.9 und CMD_RETS/CMD_RETL
Moderator: Co-Administratoren
- Baxxy
- Beiträge: 10788
- Registriert: 18.12.2018, 15:45
- System: Alternative CCU (auf Basis OCCU)
- Hat sich bedankt: 604 Mal
- Danksagung erhalten: 2207 Mal
[Gelöst] CUxD 2.9 und CMD_RETS/CMD_RETL
Hallo Uwe,
sag mal hat sich in der 2.9 ein Fehler eingeschlichen oder ist es ein "Feature"?
Beim (28) System - Funktion: Exec sind "CMD_RETS" & CMD_RETL" nicht mehr als Trigger im WENN von WebUI-Programmen verfügbar. Ich nutze die x86 - Version auf RaspberryMatic 3.63.9.20220521.
Mit der Testversion 2.8.4 war das noch OK.
sag mal hat sich in der 2.9 ein Fehler eingeschlichen oder ist es ein "Feature"?
Beim (28) System - Funktion: Exec sind "CMD_RETS" & CMD_RETL" nicht mehr als Trigger im WENN von WebUI-Programmen verfügbar. Ich nutze die x86 - Version auf RaspberryMatic 3.63.9.20220521.
Mit der Testversion 2.8.4 war das noch OK.
Zuletzt geändert von Baxxy am 23.05.2022, 15:01, insgesamt 1-mal geändert.
Grüße... Baxxy
- Raspberry Pi 4 als Homematic-Zentrale - Tipps und Informationen
- Analysescript für genutzte Funk-Adressen, Funkmodul-Hardware und Zentralen Hardware
- NANO CUL 868MHz - Stick zum AskSin Analyzer XS umflashen (Anleitung für ArduinoIDE unter Windows)
- Firmware Updates für IP-Aktoren / Sensoren... Info's, Tipps und Sonstiges
- CCU funkt nicht - CarrierSense (CS) Probleme erkennen und lösen
- uwe111
- Beiträge: 4820
- Registriert: 26.02.2011, 22:22
- Hat sich bedankt: 3 Mal
- Danksagung erhalten: 245 Mal
- Kontaktdaten:
Re: CUxD 2.9 und CMD_RETS/CMD_RETL
Ich habe etwas aufgeräumt und das ist eigentlich so beabsichtigt.
Wenn Dir ein Beispiel einfällt, bei dem man diese Datenpunkte sinnvoll als Trigger nutzt, dann kann ich das auch gerne wieder korrigieren.
Viele Grüße
Uwe
Alle sagten: Das geht nicht. Dann kam einer, der wußte das nicht und hat's einfach gemacht.
SPENDEN Download: CUxD 2.11, SSH KeyDir
SPENDEN Download: CUxD 2.11, SSH KeyDir
- Baxxy
- Beiträge: 10788
- Registriert: 18.12.2018, 15:45
- System: Alternative CCU (auf Basis OCCU)
- Hat sich bedankt: 604 Mal
- Danksagung erhalten: 2207 Mal
Re: CUxD 2.9 und CMD_RETS/CMD_RETL
Ah ok, hatte ich nichts von gelesen.
Die mit diesen Triggern angelegten Programme sehen jetzt etwas merkwürdig aus, funktionieren aber noch.
Ich bin dazu übergegangen die "bösen Datenabrufe aus dem Internet" jeweils in 2 Programme aufzusplitten.
(vereinfachtes Beispiel)
A - Datenabruf starten:
B - Angekommene Daten auswerten:
Das mache ich auch beim CCU-Historian, der braucht aber teilweise 5-6s bis die Daten eintrudeln.
Und um die ReGa nicht zu blockieren feuere ich den Datenabruf ab, und warte nicht auf Antwort, sondern verarbeite sie erst wenn sie da ist.
Etwa so wie es @Black mal >> hier << beschrieben hat.
Welche Alternativen gibt es denn?
Grüße, Baxxy
Die mit diesen Triggern angelegten Programme sehen jetzt etwas merkwürdig aus, funktionieren aber noch.
Ich bin dazu übergegangen die "bösen Datenabrufe aus dem Internet" jeweils in 2 Programme aufzusplitten.
(vereinfachtes Beispiel)
A - Datenabruf starten:
Code: Alles auswählen
dom.GetObject("CUxD.CUX2801001:8.CMD_SETS").State("/usr/local/addons/host_data_test.sh");
dom.GetObject("CUxD.CUX2801001:8.CMD_QUERY_RET").State(1);
dom.GetObject("CUxD.CUX2801001:8.CMD_RUNS").State(1);
Code: Alles auswählen
string ova_host_data = dom.GetObject("CUxD.CUX2801001:8.CMD_RETS").State();
WriteLine(ova_host_data);
Und um die ReGa nicht zu blockieren feuere ich den Datenabruf ab, und warte nicht auf Antwort, sondern verarbeite sie erst wenn sie da ist.
Etwa so wie es @Black mal >> hier << beschrieben hat.
Welche Alternativen gibt es denn?
Grüße, Baxxy
- uwe111
- Beiträge: 4820
- Registriert: 26.02.2011, 22:22
- Hat sich bedankt: 3 Mal
- Danksagung erhalten: 245 Mal
- Kontaktdaten:
Re: CUxD 2.9 und CMD_RETS/CMD_RETL
Da steht's:
CUxD Changelog hat geschrieben: ↑CMD_RETS und CMD_RETL als interne Datenpunkte definiert
So ist es auch richtig, und die beiden DPs werde ich in Programmverknüpfungen wieder sichtbar machen! Das hatte ich irgendwie total übersehen.
In Deinem Beispiel wird die Befehlszeile allerdings 2x ausgeführt. Einmal bei A: und einmal bei B:
So sollte es optimal funktionieren:
A:
Code: Alles auswählen
dom.GetObject("CUxD.CUX2801001:8.CMD_SETS").State("/usr/local/addons/host_data_test.sh >/tmp/host_data_test.txt");
dom.GetObject("CUxD.CUX2801001:8.CMD_RUNS").State(1);
Code: Alles auswählen
string OUT;
system.Exec("cat /tmp/host_data_test.txt", &OUT);
WriteLine(OUT);
Uwe
Alle sagten: Das geht nicht. Dann kam einer, der wußte das nicht und hat's einfach gemacht.
SPENDEN Download: CUxD 2.11, SSH KeyDir
SPENDEN Download: CUxD 2.11, SSH KeyDir
- uwe111
- Beiträge: 4820
- Registriert: 26.02.2011, 22:22
- Hat sich bedankt: 3 Mal
- Danksagung erhalten: 245 Mal
- Kontaktdaten:
Re: CUxD 2.9 und CMD_RETS/CMD_RETL
Hallo Baxxy,
kannst Du bitte prüfen, ob die Datenpunkte mit der neuen Testversion bei Dir wieder sichtbar sind?
http://cuxd.de/download/
Viele Grüße
Uwe
kannst Du bitte prüfen, ob die Datenpunkte mit der neuen Testversion bei Dir wieder sichtbar sind?
http://cuxd.de/download/
Viele Grüße
Uwe
Alle sagten: Das geht nicht. Dann kam einer, der wußte das nicht und hat's einfach gemacht.
SPENDEN Download: CUxD 2.11, SSH KeyDir
SPENDEN Download: CUxD 2.11, SSH KeyDir
- Baxxy
- Beiträge: 10788
- Registriert: 18.12.2018, 15:45
- System: Alternative CCU (auf Basis OCCU)
- Hat sich bedankt: 604 Mal
- Danksagung erhalten: 2207 Mal
Re: CUxD 2.9 und CMD_RETS/CMD_RETL
Hallo Uwe,
die Testversion funktioniert, CMD_RETS/CMD_RETL sind wieder im WENN von WebUI-Programmen verfügbar und triggern ordnungsgemäß.
... tatsächlich falsch "interpretiert".
Ich dachte bisher dort wird nur die Rückgabe von CMD_xxx hinterlegt und ich hole mir den Rückgabewert einfach aus dem Datenpunkt.
Doppelt ausführen wollte ich mein Shell-Script / curl / wget natürlich nicht.
Nachdem ich nun aber nochmal die CUxD-Doku ausgiebig studiert, und dein Beispiel umgesetzt habe läuft das hier sehr gut.
Darauf muss man erstmal kommen das über temporäre Dateien umzusetzen.
Dann gleich noch ne Frage:
Wenn ich nun curl / wget direkt übergebe, macht es da Sinn diesen einen Timeout zu verpassen.
Oder reicht es wenn ich "KEY|EXEC_TIMEOUT" auf den Minimalwert von 1Min stelle?
Auf jeden Fall schon mal Danke für das zurückbringen von CMD_RETS/CMD_RETL als Programmtrigger und das optimale Beispiel.
Grüße, Baxxy
die Testversion funktioniert, CMD_RETS/CMD_RETL sind wieder im WENN von WebUI-Programmen verfügbar und triggern ordnungsgemäß.
Da hatte ich...
Code: Alles auswählen
dom.GetObject("CUxD.CUX2801001:8.CMD_RETS").State();
Ich dachte bisher dort wird nur die Rückgabe von CMD_xxx hinterlegt und ich hole mir den Rückgabewert einfach aus dem Datenpunkt.
Doppelt ausführen wollte ich mein Shell-Script / curl / wget natürlich nicht.
Nachdem ich nun aber nochmal die CUxD-Doku ausgiebig studiert, und dein Beispiel umgesetzt habe läuft das hier sehr gut.
Darauf muss man erstmal kommen das über temporäre Dateien umzusetzen.
Dann gleich noch ne Frage:
Wenn ich nun curl / wget direkt übergebe, macht es da Sinn diesen einen Timeout zu verpassen.
Oder reicht es wenn ich "KEY|EXEC_TIMEOUT" auf den Minimalwert von 1Min stelle?
Auf jeden Fall schon mal Danke für das zurückbringen von CMD_RETS/CMD_RETL als Programmtrigger und das optimale Beispiel.
Grüße, Baxxy
- uwe111
- Beiträge: 4820
- Registriert: 26.02.2011, 22:22
- Hat sich bedankt: 3 Mal
- Danksagung erhalten: 245 Mal
- Kontaktdaten:
Re: CUxD 2.9 und CMD_RETS/CMD_RETL
Hallo Baxxy,
Viele Grüße
Uwe
EXEC_TIMEOUT sollte reichen, ausser Du möchtest den Timeout unter einer Minute setzen.
Viele Grüße
Uwe
Alle sagten: Das geht nicht. Dann kam einer, der wußte das nicht und hat's einfach gemacht.
SPENDEN Download: CUxD 2.11, SSH KeyDir
SPENDEN Download: CUxD 2.11, SSH KeyDir
- Baxxy
- Beiträge: 10788
- Registriert: 18.12.2018, 15:45
- System: Alternative CCU (auf Basis OCCU)
- Hat sich bedankt: 604 Mal
- Danksagung erhalten: 2207 Mal
Re: CUxD 2.9 und CMD_RETS/CMD_RETL
Sehr gut.
Dann können wir das Thema als gelöst betrachten.
Halt, da war noch was...
< 0.00 oder <= 0.00 funktioniert, aber nur bei Änderung sowie "bei Aktualisierung" nicht "bei Änderung"
Passt aber, steht ja auch so im Handbuch (<= 0.00 bei Aktualisierung).
Grüße, Baxxy
Dann können wir das Thema als gelöst betrachten.
Halt, da war noch was...
= 0.00 geht nicht, weder bei Änderung noch bei Aktualisierung.
< 0.00 oder <= 0.00 funktioniert, aber nur bei Änderung sowie "bei Aktualisierung" nicht "bei Änderung"
Passt aber, steht ja auch so im Handbuch (<= 0.00 bei Aktualisierung).
Grüße, Baxxy
Zuletzt geändert von Baxxy am 23.05.2022, 23:26, insgesamt 1-mal geändert.
- uwe111
- Beiträge: 4820
- Registriert: 26.02.2011, 22:22
- Hat sich bedankt: 3 Mal
- Danksagung erhalten: 245 Mal
- Kontaktdaten:
Re: [Gelöst] CUxD 2.9 und CMD_RETS/CMD_RETL
Könnte das eventuell an der Triggerung und dem Vergleich der Programmverknüpfung liegen, weil der Datenpunkt vom Typ STRING ist?
CMD_RETS hat nach erfolgreicher Ausführung den Wert 0.
Du kannst unter B: gerne mal folgendes testen:
Code: Alles auswählen
var ret = dom.GetObject("CUxD.CUX2801001:8.CMD_RETS").Value();
WriteLine(ret);
Uwe
Alle sagten: Das geht nicht. Dann kam einer, der wußte das nicht und hat's einfach gemacht.
SPENDEN Download: CUxD 2.11, SSH KeyDir
SPENDEN Download: CUxD 2.11, SSH KeyDir
- Baxxy
- Beiträge: 10788
- Registriert: 18.12.2018, 15:45
- System: Alternative CCU (auf Basis OCCU)
- Hat sich bedankt: 604 Mal
- Danksagung erhalten: 2207 Mal
Re: [Gelöst] CUxD 2.9 und CMD_RETS/CMD_RETL
Möglich. Stringvergleiche sind ja so eine Sache.
Im Programm wählt man ja auch float aus, also...
Das passt dann nicht zum zurückgegebenen String "0".
Kann man schön mit einem kleinen Scriptchen testen:
Im Programm wählt man ja auch float aus, also...
Code: Alles auswählen
= 0.00
Kann man schön mit einem kleinen Scriptchen testen:
Code: Alles auswählen
string a = "0";
if (a == 0.00) { Write("OK") }
else { Write("nOK") }
==> nOK
Code: Alles auswählen
string a = "0";
if (a <= 0.00) { Write("OK") }
else { Write("nOK") }
==> OK
Grüße... Baxxy
- Raspberry Pi 4 als Homematic-Zentrale - Tipps und Informationen
- Analysescript für genutzte Funk-Adressen, Funkmodul-Hardware und Zentralen Hardware
- NANO CUL 868MHz - Stick zum AskSin Analyzer XS umflashen (Anleitung für ArduinoIDE unter Windows)
- Firmware Updates für IP-Aktoren / Sensoren... Info's, Tipps und Sonstiges
- CCU funkt nicht - CarrierSense (CS) Probleme erkennen und lösen