DOIF nur einmal ausführen und warten

Begonnen von dennis_n, 28 August 2017, 22:30:00

Vorheriges Thema - Nächstes Thema

dennis_n

Hallo,

ich habe folgendes DOIF:
([ESPEasy_Feuerwehr_Melder:Alarm] eq "on" and [22:00-06:00]) (set Licht on)
Zusätzlich habe ich im DOIF das Attribut repeatsame=1 und cmdpause=300 gesetzt.

Verstehe ich das richtig, dass das Kommando nur einmal ausgeführt wird und dann 300 Sekunden gewartet wird, bevor die Bedingung erneut geprüft wird?

Danke

Gruss
Dennis

Frank_Huber

Ohne DOELSEIF oder Attribut do always geht einmal Licht an und dann passiert gar nix mehr...

Gesendet von meinem S3_32 mit Tapatalk


dennis_n

Hallo Frank,

Du hast mir ja schon in meinem anderen Thread wunderbar weitergeholfen. Ich mache dann lieber hier weiter, da meine Fragen ja eher DOIF-Spezifisch sind.

Ich habe jetzt mal folgendes DOIF gebaut:
([ESPEasy_Feuerwehr_Melder:Alarm] eq "on" and [22:00-06:00]) (set Licht on) DOELSEIF ([ESPEasy_Feuerwehr_Melder:Alarm] eq "off") (set Licht off)

Dazu folgende Attribute:
cmdpause = 300
repeatsame = 1
wait = 0;600


Mein Ziel ist es, dass bei einem Alarm zwischen 22:00 und 6:00 Uhr das Licht für 10 Minuten an geht und danach automatisch wieder aus geht. Das Kommando LICHT AN darf aber innerhalb von 5 Minuten nur ein einziges mal ausgeführt werden.

Frank_Huber

Cmdpause und wait kannst rausnehmen. Die brauchst ned. Repeatsame 1:1, dann hast auch den zweiten Zweig abgedeckt.

Sorry bin grad ned so schnell im Antworten. Bin im Urlaub. 😀🍻

Gesendet von meinem S3_32 mit Tapatalk


dennis_n

OK danke Dir. Habe jetzt noch die Pushbenachrichtigung dazu genommen.
Muss ich repeatsame dann so setzen?

([ESPEasy_Feuerwehr_Melder:Alarm] eq "on" and [22:00-06:00]) (set Licht on) (set Garage auf) (set pushmsg_feuerwehr msg title="EINSATZ!" priority="1" message="Alarmierung Zug 2" sound="persistent") DOELSEIF ([ESPEasy_Feuerwehr_Melder:Alarm] eq "off") (set Licht off)

repeatsame 1:1:1:1

Gruss
Dennis

Frank_Huber

Nein, nur 1:1, da Geht es um die gesamten Zweige, nicht um einzelne Befehle.

Gesendet von meinem S3_32 mit Tapatalk


dennis_n

Du hast mir sehr geholfen. Vielen Dank und noch einen schönen Urlaub ;-)

Gruss
Dennis

dennis_n

Ich muss leider nochmal rückfragen.

Also so sieht mein DOIF nun aus:
([ESPEasy_Feuerwehr1_Melder:Alarm] eq "on" and [08:00-06:00]) (set Garage on) (set Hue_Lampen scene Alarm) (set pushmsg_feuerwehr msg title="EINSATZ!" priority="1" message="Alarmierung Zug 2" sound="persistent") DOELSEIF ([ESPEasy_Feuerwehr1_Melder:Alarm] eq "off") (set Garage off) (set Hue_Lampen scene Aus)

Als Attribut habe ich lediglich repeatsame = 1:1 gesetzt.

Jeder Befehl soll nur einmal ausgeführt werden, damit im Alarmfall nicht ständig die Garage geöffent wird usw.

Jetzt möchte ich aber, dass der DOELSEIF Zweig nach 3 Minuten ausgeführt wird. Also dass das Licht wiede aus geht, die Garage sich wieder schließt usw.

Also im Alarmfall soll der erste Teil ausgeführt werden und nach 3 Minuten der zweite Teil. Welche Attribute muss ich dafür setzen? Ich stehe auf dem Schlauch.

Gruss
Dennis

Otto123

Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

dennis_n

Also in meinem Fall dann das Attribut:

wait = 0,0,0:180,180

Wobei ich wahrscheinlich auch wait = 0:180 schreiben könnte, oder?

Gruss
Dennis


Otto123

Zitat von: dennis_n am 05 September 2017, 17:30:39

Wobei ich wahrscheinlich auch wait = 0:180 schreiben könnte, oder?
Würde ich auch sagen  ;)
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

dennis_n

Hi,

Probealarm hat heute wunderbar funktioniert.

Vielen Dank an alle Helfer.

Gruss
Dennis

Per

Zitat von: dennis_n am 05 September 2017, 17:30:39
wait = 0,0,0:180,180

Wobei ich wahrscheinlich auch wait = 0:180 schreiben könnte, oder?
Naja, 0:180,180 passt besser als Kurzform. Zumindest, wenn du genau das willst. Aber wahrscheinlich meintst du eh 0,0,0:180,0, dann passt deine Form.
Wenn du die einzelnen Blöcke nicht brauchst (und danach sieht es hier aus), solltest du statt mit Klammern mit Komma trennen. Dann ist 0:180 wieder richtig und sogar vollständig.

dennis_n

Ich brauche nochmal kurz eure Hilfe. Irgendwie tue ich mir mit der Syntax echt schwer.

Zusätzlich zu meinem bestehen DOIF möchte ich jetzt gerne noch so einen Fibaro Button einbauen.
Mit dem kann ich dann quasi die Routine starten, sollte der Feuerwehrmelder nicht in der Ladeschale stehen.

Wäre das dann so richtig?

(([ESPEasy_Feuerwehr1_Melder:Alarm] eq "on" or  [ZWave_WALL_CONTROLLER_20:cSceneDouble] eq "1") and ([00:00:01-18:59:00] or [19:02:00-23:59:59]))
(set ZWave_SWITCH_BINARY_19 on) (set ZWave_SWITCH_BINARY_16 on) (set Hue_Lampen scene Willkommen) (set pushmsg_feuerwehr msg title="EINSATZ!" priority="1" message="Alarmierung Zug 2" sound="persistent")

DOELSEIF ([ESPEasy_Feuerwehr1_Melder:Alarm] eq "on" and [18:59:01-19:01:59]) (set pushmsg_feuerwehr msg title="PROBEALARM!" priority="1" message="Probealarm Zug 2" sound="persistent")

DOELSEIF ([ESPEasy_Feuerwehr1_Melder:Alarm] eq "off") (set Hue_Lampen scene Aus)


Danke
Dennis

dennis_n

Kann mir niemand sagen, ob das so richtig wäre?

Gruss
Dennis

Otto123

Moin Dennis,

Du hast Die beiden Schalter or verknüpft und das or geklammert. Und du hast zwei Zeitbereiche mit or geklammert.

Aus meiner Sicht: Wenn einer der beiden Zeitbereiche wahr ist und einer der beiden Schalter "gedrückt" ist brüllt er Einsatz.  ;D

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

dennis_n

OK dann müsste das ja passen.

Ich möchte dass der Alarm auslöst, wenn entweder der Melder in der entsprechenden Zeit in der Ladeschale steht oder wenn in der gleichen Zeit der Button gedrückt wird.

Gruss
Dennis

Steffen

Guten Morgen!

Ich habe ein DOIF wo ich gerne die ersten zwei Doif nur max. mal zwei Mal in der Zeit "05:00-09:00" ausführen lassen möchte habe schon alles möglich versucht aber komme nicht so recht weiter...


(([Sensor_Bad:state] eq "open") and ([05:00-09:00]) and ([WetterProplanta:fc0_chOfRainDay] > 30))
(set TabletWohnzimmer screen on) (set TabletWohnzimmer screenBrightness 255) (set TabletWohnzimmer ttsMsg Guten Morgen. heute haben wir eine höchst Temperatur von [Wetter:fc1_high_c] grad. und eine Tiefstemperatur von [Wetter:fc1_low_c] grad. Regenschirm bitte einpacken denn wir haben eine regen verscheinlichkeit von [WetterProplanta:fc0_chOfRainDay] prozent. Ich schalte gleich noch Radio ein) (set EchoBadezimmer tunein s25166)
DOELSEIF (([Sensor_Bad:state] eq "open") and ([05:00-09:00]))
(set TabletWohnzimmer screenBrightness 255) (set TabletWohnzimmer ttsMsg Guten Morgen. heute haben wir eine höchst Temperatur von [Wetter:fc1_high_c] grad. und eine Tiefstemperatur von [Wetter:fc1_low_c] grad. die prognose für den Tag ist. [WetterProplanta:weather].)
DOELSEIF ([Sensor_Bad:state] eq "open")
(set TabletWohnzimmer screen on) (set TabletWohnzimmer screenBrightness 255)
DOELSEIF ([Sensor_Bad:state] eq "closed")
(set TabletWohnzimmer screenBrightness 1)
   NAME       GutenMoergen
   NR         165
   NTFY_ORDER 50-GutenMoergen
   STATE      initialized
   TYPE       DOIF
Attributes:
   repeatsame 1:1
   room       Logik
   wait       0,3,5,15


Gibt es diese Möglichkeit überhaupt oder ist das Doif dafür zu sehr verschachtelt?!?

Mfg Steffen

Per

Zitat von: Steffen am 27 Oktober 2017, 07:01:32nur max. mal zwei Mal in der Zeit "05:00-09:00" ausführen lassen
Je nachdem ob je oder zusammen max 2x entsprechende Variable(n) (Dummy, UserReading, DOIFReading o.ä.) setzen und diese zwischen 5 und 9 mit abfragen.
DOELSEIF (xxxx and ([?05:00-09:00] and [?Zähler < 2]) (set Zähler ([Zähler] + 1))
bzw.
DOELSEIF (xxxx and ([?09:00-05:00] or [?Zähler < 2])) (set Zähler ([Zähler] + 1))
je nachdem, ob was außerhalb von 5 bis 9 passieren soll.

Zwischen 9 und 5 wird/werden diese wieder resetet in einem extra Zweig
DOELSEIF ([0:00]) (set Zähler 0)
.

Otto123

Ich dachte das bekommt man mit der Kombination von repeat attributen hin?
https://fhem.de/commandref_DE.html#DOIF_repeatcmd

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz