DoIf 2 Bedinungen "Wait unil" Device online

Begonnen von RudiRoechel, 20 Mai 2018, 21:25:28

Vorheriges Thema - Nächstes Thema

RudiRoechel

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....


amenomade

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...
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

Ellert

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.