Mehrfachmeldungen bei EM_UPDATE

Hallo,

ich verwende in meinem Rollladenmodul einen Verweis auf einen Wochenplan, in dem der Anwender die Auf- und Abzeiten eingeben kann.

Um nun im Modul über Änderungen im Wochenplan informiert zu werden, habe ich die Wochenplan ID entsprechend registriert:

$this->RegisterMessage(27935, EM_UPDATE);

Im MessageSink kommen die Nachrichten auch an, aber mehrfach und identisch:


TXT: 24.01.2019, 16:43:18 |          MessageSink | Timestamp: 1087610, SenderID: 27935, $Message: 10803, Data: [1547528400,0]
TXT: 24.01.2019, 16:43:18 |          MessageSink | Timestamp: 1087612, SenderID: 27935, $Message: 10803, Data: [1547528400,0]
TXT: 24.01.2019, 16:43:18 |          MessageSink | Timestamp: 1087614, SenderID: 27935, $Message: 10803, Data: [1547528400,0]
TXT: 24.01.2019, 16:43:18 |          MessageSink | Timestamp: 1087616, SenderID: 27935, $Message: 10803, Data: [1547528400,0]
TXT: 24.01.2019, 16:43:18 |          MessageSink | Timestamp: 1087618, SenderID: 27935, $Message: 10803, Data: [1547528400,0]
TXT: 24.01.2019, 16:43:18 |          MessageSink | Timestamp: 1087620, SenderID: 27935, $Message: 10803, Data: [1547528400,0]
TXT: 24.01.2019, 16:43:18 |          MessageSink | Timestamp: 1087622, SenderID: 27935, $Message: 10803, Data: [1547528400,0]
TXT: 24.01.2019, 16:43:18 |          MessageSink | Timestamp: 1087624, SenderID: 27935, $Message: 10803, Data: [1547528400,0]
TXT: 24.01.2019, 16:43:18 |          MessageSink | Timestamp: 1087626, SenderID: 27935, $Message: 10803, Data: [1547528400,0]
TXT: 24.01.2019, 16:43:18 |          MessageSink | Timestamp: 1087628, SenderID: 27935, $Message: 10803, Data: [1547528400,0]
TXT: 24.01.2019, 16:43:18 |          MessageSink | Timestamp: 1087630, SenderID: 27935, $Message: 10803, Data: [1547528400,0]
TXT: 24.01.2019, 16:43:18 |          MessageSink | Timestamp: 1087632, SenderID: 27935, $Message: 10803, Data: [1547528400,0]

Ist das so gewollt? Eigentlich hatte ich nur mit einer Meldung gerechnet.
Wie verarbeite ich die am besten?

Gruß

Burkhard

Bevor ich es erkläre…
Schau Mal hier:
IPSSqueezeBox/module.php at 6bbdccc23a0de51bb3fbc114cefc3acf23c27a14 · Nall-chan/IPSSqueezeBox · GitHub
War auch der Meinung das EM_UPDATE eher ungeeignet war.
Michael

In dem Beispiel wird sich ja auf einzelne Eigenschaften des Events registriert.
Ich dagegen habe mich nur auf das allgemeine Update registriert.
Da hätte ich nur mit einer Nachricht gerechnet.
Nun kommen aber zig identische, die im Modul daher alle gleich verarbeitet werden. :frowning:

Oder wie mache ich es besser?

Indem du es aufdrösselst.
Dann hast du in Data auch immer gleich die neuen Werte.
EM_UPDATE ist imho nur die Info das irgendwas passiert ist, ohne weitere Daten.
Und imho wird es auch geworfen, wenn das Event auslöst.
Michael

Da bleibt mir wohl nichts anderes übrig, als dass ich mich für 10804 bis 10835, also für 32 einzelne Messages registriere :eek:

Ich habe noch ein anderes Modul wo ich den Wochenplan mit meiner Heizung abgleiche.
Ich schau nachher wie ich das da gelöst hatte.
Michael

Ich könnte auch die Message im Buffer merken und bei Gleichheit ignorieren :rolleyes:

War ja klar… Mein anderes Modul hat ohne RegisterMessage und dafür mit einen Speichern Button gearbeitet, da dies vor der Einführung von MessagSink entstand :rolleyes:
Und das andere war ja ‚nur‘ ein zyklische Event.
Dafür weiß ich jetzt wieder was auf meine Todo stand :smiley:
Michael

Das liegt daran, dass die einzelnen Punkte im Wochenplan „geändert“ werden. Dies sind einzelne Befehle, die jeweils ein Update vom Wochenplan provozieren. Ist natürlich zum darauf „reagieren“ nicht ganz cool, aber leider aktuell technisch bedingt nur so lösbar.

paresy

Ok. Das ist aber wirklich unschön. In meinem Beispiel oben hatte ich lediglich von „passiv“ auf „aktiv“
gewechselt…

Du hast aber Recht, dass man überlegen könnte die doppelten Nachrichten gar nicht erst zu senden - Ich muss nur überlegen, ob dies irgendein „Problem“ sein könnte an einer anderen Stelle.

paresy

Das wäre nicht schlecht. Da die Meldungen ja 100%ig identisch sind, kann es ja eigentlich keine Nebenwirkungen geben.

Ich werde dann erst einmal Wiederholungen ignorieren. Denn ein Dutzend mal RequestAction aufzurufen hat dann vielleicht doch Nebenwirkungen [emoji1]