Пример #1
0
def waterPlant(plantNumber):
    # We want to put off this state if Update State is .is locked.   That will prevent Update State from being hosed by this state machine
    if (config.DEBUG):
        print "WP-Attempt Aquire"

    UpdateStateLock.acquire()
    if (config.DEBUG):
        print "WP-UpdateStateLock acquired"

    previousState = state.SGS_State
    #if(state.SGS_State == state.SGS_States.Monitor):
    state.SGS_State = state.SGS_States.Watering
    if (config.USEPUBNUB):
        publishStatusToPubNub()
    if (config.USEBLYNK):
        updateBlynk.blynkStatusUpdate()

    if ((state.Tank_Percentage_Full > config.Tank_Pump_Level)
            or (state.Plant_Water_Request == True)):
        pumpWater(2.0, plantNumber)
        state.Last_Event = "Plant #{:d} Watered at: ".format(
            plantNumber) + time.strftime("%Y-%m-%d %H:%M:%S")
        if (config.USEBLYNK):
            updateBlynk.blynkTerminalUpdate(
                time.strftime("%Y-%m-%d %H:%M:%S") +
                ": Plant #{:d} Watered".format(plantNumber) + "\n")
    else:
        if (config.DEBUG):
            print "Plant #{:d} pumpWater overruled - Tank Empty".format(
                plantNumber)
        if (config.USEBLYNK):
            updateBlynk.blynkTerminalUpdate(
                time.strftime("%Y-%m-%d %H:%M:%S") +
                ": Plant #{:d} pumpWater overruled - Tank Empty".format(
                    plantNumber) + "\n")
        state.Last_Event = "NW-Tank Empty at: " + time.strftime(
            "%Y-%m-%d %H:%M:%S")

    if (config.USEBLYNK):
        updateBlynk.blynkEventUpdate()
    state.SGS_State = previousState
    if (config.USEPUBNUB):
        publishStatusToPubNub()
    if (config.USEBLYNK):
        updateBlynk.blynkStatusUpdate()
    if (config.DEBUG):
        print "WP-Attempt released"

    UpdateStateLock.release()
    if (config.DEBUG):
        print "WP-UpdateStateLock released"
Пример #2
0
def initializeSGSPart3():

        if (config.SWDEBUG):
            if (config.USEBLYNK):
                print("Blynk Status=", updateBlynk.blynkSGSAppOnline())
                updateBlynk.blynkAlarmUpdate();
    
        state.Last_Event = "SGS Started:"+time.strftime("%Y-%m-%d %H:%M:%S")
    
        if (config.USEBLYNK):
            updateBlynk.blynkEventUpdate()
    
        if (config.OLED_Present):
            if (config.LOCKDEBUG):
                 print("Attempt OLEDLock acquired")
            OLEDLock.acquire()
            if (config.LOCKDEBUG):
                 print("OLEDLock acquired")
    	# display logo
            image = Image.open('SmartPlantPiSquare128x64.ppm').convert('1')
    
            display.image(image)
            display.display()
            time.sleep(3.0)
            display.clear()
    
            Scroll_SSD1306.addLineOLED(display,  ("    Welcome to "))
            Scroll_SSD1306.addLineOLED(display,  ("   Smart Garden "))
            if (config.LOCKDEBUG):
                 print("Attempt OLEDLock released")
            OLEDLock.release()
            if (config.LOCKDEBUG):
                 print("OLEDLock released")
    
        
         
        
        # initialize variables
        #
        state.Pump_Water_Full = False
        
                
    
        checkAndWater()
        checkForAlarms()
Пример #3
0
def forceWaterPlant(plantNumber):

            previousState = state.SGS_State;
	    #if(state.SGS_State == state.SGS_States.Monitor):
            state.SGS_State =state.SGS_States.Watering
            if (config.USEPUBNUB):
                publishStatusToPubNub()
            if (config.USEBLYNK):
                updateBlynk.blynkStatusUpdate()
            
            pumpWater(2.0, plantNumber)
            state.Last_Event = "Plant #{:d} Force Watered at: ".format(plantNumber)+time.strftime("%Y-%m-%d %H:%M:%S")
            if (config.USEBLYNK):
                updateBlynk.blynkTerminalUpdate(time.strftime("%Y-%m-%d %H:%M:%S")+": Plant #{:d} Force Watered".format(plantNumber)+"\n")
           
                updateBlynk.blynkEventUpdate()
            state.SGS_State = previousState
            if (config.USEPUBNUB):
                publishStatusToPubNub()
            if (config.USEBLYNK):
                updateBlynk.blynkStatusUpdate()
Пример #4
0
print(util.returnStatusEnable("UseMQTT", config.MQTT_Enable))
print(util.returnStatusLine("Check WLAN", config.enable_WLAN_Detection))
print(
    util.returnStatusLine("WeatherUnderground",
                          config.WeatherUnderground_Present))
print(util.returnStatusLine("UseWeatherStem", config.USEWEATHERSTEM))

print("----------------------")

# startup

pclogging.systemlog(config.INFO,
                    "SkyWeather2 Startup Version " + config.SWVERSION)

if (config.USEBLYNK):
    updateBlynk.blynkEventUpdate("SW Startup Version " + config.SWVERSION)
    updateBlynk.blynkTerminalUpdate("SW Startup Version " + config.SWVERSION)

subjectText = "The " + config.STATIONKEY + " SkyWeather2 Raspberry Pi has #rebooted."
ipAddress = subprocess.check_output(['hostname', '-I'])
bodyText = "SkyWeather2 Version " + config.SWVERSION + " Startup \n" + ipAddress.decode(
) + "\n"
if (config.SunAirPlus_Present):
    sampleSunAirPlus()
    bodyText = bodyText + "\n" + "BV=%0.2fV/BC=%0.2fmA/SV=%0.2fV/SC=%0.2fmA" % (
        batteryVoltage, batteryCurrent, solarVoltage, solarCurrent)

sendemail.sendEmail("test", bodyText, subjectText, config.notifyAddress,
                    config.fromAddress, "")

if (config.USEBLYNK):
Пример #5
0
def checkForAlarms():

	# check to see alarm
        if (config.DEBUG):
		print "checking for alarm"
                if (state.Alarm_Active == True):
                    print "Alarm_Active = True"
                else:
                    print "Alarm_Active = False"
        # initialize 
        list = startAlarmStatementDisplay(display)

        lastAlarm = state.Alarm_Active
	if (state.Alarm_Active == True):
		activeAlarm = False
                state.Is_Alarm_MoistureFault = False
    		
                for i in range(0,config.plant_number):
                    if (state.Moisture_Humidity_Array[i] <= state.Alarm_Moisture_Sensor_Fault):
        		if (config.DEBUG):
                            print "Plant #{:d}---->Moisture Sensor Fault".format(i+1)
                        displayAlarmOLEDDisplay(list, "#{:d}MS FLT!".format(i), 10)
                        state.Is_Alarm_MoistureFault = True
        	
                
                if (state.Alarm_Air_Quality < state.AirQuality_Sensor_Value):
                    if (config.DEBUG):
			print "state.Alarm_Air_Quality=", state.Alarm_Air_Quality
			print "state.AirQuality_Sensor_Value", state.AirQuality_Sensor_Value
                    state.Is_Alarm_AirQuality = True
	            activeAlarm = True
                else:
                    state.Is_Alarm_AirQuality = False

		if (state.Alarm_Temperature >= state.Temperature):
        	    if (config.DEBUG):
			print "---->Low Temperature Alarm!"
	            activeAlarm = True
                    state.Is_Alarm_Temperature = True
                else:
                    state.Is_Alarm_Temperature = False

                state.Is_Alarm_Moisture = False
                for i in range(0,config.plant_number):
                    if (state.Moisture_Humidity_Array[i] <= state.Alarm_Moisture):
        		if (config.DEBUG):
                            print "Plant #{:d}---->Moisture Low Alarm".format(i+1)
                        state.Is_Alarm_Moisture = True
		        activeAlarm = True

		if (state.Alarm_Water  == True ):
		    if (state.Pump_Water_Full == False):
        		if (config.DEBUG):
		        	print "---->Water Empty Alarm!"
			activeAlarm = True
                        state.Is_Alarm_Water = True
                else:
                    state.Is_Alarm_Water = False
		

        	if (config.DEBUG):
			print "activeAlarm = ", activeAlarm		
		if (activeAlarm == True):
                    # hold for display
                    displayActiveAlarms()
                    state.Last_Event = "Alarm Active: "+time.strftime("%Y-%m-%d %H:%M:%S")
                    # release display
                else:
                    print "lastAlarm=", lastAlarm
                    print "activeAlarm=", activeAlarm
                    if (state.Alarm_Last_State != activeAlarm):
                        state.Last_Event = "Alarm Ended: "+time.strftime("%Y-%m-%d %H:%M:%S")
                    else:
                        state.Last_Event = "SGS Running: "+time.strftime("%Y-%m-%d %H:%M:%S")
               
                if (config.USEPUBNUB):
                    publishEventToPubNub()
                if (config.USEBLYNK):
                    updateBlynk.blynkEventUpdate()
		
                if (config.USEPUBNUB): 
	            publishAlarmToPubNub("")
                if (config.USEBLYNK):
                    updateBlynk.blynkAlarmUpdate()    
Пример #6
0
    print "Scheduled Jobs" 
    print "-----------------"
    scheduler.print_jobs()
    print "-----------------"
    
    if (config.DEBUG):
        if (config.USEBLYNK):
            print "Blynk Status=", updateBlynk.blynkSGSAppOnline()
            updateBlynk.blynkAlarmUpdate();

    state.Last_Event = "SGS Started:"+time.strftime("%Y-%m-%d %H:%M:%S")

    if (config.USEPUBNUB):
        publishEventToPubNub()
    if (config.USEBLYNK):
        updateBlynk.blynkEventUpdate()

    if (config.OLED_Present):
        if (config.DEBUG):
             print "Attempt OLEDLock acquired"
        OLEDLock.acquire()
        if (config.DEBUG):
             print "OLEDLock acquired"
	# display logo
    	image = Image.open('SmartPlantPiSquare128x64.ppm').convert('1')

	display.image(image)
	display.display()
	time.sleep(3.0)
	display.clear()
Пример #7
0
print(util.returnStatusEnable("UseMQTT", config.MQTT_Enable))
print(util.returnStatusLine("Check WLAN", config.enable_WLAN_Detection))
print(
    util.returnStatusLine("WeatherUnderground",
                          config.WeatherUnderground_Present))
print(util.returnStatusLine("UseWeatherStem", config.USEWEATHERSTEM))

print("----------------------")

# startup

pclogging.systemlog(config.INFO,
                    "SkyWeather2 Startup Version " + config.SWVERSION)

if (config.USEBLYNK):
    updateBlynk.blynkEventUpdate("SW Startup Version " + config.SWVERSION)
    updateBlynk.blynkTerminalUpdate("SW Startup Version " + config.SWVERSION)

subjectText = "The " + config.STATIONKEY + " SkyWeather2 Raspberry Pi has #rebooted."
ipAddress = subprocess.check_output(['hostname', '-I'])

if (config.USEBLYNK):
    updateBlynk.blynkEventUpdate("IPAddress: " + ipAddress.decode())
    updateBlynk.blynkTerminalUpdate("IPAddress: " + ipAddress.decode())

bodyText = "SkyWeather2 Version " + config.SWVERSION + " Startup \n" + ipAddress.decode(
) + "\n"
if (config.SunAirPlus_Present):
    sampleSunAirPlus()
    bodyText = bodyText + "\n" + "BV=%0.2fV/BC=%0.2fmA/SV=%0.2fV/SC=%0.2fmA" % (
        state.batteryVoltage, state.batteryCurrent, state.solarVoltage,