Queue.get nimmt keinen Pin als Argument! Das das so funktioniert liegt nur daran, dass es einen Timeout nimmt, und deine pin-nummer als solchen betrachtet! Ausserdem hast du dadurch einen Bug: wird nur *ein* Event in die Queue geschrieben, erwartest du aber zwei. Und du weisst auch gar nicht, welcher das ist... En kracht nicht, aber pausiert kurz (31ms zB), und macht dann weiter, und das falsch.
Also - raus mit den Argumenten an get, und stattdessen mit 29 bzw 31 vergleichen. Bzw *noch besser ist es, nur eine queue zu verwenden, und ein dictionary zum lookup der notwendigen Werte.
Code
def interrupt_Event(channel):
queue.put((channel, GPIO.input(channel)) # Tupel aus Kanal und HIGH/LOW
URL = "http://192.168.178.103/middleware.php/data/{}.json?value={}"
LOOKUP = {
(31, GPIO.LOW) : URL.format(uuid31, 0),
(31, GPIO.HIGH) : URL.format(uuid31, 100),
(29, GPIO.LOW) : URL.format(uuid29, 0),
(29, GPIO.HIGH) : URL.format(uuid29, 100),
}
...
while True:
url = LOOKUP[queue.get()]
requests.post(url)
Alles anzeigen
Kein Grund rumzuschlafen, die Queue blockiert alleine bis etwas ankommt.