FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: RudiRoechel am 20 Mai 2018, 21:25:28

Titel: DoIf 2 Bedinungen "Wait unil" Device online
Beitrag von: RudiRoechel am 20 Mai 2018, 21:25:28
Hi,

ich habe ein doif, das mir immer wenn sich der Wert eines dummy´s ändert diesen aktuellen wert in einen set Befehl einbaut und diesen an ein device sendet.
Nun ist es aber manchmal so, das das Device kurzzeitig auf offline und nach einiger Zeit wieder auf online geht. Beide Zustände werden von fhem erkannt.
Während das device auf offline steht, laufen die set Befehle ins leere. Sie kommen zwar im fhem device an, da das device aber offline ist, passiert nichts auf dem eigentlichem Gerät. (hoffe, das ist soweit verständlich...)
Leider bringt ein einfaches warten bis das device wieder online ist nicht wirklich etwas, da der Inhalt des dummy´s sich in der zwischenzeit geändert haben kann und der vorherige Wert somit verloren geht.

Was ich vor habe ist folgendes:

Ich würde ein DOIF device online und dummy neuer Wert, dann lese wert dummy und set device .... wert dummy
und ein DOIFELSE wenn device offline und neuer Wert im dummy dann lese wert dummy (damit ich den aktuellen wert des dummy habe) und warte bis device wieder online, dann set device... wert aus dummy (noch aus der Zeit als device noch offline war)
In bash würde ich das ganze mit einer while do Schleife lösen. Aber wie mache ich so was in fhem in einem doif?

Für einen Tipp wäre ich dankbar, müsste auch nicht zwingend ein doif sein, nur die entsprechende Logik sollte funktionieren.

Schönen Abend noch....

Titel: Antw:DoIf 2 Bedinungen "Wait unil" Device online
Beitrag von: amenomade am 21 Mai 2018, 00:24:01
Mit einem anderen DOIF, der auf "online" reagiert, den Wert wieder schicken? Etwas wie
([Device:status] eq "online") (set Device DummyWert)

Wäre einfacher auf einem konkreten Beispiel zu erklären...
Titel: Antw:DoIf 2 Bedinungen "Wait unil" Device online
Beitrag von: Ellert am 22 Mai 2018, 06:45:46
Zitat von: RudiRoechel am 20 Mai 2018, 21:25:28
Hi,

ich habe ein doif, das mir immer wenn sich der Wert eines dummy´s ändert diesen aktuellen wert in einen set Befehl einbaut und diesen an ein device sendet.
Nun ist es aber manchmal so, das das Device kurzzeitig auf offline und nach einiger Zeit wieder auf online geht. Beide Zustände werden von fhem erkannt.
Während das device auf offline steht, laufen die set Befehle ins leere. Sie kommen zwar im fhem device an, da das device aber offline ist, passiert nichts auf dem eigentlichem Gerät. (hoffe, das ist soweit verständlich...)
Leider bringt ein einfaches warten bis das device wieder online ist nicht wirklich etwas, da der Inhalt des dummy´s sich in der zwischenzeit geändert haben kann und der vorherige Wert somit verloren geht.

Was ich vor habe ist folgendes:

Ich würde ein DOIF device online und dummy neuer Wert, dann lese wert dummy und set device .... wert dummy
und ein DOIFELSE wenn device offline und neuer Wert im dummy dann lese wert dummy (damit ich den aktuellen wert des dummy habe) und warte bis device wieder online, dann set device... wert aus dummy (noch aus der Zeit als device noch offline war)
In bash würde ich das ganze mit einer while do Schleife lösen. Aber wie mache ich so was in fhem in einem doif?

Für einen Tipp wäre ich dankbar, müsste auch nicht zwingend ein doif sein, nur die entsprechende Logik sollte funktionieren.

Schönen Abend noch....
Du könntest den Zustand des Dummys in einem Reading zwischen speichern, wenn der Dummy den Wert aktualisiert und das Gerät offline ist. Wenn das Gerät online geht und das Reading gesetzt ist nimmst Du den Readingswert zum setzen und setzt das Reading zurück.

Besser wäre es die Ursache zu beseitigen, die dazu führt, dass das Gerät spontan offline geht.