#!/usr/bin/python

import RPi.GPIO as GPIO
import time
import datetime

# BCM GPIO-Referenzen verwenden
# und GPIO-Eingang definieren
GPIO.setmode(GPIO.BCM)
GPIO_PIR = 17

# Set pin as input
GPIO.setup(GPIO_PIR,GPIO.IN)

# Callback-Funktion
def MOTION(PIR_GPIO):
  # Datei aktualisieren
  outf = open("/tmp/motion","w")
  outf.write("Bewegung erkannt: " + str(datetime.datetime.now()))
  outf.close()
  # Bildschirmausgabe
  print "%s - Bewegung erkannt!" % datetime.datetime.now()

# Programmstart
print "Warten, bis PIR im Ruhezustand ist ..."
# Schleife, bis PIR == 0 ist, max. 60 Sekunden
count = 600
while GPIO.input(GPIO_PIR) != 0 and count > 0:
  time.sleep(0.5)
  count = count - 1
print "Bereit ..."
print "%s - Warten auf Bewegung" % datetime.datetime.now()

try:
  # Ereignis definieren: steigende Flanke
  GPIO.add_event_detect(GPIO_PIR, GPIO.RISING, callback=MOTION)
  # laenger schlafen - Callback wird durch die Flanke aktiviert
  while True:
    time.sleep(60)

except Exception, e1:
  print "ERR: GPIO LED " + str(e1)
  print "Ende..."
  GPIO.cleanup()
  exit()
