Aktuell zu Recht, denn nach meinen Tests triggern die WebUI-Programme zwar immer korrekt, es wird aber nur genau 1x (nach Zentralenstart) das zugehörige DANN ausgeführt.
Es gibt zwar noch andere Möglichkeiten auf einen CUxD-Timer zu triggern, das TIMER_EVENT ist aber m.E. die beste Option wenn sie denn funktionieren würde.
Testsetup:
RaspberryMatic (Nightly-3.63.8.20220407-16df83-ova)
CUxD Spezial-Testversion 2.8.3
einfacher Timer (repeat alle 60s jeweils um xx:xx:25): einfaches WebUI-Programm: Systemprotokoll:
Code: Alles auswählen
22:15:25 07.04.2022 CUxD-Timer-Dev:2 - EVENT unbekannte Meldung (TIMER_EVENT=TRUE)
22:15:25 07.04.2022 Programme_loggen TIMER_EVENT - OK! -OVA-
22:16:25 07.04.2022 CUxD-Timer-Dev:2 - EVENT unbekannte Meldung (TIMER_EVENT=TRUE)
22:17:25 07.04.2022 CUxD-Timer-Dev:2 - EVENT unbekannte Meldung (TIMER_EVENT=TRUE)
22:18:25 07.04.2022 CUxD-Timer-Dev:2 - EVENT unbekannte Meldung (TIMER_EVENT=TRUE)
22:19:25 07.04.2022 CUxD-Timer-Dev:2 - EVENT unbekannte Meldung (TIMER_EVENT=TRUE)
A: erfolgreiche Programmausführung 22:15:25
Code: Alles auswählen
Info: Event="CUX2800001:2"."TIMER_EVENT"=true [execute():iseXmlRpc.cpp:321]
Verbose: call on change; id = 1051 [SetLastDPActionTime():iseDOMchn.h:288]
Verbose: call on change; id = 1037 [SetLastActionTime():iseDOMdev.h:225]
Verbose: call on change; id = 1051 [SetLastDPActionTime():iseDOMchn.h:288]
Verbose: call on change; id = 1037 [SetLastActionTime():iseDOMdev.h:225]
Verbose: UpdateValue succeeded; val = 1 [execute():iseXmlRpc.cpp:364]
Verbose: called Program ID = 1390 'CUxD_Timer_EVENT_Test' with valNew = '1' ; oidTrigger = 1056 [SetState():iseDOMPrg.cpp:483]
Verbose: DP_VALUE_CHECK_CHANGE is set, trigger dp exists [CheckCondition2Data():iseCondition.cpp:528]
Verbose: type = 1, condition valL = 1 valR1 = 1 [Evaluate():iseCondition.cpp:392]
Verbose: sc = 0, CONDITION_TRIGGER_EXECUTE is reset. [Evaluate():iseCondition.cpp:1116]
Verbose: sc = 0, CONDITION_TRIGGER_TRUE is set. [Evaluate():iseCondition.cpp:1121]
Verbose: sc = 0, condition result = 1 [Evaluate():iseCondition.cpp:1123]
Verbose: c = 0, CONDITION_TRIGGER_EXECUTE is reset. [Evaluate():iseRule.cpp:227]
Verbose: c = 0, CONDITION_TRIGGER_TRUE is set. [Evaluate():iseRule.cpp:232]
Verbose: c = 0, condition result = 1 [Evaluate():iseRule.cpp:235]
Verbose: Rule evaluated state is TRUE by Program ID = 1390 'CUxD_Timer_EVENT_Test'; Destination ID = 1392 [SetState():iseDOMPrg.cpp:509]
Info: Program ID = 1390 'CUxD_Timer_EVENT_Test', rule's trigger flags = 4 [SetState():iseDOMPrg.cpp:524]
Verbose: execute Program ID = 1390 'CUxD_Timer_EVENT_Test'; Destination ID = 1392 [Execute():iseDOMPrg.cpp:626]
Verbose: start execute Destination within the trigger delay 0 [Execute():iseDOMPrg.cpp:630]
Info: added element id=1034; oid=1034; val=TIMER_EVENT - OK! -OVA-; time=0; oidTrigger=1056 [Add():iseRTScheduler.cpp:369]
Verbose: ExecuteDestination succeeded from Program ID = 1390 'CUxD_Timer_EVENT_Test' with valNew = '1' [Execute():iseDOMPrg.cpp:640]
Verbose: wait max timeout = 240000 [ThreadFunction():iseRTEvent.cpp:69]
Info: calling SetState on DP id = 1034 (Programme_loggen) value = TIMER_EVENT - OK! -OVA- oidTrigger = 1056 [ExecuteWriteJob():iseRTScheduler.cpp:637]
Info: SetState() succeeded for DP id = 1034 [ExecuteWriteJob():iseRTScheduler.cpp:642]
Verbose: ExecuteWriteJob: oid = 1034; ticks = 0 [Execute():iseRTScheduler.cpp:595]
Info: wait for event ms= 4294967295 [ThreadFunction():iseRTScheduler.cpp:485]
Verbose: wait max timeout = 240000 [ThreadFunction():iseRTEvent.cpp:69]
Code: Alles auswählen
Info: Event="CUX2800001:2"."TIMER_EVENT"=true [execute():iseXmlRpc.cpp:321]
Verbose: call on change; id = 1051 [SetLastDPActionTime():iseDOMchn.h:288]
Verbose: call on change; id = 1037 [SetLastActionTime():iseDOMdev.h:225]
Verbose: call on change; id = 1051 [SetLastDPActionTime():iseDOMchn.h:288]
Verbose: call on change; id = 1037 [SetLastActionTime():iseDOMdev.h:225]
Verbose: UpdateValue succeeded; val = 1 [execute():iseXmlRpc.cpp:364]
Verbose: called Program ID = 1390 'CUxD_Timer_EVENT_Test' with valNew = '1' ; oidTrigger = 1056 [SetState():iseDOMPrg.cpp:483]
Verbose: DP_VALUE_CHECK_CHANGE is set, trigger dp exists [CheckCondition2Data():iseCondition.cpp:528]
Verbose: type = 1, condition valL = 1 valR1 = 1 [Evaluate():iseCondition.cpp:392]
Verbose: sc = 0, CONDITION_TRIGGER_EXECUTE is reset. [Evaluate():iseCondition.cpp:1116]
Verbose: sc = 0, condition result = 1 [Evaluate():iseCondition.cpp:1123]
Verbose: c = 0, CONDITION_TRIGGER_EXECUTE is reset. [Evaluate():iseRule.cpp:227]
Verbose: c = 0, condition result = 1 [Evaluate():iseRule.cpp:235]
Verbose: Rule evaluated state is TRUE by Program ID = 1390 'CUxD_Timer_EVENT_Test'; Destination ID = 1392 [SetState():iseDOMPrg.cpp:509]
Info: break execute for Program ID = 1390 'CUxD_Timer_EVENT_Test', rule's trigger flags = 0 [SetState():iseDOMPrg.cpp:530]
Das ist kein spezielles RaspberryMatic Problem. Bei einer CCU3 konnte ich genau das gleiche Verhalten beobachten.
Die Frage ist nun... warum wird die Ausführung des Programmes nach dem 1. erfolgreichen Durchlauf immer abgebrochen.