DOIF und Bewegungsmelder über Pilight Switch

Begonnen von derchrome, 20 April 2017, 21:21:41

Vorheriges Thema - Nächstes Thema

derchrome

Hallo zusammen,
ich möchte gerne eine Lampe schalten, wenn mein Bewegungsmelder auslöst. Soweit so einfach. Ich habe mir den Melder als eigenes Protokoll in Pilight angelegt. Leider sendet der Sensor immer nur ein Off-Signal wenn er ausgelöst wird... Also kann ich auf den Status nicht triggern. Als Internals gibt es bei Pilightswitch z.B. noch den Zeitstempel der letzten Nachricht und einen Nachrichtenzähler. Wie kann ich das denn mit DOIF auswerten?

Probiert habe ich schon:
([Bewegung_Aussen:$PiLightServer_TIME ne time()]) (set lampe on)

Aber das hatte irgendwie keinen Erfolg [emoji17]

Ich würde ja auch eine Veränderung des Nachrichtenzählers als Trigger nehmen, aber dafür müsste ich den alten Wert irgendwie speichern.

Wahrscheinlich ist die Lösung ganz einfach, hat jemand einen Tipp für mich?
Danke im Voraus!

Gesendet von meinem XT1562 mit Tapatalk


Per

Reicht es nicht, auf die Änderung des Nachrichtenzählers zu reagieren und die genauen Werte zu ignorieren?
Also in der Art:
([Bewegung_Aussen:$PiLightServer_Count]) (set ....)

Nebenbei hatte dein Beispiel eh eine vollkommen falsche Syntax!
Zitat von: derchrome am 20 April 2017, 21:21:41([Bewegung_Aussen:$PiLightServer_TIME ne time()]) (set lampe on)
Richtig wäre (rein von der Syntax, nicht vom Ergebnis!)
([Bewegung_Aussen:$PiLightServer_TIME] ne time()) (set lampe on)

Und noch was: Code bitte in Codetags setzen. Liest sich besser.

CoolTux

Schau dir an was für ein Event im Eventmonitor erzeugt wird wenn Bewegung registriert wird und dann Stelle das DOIF auf Event triggern um
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

automatisierer

Zitat von: derchrome am 20 April 2017, 21:21:41

([Bewegung_Aussen:$PiLightServer_TIME ne time()]) (set lampe on)


Das '$' gehört da auch nicht hin. Das wird nur bei Event-Auswertung genutzt um das exakte Ende des zulässigen Events zu markieren oder bei '$SELF' '$DEVICE' '$EVENT' und so weiter.

derchrome

Guten Morgen zusammen,
vielen Dank für eure Unterstützung.

Leider steige ich da nicht ganz durch  ::)
Auf Per's Ansatz würde ich aufbauen wollen, das ist eigentlich genau das was ich wollte, das Auswerten des Nachrichtenzählers.
Probiert habe ich jetzt den Codeschnipsel von Per (einmal mit und einmal ohne $)
([Bewegung_Tor:$PiLightServer_Count]) (set lampe on)
Aber die Lampe geht nicht an...

Vielleicht hilft es zum besseren Verständnis, hier die Internals des Bewegungsmelders:

CFGFN
DEF   grundig 842 842
ID 842
IODev PiLightServer
LASTInputDev PiLightServer
MSGCNT 1876
NAME Bewegung_Tor
NR 5078
PROTOCOL grundig
PiLightServer_MSGCNT 1876
PiLightServer_TIME 2017-04-21 08:39:33
STATE off
SYSCODE
TYPE pilight_switch
UNIT 842


CoolTux

Interessant wäre in erster Linie mal ein list vom Bewegungsmelder Device

also

list Bewegung_Tor

Ergebnis hier in Codetags bitte. Und dann schauen wir mal zusammen.
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

derchrome

#6

Internals:
   CFGFN
   DEF        grundig 842 842
   ID         842
   IODev      PiLightServer
   LASTInputDev PiLightServer
   MSGCNT     2060
   NAME       Bewegung_Tor
   NR         5078
   PROTOCOL   grundig
   PiLightServer_MSGCNT 2060
   PiLightServer_TIME 2017-04-21 08:49:47
   STATE      off
   SYSCODE
   TYPE       pilight_switch
   UNIT       842
   Readings:
     2017-04-21 08:49:47   state           off
     $pilightserver_count:
     Pilightserver_count:
Attributes:
   IODev PiLightServer


automatisierer

#7
die beiden Readings:
$pilightserver_count:
     Pilightserver_count:

gibt es nicht, die sind von DOIF angelegt worden - ist ein Bug und Damian hat es schon in der neusten DOIF Version behoben aber noch nicht veröffentlicht.

Ergo kannst du ein nicht existierendes Reading auch nicht auswerten.

Alles was da auswertbar ist, ist ein 'state off' wobei ich mich frage, ob da wirklich immer nur ein 'off' kommt. Solltest den EventMonitor mal beobachten. Also am besten den EventMonitor-Filter so einstellen, das auf 'Bewegung_Tor.*' gefiltert wird und dann mal schauen was das Device so für Events erzeugt.

derchrome

Es kommt immer nur ein Off, was aber auch an meiner  Implementierung des Protokolls liegen kann. Kann man denn keine Internals auswerten? Oder irgendwas per Notify?

Gesendet von meinem XT1562 mit Tapatalk


CoolTux

Sorry wir haben uns überschnitten. Mir wurde schnell bewusst das ich Unsinn geschrieben habe.
Man kann auf Internals nicht triggern, da sie keinen Event auslösen

Ich würde schon auf das off triggern. Frage ist kommt ein off nur wenn der Bewegungssensor auslöst oder auch wenn einfach mal so der Sensor kurz abgefragt wird?

Mann kann es auch so machen das man ein on-for-timer mit DOIF baut und so kontrolliert das wenn die Lampe noch an ist das DOIF nicht nochmal versucht zu schalten.
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

derchrome

#10
Naja ob on oder off gebe ich übers Protokoll vor. Aber halt keinen Zustandswechsel. Das Off kommt nur wenn er betätigt wird.

Gesendet von meinem XT1562 mit Tapatalk

CoolTux

Na dann ist das doch nicht schlimm

([Bewegung_Tor:"^off$"]) (set lampe:FILTER=STATE!=on on)
attr do always


Sollte so gehen
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

CoolTux

Mach mal statt off, motion und pass das DOIF an. Ist cooler  ;D
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

derchrome

Ah super das funktioniert, danke!
Allerdings sendet der Sensor ca. 40 Mal bei einem Auslösen. Für die Lampe ​nicht schlimm, aber 40 Telegram-Nachrichten zu bekommen ist schon irgendwie anstrengend 🤔
Kann ich auch triggern so dass nur ein Event in z.B. 10 Sekunden
durchgelassen wird?

Gesendet von meinem XT1562 mit Tapatalk


CoolTux

Nein das nicht, aber Du kannst dem DOIF sagen das er erst wieder nach 3s oder so triggern soll. Also die anderen Events die kommen bis 3s nicht beachten. Abe rda musst Du bitte mal im DIOF Forum schauen. Da gab es einige Beispiele von Damian. Oder schau mal in der Commandref.
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