Hallo zusammen,
habe mal eine Frage zum Notify Befehl und ob er der richtige ist um folgendes ab zu bilden:
Habe einen Türsensor "SensorTor" der unter Readings folgendes ausgibt:
Readings:
alarm: AccessControl: Window/Door is open, arg 0000
oder
alarm: AccessControl: Window/Door is closed, arg 0000
Damit möchte ich nun den State von einem Schalter "Tor" ändern, also wenn open = state on und wenn closed = off
Habe also folgendes Notify erstellt:
define TorStatus notify SensorTor AccessControl: Window/Door is open, arg 0000 set Tor status:on
Funktioniert so aber nicht, bekomme lt. log die Meldung: 2016.12.18 12:16:37 3: TorStatus return value: Unknown command AccessControl:, try help.
Kann man das so nicht abbilden ?
Vielen Dank
vg
David
Es wäre schön, wenn Du codetags benutzen würdes (#-Button oben)
Der Ausdruck für den Event (erster Parameter im notify) ist ein regular expression und darf keine Leerzeichen enthalten
Ausserdem muss der Ausdruck für Deine Fall aus <device>:<event> bestehen - wiederum ohne Leerzeichen
Hallo David,
wie heist denn genau das reading von dem Sensor (Alarm? AccessControl? beides?)? Hat der im State reading auch open oder closed drin stehen? Wenn nicht wie heißt das reading und was steht alles genau in dem reading als wert drin.
Der Notify Befehl würde z.B wenn das reading AccessControl heißt folgendermaßen.
define TorStatus notify SensorTor:AccessControl:.* set Tor $EVTPART3
"SensorTor:AccessControl:.*" ist der regex part der sich das reading holt
"set Tor $EVTPART3" setzt den state von dem Schalter Tor auf den 3. Wert aus dem Reading. wenn das hier Window/Door is closed, arg 0000
der Inhalt von dem Reading ist, ist der 3. Wert hier "closed".
Hoffe ich konnte dir etwas helfen.
Gruß
Alex
Hi Alex,
habe ein Screenshot vom Reading angehängt :)
Im Sate hat er leider nicht open oder closed drin stehen, deswegen wusste ich auch nicht recht wie ich es aufbauen soll. Aber dein Beispiel hat mich schon einiges weiter gebracht, viele Dank!
Kann ich denn das reading $EVTPART3 = closed oder open auch noch wandeln in on oder off ? Da Tor ein schalter ist bin ich mir nicht sicher wie er dann closed oder open umsetzt, aber ich probiere es gleich einfach mal aus :)
Danke dir
vg
David
So habe mir das noch mal angeschaut und mal nachgestellt mit Dummys. Also dein Reading heißt "alarm", alles was danach kommt ist ja dann der Wert von dem Reading.
Dein Code muss so aussehen:
define TorStatus notify SensorTor:alarm:.* {if (("$EVTPART4") eq "closed,") {fhem ("set Tor off");;}else { fhem ("set Tor on");;}}
WICHTIG ist das bei dem closed ein "," dahinter ist weil es bei dir im Reading auch direkt an dem closed und open dran hängt.
Damit müsste es funktionieren.
Gruß
Alex
Zitat von: wildea am 18 Dezember 2016, 13:46:54
WICHTIG ist das bei dem closed ein "," dahinter ist weil es bei dir im Reading auch direkt an dem closed und open dran hängt.
Geht auch ohne Komma...
define TorStatus notify SensorTor:alarm:.* { if (("$EVENT") =~ /closed/) {fhem ("set Tor off");;} else { fhem ("set Tor on");;} }
Zitat von: betateilchen am 18 Dezember 2016, 13:54:20
Geht auch ohne Komma...
define TorStatus notify SensorTor:alarm:.* { if (("$EVENT) =~ /^closed/) {fhem ("set Tor off");;} else { fhem ("set Tor on");;} }
Super ja mit dem ganzen regex bin ich noch etwas auf Kriegsfuß :-)