Problem: StatusEvents auch bei ungeändertem Status einer Instanz

Hallo,

ich möchte mir bei Statusänderungen einer Instanz eine Nachricht schicken lassen. Dazu nutze ich das EventControl und habe ein entsprechendes Script zu den zu überwachenden Instanzen (ClientSockets) eingetragen:

Nun beobachte ich aber, dass wenn die Geräte ausgeschaltet sind, ich ca. alle 90 Sekunden benachrichtigt werde :(. Meiner Meinung nach - und so ist es auch dokumentiert - sollte das Skript nur bei Statusänderungen aufgerufen werden. Dem ist aber leider nicht so:

Könnte das korrigiert werden?

Gruß

Burkhard

Das Problem wird dadurch verursacht, dass das Wiederverbinden (auch wenn es fehlschlägt) einen erneuten Fehlerstatus auslöst. Ich bin mir auch nicht sicher, ob ich dieses Problem lösen will/kann. Wenn du ein IPS_ApplyChanges auf den ClientSocket aufrufst, so wird bei Erfolg jedes mal IS_ACTIVE gesendet. Darauf lauschen einige Module, um die Initialisierung zu vollziehen. Wenn ich nun tatsächlich nur Änderungen versenden würde, könnten die Module nicht mehr sauber auf ein Neuverbinden reagieren. Ich müsste somit einen weiteren Zustand einfügen wie z.B. IS_UPDATING (Oder kurzzeitig auf IS_INACTIVE wechseln). Im Fehlerfall mit Neuverbinden würdest du dann jeweils den neuen IS_UPDATING + IS_ERROR bekommen, womit sich für dich nichts wirklich ändern würde.

Ich tendiere eher dazu, die Dokumentation zu „Statusaktualisierung“ abzuändern, um die aktuelle Implementation besser zu beschreiben.

paresy

Bitte nicht ändern. Weil genau dieses Verhalten wird benötigt, wenn ein Modul den Socket neu verbinden muss (weil Konfig Änderungen im Modul) und dann ein ApplyChanges auf den IO durchführt.
Weiter geht es dann erst durch das IS_ACTIVE.

Bei meinen Scripten im EventControl, merke ich mir den alten Zustand in einer Variable.
Oder setze eine Variable welches den Zustand der Instanz darstellt.
Darauf kann man dann per Ereignis wieder die Benachrichtigung fahren.
Michael

Ok, kann ich nachvollziehen.

Ja, bitte.

So werde ich es dann wohl machen.

Burkhard