Hallo,
neben der Auswertung anderer Signal an GPIO (Wasser- und Stromzähler) habe ich an drei GPIO's auch Kontakte von meiner "Alarmanlage" montiert.
Ein Schalter dient dazu, die Anlage "scharf" zu stellen (GPIO 27)
Die zwei anderen sind Türkontake (offen wenn Tür offen), an GPIO 4 und 17
Die prinzipielle Erfassung der Türimpulse funktioniert (über fallende oder steigende Impulse wird auch erkannt, ob die Tür auf oder zu geht ("... GPIO.BOTH ...")
Prinzip soll sein:
1. Tür auf (LivRoom) => Türimpuls (an GPIO 4) wird registriert, in Logfile geschrieben
2. Jetzt soll überprüft werden, ob Alarmanlage "scharf" ist, also Schalter an GPIO27 geschlossen ist
3. Wenn "scharf", 1s warten und prüfen, ob die Tür immer noch offen ist (GPIO 4)
Wenn ja, starte die Alarmaktion (Pushnachricht aufs Handy)
Wenn nein: Protokolliere einen Fehlalarm
Bei Schritt zwei habe ich ein Problem, wie kann ich innerhalb eines Interrupt-Aufrufs prüfen, welcher Zustand ein anderer GPIO hat?
Hier die Teile meines Python-Codes:
...
GpioLifRoom=4
GpioAlarmswitch=27
...
GPIO.setup(GpioLifRoom, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
GPIO.setup(GpioAlarmswitch, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
...
...
def CallLivRoom(channel):
print " Living door signal received"
if GPIO.input(channel) == GPIO.HIGH:
print "~ Living door open"
# HIER muesste die Ueberpruefung rein, ob GPIO 27 "high" ist, Alarmanlage "scharf" ist:
# und dann die naechsten Schritte entsprechend abgearbeitet werden ....:
time.sleep(1)
print "end wait 1 Living wait"
if GPIO.input(channel) == GPIO.HIGH:
print "!! immer noch living room open signal UND Alarm ist scharf => ALARM !!..."
else:
print "-- Fehl-Impuls, kein Living-room open signal mehr"
else:
# Wenn Eingang LOW ist, Ausgabe im Terminal erzeugen
print "# Living door closed "
....
...
GPIO.add_event_detect(GpioLifRoom, GPIO.BOTH, callback=CallLivRoom, bouncetime=100)
GPIO.add_event_detect(GpioAlarmswitch, GPIO.BOTH, callback=CallAlarmswitch, bouncetime=100
...
<eof>
Alles anzeigen
Danke für Tipps, evtl. stehe ich auch nur auf dem Schlauch