GPIO abfragen ON/OFF, verhindern dass kurz hintereinander ON/OFF geschaltet wird

Begonnen von RpiEinOzean, 22 März 2019, 16:52:55

Vorheriges Thema - Nächstes Thema

RpiEinOzean

Hallo zusammen,
ich möchte einen GPIO als Eingang benutzen um in Fhem Relais zu schalten.
( Wie GPIO als Eingang benutzt wird ist klar, wie die Relais geschaltet werden ist auch klar. )
Im "Normalfall" wird der GPIO-Port einfach nur auf ON geschaltet. Zu einem späteren Zeitpunkt wird der GPIO-Port auf OFF geschaltet.
Im "nicht Normalfall" Wird der GPIO-Port kurz eingeschaltet und nach ca. 5 Sekunden wieder auf OFF geschaltet.
Der "nicht Normalfall" stellt für mich ein Problem dar weil ich bei den Relais Einschaltverzögerungen und Ausschaltverzögerungen ab dem Moment des "Normalfall" starte.
Das heißt, die Zeitverzögerungen (mit sleep . . .) kommen dabei richtig unangenehm durcheinander.

Nun hier meine Frage:
Kann mir jemand einen Tipp geben wie ich verhindere dass das Signal vom GPIO-Port innerhalb von ca. 15 Sekunden auf OFF gestellt werden kann.
Nach diesen ca. 15 Sekunden brauche ich die OFF Funktion natürlich wieder.
Diese ca. 15 Sekunden kann ich aber vorher nicht bestimmen. Es kann sein dass am GPIO-Port erst nach 8 Stunden das OFF Signal geschaltet wird.

Ich möchte also nur verhindern dass innerhalb der ersten ca. 15 Sekunden die Anlage wieder abgeschaltet wird.

Ich würde mich über einen Schubs in die richtige Richtung freuen.
3 Raspi2 und 7 Raspi3 ca. 35 FAM14, ca. 300 FSR14-2

SouzA

Moin,
1. Ich glaube, es ist die falsche Abteilung im Forum. Was hat das mit EnOcean zu tun?
2. Schau dir mal das DOIF-Modul an. Da kannst du relativ leicht eine Wartezeit einstellen um auf Trigger zu reagieren.

Bis denn
SouzA
Raspi 4, EnOcean TCM310 USB, HM-MOD-UART-USB, Jeelink, hue, AMAD, fully, FRITZBOX, Signalbot, VIERA, Presence BT/Mac, TPLink, Gassistant, Shelly, fhempy, ZigBee

Ellert

Du musst möglichst früh in der Signalkette verhindern, dass der unnormale Fall eintritt, z.B. an der Definition des Eingabegerätes mit event-min-interval, dann werden keine Impulse kürzer als das angegebene Intervall erzeugt.

RpiEinOzean

Anfrage hat sich erledigt.
Habe mir was zusammen gebastelt.
DUMMY_GPIO           = reading vom GPIO-Port on / off
DUMMY_alterWert     = Wert vom DUMMY_GPIO zwischenspeichern
DUMMY_Relais          = Ausgabe an die Relais
define di_alles_AN DOIF ([DUMMY_GPIO:state] eq "on") (set DUMMY_Relais on; sleep 10; set DUMMY_alterWert AUS )

define di_alles_AUS DOIF ([DUMMY_GPIO:state] eq "off" && [DUMMY_alterWert:state] eq "AUS") (set DUMMY_Relais off; set DUMMY_alterWert AN )


3 Raspi2 und 7 Raspi3 ca. 35 FAM14, ca. 300 FSR14-2