Hauptmenü

Notifiy Befehl

Begonnen von nerothos, 18 Dezember 2016, 12:18:55

Vorheriges Thema - Nächstes Thema

nerothos

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

viegener

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

Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

wildea

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

nerothos

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

wildea

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

betateilchen

#5
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");;} }

-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

wildea

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ß :-)