[37_echodevice] Unterstützung stateFormat

Begonnen von Christoph Morrison, 15 Mai 2021, 13:26:13

Vorheriges Thema - Nächstes Thema

Christoph Morrison

Hallo zusammen,

mir ist ein komisches Verhalten von 37_echodevice aufgefallen:

Wenn man ein stateFormat setzt (der etwas ungleich connected ergibt), glaubt das Modul, dass es nicht mehr verbunden ist. Man kann das in einem verbundenen echo_device nachstellen, in dem man z.B.

attr echo_device_name stateFormat foobar

setzt und versucht eine Geräteliste mit

get echo_device_name devices

anzufordern.

Meiner Meinung nach liegt das an folgendem Codeblock in L652 (zur besseren Lesbarkeit von mir formatiert):

if($hash->{model} eq "ACCOUNT") {
$ConnectState = $hash->{STATE}
} else {
$ConnectState = $hash->{IODev}->{STATE}
}


Und später dann:


if ($ConnectState ne "connected") {
return "$name is not connected. Aborting...";
}


stateFormat ändert, wie in der CRef beschrieben, den Wert in $hash->{STATE}!

Ich denke, dass es Konsens gibt, dass stateFormat keine Auswirkungen auf das Verhalten eines Moduls über Kosmetik hinaus haben sollte. Könntest du den Verbindungsstatus an einer Stelle festhalten, die nicht von stateFormat verändert wird?


Christoph Morrison

Hattest du schon die Chance einen Blick darauf zu werfen?

Christoph Morrison

Ich hab aber mal einen Blick drauf geworfen und eine Version gebaut die bei mir funktioniert und STATE in Ruhe lässt. Diff hängt an. Kannst ja mal drüber schauen.
Beim Schreiben eben ist mir aufgefallen, dass man auch einfach das state-Reading abfragen könnte, mit der Gefahr natürlich, dass der User da irgendwie dran rum schraubt.


JoWiemann

Zitat von: Christoph Morrison am 04 Juni 2021, 12:47:54
Ich hab aber mal einen Blick drauf geworfen und eine Version gebaut die bei mir funktioniert und STATE in Ruhe lässt. Diff hängt an. Kannst ja mal drüber schauen.
Beim Schreiben eben ist mir aufgefallen, dass man auch einfach das state-Reading abfragen könnte, mit der Gefahr natürlich, dass der User da irgendwie dran rum schraubt.

Hm, STATE gehört dem User, state dem Modul. Ist ziemlich am Anfang von Fhem vereinbart worden.

Grüße Jörg
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

Christoph Morrison

Zitat von: JoWiemann am 04 Juni 2021, 14:42:40
Hm, STATE gehört dem User, state dem Modul. Ist ziemlich am Anfang von Fhem vereinbart worden.

Deshalb der Vorschlag, state zu verwenden anstatt von STATE (oder mein CONNECTION_STATE).