import RPi.GPIO as GPIO import datetime import time import logging import os GPIO.setmode(GPIO.BCM) # set up BCM GPIO numbering GPIO.setwarnings(False) GPIO.setup(27, GPIO.IN) # Read output from IR sensor # Logging logger = logging.getLogger('watermeter') hdlr = logging.FileHandler('/var/log/watermeter.log') formatter = logging.Formatter('%(asctime)s %(levelname)s %(message)s') hdlr.setFormatter(formatter) logger.addHandler(hdlr) logger.setLevel(logging.INFO) sensorstate = 0 # Define a threaded callback function to run in another thread when events are detected def my_callback(channel): global sensorstate if GPIO.input(27): # if port 27 == 1 #ts = datetime.datetime.now() #print ts," Sensor detected on 27, sensorstate:", sensorstate if sensorstate == 1: sensorstate = 0 else: sensorstate = 1 logger.info("1 liter") # Update domoticz with new counter os.system('curl -s "http://127.0.0.1:8080/json.htm?type=command¶m=udevice&idx=19&svalue=1" > /dev/null') # when a changing edge is detected on port 25, regardless of whatever # else is happening in the program, the function my_callback will be run GPIO.add_event_detect(27, GPIO.BOTH, callback=my_callback, bouncetime=200) while True: time.sleep(2)