Hallo,
man möge mir verzeihen und ich habe auch Google/das Forum durchsucht und viele, viele Beispiele probiert ... nur klappt es irgendwie nie. Also, ich habe eine Tahoma Box angebunden. Ich möchte nun, wenn einer der UP Schalter auf on wechselt, einen Fritz DECT schalten. Dafür habe ich definiert:
define timerWW notify tahoma_6:OnOffState:on|tahoma_6:OnOffState:off set FBDECT_18 on-for-timer 60
Laut Event Monitor kommt das Ereignis "OnOffState" mit dem Wert "off" bzw. "on" rein. Aber egal was ich versuche, die Steckdose (DECT) wird nicht geschaltet. Fange ich hingegen "tahoma_6:OnOffState*" ab, funktioniert es. Wo liegt denn hier der Fehler? Muss ich mit : oder . arbeiten? Und sind die Abfragen/erwarteten Werte Case-Sensitiv?
Versuchs mal so:
define timerWW notify tahoma_6:OnOffState:.on|tahoma_6:OnOffState:.off set FBDECT_18 on-for-timer 60
Danke die Kombination hatte ich noch nicht probiert. Gerät wird von Ereignis mit einem : getrennt, ok. Aber wieso das :.on? Also wieso :.?
Und sind die Abfragen/erwarteten Werte Case-Sensitiv
Weil dein Ausdruck auf folgendes Event matchen muss:
tahoma_6:OnOffState: off
Das ganze ist ja <NAME>:<EVENT> wobei Name und Event aus folgendem Inhalt besteht:
NAME = "tahoma_6"
EVENT = "OnOffState: off"
Da das Event quasi der Readingname + Wert enthält ist nach dem Readingname ein Doppelpunkt mit Leerzeichen. Dieses Leerzeichen muss man im regulären Ausdruck entsprechend berücksichtigen. Die einfachste Variante ist daher hier einen Punkt einzuschieben.
Gruß
Markus
Ah, das Leerzeichen war der Fehler, ok. Eine Frage noch: Wie kann ich das mit einem IF verstricken? DECT soll nur geschaltet werden, wenn es aktuell nicht geschaltet ist.
define timerWW notify tahoma_6:OnOffState:.on {(if FBDECT_18:state eq "off") {fhem("set FBDECT_18 on-for-timer 60")}}
Zum Beispiel mit dem IF-Befehl (https://fhem.de/commandref_DE.html#IF)
define timerWW notify tahoma_6:OnOffState:.on IF ([FBDECT_18:state] eq "off") (set FBDECT_18 on-for-timer 60)
Vielen Dank für Deine Hilfe!
Cheers!