Hallo Forum,
ich bräuchte mal bitte etwas hilfe.
warum funktioniert das DOIF so nicht
((substr(ReadingsVal('MAX_0a950d','state',''),0,4) eq "open")) (set MAX_0e5275 desiredTemperature 8,set HCBU disable) DOELSE (set HCBU enable,{Heating_Control_SetAllTemps()})
wenn ich es aber so mache geht es
([MAX_0c3938] eq "opened") (set MAX_0761cf desiredTemperature 8,set HCKZ disable) DOELSE (set HCKZ enable,{Heating_Control_SetAllTemps()})
Ich nehme an, es hat irgendwas mit der Ereignissteuerung zu tun.
Hintergrund: ich möchte dass meine Thermostate runter regeln, wenn das Fenster geöffnet ist. Im normalfall sendet der Fensterkontakt "opened" manchmal jedoch "opened(rf error)". Ich möchte gerne nur auf das "open" reagieren.
grüße
Thomas
state abfragen ist schlecht, dafür ist das Reading onoff da.
Die Diskussion hatten wir vor Monaten bereits im MAX Forum :)
https://forum.fhem.de/index.php/topic,112021.0.html
([MAX_0c3938]=~/open/)
oder noch einfacher, da du ja auf ein Event reagieren willst:
([MAX_0c3938:"open"])
Zitat von: Icinger am 16 Oktober 2020, 08:11:13
oder noch einfacher, da du ja auf ein Event reagieren willst:
([MAX_0c3938:"open"])
kann man letzteres noch irgendwie vereinfachen, dass er auf "open", "opened" und "opened(rf error)" reagiert ?
mein Versuch mit [MAX_0c3938:/open/] funktioniert nicht.
warum wehrst du dich so hartnäckig gegen onoff ?
Zitatkann man letzteres noch irgendwie vereinfachen, dass er auf "open", "opened" und "opened(rf error)" reagiert ?
mein Versuch mit [MAX_0c3938:/open/] funktioniert nicht.
Noch einfacher geht kaum. Wenn du die Commandref liest, wirst du feststellen, dass
ZitatEine Alternative zur Auswertung von Status oder Readings ist das Auswerten von Ereignissen (Events) mit Hilfe von regulären Ausdrücken. Der Suchstring wird als regulärer Ausdruck in Anführungszeichen angegeben. Die Syntax lautet: [<devicename>:"<regex>"]
Ergo ist mein "open" schon ein regex und matcht eben auf
Zitat"open", "opened" und "opened(rf error)"
Allerdings auch auf reopen, Uropenie, Tropen,Antilopenziesel und Skiopening.
Zitat von: supergrobi am 16 Oktober 2020, 07:22:17
warum funktioniert das DOIF so nicht
((substr(ReadingsVal('MAX_0a950d','state',''),0,4) eq "open")) (set MAX_0e5275 desiredTemperature 8,set HCBU disable) DOELSE (set HCBU enable,{Heating_Control_SetAllTemps()})
Weil da kein Trigger definiert wird.
([MAX_0c3938] eq "opened")
reagiert nur auf "opened" und nicht auf "opened(rf error)"
([MAX_0c3938:"open"])
reagiert, wie Icinger schrieb, auf alles was "open" enthält. Kann man beschränken:
([MAX_0c3938:"^open$"])
([MAX_0c3938:onoff:d] ==1)
wäre noch besser
Mir ist nicht klar auf was Du triggern willst.