Hauptmenü

Event?

Begonnen von supergrobi, 16 Oktober 2020, 07:22:17

Vorheriges Thema - Nächstes Thema

supergrobi

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

Wzut

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
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

Icinger

([MAX_0c3938]=~/open/)

oder noch einfacher, da du ja auf ein Event reagieren willst:
([MAX_0c3938:"open"])
Verwende deine Zeit nicht mit Erklärungen. Die Menschen hören (lesen) nur, was sie hören (lesen) wollen. (c) Paulo Coelho

supergrobi

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.

Wzut

warum wehrst du dich so hartnäckig gegen onoff ?
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

Icinger

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.
Verwende deine Zeit nicht mit Erklärungen. Die Menschen hören (lesen) nur, was sie hören (lesen) wollen. (c) Paulo Coelho

amenomade

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.
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus