Mit Cmd warten mit Timer wenn keine änderung des state?

Begonnen von Steffen, 11 Oktober 2017, 08:09:26

Vorheriges Thema - Nächstes Thema

Steffen

Hallo!

Ich versuche ein Doif zum warten zu bekommen das das Cmd erst auslöst wenn sich der state in dieser Zeit nicht ändernt, ist sowas möglich?

Ich stelle meine Heizung über eine Anwesendheits erkennung an und aus was auch super klappt, nun würde ich gerne das wenn man kurz aus dem Haus ist um Brötchen zu holen nicht gleich umgeschaltet wird sondern erst nach 30min.

Hier mein Doif:

([HZAutomatik] eq "on") ({Heating_Control_SetAllTemps()},(set teleBot message @@Katja_Handy @@Steffen_Handy Heizung wird Eingeschaltet)) DOELSE (set Heizung_Gesamt desired-temp 17.0,set teleBot message @@Katja_Handy @@Steffen_Handy Heizung wird Ausgeschaltet)

Brockmann


Steffen

Hallo,

mit "wait" hatte ich es ja versucht aber dann wird der Cmd ja trotzdem ausgeführt obwohl sich der Status ändert in dem Timer und das soll ja nicht passieren?!?

Mfg Steffen

CoolTux

Das wait wird erst unterbrochen wenn ein Zustandswechsel stattgefunden hat.
Er muß also in ein anderes CMD springen um den wait ab zu stellen.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Frank_Huber

z.B. DOELSEIF (Jemand-da-event) ()

Damit wechselt er in das jemand-da CMD ohne etwas auszuführen.

Otto123

([HZAutomatik] eq "on") ({Heating_Control_SetAllTemps()},(set teleBot message @@Katja_Handy @@Steffen_Handy Heizung wird Eingeschaltet)) DOELSEIF ([HZAutomatik] eq "off") (set Heizung_Gesamt desired-temp 17.0,set teleBot message @@Katja_Handy @@Steffen_Handy Heizung wird Ausgeschaltet)
dazu wait

Frank war schneller  ;)
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

Per


Steffen

Zitat von: Per am 11 Oktober 2017, 10:42:39
Wie wäre es mit "resetwait"?

daran hatte ich auch schon gedacht aber dann muss ja die gleiche bedingung nochmal wahr werden, was ja nicht der Fall ist wenn ich nur kurz wieder in die Wohnung zurück komme, das beste wäre wenn in der Zeit vom Timer der Timer selber gelöscht wird wenn der state von meiner Anwesend erkennung wieder "wahr" wird und danach das doif wieder auf das Event von "HZAutomatik" wartet?!?

Mfg Steffen

Otto123

Die Frage ist noch ob man diese Toleranz Zeit an der Heizung oder an "jemand nicht mehr da" festmacht. So wie oben konstruiert (ohne Wissen Deiner Inhalte) mache ich das mit Personen:
defmod di_Dev_Otto DOIF ([st_Dev_Otto] eq "absent")(set PersonOtto absent) DOELSEIF ([st_Dev_Otto] eq "present")(set PersonOtto present)
attr di_Dev_Otto room Status
attr di_Dev_Otto wait 300

Das funktioniert prima, ich kann auch mal das Smartphone neu starten.

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

Steffen

Zitat von: Otto123 am 11 Oktober 2017, 11:06:52
Die Frage ist noch ob man diese Toleranz Zeit an der Heizung oder an "jemand nicht mehr da" festmacht.

Ich würde es gerne an der Heizung fest machen da ich noch andere Werte gekoppelt habe mit Anwesend wie zum bsp. eine Auto-Tür öffnung usw.!

Mfg Steffen


Otto123

Hallo Steffen,

Du verstehst mich falsch, ich meine nicht anwesend, ich meinte abwesend. Mein Beispiel macht:
Anwesend - sofort
Abwesend - nach Zeit 5 min (Wenn ich innerhalb dieser Zeit wiederkomme, bin ich sofort wieder anwesend und war nie weg.

Zusätzlich kann man nach gleichem Schema weitere Zeitverzögerungen bei "abwesend" einbauen.

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

Steffen

Bei Abwesend habe ich Aktuell 3min verzögerung, da ich wenn ich auch da in kurzer Zeit wieder komme die Tür wieder aufgemacht wird, also eine Verlängerung ist da dann auch nicht so gut.

Bis jetzt kam ich mit meinen System sehr gut zu recht, nun wollte ich eigentlich nur noch die Heizung zu nehmen und darum dachte ich es gäbe in DOIF diese Funktion, einen gestarteten Timer zu löschen wenn eine Bedingung in diesem Fall "HZAutomatik" in diese Zeit wieder wahr wird...
dann muss ich mir was anderes einfallen lassen, das ein weiteres DOIF den Timer direkt löscht.

Mfg Steffen

Otto123

Alles gut - warum nimmst Du nicht genau die gleiche Konstruktion? Hast Du meinen weiter oben Vorschlag probiert? Geht der nicht?
Der sollte genau das machen was Du willst.

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

Steffen

Guten Abend,

ich habe jetzt mal den Code von dir genommen und werde ihn morgen Live testen, danke erstmal schon für die geduld und hilfe!

Sollte ich den wait Timer auf das 2 cmd setzten,
also "0:600"?

Mfg Steffen

Otto123

Hi Steffen,

ja ich denke der Gedanke mit dem wait ist richtig, Du willst ja das zweite "IF" verzögern. Er wird Dir bloß immer wieder die erste Nachricht schicken wenn Du wiederkommst bevor der Timer abgelaufen ist. Das musst Du irgendwie anders abfangen.

Nachricht separat und event-on-change-reading als Gedanke dazu.

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