import RPi.GPIO as GPIO import time, os, json # Configuration AUTH_KEY = "xxxxxxxxxxxxxxxxxxxxxx-xxxxxxxxxxxxxxxx"; SEND_URL = "https://gcm-http.googleapis.com/gcm/send"; SENDER_CHANNEL = "/topics/bewegung"; COOLDOWN = 10; # Seconds that should be waited between messages NUM_MODULES = 2; # amount of used modules (motion detector, magnetic switch, etc.) MODULES = range(NUM_MODULES); MODULES[0] = { "name": "Wohnzimmer Bewegungsmelder", "gpio": 23}; MODULES[1] = { "name": "Flur Fenster-Magnetkontakt", "gpio": 24}; # Function def sentMessage(channel): for m in MODULES: if channel == m["gpio"]: if not ("lastMessageSent" in m) or ("lastMessageSent" in m and m["lastMessageSent"]+COOLDOWN <= time.time()): m["lastMessageSent"] = int(time.time()); obj = { "O": m["name"], "T": m["lastMessageSent"]}; message = json.JSONEncoder().encode(obj).replace('"', '\\"'); os.system('curl --header "Authorization: key="'+AUTH_KEY+' --header Content-Type:"application/json" '+SEND_URL+' -d \'{"to":"'+SENDER_CHANNEL+'", "data": {"message": "'+message+'" }}\''); return; # Setup GPIO.setmode(GPIO.BCM); GPIO.setwarnings(False); for m in MODULES: GPIO.setup(m["gpio"], GPIO.IN); GPIO.add_event_detect(m["gpio"], GPIO.RISING, callback=sentMessage); # Infinite Loop while True: pass