DOIF: verzögerte Befehlssequenz nicht-unterbrechbar abarbeiten?

Begonnen von Morgennebel, 04 März 2017, 16:57:36

Vorheriges Thema - Nächstes Thema

Morgennebel

Moin Moin,


laut https://fhem.de/commandref_DE.html#DOIF_wait kann eine Verzögerung durch einen neuen Event des DOIF-Befehls zurückgesetzt werden (2. letzter Paragraph).

Wie kann ich dann eine Befehlssequenz mit Pausen (dauert in der Summe ca. 4 Minuten), die nicht unterbrochen werden darf, realisieren?

Danke, -MN
Einziger Spender an FHEM e.V. mit Dauerauftrag seit >= 24 Monaten

FHEM: MacMini/ESXi, 2-3 FHEM Instanzen produktiv
In-Use: STELLMOTOR, VALVES, PWM-PWMR, Xiaomi, Allergy, Proplanta, UWZ, MQTT,  Homematic, Luftsensor.info, ESP8266, ESERA

viegener

Mein erster Vorschlag wäre die Befehlssequenz in einen anderen DOIF oder sonstwie auszulagern, dann läuft die Sequenz getrennt ab. Wenn es nur wenige befehle sind, kann das wait ja auch durch andere Möglichkeiten erreicht werden.
Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

Ellert


Morgennebel

Puh.


Das übersteigt meine bisherigen Kenntnisse von DOIF doch beträchtlich... Ich denke, daß Beispiel mit

and [$SELF] !~ "cmd_1_1|cmd_1_2"

habe ich ansatzweise verstanden. Jedoch setzen die Beispiele immer einen DOELSEIF-Zweig voraus...? Reicht es aus, einen leeren DOELSEIF-Zweig zu haben, d.h. von


([EG.HWR.Fussbodenmischer:position] < 0 or [EG.Heizung.Mischer.Vorlauf] > 45 or [EG.HWR.Fussbodenmischer:position] > 100)
(set DI_MischerCommands disable)         ## CMD 1.1
(set EG.HWR.Fussbodenmischer calibrate)  ## CMD 1.2
(set EG.HWR.Fussbodenmischer reset)      ## CMD 1.3
(set EG.HWR.Fussbodenmischer 35)         ## CMD 1.4
(IF ([EG.HWR.Fussbodenmischer:position] < 0)   (set PBNotification message 'Intelligentes Wohnen' | 'ALARM: Problem mit FB-Mischer - negative Position'))         ## CMD 1.5
(IF ([EG.Heizung.Mischer.Vorlauf] > 45)        (set PBNotification message 'Intelligentes Wohnen' | 'ALARM: Problem mit FB-Mischer - zu hohe Vorlauftemperatur')) ## CMD 1.6
(IF ([EG.HWR.Fussbodenmischer:position] > 100) (set PBNotification message 'Intelligentes Wohnen' | 'ALARM: Problem mit FB-Mischer - Position groesser 100'))     ## CMD 1.7
(set DI_MischerCommands initialize)      ## CMD 1.8
DOELSE
    ## CMD 2


hin zu


([EG.HWR.Fussbodenmischer:position] < 0 or [EG.Heizung.Mischer.Vorlauf] > 45 or [EG.HWR.Fussbodenmischer:position] > 100)
(set DI_MischerCommands disable)         ## CMD 1.1
(set EG.HWR.Fussbodenmischer calibrate)  ## CMD 1.2
(set EG.HWR.Fussbodenmischer reset)      ## CMD 1.3
(set EG.HWR.Fussbodenmischer 35)         ## CMD 1.4
(IF ([EG.HWR.Fussbodenmischer:position] < 0)   (set PBNotification message 'Intelligentes Wohnen' | 'ALARM: Problem mit FB-Mischer - negative Position'))         ## CMD 1.5
(IF ([EG.Heizung.Mischer.Vorlauf] > 45)        (set PBNotification message 'Intelligentes Wohnen' | 'ALARM: Problem mit FB-Mischer - zu hohe Vorlauftemperatur')) ## CMD 1.6
(IF ([EG.HWR.Fussbodenmischer:position] > 100) (set PBNotification message 'Intelligentes Wohnen' | 'ALARM: Problem mit FB-Mischer - Position groesser 100'))     ## CMD 1.7
(set DI_MischerCommands initialize)      ## CMD 1.8
DOELSEIF ([$SELF] !~ "cmd_1_\d")
    ## CMD 2


d.h. der leere DOELSE-Zweig wird zu DOELSEIF, das DOELSE implizit?

Danke, -MN
Einziger Spender an FHEM e.V. mit Dauerauftrag seit >= 24 Monaten

FHEM: MacMini/ESXi, 2-3 FHEM Instanzen produktiv
In-Use: STELLMOTOR, VALVES, PWM-PWMR, Xiaomi, Allergy, Proplanta, UWZ, MQTT,  Homematic, Luftsensor.info, ESP8266, ESERA

Ellert

Du müsstest bei DOELSEIF auch die bei DOELSE implizite Bedingung angeben, also

DOELSEIF (!([EG.HWR.Fussbodenmischer:position] < 0 or [EG.Heizung.Mischer.Vorlauf] > 45 or [EG.HWR.Fussbodenmischer:position] > 100) and $cmd > 1.7)