Hallo liebe Community, ich komme mal wieder leider nicht weiter.
Ich habe einen Fenstersensor, dieser liefert mir im "state" auch "open" oder "closed" zurück.
Nun möchte ich gerne mithilfe des notify eine Aktion ausführen, dass schaut bei mir wie folgt aus:
Zitat
HM_4E5349:state:.*
{
if (
(ReadingsVal("HM_4E5349","state",0) eq "open")
)
{ fhem ("set FBDECT_fbahahttp_08761_0236145 off")
}
}
HM_4E5349 ist mein Fenstersensor und das andere ist meine Steckdose.
Ich will nun also erreichen, dass wenn das Fenster aufgeht, die Steckdose ausgeschaltet wird.
Gruß
Mathias
Hallo Mathias,
was geht denn nicht? Wird das notify nicht getriggert? Wird die Bedingung nicht erkannt? Funktioniert der Befehl nicht?
Also bitte testen:
Funktioniert der Befehl in der FHEM Kommandozeile?
{ fhem ("set FBDECT_fbahahttp_08761_0236145 off") }
welchen Wert liefert {(ReadingsVal("HM_4E5349","state",0) eq "open")}
in der FHEM Kommandozeile?
Wie sieht es im Eventmonitor aus in dem Moment der Dich interessiert für das Gerät?
HM_4E5349
Du musst den Eventmonitor öffnen und vor den ".*" noch "HM_4E5349" setzen und dann beobachten.
Gruß Otto
Hallo Otto und danke für deine schnelle Antwort.
Zitat
{ fhem ("set FBDECT_fbahahttp_08761_0236145 off") }
Funktioniert wie gewollt, die Steckdose wird ausgeschaltet
Zitat
{(ReadingsVal("HM_4E5349","state",0) eq "open")}
Zur Zeit ist der Sensor "offen", ReadingsVal liefert "1" zurück.
Im Eventmonitor finde ich folgendes:
Zitat
2016-10-20 22:51:13 CUL_HM HM_4E5349 battery: ok
2016-10-20 22:51:13 CUL_HM HM_4E5349 contact: closed (to myHmUART)
2016-10-20 22:51:13 CUL_HM HM_4E5349 closed
2016-10-20 22:51:13 CUL_HM HM_4E5349 trigDst_115200: noConfig
2016-10-20 22:51:13 CUL_HM HM_4E5349 trigger_cnt: 131
2016-10-20 22:51:15 CUL_HM HM_4E5349 battery: ok
2016-10-20 22:51:15 CUL_HM HM_4E5349 contact: open (to myHmUART)
2016-10-20 22:51:15 CUL_HM HM_4E5349 open
2016-10-20 22:51:15 CUL_HM HM_4E5349 trigDst_115200: noConfig
2016-10-20 22:51:15 CUL_HM HM_4E5349 trigger_cnt: 132
HM_4E5349:state:.* {if (ReadingsVal("HM_4E5349","state",0) eq "open") {
fhem "set FBDECT_fbahahttp_08761_0236145 off"
}
}
nicht getestet, sollte funktionieren.
Da weiter keine Bedingung ausgewertet wird und nur open triggert, geht auch:
HM_4E5349:open set FBDECT_fbahahttp_08761_0236145 off
VG
Frank
Vielleicht so
HM_4E5349.open set FBDECT_fbahahttp_08761_0236145 off
So sollte es gehen. Ist aber nur auf open bezogen, wenn Du mehr machen willst musst es erweitern
@CoolTux
hab ich was verpasst? Bei mir gehen etliche notify so ;)
Beispiel: ;) ;)
define LED11ON notify Schalter_Tuer:open set SZ_dummy open;; set SZ_dummy_kl open
define LED11OFF notify Schalter_Tuer:closed set SZ_dummy closed;; set SZ_dummy_kl closed
ist aber aus der fhem.cfg
Du hattest Dein geschrieben wie ich meines vorbereitet hatte, Du warst einfach schneller wie ich. ;D
Grüße
Zitat von: CoolTux am 20 Oktober 2016, 23:08:41
Vielleicht so
HM_4E5349.open set FBDECT_fbahahttp_08761_0236145 off
So sollte es gehen. Ist aber nur auf open bezogen, wenn Du mehr machen willst musst es erweitern
So funktioniert es. Kann ich nicht den state:.* von dem Sensor auslesen und dann Aufgrund des states dann jeweilige Aktionen vornehmen?
Ja, wenn du auf z.B open und closed triggern willst, dann brauchst du auch if.
Auslesen oder triggern. Den state kann man nicht triggern. Man kann nur Events triggern und nur die die Dein Eventmonitor Dir zeigt.
Vielleicht sagst einfach mal was Du genau machen willst und dann schauen wir mal.
HM_4E5349.(open|closed) {
if( $EVTPART1 eq "open" ) {
fhem "set FBDECT_fbahahttp_08761_0236145 off";
} else {
fhem "set FBDECT_fbahahttp_08761_0236145 on";
}
}
ZitatKann ich nicht den state:.* von dem Sensor auslesen und dann Aufgrund des states dann jeweilige Aktionen vornehmen?
Ich denke mal das der TE je nach Zustand open/closed irgendwas schalten will.
OT
@CoolTux
wir haben uns in Berlin irgendwie verpasst, Wetter war auch schlimm.
P.S. jetzt war ich zu langsam
VG
Frank
Wann warste denn hier? Hättest mal was geschrieben.
Das Wetter ist echt ne Katastrophe, nicht mal die Kinder wollen mehr raus.
War schon im Juli, Hotel Palace, Budapester Strasse, neben dem Europacenter wo es jetzt gebrannt hat Frau war sauer weil das Wetter grottig war, nur ca. 12 Grad, Regen
Zitat von: CoolTux am 20 Oktober 2016, 23:32:43
HM_4E5349.(open|closed) {
if( $EVTPART1 eq "open" ) {
fhem "set FBDECT_fbahahttp_08761_0236145 off";
} else {
fhem "set FBDECT_fbahahttp_08761_0236145 on";
}
}
Ach super, genau das wollte ich erreichen. Mein eigentliches Ziel war es, wenn das Fenster im Wohnzimmer geöffnet ist, dass die Heizung im Wohnzimmer dann ausgeht. Da meine Heizungen aber erst ab dem 30.11. "aktiv" sind, wollte ich genau diesen Fall einfach mit einer Lampe testen :-)
Ich habe aber noch eine Frage, was beinhaltet "$EVTPART1"? Steht da "open" oder "close" drin?
Gruß
Mathias
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
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
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
Du kannst jederzeit mit einer Zeile Code { Log 3, $NAME $EVENT $EVTPART1 $EVTPART2 }
die Ergebnisse ins Logfile schreiben und dir anschauen was konkret drinsteht.
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
Hab es selber gelöst bekommen :-)