Notify und If Anweisung wollen nicht funktionieren

Begonnen von t1me2die, 20 Oktober 2016, 21:33:43

Vorheriges Thema - Nächstes Thema

Otto123

Zitat von: franky08 am 20 Oktober 2016, 23:10:48
@CoolTux
hab ich was verpasst? Bei mir gehen etliche notify so  ;)
Schalter_Tuer:open ...

Zitat von: CoolTux am 20 Oktober 2016, 23:08:41
Vielleicht so

HM_4E5349.open set FBDECT_fbahahttp_08761_0236145 off

Hallo CoolTux und Franky08,
darf ich da mal nachhaken? Das ist doch ein unterschiedlicher Syntax aber beides funktioniert. Ich habe irgendwie verstanden (das muss aber nicht stimmen!) wenn ich so schreibe wie Franky08, dann wird getriggert auf device:event obwohl ja hinter dem Device im Eventmonitor gar kein Doppelpunkt erscheint. Um ein Beispiel aus dem Eventmonitor von t1me2die zu nehmen:
Zitat2016-10-20 22:51:13 CUL_HM HM_4E5349 battery: ok
Ich könnte damit nicht auf battery:ok triggern sondern nur auf HM_4E5349:battery.* .
So wie CoolTux schreibt würde das notify auch auf einen Event set HM_4E5349 open triggern, der gar nicht von dem Gerät HM_4E5349 kommt.
Wenn ich auf wirklich auf diesen Beispiel Event triggern will, dann würde ich HM_4E5349:battery:.ok schreiben wobei der erste Doppelpunkt Gerät und Event trennt, der zweite Doppelpunkt aber einfach Bestandteil des Events ist und ich das Leerzeichen dazwischen mit einem Punkt oder \s abfange.

Ist das so?

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

Otto123

Zitat von: t1me2die am 21 Oktober 2016, 09:33:47
Ich habe aber noch eine Frage, was beinhaltet "$EVTPART1"? Steht da "open" oder "close" drin?
Hallo Mathias,
nee, da sollte open oder closed drin stehen  ;D

Aber wenn Deine Heizung mit HM gesteuert wird und Dein Fensterkontakt HM ist, dann würde ich beides direkt peeren.

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

t1me2die

#17
Zitat von: Otto123 am 21 Oktober 2016, 09:46:43
Hallo Mathias,
nee, da sollte open oder closed drin stehen  ;D

Aber wenn Deine Heizung mit HM gesteuert wird und Dein Fensterkontakt HM ist, dann würde ich beides direkt peeren.

Gruß Otto

Super, verstanden :-)
Nein, bei meinen Heizungsthermostate handelt es sich um DECT Comet Thermostate, daher bin ich ja nun so froh, dass ich mit dem HomeMatic Fenstersensor die DECT Thermostate steuern kann, da die verbaute "Fenster offen" Funktion bei den Thermostaten nicht richtig funktioniert, da die Temperatur im Raum (insbesondere bei den Heizungen) nicht so stark fällt, dass diese integrierte Funktion anspringt.

Ich hoffe, man hat mich verstanden :-)

Wenn ich das nun also richtig verstanden habe. müsste es wie folgt funktionieren:
Zitat
define WZ_Fenster notify HM_4E5349.(open|closed) { \
                 if( $EVTPART1 eq "open" ) { \
                      fhem "set FBDECT_fbahahttp_10971_0245784 desired-temp 8" \
                 } else { \
                      fhem "set FBDECT_fbahahttp_10971_0245784 desired-temp 21 ;;;; define WZ_Fenster_Zu at +00:30:00 set FBDECT_fbahahttp_10971_0245784 desired-temp 17" \
                 } \
} \
Gerät HM_4E5349 reagiert auf "open" und "closed". Wenn in $EVTPART1 "open" drin steht, dann soll die "desired-temp" von meinem Heizungsthermostat auf 8Grad (sprich "AUS") geschaltet werden.
Falls nicht "open" drin steht wird die "desired-temp" auf 21Grad gesetzt. Außerdem soll 30Minuten später die Temperatur wieder auf 17Grad runtergeschraubt werden.

Nochmals recht herzlichen Dank :-)

Gruß
Mathias

Otto123

Du kannst jederzeit mit einer Zeile Code { Log 3, $NAME $EVENT $EVTPART1 $EVTPART2 } die Ergebnisse ins Logfile schreiben und dir anschauen was konkret drinsteht.
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

CoolTux

Zitat von: Otto123 am 21 Oktober 2016, 09:39:21
Hallo CoolTux und Franky08,
darf ich da mal nachhaken? Das ist doch ein unterschiedlicher Syntax aber beides funktioniert. Ich habe irgendwie verstanden (das muss aber nicht stimmen!) wenn ich so schreibe wie Franky08, dann wird getriggert auf device:event obwohl ja hinter dem Device im Eventmonitor gar kein Doppelpunkt erscheint. Um ein Beispiel aus dem Eventmonitor von t1me2die zu nehmen:Ich könnte damit nicht auf battery:ok triggern sondern nur auf HM_4E5349:battery.* .
So wie CoolTux schreibt würde das notify auch auf einen Event set HM_4E5349 open triggern, der gar nicht von dem Gerät HM_4E5349 kommt.
Wenn ich auf wirklich auf diesen Beispiel Event triggern will, dann würde ich HM_4E5349:battery:.ok schreiben wobei der erste Doppelpunkt Gerät und Event trennt, der zweite Doppelpunkt aber einfach Bestandteil des Events ist und ich das Leerzeichen dazwischen mit einem Punkt oder \s abfange.

Ist das so?

Gruß Otto

Hallo Otto,

Das auf was ich trigger ist das was als STATE Meldung im Eventmonitor kommt. Wenn Du auf ein bestimmtes Reading triggern willst dann musst Du schauen was als Event kommt. In den meisten Fällen aber "DEVICE reading: value"
Ich habe bei meiner Lösung nur auf das geachtet was der Eventmonitor da von sich gibt. Da war zwischen Device und Reading ein Leerzeichen, also habe ich in der Regex ein . für EIN beliebiges Zeichen gewählt.



Grüße
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

t1me2die

#20
Hab es selber gelöst bekommen :-)