def takephoto(target): logger.info('take picture %s', datetime.now().strftime("%Y-%m-%d %H:%M:%S")) hardwaremod.takephoto() # save action in database actuatordbmod.insertdataintable(target,1) print "Action", target ," " , datetime.now() return True
def takephoto(target): logger.info('take picture %s', datetime.now().strftime("%Y-%m-%d %H:%M:%S")) hardwaremod.takephoto() # save action in database actuatordbmod.insertdataintable(target, 1) print "Action", target, " ", datetime.now()
def pulsenutrient(target, activationseconds): duration = 1000 * hardwaremod.toint(activationseconds, 0) print target, " ", duration, " ", datetime.now() logger.info('Doser Pulse, pulse time for ms = %s', duration) pulseok = hardwaremod.makepulse(target, duration) # salva su database actuatordbmod.insertdataintable(target, duration) return pulseok
def sendmail(target): logger.info('send Mail %s', datetime.now().strftime("%Y-%m-%d %H:%M:%S")) # save action in database issent = emailmod.sendmail( target, "report", "Periodic system report generated automatically") if issent: actuatordbmod.insertdataintable(target, 1) print "Action", target, " ", datetime.now()
def sendmail(target): logger.info('send Mail %s', datetime.now().strftime("%Y-%m-%d %H:%M:%S")) # save action in database issent=emailmod.sendmail(target,"report","Periodic system report generated automatically") if issent: actuatordbmod.insertdataintable(target,1) print "Action", target , " " , datetime.now() return True
def activatewater(element, duration): # check the activation of the doser before the pump doseron = autofertilizermod.checkactivate(element, duration) #activate pump hardwaremod.makepulse(element, duration) # salva su database logger.info('%s Pump ON, optional time for msec = %s', element, duration) print 'Pump ON, optional time for msec =', duration actuatordbmod.insertdataintable(element, duration)
def activatewater(element, duration): # check the activation of the doser before the pump doseron=autofertilizermod.checkactivate(element,duration) #activate pump hardwaremod.makepulse(element,duration) # salva su database logger.info('%s Pump ON, optional time for msec = %s', element, duration) print 'Pump ON, optional time for msec =', duration actuatordbmod.insertdataintable(element,duration)
def activateandregister(target,activationseconds): # function to activate the actuators duration=1000*hardwaremod.toint(activationseconds,0) print target, " ",duration, " " , datetime.now() logger.info('Doser Pulse, pulse time for ms = %s', duration) # start pulse pulseok=hardwaremod.makepulse(target,duration) # salva su database if "Started" in pulseok: actuatordbmod.insertdataintable(target,duration) return pulseok
def activateandregister(target,activationseconds): # function to activate the actuators duration=hardwaremod.toint(activationseconds,0) print(target, " ",duration, " " , datetime.now()) logger.info('Pulse time for sec = %s', duration) # start pulse pulseok=hardwaremod.makepulse(target,duration) # salva su database if "Started" in pulseok: actuatordbmod.insertdataintable(target,duration) return pulseok
def activatedoser(element, duration): print element, " ",duration, " " , datetime.now() logger.info('Doser Pulse, pulse time for ms = %s', duration) pulseok=hardwaremod.makepulse(element,duration) # salva su database actuatordbmod.insertdataintable(element,duration) # put flag down global AUTO_data statusdataDBmod.write_status_data(AUTO_data,element,"tobeactivated",False) statusdataDBmod.write_status_data(AUTO_data,element,"duration",0) statusdataDBmod.write_status_data(AUTO_data,element,"triggerdate",datetime.now())
def activatedoser(target, duration): print target, " ", duration, " ", datetime.now() logger.info('Doser Pulse, pulse time for ms = %s', duration) pulseok = hardwaremod.makepulse(target, duration) # salva su database actuatordbmod.insertdataintable(target, duration) # put flag down global AUTO_data AUTO_data[target]["tobeactivated"] = False AUTO_data[target]["duration"] = 0 AUTO_data[target]["triggerdate"] = datetime.now()
def activateactuator( target, value ): # return true in case the state change: activation is >0 or a different position from prevoius position. # check the actuator isok = False actuatortype = hardwaremod.searchdata(hardwaremod.HW_INFO_NAME, target, hardwaremod.HW_CTRL_CMD) supportedactuators = ["pulse", "servo", "stepper"] # stepper motor if actuatortype == "stepper": out, isok = hardwaremod.GO_stepper_position(target, value) if isok: actuatordbmod.insertdataintable(target, value) # pulse if actuatortype == "pulse": duration = 1000 * hardwaremod.toint(value, 0) # check the fertilizer doser flag before activating the pulse doseron = autofertilizermod.checkactivate(element, duration) # start pulse pulseok = hardwaremod.makepulse(target, duration) # salva su database if "Started" in pulseok: actuatordbmod.insertdataintable(target, duration) isok = True # servo motor if actuatortype == "servo": out, isok = hardwaremod.servoangle(target, value, 0.5) if isok: actuatordbmod.insertdataintable(target, value) return isok
def activateactuator(target, value): # return true in case the state change: activation is >0 or a different position from prevoius position. # check the actuator isok=False actuatortype=hardwaremod.searchdata(hardwaremod.HW_INFO_NAME,target,hardwaremod.HW_CTRL_CMD) supportedactuators=["pulse","servo","stepper"] # stepper motor if actuatortype=="stepper": out, isok = hardwaremod.GO_stepper_position(target,value) if isok: actuatordbmod.insertdataintable(target,value) # pulse if actuatortype=="pulse": duration=1000*hardwaremod.toint(value,0) # check the fertilizer doser flag before activating the pulse doseron=autofertilizermod.checkactivate(target,duration) # start pulse pulseok=hardwaremod.makepulse(target,duration) # salva su database if "Started" in pulseok: actuatordbmod.insertdataintable(target,duration) isok=True # servo motor if actuatortype=="servo": out, isok = hardwaremod.servoangle(target,value,0.5) if isok: actuatordbmod.insertdataintable(target,value) return isok
def activateactuator( target, value ): # return true in case the state change: activation is >0 or a different position from prevoius position. # check the actuator isok = False actuatortype = hardwaremod.searchdata(hardwaremod.HW_INFO_NAME, target, hardwaremod.HW_CTRL_CMD) supportedactuators = ["pulse", "servo", "stepper"] # stepper motor if actuatortype == "stepper": out, isok = hardwaremod.GO_stepper_position(target, value) if isok: actuatordbmod.insertdataintable(target, value) # hbridge motor if actuatortype == "hbridge": out, isok = hardwaremod.GO_hbridge_position(target, value) if isok: actuatordbmod.insertdataintable(target, value) # pulse if actuatortype == "pulse": duration = hardwaremod.toint(value, 0) # check the fertilizer doser flag before activating the pulse doseron = autofertilizermod.checkactivate(target, duration) # start pulse pulseok = hardwaremod.makepulse(target, duration) # salva su database if "Started" in pulseok: actuatordbmod.insertdataintable(target, duration) isok = True # servo motor if actuatortype == "servo": out, isok = hardwaremod.servoangle(target, value, 0.5) if isok: actuatordbmod.insertdataintable(target, value) # photo if actuatortype == "photo": duration = hardwaremod.toint(value, 0) if duration > 0: isok = hardwaremod.takephoto(True) # save action in database if isok: actuatordbmod.insertdataintable(target, 1) # mail if (actuatortype == "mail+info+link") or (actuatortype == "mail+info"): if value > 0: mailtext = str(value) isok = emailmod.sendmail(target, "info", "Automation Value:" + mailtext) # save action in database if isok: actuatordbmod.insertdataintable(target, 1) return isok
def startpump(target, activationseconds, MinAveragetemp, MaxAverageHumid): duration = 1000 * hardwaremod.toint(activationseconds, 0) print target, " ", duration, " ", datetime.now() logger.info('Startpump evaluation') # evaluate parameters #MinAverageLight=500 not used now MinutesOfAverage = 120 #minutes in which the average data is calculated from sensor sampling print "waterpump check" logger.info('execute water pump check %s', datetime.now().strftime("%Y-%m-%d %H:%M:%S")) # then check the temperature and Humidity print "Check Humidity and Temperature" hsensornamelist = hardwaremod.getsensornamebymeasure( hardwaremod.MEASURELIST[1]) if hsensornamelist: sensordata = [] hsensorname = hsensornamelist[0] # get first found sensor in the list sensordbmod.getsensordbdata(hsensorname, sensordata) starttimecalc = datetime.now() - timedelta( minutes=int(MinutesOfAverage)) humquantity = sensordbmod.EvaluateDataPeriod(sensordata, starttimecalc, datetime.now())["average"] logger.info( 'Waterpump Check parameter if humquantity=%s < MaxAverageHumid=%s ', str(humquantity), str(MaxAverageHumid)) print 'Waterpump Check parameter if humquantity=', humquantity, ' < MaxAverageHumid=', MaxAverageHumid tsensornamelist = hardwaremod.getsensornamebymeasure( hardwaremod.MEASURELIST[0]) if tsensornamelist: sensordata = [] tsensorname = tsensornamelist[0] # get first found sensor in the list sensordbmod.getsensordbdata(tsensorname, sensordata) starttimecalc = datetime.now() - timedelta( minutes=int(MinutesOfAverage)) tempquantity = sensordbmod.EvaluateDataPeriod( sensordata, starttimecalc, datetime.now())["average"] logger.info( 'Waterpump Check parameter if tempquantity=%s > MinAveragetemp=%s ', str(tempquantity), str(MinAveragetemp)) print 'Waterpump Check parameter if tempquantity=', tempquantity, ' > MinAveragetemp=', MinAveragetemp MinAveragetempnum = hardwaremod.tonumber(MinAveragetemp, "NA") MaxAverageHumidnum = hardwaremod.tonumber(MaxAverageHumid, "NA") # all the below conditions should be verified to start the PUMP pumpit = True if (MinAveragetempnum != "NA"): if (tempquantity > MinAveragetempnum): logger.info( 'Temperature check PASSED, tempquantity=%s > MinAveragetemp=%s ', str(tempquantity), str(MinAveragetemp)) else: logger.info('Temperature check FAILED') print 'Temperature check FAILED' pumpit = False if (MaxAverageHumidnum != "NA"): if (humquantity < MaxAverageHumidnum): logger.info( 'Humidity check PASSED, humquantity=%s < MaxAverageHumid=%s ', str(humquantity), str(MaxAverageHumid)) else: logger.info('Humidity check FAILED') print 'Humidity check FAILED' pumpit = False if pumpit: hardwaremod.makepulse(target, duration) # salva su database logger.info('Pump ON, optional time for sec = %s', duration) print 'Pump ON, optional time for sec =', duration actuatordbmod.insertdataintable(target, duration)
def startpump(target, activationseconds, MinAveragetemp, MaxAverageHumid): logger.info('WateringPlan Startpump evaluation: %s', target) #workmode=autowateringmod.checkworkmode(target) #if workmode=="Full Auto": if target in autowateringmod.allowwateringplan: if not autowateringmod.allowwateringplan[target]: logger.info( 'WateringPlan: %s pump activation blocked by automation', target) pumpit = False return False duration = hardwaremod.toint(activationseconds, 0) print target, " ", duration, " ", datetime.now() # evaluate parameters #MinAverageLight=500 not used now MinutesOfAverage = 120 #minutes in which the average data is calculated from sensor sampling print "waterpump check" logger.info('execute water pump check %s', datetime.now().strftime("%Y-%m-%d %H:%M:%S")) # then check the temperature and Humidity print "Check Humidity and Temperature" MinAveragetempnum = hardwaremod.tonumber(MinAveragetemp, "NA") MaxAverageHumidnum = hardwaremod.tonumber(MaxAverageHumid, "NA") # all the below conditions should be verified to start the PUMP pumpit = True hsensornamelist = hardwaremod.getsensornamebymeasure( hardwaremod.MEASURELIST[1]) if hsensornamelist: sensordata = [] hsensorname = hsensornamelist[0] # get first found sensor in the list sensordbmod.getsensordbdata(hsensorname, sensordata) starttimecalc = datetime.now() - timedelta( minutes=int(MinutesOfAverage)) isok, quantitylist = sensordbmod.EvaluateDataPeriod( sensordata, starttimecalc, datetime.now()) humquantity = quantitylist["average"] logger.info( 'Waterpump Check parameter if humquantity=%s < MaxAverageHumid=%s ', str(humquantity), str(MaxAverageHumid)) print 'Waterpump Check parameter if humquantity=', humquantity, ' < MaxAverageHumid=', MaxAverageHumid if (MaxAverageHumidnum != "NA"): if (humquantity < MaxAverageHumidnum): logger.info( 'Humidity check PASSED, humquantity=%s < MaxAverageHumid=%s ', str(humquantity), str(MaxAverageHumid)) else: logger.info('Humidity check FAILED') print 'Humidity check FAILED' pumpit = False tsensornamelist = hardwaremod.getsensornamebymeasure( hardwaremod.MEASURELIST[0]) if tsensornamelist: sensordata = [] tsensorname = tsensornamelist[0] # get first found sensor in the list sensordbmod.getsensordbdata(tsensorname, sensordata) starttimecalc = datetime.now() - timedelta( minutes=int(MinutesOfAverage)) isok, quantitylist = sensordbmod.EvaluateDataPeriod( sensordata, starttimecalc, datetime.now()) tempquantity = quantitylist["average"] logger.info( 'Waterpump Check parameter if tempquantity=%s > MinAveragetemp=%s ', str(tempquantity), str(MinAveragetemp)) print 'Waterpump Check parameter if tempquantity=', tempquantity, ' > MinAveragetemp=', MinAveragetemp if (MinAveragetempnum != "NA"): if (tempquantity > MinAveragetempnum): logger.info( 'Temperature check PASSED, tempquantity=%s > MinAveragetemp=%s ', str(tempquantity), str(MinAveragetemp)) else: logger.info('Temperature check FAILED') print 'Temperature check FAILED' pumpit = False if pumpit: # activation of the doser before the pump doseron = autofertilizermod.checkactivate(target, duration) # watering hardwaremod.makepulse(target, duration) # salva su database logger.info('Switch Pump %s ON, optional time for sec = %s', target, duration) print 'Pump ON, optional time for sec =', duration actuatordbmod.insertdataintable(target, duration) return True
def startpump(target,activationseconds,MinAveragetemp,MaxAverageHumid): logger.info('WateringPlan Startpump evaluation: %s', target) #workmode=autowateringmod.checkworkmode(target) #if workmode=="Full Auto": if target in autowateringmod.allowwateringplan: if not autowateringmod.allowwateringplan[target]: logger.info('WateringPlan: %s pump activation blocked by automation', target) pumpit=False return False duration=1000*hardwaremod.toint(activationseconds,0) print target, " ",duration, " " , datetime.now() # evaluate parameters #MinAverageLight=500 not used now MinutesOfAverage=120 #minutes in which the average data is calculated from sensor sampling print "waterpump check" logger.info('execute water pump check %s', datetime.now().strftime("%Y-%m-%d %H:%M:%S")) # then check the temperature and Humidity print "Check Humidity and Temperature" MinAveragetempnum=hardwaremod.tonumber(MinAveragetemp,"NA") MaxAverageHumidnum=hardwaremod.tonumber(MaxAverageHumid,"NA") # all the below conditions should be verified to start the PUMP pumpit=True hsensornamelist=hardwaremod.getsensornamebymeasure(hardwaremod.MEASURELIST[1]) if hsensornamelist: sensordata=[] hsensorname=hsensornamelist[0] # get first found sensor in the list sensordbmod.getsensordbdata(hsensorname,sensordata) starttimecalc=datetime.now()-timedelta(minutes=int(MinutesOfAverage)) humquantity=sensordbmod.EvaluateDataPeriod(sensordata,starttimecalc,datetime.now())["average"] logger.info('Waterpump Check parameter if humquantity=%s < MaxAverageHumid=%s ', str(humquantity), str(MaxAverageHumid)) print 'Waterpump Check parameter if humquantity=',humquantity,' < MaxAverageHumid=' ,MaxAverageHumid if (MaxAverageHumidnum!="NA"): if (humquantity<MaxAverageHumidnum): logger.info('Humidity check PASSED, humquantity=%s < MaxAverageHumid=%s ', str(humquantity), str(MaxAverageHumid)) else: logger.info('Humidity check FAILED') print 'Humidity check FAILED' pumpit=False tsensornamelist=hardwaremod.getsensornamebymeasure(hardwaremod.MEASURELIST[0]) if tsensornamelist: sensordata=[] tsensorname=tsensornamelist[0] # get first found sensor in the list sensordbmod.getsensordbdata(tsensorname,sensordata) starttimecalc=datetime.now()-timedelta(minutes=int(MinutesOfAverage)) tempquantity=sensordbmod.EvaluateDataPeriod(sensordata,starttimecalc,datetime.now())["average"] logger.info('Waterpump Check parameter if tempquantity=%s > MinAveragetemp=%s ', str(tempquantity), str(MinAveragetemp)) print 'Waterpump Check parameter if tempquantity=',tempquantity,' > MinAveragetemp=' ,MinAveragetemp if (MinAveragetempnum!="NA"): if (tempquantity>MinAveragetempnum): logger.info('Temperature check PASSED, tempquantity=%s > MinAveragetemp=%s ', str(tempquantity), str(MinAveragetemp)) else: logger.info('Temperature check FAILED') print 'Temperature check FAILED' pumpit=False if pumpit: # activation of the doser before the pump doseron=autofertilizermod.checkactivate(target,duration) # watering hardwaremod.makepulse(target,duration) # salva su database logger.info('Switch Pump %s ON, optional time for sec = %s', target, duration) print 'Pump ON, optional time for sec =', duration actuatordbmod.insertdataintable(target,duration) return True