FHEM Forum

FHEM => Automatisierung => DOIF => Thema gestartet von: fhemfreund am 12 September 2016, 00:28:18

Titel: DOIF - Kommando ein mal Mal direkt nach FHEM Start nicht ausführen
Beitrag von: fhemfreund am 12 September 2016, 00:28:18
Habe folgendes Problem: möchte ein DOIF erstellen, das nach dem Start von FHEM bei Erfüllung einer Bedingung das dazugehörige Kommando genau 1x nicht ausführt. Beim nächsten Auftreten der Bedingung sollen die Kommandos regulär ausgeführt werden.

Hat so etwas jemand schon gemacht?

Andreas
Titel: Antw:DOIF - Kommando ein mal Mal direkt nach FHEM Start nicht ausführen
Beitrag von: igami am 12 September 2016, 06:01:39
Beim Neustart wird ein Event erzeugt, das musst du dann noch Auswerten. Mit einer engagierten Suche findest du auch mehrere ähnliche Themen  ;)

Grüße
igami
Titel: Antw:DOIF - Kommando ein mal Mal direkt nach FHEM Start nicht ausführen
Beitrag von: fhemfreund am 12 September 2016, 16:13:00
jetzt ist nur die Frage, wie ich den Event so verknüpfe, dass das Kommando nur ein mal nach dem Start nicht ausgeführt wird ...
Dass ich einen Neustart ausgewertet bekomme (z.B. via sysmon:fhemuptime) ist nicht mein Problem.

Falls schonmal jemand hier was ähnliches gemacht hat (Kommando nur ein mal nach dem Start nicht ausgeführen) und das per Suche zu finden ist, oder schon so etwas mit DOIF realisiert hat - wäre klasse.

Andreas
Titel: Antw:DOIF - Kommando ein mal Mal direkt nach FHEM Start nicht ausführen
Beitrag von: igami am 12 September 2016, 17:30:43
Ein list des DOIF wäre hilfreich.
Spontan würde mir einfallen den ersten Zweig auf INITIALIZED zu setzen und in der auszufallenden Bedingung abzufragen.

define spaetzuender DOIF
([global:"INITIALIZED"])
DOELSEIF
([<Bedingung>] and [$SELF:cmd] != 1)
DOELSEIF
([<andere Bedingung>])
Titel: Antw:DOIF - Kommando ein mal Mal direkt nach FHEM Start nicht ausführen
Beitrag von: Per am 13 September 2016, 12:25:06
Damit würdest du ihn aber "zwangsweise" ausführen, auch wenn die Bedingungen nicht passen. Das gäbe keine Änderung zu bisher.

Zitat von: fhemfreund am 12 September 2016, 16:13:00z.B. via sysmon:fhemuptime
Dann würdest du nicht das erste Mal erfassen, sondern eine bestimmte Zeitspanne. Was, wenn das erste Mal erst nach 12 Stunden auftritt?
Ich habe für sowas in der fhem.cfg ein defmod x dummy
set x y
drin, im DOIF wird das dann umgesetzt.

define spaetzuender DOIF (([<Bedingung>] oder [<andere Bedingung>]) and [x] != y) (set x z)
DOELSEIF
([<Bedingung>])
DOELSEIF
([<andere Bedingung>])


Leider müssen alle Bedingungen im DOIF doppelt erscheinen. Alternativ kannst du in jedem Zweig mittels IF die Startvariable abfragen und setzen, im ELSE-Zweig das eigentliche doing. Beide Lösungen finde ich aber nicht sehr elegant :(.
Titel: Antw:DOIF - Kommando ein mal Mal direkt nach FHEM Start nicht ausführen
Beitrag von: fhemfreund am 15 September 2016, 23:26:04
Danke für eure Tips. Das hilft mir weiter ...

Andreas