def emptyBucket(sbsID): pydb.runSQL( "INSERT INTO task (taskName,taskSensorName,taskSensorID,taskStatus,taskComment,taskStartTime) VALUES ('Empty','Smart Bucket'," + sbsID + ",1,'Started from web api',NOW())" ) return "Emptying Bucket " + sbsID
def emptyBucket(taskID): try: result = pydb.runSQL("SELECT * FROM task WHERE taskID = "+str(taskID)+" AND taskStatus = 2") sensorID = result[0]['taskSensorID'] result = pydb.runSQL("SELECT * FROM sbs WHERE sbsID = "+str(sensorID)) depthpin = result[0]['sbsDepthPin'] print "depth pin: "+str(depthpin) bucketEmpty = False while (bucketEmpty == False): #andata = raspi.getAnalogData(int(depthpin),0) result = pydb.runSQL("SELECT * FROM task WHERE taskID = "+str(taskID)) taskStatus = result[0]['taskStatus'] val = 0 arrayValues = [] for x in range(0,5): val = raspi.getAnalogData(int(depthpin),0) arrayValues.append(int(val)) time.sleep(.1) val = np.mean(arrayValues) andata = val if (float(andata) > EMPTYVAL): print "EMPTY, waiting 60 seconds then closing valve!... "+str(andata) changeLightStatus(GREENPIN) pydb.runSQL("UPDATE task set taskStatus = '0', taskEndTime = NOW() WHERE taskID = "+str(taskID)) time.sleep(60) switchEmptyValve(sensorID,1) bucketEmpty = True elif (float(andata) < FULLVAL): changeLightStatus(REDPIN) switchEmptyValve(sensorID,0) print "FULL, Emptying! "+str(andata) elif (int(taskStatus) != 2): changeLightStatus(GREENPIN) pydb.runSQL("UPDATE task taskEndTime = NOW() WHERE taskID = "+str(taskID)) switchEmptyValve(sensorID,1) bucketEmpty = True else: changeLightStatus(YELLOWPIN) switchEmptyValve(sensorID,0) print "Emptying... "+str(andata) time.sleep(1) except KeyboardInterrupt: switchEmptyValve(sensorID,1) sys.exit(2)
def turnLEDOff(pin,st): pydb.runSQL("update `gpio`.`pinStatus` set pinStatus = '0' WHERE pinNumber = '"+str(pin)+"';") time.sleep(st) return
def switchEmptyValve(sensorID,pinStatus): #print "running sql "+str(pinStatus)+" "+str(EMPTYVALVEPIN) #pinStatus = 0 is open, pinStatus = 1 is closed pydb.runSQL("update `sbs`.`sbs` set sbsEmptyPinStatus = '"+str(pinStatus)+"' WHERE sbsID = "+str(sensorID))
def switchFillValve(sensorID,pinStatus): #pinStatus = 0 is open, pinStatus = 1 is closed pydb.runSQL("update `sbs`.`sbs` set sbsFillPinStatus = '"+str(pinStatus)+"' WHERE sbsID = "+str(sensorID))
#!/usr/bin/env python import time import os import subprocess import RPi.GPIO as GPIO import pydb import sbs import threading import itertools GPIO.setmode(GPIO.BCM) while True: result = pydb.runSQL("SELECT * FROM sbs") for row in result: pinNumber = int(row["sbsFillPin"]) pinStatus = True if int(row["sbsFillPinStatus"]) == 1 else False GPIO.setup(pinNumber, GPIO.OUT) GPIO.output(pinNumber, pinStatus) pinNumber = int(row["sbsEmptyPin"]) pinStatus = True if int(row["sbsEmptyPinStatus"]) == 1 else False GPIO.setup(pinNumber, GPIO.OUT) GPIO.output(pinNumber, pinStatus) time.sleep(1)
#!/usr/bin/env python import time import os import subprocess import RPi.GPIO as GPIO import pydb import sbs import threading import itertools GPIO.setmode(GPIO.BCM) while True: result = pydb.runSQL("SELECT * FROM task WHERE taskStatus = 1") for row in result: if (str(row['taskName']) == "Empty"): print "Empty Bucket" pydb.runSQL("UPDATE task set taskStatus = '2' WHERE taskID = "+str(row['taskID'])) sbs.emptyBucket(row['taskID']) if (str(row['taskName']) == "Fill"): print "Fill Bucket" pydb.runSQL("UPDATE task set taskStatus = '2' WHERE taskID = "+str(row['taskID'])) sbs.fillBucket(row['taskID']) time.sleep(1)
def logsql(temp,humid,solar,imgtime): pydb.runSQL("insert into `gpio`.`weather` (`temp`,`humid`,`solar`,`imgtime`,`timestamp`) values ('"+temp+"','"+humid+"','"+solar+"','"+imgtime+"','"+time.strftime("%Y-%m-%d %H:%M:%S")+"');")