Ejemplo n.º 1
0
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
Ejemplo n.º 2
0
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()
Ejemplo n.º 3
0
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
Ejemplo n.º 4
0
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()
Ejemplo n.º 5
0
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	
Ejemplo n.º 6
0
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)
Ejemplo n.º 7
0
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)
Ejemplo n.º 8
0
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
Ejemplo n.º 9
0
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
Ejemplo n.º 10
0
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())
Ejemplo n.º 11
0
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()
Ejemplo n.º 12
0
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
Ejemplo n.º 13
0
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
Ejemplo n.º 14
0
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
Ejemplo n.º 15
0
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)
Ejemplo n.º 16
0
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
Ejemplo n.º 17
0
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