Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import RPi.GPIO as GPIO
- from MCP3008 import MCP3008
- import time
- ##################################################################
- ##################### CUSTOMIZEABLE SETTINGS #####################
- ##################################################################
- SETTINGS = {
- "PLANTS": [
- {
- "NAME": "Tomaten",
- "MOISTURE_CHANNELS": [1, 2], # of MCP3008
- "MOISTURE_THRESHOLD": 50, # if the average analog value of all sensors is above of this threshold, the Pump will turn on
- "WATER_PUMP_GPIO": 23, # GPIO Number (BCM) for the Relais
- "WATERING_TIME": 10, # Seconds, how long the pump should be turned on
- },
- ]
- }
- ##################################################################
- ################# END OF CUSTOMIZEABLE SETTINGS ##################
- ##################################################################
- def wateringPlants():
- # read moisture
- adc = MCP3008()
- for plantObject in SETTINGS["PLANTS"]:
- value = 0
- for ch in plantObject["MOISTURE_CHANNELS"]:
- # read 10 times to avoid measuring errors
- v = 0
- for i in range(10):
- v += adc.read( channel = ch )
- v /= 1.0
- value += v
- value /= float(len(plantObject["MOISTURE_CHANNELS"]))
- if value > plantObject["MOISTURE_THRESHOLD"]:
- # turn pump on for some seconds
- GPIO.setup(plantObject["WATER_PUMP_GPIO"], GPIO.OUT)
- GPIO.output(plantObject["WATER_PUMP_GPIO"], GPIO.HIGH)
- time.sleep(plantObject["WATERING_TIME"])
- GPIO.output(plantObject["WATER_PUMP_GPIO"], GPIO.LOW)
- if __name__ == '__main__':
- try:
- GPIO.setwarnings(False)
- GPIO.setmode(GPIO.BCM)
- # execute functions
- checkLight()
- wateringPlants()
- checkWindow()
- except:
- GPIO.cleanup()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement