FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Mois_Alexander am 30 Januar 2016, 23:12:51

Titel: Notify Funktion nur bei Statuswechsel
Beitrag von: Mois_Alexander am 30 Januar 2016, 23:12:51
Hi Leute,

ich hab meine Garagentoröffner mit einem Raspi über die GPIO Kontakte an FHEM angebunden. Ich kann nun also über die Android App oder die Webseite die Garagentore öffnen und schließen, oder besser gesagt konnte ich. Denn letzte Woche hat einer der Motoren den Geist aufgegeben und ich musste einen neuen Öffner anschaffen. Als ich den dann montiert hatte musste ich feststellen, dass man die Öffnungsfunktion des Antriebs immer erst per Fernbedienung "entriegeln" muss bevor man das Tor öffnen kann. Ich hab viel rumprobiert komm aber zu keiner Lösung ohne die Fernbedienung mit zu benutzen.

Mein Gedanke war nun ich löte einen GPIO Kontakt an den Schalter der Fernbedienung und immer dann wenn das Tor zugeht wir nach ein paar Sekunden von der Fernbedienung das Entriegelungssignal gesendet. Das hab ich auch hinbekommen. Dazu hab ich einen neuen GPIO Ausgang definiert und zusätzlich einen Dummy der das Notify ausführt.

Das sieht dann mal so aus:

define TorEntsperren RPI_GPIO 25
attr TorEntsperren direction output
attr TorEntsperren icon secur_open
attr TorEntsperren room Garage
define TorEntsperrDummy notify LED24:off sleep 1;; set TorEntsperren on-for-timer 2

Das Ganze funktioniert auch, nur ein kleines Problem hab noch. Das Notify wird nicht nur ausgeführt wenn das Tor zugeht sondern immer dann wenn die GPIOs zyklisch abgefragt werden. Eigentlich auch kein Problem, aber die Fernbedienung läuft ja mit Batterie (12V liefert der Raspi leider nicht) und wenn die nun alle paar Minuten senden muss ist die auch bald leer.

Meine Frage:
Kann ich das Notify nur dann ausführen lassen wenn ein Wechsel von ON zu OFF stattfindet?


Danke schon mal für die Mühe.
Alex
Titel: Antw:Notify Funktion nur bei Statuswechsel
Beitrag von: betateilchen am 30 Januar 2016, 23:14:47
ja, event-on-change-reading ist das Zauberwort für die Suche.
Titel: Antw:Notify Funktion nur bei Statuswechsel
Beitrag von: Mois_Alexander am 01 Februar 2016, 21:52:36
Danke das war der Tipp der mich zum Ziel gebracht hat.

Für andere Anfänger die mit der kurzen Beschreibung der "event-on-change-reading" aus der Commandref nicht weiterkommen eine kurze Erklärung wie ich es zum Laufen gekriegt hab.

Erst mal der relevante Teil aus der fhem.cfg :

define LED24 RPI_GPIO 24
attr LED24 alias Tor_links
attr LED24 direction output
attr LED24 event-on-change-reading state
attr LED24 fp_PlanGarage 300,386,0,LED24
attr LED24 icon fts_garage
attr LED24 poll_interval 5
attr LED24 room Garage

define TorEntsperren RPI_GPIO 25
attr TorEntsperren direction output
attr TorEntsperren icon secur_open
attr TorEntsperren room Garage
define TorEntsperrDummy notify LED24:off sleep 1;; set TorEntsperren on-for-timer 2


Nun zur Erklärung. Ich hab einen Readkontakt an jedem Tor, der über einen GPIO Kontakt des RasPi ausgelesen wird. Wenn ein Tor offen steht leuchtet zusätzlich eine LED die auch über einen GPIO Kontakt aktiviert wird. Das ist die LED24 die im oberen Teil definiert wird. Ohne die "event-on-cange-reading" Funktion wird der Ausgang zyklisch abgefragt, erscheint im Log und Eventmonitor und löst auch das nachfolgende Ereignis zyklisch mit aus.
Der zweite Abschnitt definiert die Ansteuerung für meine Fernbedienung. Die "notify" Funktion fragt die LED24 ab und würde bei jeder zyklischen Abfrage auch die "set" Funktion ausführen.
Mit der "event-on-cange-reading" Funktion wird jetzt nur noch dann ein Event (Log-Eintrag, notify mit set) wenn sich der Zustand auch geändert hat.

Danke nochmal
Alex