ich untersuche aktuell das Verhalten von WochenplanEvents in Symcon und hätte eine Verständnisfrage zu den EventMessages.
Beim Bearbeiten eines Wochenplans beobachte ich sehr viele EM_UPDATE Auslösungen, teilweise mehrfach hintereinander, obwohl fachlich nur ein einzelner Schaltpunkt geändert wurde.
Teilweise scheint EM_UPDATE sogar schon während des internen Neuaufbaus des Wochenplans zu feuern.
Ist EM_UPDATE bewusst als generisches „irgendetwas am Event hat sich geändert“ Signal implementiert und daher für Wochenpläne nicht geeignet, um gezielt auf echte Schaltpunktänderungen zu reagieren?
Welche Messages sind aus eurer Sicht die fachlich korrekten Trigger für:
Änderung eines Schaltpunkts
Änderung der aktuell aktiven Wochenplan-Action
Reaktion auf den eigentlichen Schaltzeitpunkt
Vielleicht kann jemand kurz erläutern, wie die interne Event-Kaskade beim Wochenplan gedacht ist.
Danke.
Änderung eines Schaltpunkts
Änderung der aktuell aktiven Wochenplan-Action
Habe ich auch versucht in einem Modul zu nutzen und es gelassen, da so viele Events feuern und das alles dann in der richten Reihenfolge zu dekodieren und nachzuführen war einfach zu viel aufwand.
Entsprechend gibt es jetzt einen Variable mit Aktion, welche anschließen zum „Speichern“ ausgelöst werden muss.
Reaktion auf den eigentlichen Schaltzeitpunkt
Das nutze ich gar nicht, weil bei mir der Wochenplan in Symcon nur den Wochenplan aus einem Gerät widerspiegeln soll und mir die Auslösung des Events in Symcon somit (*fast) egal ist.
Am einfachsten wäre es, wenn dein Modul das Ziel der Aktionen des Wochenplan wird. Also z.B. eine Instanz-Funktion oder ein IPS_RequestAction ausführt.
(*) Ich lese bei jeder Aktion dann den Plan aus dem Gerät neu aus und führe den Plan in Symcon nach, falls jemand am Gerät was verstellt hat
Hmm ja, da könnte Symcon mal überlegen/nachschauen ob das alles so richtig ist vom Ablauf.
Ja, ich würde es ja auch beim Standard belassen; aber mit stört es etwas, wenn man den Wochenplan ändert und der Schaltpunkt dann nicht direkt sofort nachgeführt wird: Daher das gebastel.
Das Spannende am Wochenplan ist, dass dieser nicht „Transaktionsbasiert“ ist. D.h. jede Parametrierung ruft intern setNextRun auf, welches dann die EM_UPDATE Nachricht versendet. Dadurch sind es auch so viele.
Ich überlege gerade, was du genau brauchst. Denn wenn es um „Ausführung“ geht, dass ist EM_UPDATE nicht das richtig. Das liefert nur denn berechneten Ausführungszeitpunkt. Das ist kein Hook, dass tatsächlich ausgeführt wurde.
Ich könnte ein EM_EXECUTE einbauen, würde aber noch gerne verstehen, wofür du das genau brauchen würdest. Willst du damit Ereignisse überwachen?
Wenn es dies ist, dann macht es evtl. sinn dass wir das mit einer Checkbox direkt einbauen, sodass man den Wochenplan direkt nach der Änderung nachführt. Wie sieht es beim Symcon Start aus → Sollte man dann in diesem Fall auch alle Aktionen einmal ausführen?