Zwei oder mehr WebUI Programme durch Systemvariable triggern

Einrichtung, Anschluss und Programmierung der HomeMatic CCU

Moderator: Co-Administratoren

pke
Beiträge: 22
Registriert: 06.08.2019, 18:57
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal
Kontaktdaten:

Zwei oder mehr WebUI Programme durch Systemvariable triggern

Beitrag von pke » 15.08.2019, 03:31

Hallo,

ich versuche folgendes Scenario zu realisieren:
1. Eine Systemvariable "Alert" kann durch verschiedene WebUI scripte befüllt werden
2. Ein WebUI Script "SMS"
3. ein WebUI Script "Threema"

die beiden "Reaktions" Scripte "SMS" und "Threema" sollen beide unabhängig voneinander auf eine Änderung des Inhalts der "Alert" Systemvariablen reagieren. Beide sollen dann diese Variable auslesen und im Fall es steht etwas drin, den Inhalt via CUxD und wget verschicken.
Nachdem beide Scripte angearbeitet sind, soll "Alert" wieder auf eine leere Zeichenkette gesetzt werden.

Beide "Reaktions" Scripte für sich laufen ansich. Jedoch weiss ich nicht so recht wann ich die "Alert" auf einen leeren String setzen soll.
Ich würde ungern den Code der beiden Scripte in ein grosses Script packen wollen, weil ich Zukunft vielleicht noch eine WhatsApp Anbindung etc hinzubauen will. Daher würde ich gerne diese Sachen jeweils in ihren eigenen Scripten haben, auch um sie selektiv ab/anschalten zu können.

So habe ich das gerade gebaut, es läuft jedoch in einer Endlosschleife (sehe ich via syslog)
Script_Alert_Reaktion.png
Die Scripte (vereinfacht):

Code: Alles auswählen

object alert = dom.GetObject("Alert");
string text = alert.Value().Trim();
dom.GetObject("CUxD.CUX2801001:1.SYSLOG").State("SMS: " + text);

Code: Alles auswählen

object alert = dom.GetObject("Alert");
string text = alert.Value().Trim();
dom.GetObject("CUxD.CUX2801001:1.SYSLOG").State("Threma: " + text);
Im Syslog kommt folgendes an:

Code: Alles auswählen

Aug 15 03:26:18 192.168.178.36 cuxd[545]: CUX2801001:1 SMS:
Aug 15 03:26:18 192.168.178.36 cuxd[545]: CUX2801001:1 Threema:
Aug 15 03:26:18 192.168.178.36 cuxd[545]: CUX2801001:1 SMS:
Aug 15 03:26:18 192.168.178.36 cuxd[545]: CUX2801001:1 Threema:
Aug 15 03:26:18 192.168.178.36 cuxd[545]: CUX2801001:1 SMS:
Aug 15 03:26:18 192.168.178.36 cuxd[545]: CUX2801001:1 Threema:
Aug 15 03:26:18 192.168.178.36 cuxd[545]: CUX2801001:1 SMS:
Aug 15 03:26:18 192.168.178.36 cuxd[545]: CUX2801001:1 Threema:
Aug 15 03:26:18 192.168.178.36 cuxd[545]: CUX2801001:1 SMS:
Aug 15 03:26:18 192.168.178.36 cuxd[545]: CUX2801001:1 Threema:
Aug 15 03:26:18 192.168.178.36 cuxd[545]: CUX2801001:1 SMS:
Aug 15 03:26:18 192.168.178.36 cuxd[545]: CUX2801001:1 Threema:
Aug 15 03:26:18 192.168.178.36 cuxd[545]: CUX2801001:1 SMS:
Aug 15 03:26:18 192.168.178.36 cuxd[545]: CUX2801001:1 Threema:
Also als ob "Alert" leer wäre.

Am liebsten wäre mir wenn die Reaktionsscripte tatsächlich, wie ursprünglich geplant, jeweils eigene WebUI Programme wären. Nur wann und wie setze ich dann die "Alert" Systemvariable wieder zurück? Ich weiss ja nicht, wenn beide Programme zu Ende sind.

Wäre eine Möglichkeit ein "Aggregat" Programm zu schreiben, welches dann einfach nur die anderen Programme sequentiell aufruft und am Ende die Systemvariable "Alert" auf "" (leer) setzt? Dazu müsste aber garantiert sein, dass "ExecuteProgram" auch synchron ausgeführt wird.

Gerti
Beiträge: 3029
Registriert: 28.01.2016, 18:06
System: CCU
Wohnort: Hürth
Hat sich bedankt: 16 Mal
Danksagung erhalten: 270 Mal

Re: Zwei oder mehr WebUI Programme durch Systemvariable triggern

Beitrag von Gerti » 15.08.2019, 07:21

Hi!

Warum setzt du Alert zurück?
Lass doch einfach den Text darin stehen. Die Programme werden doch nur getriggert, wenn der Inhalt sich ändert.
Stringvergleiche als Auslöser klappen imho nicht und das Programm läuft immer ins Sonst, daher auch die Schleife.

Gruß
Gerti

pke
Beiträge: 22
Registriert: 06.08.2019, 18:57
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal
Kontaktdaten:

Re: Zwei oder mehr WebUI Programme durch Systemvariable triggern

Beitrag von pke » 15.08.2019, 11:27

Ich setze das zurück, weil es durchaus der selber Alert nochmal ausgelöst werden könnte und beim Neustart der CCU das Programm nicht denkt, es läge ein Alarm vor.

Sagen wir an Tag X wird Alert mit "Wasser im Keller!" befüllt. Dann soll das via SMS + Threema gesendet werden
Dann passiert an Tag X + 5 wieder ein "Wasser im Keller!" und das Programm würde nicht getriggert, weil es ja der selbe Text ist.

Benutzeravatar
Sammy
Beiträge: 9172
Registriert: 09.09.2008, 20:47
Hat sich bedankt: 15 Mal
Danksagung erhalten: 174 Mal

Re: Zwei oder mehr WebUI Programme durch Systemvariable triggern

Beitrag von Sammy » 15.08.2019, 11:33

Dann setze es doch einfach beim Auslösen direkt verzögert wieder zurück.
Links: CCU-Logik, Tipps für Anfänger, WebUI-Doku, Expertenparameter, virtuelle Aktorkanäle
Inventur vom 22.01.14: 516 Kanäle in 165 Geräten, 132 Programme, 270 Direkte Verknüpfungen
Ich übernehme für alle von mir gegebenen Hinweise, Tipps und Links keine Haftung! Das Befolgen meiner Tipps ist nur für Fachkundige gedacht und erfolgt auf eigene Gefahr!

Gerti
Beiträge: 3029
Registriert: 28.01.2016, 18:06
System: CCU
Wohnort: Hürth
Hat sich bedankt: 16 Mal
Danksagung erhalten: 270 Mal

Re: Zwei oder mehr WebUI Programme durch Systemvariable triggern

Beitrag von Gerti » 15.08.2019, 11:40

Hi!

Du triggerst auf Aktualisierung, da kann ruhig mehrmals dasselbe kommen, es wird immer wieder ausgelöst. Das es beim Neustart der Zentrale nicht ausgelöst wird, kannst du durch die modifizierte Anwesenheitsvariable erreichen (einfach mal danach suchen).

Gruß
Gerti

pke
Beiträge: 22
Registriert: 06.08.2019, 18:57
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal
Kontaktdaten:

Re: Zwei oder mehr WebUI Programme durch Systemvariable triggern

Beitrag von pke » 15.08.2019, 12:04

Sammy hat geschrieben:
15.08.2019, 11:33
Dann setze es doch einfach beim Auslösen direkt verzögert wieder zurück.
Das würde für das Setzen dann aber jeweils immer 2 Schritte bedeuten. Ich würde in den Programmen, welche die "Alert" setzen lieber die Logik so gering wie möglich halten. Ich sehe das Konzept eher als PubSub. Publisher Subscriber. Der Subscriber ist in meinem Fall das WebUI Programm, welches auf "Alert" Event reagiert. Die Publisher sind andere WebUI Programme die einfach nur diesen Alert Event auslösen. Das zurücksetzen sollte also im Subscriber passieren.

Benutzeravatar
Sammy
Beiträge: 9172
Registriert: 09.09.2008, 20:47
Hat sich bedankt: 15 Mal
Danksagung erhalten: 174 Mal

Re: Zwei oder mehr WebUI Programme durch Systemvariable triggern

Beitrag von Sammy » 15.08.2019, 12:09

Dann setze es in den Subscribern verzögert zurück, damit andere Programme noch drauf reagieren können.
Links: CCU-Logik, Tipps für Anfänger, WebUI-Doku, Expertenparameter, virtuelle Aktorkanäle
Inventur vom 22.01.14: 516 Kanäle in 165 Geräten, 132 Programme, 270 Direkte Verknüpfungen
Ich übernehme für alle von mir gegebenen Hinweise, Tipps und Links keine Haftung! Das Befolgen meiner Tipps ist nur für Fachkundige gedacht und erfolgt auf eigene Gefahr!

pke
Beiträge: 22
Registriert: 06.08.2019, 18:57
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal
Kontaktdaten:

Re: Zwei oder mehr WebUI Programme durch Systemvariable triggern

Beitrag von pke » 15.08.2019, 13:00

Sammy hat geschrieben:
15.08.2019, 12:09
Dann setze es in den Subscribern verzögert zurück, damit andere Programme noch drauf reagieren können.
Wie genau meinst Du das?

Benutzeravatar
Sammy
Beiträge: 9172
Registriert: 09.09.2008, 20:47
Hat sich bedankt: 15 Mal
Danksagung erhalten: 174 Mal

Re: Zwei oder mehr WebUI Programme durch Systemvariable triggern

Beitrag von Sammy » 15.08.2019, 13:48

pke hat geschrieben:
15.08.2019, 03:31
2. Ein WebUI Script "SMS"
3. ein WebUI Script "Threema"

die beiden "Reaktions" Scripte "SMS" und "Threema" sollen beide unabhängig voneinander auf eine Änderung des Inhalts der "Alert" Systemvariablen reagieren.
Angenommen, Du fragst die Variable auf einen bestimmten Inhalt ab, auf den dann etwas gemacht werden soll. Wenn Du den Inhalt ohne Verzögerung löschen würdest, könnte das später abgearbeitete Programm, was auf den gleichen Trigger reagiert, aber nicht mehr auf den passenden Inhalt zugreifen (prüfen).
Links: CCU-Logik, Tipps für Anfänger, WebUI-Doku, Expertenparameter, virtuelle Aktorkanäle
Inventur vom 22.01.14: 516 Kanäle in 165 Geräten, 132 Programme, 270 Direkte Verknüpfungen
Ich übernehme für alle von mir gegebenen Hinweise, Tipps und Links keine Haftung! Das Befolgen meiner Tipps ist nur für Fachkundige gedacht und erfolgt auf eigene Gefahr!

pke
Beiträge: 22
Registriert: 06.08.2019, 18:57
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal
Kontaktdaten:

Re: Zwei oder mehr WebUI Programme durch Systemvariable triggern

Beitrag von pke » 15.08.2019, 13:55

Richtig, das habe ich auch schon herausgefunden, weil die Programme nicht gleichzeitig sondern nacheinander ausgeführt werden.
Ich weiss dennoch wann, wie ich die Variable zurücksetzen soll. Wenn ich SMS und Threema jeweils als separate WebUI Programme habe mit trigger auf Alert (was das sauberste wäre) dann müsste es ja eigentlich nur noch ein 3 WebUI Programm geben, was nichts anderes macht, als die Alert Variable zurückzusetzen.

Oder ich arbeite tatsächlich mit dem Anwesenheits-Counter. Mal schauen ob ich dazu was finde.

Antworten

Zurück zu „HomeMatic Zentrale (CCU / CCU2 / CCU3 / Charly)“