(gelöst) DOIF in notify und at

Begonnen von aspe15, 01 Mai 2018, 20:23:44

Vorheriges Thema - Nächstes Thema

aspe15

Hi zusammen!

Ich habe zwar schon länger fhem, aber es immer nur mit einfachen Konfigurationen genutzt. Daher auch nicht besonders viel Ahnung.

Nun wollte ich bei eine Anbindung eines Arduinos an den RasPi eine Art Toröffnungsüberwachung unter FIRMATA probieren. Wenn Schließen vergessen, Pushmeldung senden. Habe das mit Tastern und LEDs auf dem Board simuliert. Lesen und Schalten der Ein- und Ausgänge klappt einwandfrei. Nur das verzögerte Prüfen des Öffnungszustandes und Auswerten mit DOIF klappt nicht.

Kan mir jemand von euch über die Klippe helfen? 2 Tage Wikis und Testen verschiedener Vorschläge führten nicht weiter. Wo mache ich Fehler?
define n_TOR_01 notify TOR_01:reading:.*on set TOR_AUF_OUT on;;define a1 at +00:00:10 define di_TOR_01 DOIF ([TOR_01:reading:.*on]) (set TOR_AUF_2 on) DOELSE (set TOR_AUF_2 off)

Ich füge das Log aus dem Eventmonitor bei:
Zitat2018-05-01 20:05:25 notify n_TOR_01 active
2018-05-01 20:05:25 Global global DEFINED n_TOR_01
2018-05-01 20:05:33 FRM_OUT TOR_AUF_OUT value: on
2018-05-01 20:05:33 at a1 Next: 20:05:43
2018-05-01 20:05:33 Global global DEFINED a1
2018-05-01 20:05:33 FRM_IN TOR_01 reading: on
2018-05-01 20:05:43 DOIF di_TOR_01 cmd: 0
2018-05-01 20:05:43 DOIF di_TOR_01 initialized
2018-05-01 20:05:43 DOIF di_TOR_01 mode: enabled
2018-05-01 20:05:49 FRM_OUT TOR_AUF_OUT value: off

Danke schon mal und Grüße
Alois

amenomade

Lies mal die Dokumentation von DOIF.
Ein DOIF ist ereignisgesteuert. Du willst nur testen, wenn ich richtig verstanden habe, dann musst Du IF statt DOIF nutzen

define a1 at +00:00:10 IF ([TOR_01:reading] eq "on") (set TOR_AUF_2 on) ELSE (set TOR_AUF_2 off)
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

aspe15

Danke hertlichst für die schnelle und kompetente Antwort. Klappt einwandfrei!

Ich hatte die Definition gelsen, aber wohl nicht richtig verstanden bzw. eingeordnet. Da ich einen timer verwende, hatt ich das als Ereignis definiert. Muss mit das alles besser reinziehen, anstatt zu probieren ??? ???

Bis dann ...
Alois