FHEM Forum

Verschiedenes => Bastelecke => Thema gestartet von: Suner am 26 März 2019, 13:07:54

Titel: Python Hilfe GPIOZERO nur bei Button-Druck "auslösen"
Beitrag von: Suner am 26 März 2019, 13:07:54
Hallo zusammen,
ich bin dabei ein Script für meinen Gaszähler zu basteln.
dafür habe ich HW technisch einen induktiveren Näherungssensor an meinem RPI angeschlossen.
Der Gaszähler G4 RF1 c gibt pro 0,01 kbm Gasverbrauch einen Impuls aus. Der Impuls kommt immer genau nach 0,01 und geht dann weiter, es sei denn es wird genau beim Impuls kein Gas mehr verbraucht, dann bleibt der Sensor aktiv.

habe dann folgendes Script beastelt.. erst mal zum reinen Test des Impulses:

from gpiozero import Button
import datetime
import time
from time import sleep

from time import sleep

button = Button(4)

while True:
        button.wait_for_press()
        datetime.datetime.now().strftime("%a, %d %B %Y %H:%M:%S")
        print(datetime.datetime.now())
        sleep(2)
        print("The button was pressed!")


Das funktioniert sehr gut, es sei denn, der Gaszähler bleibt an der Stelle hängen wo der Impuls dann dauerhaft kommt. dadurch wird ununterbrochen "The button was pressed!" ausgegeben.
Hat jemand da eine Idee wie ich das abfangen kann? mich Interessiert ja eigentlich gar nicht der Zustand des Sensors sondern nur der Zustandswechsel von Released zu pressed.


Ich hoffe mein Problem wird klar und es gibt jemanden der mir helfen kann :(

Danke im Voraus

und Gruß
Suner
Titel: Antw:Python Hilfe GPIOZERO nur bei Button-Druck "auslösen"
Beitrag von: Suner am 27 März 2019, 07:46:38
Ich habe glaube ich selber eine Lösung gefunden mit "wait_for_release"

while True:
        button.wait_for_press()
        datetime.datetime.now().strftime("%a, %d %B %Y %H:%M:%S")
        print(datetime.datetime.now())
        sleep(5)
        print("UND wieder ein m3 mehr Gas verbraucht - Script ausfuehren")
        IpsRpc("IPS_RunScript", [30670])
        button.wait_for_release()