pa-pa / AskSinPP

104 stars 71 forks source link

Ignore repeated message #316

Closed jp112sdl closed 10 months ago

jp112sdl commented 10 months ago

@pa-pa @trilu2000

Mir war da gestern Abend in unserem Meeting noch was aufgefallen: https://github.com/pa-pa/AskSinPP/blob/b83fd61f09f9a964eba8095ac5c5535606563b10/MultiChannelDevice.h#L247-L251

Das ist meiner Meinung nach falsch. Hier wird nicht nur geprüft, ob die empfangene Meldung identisch zum vorherigen Absender+Counter ist, sondern auch ob msg.isRepeated() gesetzt ist.

Dieses Flag setzt afaik nur der Repeater (HM-Sys-sRP-Pl) und ist auch nur für diesen "interessant", um Endlosschleifen zu vermeiden.

https://github.com/pa-pa/AskSinPP/blob/b83fd61f09f9a964eba8095ac5c5535606563b10/Message.h#L63-L64

Also vom Flow her, wie ich es verstehe: Ein Gerät sendet eine Message mit RPTEN. Ein Repeater empfängt eine solche Message und erkennt, dass diese Nachricht überhaupt repeated werden darf. Anschließend wird von diesem das RPTED Flag angehängt, damit das Telegram nicht durch einen zweiten Repeater nochmals ausgesendet wird.

Gibt es gegenteilige Meinungen, msg.isRepeated() aus der Bedingungsprüfung zu entfernen?

Ich glaub, das ist auch der Bug, der bei mir manchmal Aktoren mit verknüpftem Toggle-Fernbedienungstaster kurz ein und wieder aus schaltet. Es liegt wohl einfach nur daran, dass dann mehrfach gesendet.

trilu2000 commented 10 months ago

Hi Jerome,

Du hast recht, es ist ja völlig egal ob das repeated flag gesetzt ist oder nicht.

Eine wiederholte Nachricht bleibt eine wiederholte Nachricht und muss nicht noch einmal ausgeführt werden.

Einzig, es darf keinen Repeater Sketch geben 😊

Viele Grüße

Horst

Von: Jérôme @.> Gesendet: Dienstag, 16. Januar 2024 07:24 An: pa-pa/AskSinPP @.> Cc: trilu2000 @.>; Mention @.> Betreff: [pa-pa/AskSinPP] Ignore repeated message (Issue #316)

@pa-pa https://github.com/pa-pa @trilu2000 https://github.com/trilu2000

Mir war da gestern Abend in unserem Meeting noch was aufgefallen: https://github.com/pa-pa/AskSinPP/blob/b83fd61f09f9a964eba8095ac5c5535606563b10/MultiChannelDevice.h#L247-L251

Das ist meiner Meinung nach falsch. Hier wird nicht nur geprüft, ob die empfangene Meldung identisch zum vorherigen Absender+Counter ist, sondern auch ob msg.isRepeated() gesetzt ist.

Dieses Flag setzt afaik nur der Repeater (HM-Sys-sRP-Pl) und ist auch nur für diesen "interessant", um Endlosschleifen zu vermeiden.

https://github.com/pa-pa/AskSinPP/blob/b83fd61f09f9a964eba8095ac5c5535606563b10/Message.h#L63-L64

Also vom Flow her, wie ich es verstehe: Ein Gerät sendet eine Message mit RPTEN. Ein Repeater empfängt eine solche Message und erkennt, dass diese Nachricht überhaupt repeated werden darf. Anschließend wird von diesem das RPTED Flag angehängt, damit das Telegram nicht durch einen zweiten Repeater nochmals ausgesendet wird.

Gibt es gegenteilige Meinungen, msg.isRepeated() aus der Bedingungsprüfung zu entfernen?

Ich glaub, das ist auch der Bug, der bei mir manchmal Aktoren mit verknüpftem Toggle-Fernbedienungstaster kurz ein und wieder aus schaltet. Es liegt wohl einfach nur daran, dass dann mehrfach gesendet.

— Reply to this email directly, view it on GitHub https://github.com/pa-pa/AskSinPP/issues/316 , or unsubscribe https://github.com/notifications/unsubscribe-auth/ABO3WH2UDLYRZOGVMU5DDYTYOYMJDAVCNFSM6AAAAABB4IJAT2VHI2DSMVQWIX3LMV43ASLTON2WKOZSGA4DGMBZHE4DAOA . You are receiving this because you were mentioned. https://github.com/notifications/beacon/ABO3WH6AMV6J6KNDGGHEBF3YOYMJDA5CNFSM6AAAAABB4IJAT2WGG33NNVSW45C7OR4XAZNFJFZXG5LFVJRW63LNMVXHIX3JMTHHYKMUUA.gif Message ID: @. @.> >

pa-pa commented 10 months ago

👍

jp112sdl commented 10 months ago

Einzig, es darf keinen Repeater Sketch geben 😊

Doch, den gibt es :) https://github.com/jp112sdl/Beispiel_AskSinPP/blob/master/examples/HM-Sys-sRP-Pl/HM-Sys-sRP-Pl.ino

Aber auch da ist es kein Problem, da Nachrichten, außer Config, nie an ihn adressiert sind. Der "hört" ja nur mit.