#!/usr/bin/python import sys import requests import Adafruit_DHT import config import RPi.GPIO as GPIO # Try to read the state of GPIO_PIN_TANKLEVELx and GPIO_PIN_TANKFULL GPIO.setmode(GPIO.BCM) #GPIO.setup(config.GPIO_PIN_TANKLEVEL0, GPIO.IN, pull_up_down=GPIO.PUD_DOWN) #GPIO.setup(config.GPIO_PIN_TANKLEVEL1, GPIO.IN, pull_up_down=GPIO.PUD_DOWN) #GPIO.setup(config.GPIO_PIN_TANKLEVEL2, GPIO.IN, pull_up_down=GPIO.PUD_DOWN) #GPIO.setup(config.GPIO_PIN_TANKLEVEL3, GPIO.IN, pull_up_down=GPIO.PUD_DOWN) GPIO.setup(config.GPIO_PIN_TANKLEVEL4, GPIO.IN, pull_up_down=GPIO.PUD_DOWN) GPIO.setup(config.GPIO_PIN_TANKFULL, GPIO.IN, pull_up_down=GPIO.PUD_DOWN) # tank sensor has inverse logic - 0 when it is full 1 when it is not # so we are inverting its value here # tankLevel0 = (GPIO.input(config.GPIO_PIN_TANKLEVEL0) == GPIO.LOW) # tankLevel1 = (GPIO.input(config.GPIO_PIN_TANKLEVEL1) == GPIO.LOW) # tankLevel2 = (GPIO.input(config.GPIO_PIN_TANKLEVEL2) == GPIO.LOW) # tankLevel3 = (GPIO.input(config.GPIO_PIN_TANKLEVEL3) == GPIO.LOW) tankLevel4 = (GPIO.input(config.GPIO_PIN_TANKLEVEL4) == GPIO.LOW) tankFull = (GPIO.input(config.GPIO_PIN_TANKFULL) == GPIO.LOW) GPIO.cleanup() # print 'Bacva Level0: {}'.format(tankLevel0) # print 'Bacva Level1: {}'.format(tankLevel1) # print 'Bacva Level2: {}'.format(tankLevel2) # print 'Bacva Level3: {}'.format(tankLevel3) print 'Bacva Level4: {}'.format(tankLevel4) print 'Bacva puna: {}'.format(tankFull) # Go on to DHT SENSOR_TYPE = Adafruit_DHT.DHT11 controller_id = config.CONTROLLER_ID owner = "Controller: %s" % controller_id startPumpingAt = config.START_PUMPING_AT stopPumpingAt = config.STOP_PUMPING_AT # Try to grab a sensor reading. Use the read_retry method which will retry up # to 15 times to get a sensor reading (waiting 2 seconds between each retry). humidity, temperature = Adafruit_DHT.read_retry(SENSOR_TYPE, config.GPIO_PIN_DHT) # Un-comment the line below to convert the temperature to Fahrenheit. # temperature = temperature * 9/5.0 + 32 # Note that sometimes you won't get a reading and # the results will be null (because Linux can't # guarantee the timing of calls to read the sensor). # If this happens try again! if tankFull is not None: response = requests.post(config.SENSORDATA_URL, json={"owner": owner, "temperatureValue": temperature, "humidityValue":humidity, # "tankLevel0": "1" if tankLevel0 else "0", # "tankLevel1": "1" if tankLevel1 else "0", # "tankLevel2": "1" if tankLevel2 else "0", # "tankLevel3": "1" if tankLevel3 else "0", "tankLevel4": "1" if tankLevel4 else "0", "tankFull": "1" if tankFull else "0", "startPumpingAt": startPumpingAt,"stopPumpingAt": stopPumpingAt,"controllerId": controller_id }) print 'Temp={0:0.1f}*C'.format(temperature) print 'Humidity={0:0.1f}%'.format(humidity) if response.status_code != 200: print 'Failed to send temperature!' else: print 'Failed to get reading. Try again!'