Hi hi !
Ich versuche gerade mit einem Notify ein Structure auszulesen und habe entweder einen Denkfehler oder mir fehlen ein paar Klammern oder Semikolons ;-) Zunächst mal der Code:
define Lueftungstopp notify alle_Fenster:state:.* { if (ReadingsVal("alle_Fenster","state","") eq "undefined") { fhem("define Lueftungstoppvorlauf at +00:05 set Helios_KWL Register v00102=0")} elsif (ReadingsVal("alle_Fenster","state","") eq "closed") { if (defined($defs{Lueftungstoppvorlauf})) {fhem("delete Lueftungstoppvorlauf")} elsif {fhem("set Helios_KWL Register v00102=1")}}}
Was ich mir denke:
Geht ein Fenster auf liefert mir Structure ein "undefined". Ich möchte über das Lüftungsstoppvorlauf zeitversetzt nach 5 Minuten meine Lüftung abschalten.
Sind wieder alle Fenster in weniger als 5 Minuten zu: das AT löschen, die Lüftung bleibt unberührt.
Sind wieder alle Fenster nach mehr als 5 Minuten zu: die Lüftung wieder einschalten.
Sieht jemand was ich falsch mache ? Das AT wird nicht erzeugt :(
Danke,
Chris
- wenn du nicht das addStateEvent in deinem notify gesetzt hast bekommst du kein event mit state als reding namen. schau in den eventMonitor. das ist vermutlich dein haupt problem.
- falls es probleme mit klammern oder ; gibt: schau ins log.
- wenn deine strucure undefined liefert hast du clientstate_behavior und clientstate_priority nicht wie vorgesehen verwendet.
- statt ReadingsVal zu verwenden nimm $EVENT bzw. $EVTPART1. das spart die extra abfragen.
- wenn es nur im ein einziges device geht das du überwachen willst: schau dir watchdog. das spart das at und löschen des selbigen
- wenn es mehrere devices sind die du unabhängig voneinander überwachen willst schau dir das hier: https://forum.fhem.de/index.php/topic,62501.msg546144.html#msg546144 (https://forum.fhem.de/index.php/topic,62501.msg546144.html#msg546144) an oder etwas weiter oben mit notify statt DOIF.
gruss
andre