Observe in Kombination mit SetExtension

Begonnen von Flachzange, 20 Juni 2026, 08:40:54

Vorheriges Thema - Nächstes Thema

Flachzange

Hallo Klaus,

ich nutze ja jetzt seit 8 Jahren dein tolles EnOcean-Modul in einem aus meiner Sicht eher "advanced Setup". Immer wieder hatte ich Beobachtungn / Probleme / Verständnisschwierigkeiten (?), was "set blink" bei meinen Lichtaktoren betraf. Manchmal blinkte es komisch, manchmal zu kurz und manchmal bleiben die Lampen am Ende eingeschaltet.

Gestern kam mir ein Idee: Kann es an der Kombination mit observe und observeCmdRepetition liegen. Und ich denke es ist tatsächlich so. observeCmdRepetition berücksichtigt eine vorher initialisierte SetExtension nicht. Sobald ein Befehl wiederholt wird, wird dadurch die Blinksequenz unterbrochen was dann zu diesen komischen Beobachtungen oben führt. Der Fix scheint ein Zweizeiler zu sein, den ich dir angehangen habe. Ich haber darüber hinaus ein Reading "observeCmdRepetitionCount" ergänzt, weil es sehr hilft Geräte zu identifizieren, die dauerhaft Schwierigkeiten machen. Ich würde mich freuen, wenn du es in dein Modul übernehmen könntest.

Danke und Gruß
Chris

P.S. die aktuell im SVN eingecheckte Modul-Version macht mir bei mir folgendes beim reload:

Too many arguments for main::EnOcean_sec_createTeachIn at ./FHEM/10_EnOcean.pm line 2567, near "$destinationID)"
Too many arguments for main::EnOcean_sec_createTeachIn at ./FHEM/10_EnOcean.pm line 3659, near "$destinationID)"
Too many arguments for main::EnOcean_sec_createTeachIn at ./FHEM/10_EnOcean.pm line 3813, near "$destinationID)"
Too many arguments for main::EnOcean_sec_createTeachIn at ./FHEM/10_EnOcean.pm line 4969, near "$destinationID)"
BEGIN not safe after errors--compilation aborted at ./FHEM/10_EnOcean.pm line 16310.

Hier passt der Funktionsprototyp irgendwie nicht mehr

klaus.schauer

Nun ja auf SetExtension habe ich die Funktion nicht getestet. Was bewirkt?
$hash->{InSetExtensions}

Flachzange

#2
Zitat von: klaus.schauer am 20 Juni 2026, 18:53:44Nun ja auf SetExtension habe ich die Funktion nicht getestet.
Kein Vorwurf. Das ist ja ein super mieser Fall.

Zitat von: klaus.schauer am 20 Juni 2026, 18:53:44Was bewirkt?
$hash->{InSetExtensions}
Der Hash wird von SetExtension ausgewertet, um zu prüfen, ob ein Timer abgebrochen werden muss. Das würde passieren, wenn Observe ein normales Set-Kommando nachschießt. Für einen Observe-Wiederholungsfall wird einfach jetzt (immer) behauptet, dass man sich in der SetExtension befindet und dadurch wird der wiederholte Befehl nicht als Abbruch aus der SetExtension (hier: blinken) gewertet, was bisher immer passierte. Durch das local wird auch kein allgemein gesetztes Setting überschrieben. Wenn man sich nicht in der SetExtension befindet macht es einfach nichts.