def doorbell_callback(client, userdata, msg): if lock_status: with lock: grove_rgb_lcd.setRGB(0, 0, 255) grove_rgb_lcd.setText_norefresh( "Doorbell Rung \nStatus: Unlocked") grovepi.digitalWrite(buzzer, 1) time.sleep(0.3) grovepi.digitalWrite(buzzer, 0) time.sleep(0.1) grovepi.digitalWrite(buzzer, 1) time.sleep(0.1) grovepi.digitalWrite(buzzer, 0) else: with lock: grove_rgb_lcd.setRGB(0, 0, 255) grove_rgb_lcd.setText_norefresh( "Doorbell Rung \nStatus: Locked ") grovepi.digitalWrite(buzzer, 1) time.sleep(0.5) grovepi.digitalWrite(buzzer, 0) time.sleep(0.1) grovepi.digitalWrite(buzzer, 1) time.sleep(0.1) grovepi.digitalWrite(buzzer, 0) time.sleep(1)
def tempF(): time.sleep(0.5) try: #temperatuur en humindity [temp,hum] = grovepi.dht(temphum,0) if math.isnan(temp)==False and math.isnan(hum)==False: if canEdit==True: lcd.setText("Temp:" + str(temp) + "C\n" + "Hum:" + str(hum) + " %") global isNight isNight=in_between(datetime.datetime.now().time(), datetime.time(23, 0, 0), datetime.time(4, 0, 0)) if isNight==True: lcd.setRGB(0,0,0) else: lcd.setRGB(100,100,100) display_status="" client.publish("temp", temp) client.publish("hum", hum) print('temperatuur: ' + temp) except (IOError,TypeError) as ex: error="Error: " + str(ex)
def collect_sensor_data(): """Collects temperature and humidity data :return: The temperature and humidity data collected, formated with atmospheric pressure, air speed, metabolic rate, and clothing level. :rtype: list of tuples """ sensor_data = [] try: for y in range(3): [temp, humid] = grovepi.dht(DHT_SENSOR_PORT, BLUE_DHT) if not math.isnan(temp) and not math.isnan(humid): t_str = str(temp) h_str = str(humid) grove_rgb_lcd.setRGB(127, 127, 127) grove_rgb_lcd.setText_norefresh("Tmp: {} C\nHmd: {} %".format( t_str, h_str)) sensor_data.append(([[1013.25, 0.1, humid, 1.0, 0.61, temp]])) # For DHT11, wait three seconds before next reading time.sleep(3) grove_rgb_lcd.setRGB(0, 0, 0) except (IOError, TypeError) as ex: print("Error: {}".format(str(ex))) shutdown_board() except KeyboardInterrupt: shutdown_board() for index, data in enumerate(sensor_data): print("Sample #{0} collected: {1}".format(index + 1, data)) shutdown_board() return sensor_data
def exit(): time.sleep(0.50) grovepi.digitalWrite(led1,0) time.sleep(0.50) grovepi.digitalWrite(led2,0) time.sleep(0.50) grovepi.digitalWrite(led3,0) time.sleep(0.50) grovepi.digitalWrite(buzzer,0) time.sleep(0.50) grovepi.digitalWrite(relay,0) time.sleep(0.50) client.publish("online", 0) client.publish("led1_status", 0) client.publish("led2_status", 0) client.publish("led3_status", 0) client.publish("relay_status", 0) client.publish("display_status", "") lcd.setRGB(100,100,100) lcd.setText("IOT-DEVICE \nSTOPPING") time.sleep(1) lcd.setRGB(0,0,0) lcd.setText("") time.sleep(0.50)
def lose(): global LoseFlag global EndFlag EndFlag = True lcd.setText("You lose!") lcd.setRGB(32, 0, 0) LoseFlag = False
def win(): global WinFlag global EndFlag EndFlag = True lcd.setText("You win!") lcd.setRGB(0, 32, 0) WinFlag = False
def shutdown_board(): """Turns off LEDs and clears LCD screen""" grovepi.digitalWrite(RED_LED, OFF) grovepi.digitalWrite(GREEN_LED, OFF) grove_rgb_lcd.setRGB(0, 0, 0) grove_rgb_lcd.setText("") print("Job complete. Have an excellent day.")
def hello_msg(client, userdata, message): msg = str(message.payload, "utf-8") if msg == "Hello!": print("Received hello message from phone! Printing to LCD...") grovepi lcd_fail = 5 while lcd_fail > 0: try: grove_rgb_lcd.setText(msg) grove_rgb_lcd.setRGB(50, 100, 100) lcd_fail = 0 except: grove_rgb_lcd.textCommand(0x01) time.sleep(0.2) print("lcd write error, retrying...") lcd_fail -= 1 elif msg == "Goodbye!": print("Received goodbye message from phone! Printing to LCD...") lcd_fail = 5 while lcd_fail > 0: try: grove_rgb_lcd.setText(msg) grove_rgb_lcd.setRGB(0, 0, 0) lcd_fail = 0 except: grove_rgb_lcd.textCommand(0x01) time.sleep(0.2) print("lcd write error, retrying...") lcd_fail -= 1 else: print("Invalid message")
def setColor(time, w, temp, humid): ## Hour factor (brightness) hr = 0 ## Temp factor (inc. red) tm = 0 # Humidity factor (inc. blue) hm = (clamp(0,humid,100) - 50) * 1.5 l.setRGB(e(128 + hr + tm), e(128 + hr), e(128 + hr + hm))
def exit(): reset() lcd.setRGB(100, 100, 100) lcd.setText("IOT-DEVICE \nSTOPPING") sleep(0.1) lcd.setRGB(0, 0, 0) lcd.setText("")
def cleanup(): print("Cleanup") try: grovepi.digitalWrite(led, 0) lcd.setRGB(0, 0, 0) lcd.setText("") fobj.close() except: pass
def lcd_backlight_color(color_tuple): try: tuple_colors = color_tuple.split(",") setRGB(int(tuple_colors[0]), int(tuple_colors[1]), int(tuple_colors[2])) except: logger.error( "Could not set color. Invalid color string: '{}'".format( color_tuple))
def display(in_str, bgcol=(255, 255, 255), in_lcd=use_lcd): print(in_str) try: if in_lcd: lcd.setRGB(bgcol[0], bgcol[1], bgcol[2]) lcd.setText(in_str) except KeyboardInterrupt: sys.exit() except: pass
def write(self, value): self.value = value try: r, g, b = value["rgb"] grove_rgb_lcd.setRGB(r, g, b) except KeyError: pass try: text = value["text"] grove_rgb_lcd.setText(text) except KeyError: pass
def notify(self, data): super(GroveLcdObserver, self).notify(data) txt = [] items = self.latest.items()[self.index : self.index + 4] self.index = 0 if self.index + 4 >= len(self.latest) else self.index + 4 for key, val in items: txt += ['{k}:{v}'.format(k=key.upper(),v=int(val['value']))] if len(txt) > 1: txt = sorted(txt, key=lambda x: len(x)) grove_rgb_lcd.setText(txt[-1] + " " + txt[0] + "\n" + " ".join(txt[1:-1])) else: grove_rgb_lcd.setText(txt[0]) rgb = self.get_level_color(self.get_highest_level(self.latest)) grove_rgb_lcd.setRGB(*rgb)
def init(): lcd.setRGB(0,0,0) lcd.setText("IOT-DEVICE \nBOOTING") time.sleep(5) lcd.setRGB(100,100,100) s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) s.connect(("gmail.com",80)) text=str(s.getsockname()[0]) s.close() while True: lcd.setText("IP: " +str(text)) time.sleep(0.2)
def lcdcallback(client, userdata, msg): keyvalue = str(msg.payload, "utf-8") #w, a, s, or d print(keyvalue) with lock: grove_rgb_lcd.setText_norefresh(f"{keyvalue}") #display key on lcd if keyvalue == "w": grove_rgb_lcd.setRGB(255, 255, 255) #make white if keyvalue == "a": grove_rgb_lcd.setRGB(255, 0, 0) #make red if keyvalue == "s": grove_rgb_lcd.setRGB(0, 255, 0) #make green if keyvalue == "d": grove_rgb_lcd.setRGB(0, 0, 255) #make blue
def init(): global started global client lcd.setRGB(0, 0, 0) lcd.setText("IOT-DEVICE \nSTARTING") client.on_connect = on_connect client.on_message = on_message client.connect_async(MQTT_BROKER, 1883, 60) client.loop_start() # INIT reset() client.publish("online", makeJsonOnlineObject('Box')) sleep(0.1) lcd.setRGB(100, 100, 100) lcd.setText("LOADING ... ") lcd.setText("") started = True
def sensors_test(): """Test the GrovePi DHT sensor, LEDs and RGB LCD screen.""" try: for y in range(3): # Get sensor data and actuate LEDs and RGB LCD screen [temp, humid] = grovepi.dht(DHT_SENSOR_PORT, BLUE_DHT) if not math.isnan(temp) and not math.isnan(humid): if temp >= 20.0: # Temperature is good: Everything is green. grove_rgb_lcd.setRGB(0, 255, 0) grovepi.digitalWrite(GREEN_LED, ON) time.sleep(2) grovepi.digitalWrite(GREEN_LED, OFF) else: # Temperature is too low: Turn to red. grove_rgb_lcd.setRGB(255, 0, 0) grovepi.digitalWrite(RED_LED, ON) time.sleep(2) grovepi.digitalWrite(RED_LED, OFF) t_str = str(temp) h_str = str(humid) print("Temperature: {}C | Humidity: {}%".format(t_str, h_str)) grove_rgb_lcd.setText_norefresh("Tmp: {} C\nHmd: {} %".format( t_str, h_str)) # For DHT22, wait three seconds before next reading time.sleep(3) grove_rgb_lcd.setRGB(0, 0, 0) except (IOError, TypeError) as ex: print("Error: {}".format(str(ex))) shutdown_board() except KeyboardInterrupt: shutdown_board() shutdown_board()
def index(): try: if request.method == "POST": print("Command received") # captures inputted message and clicked color on web page message = request.form['message'] color = request.form['color'] # takes user's info to print out message and color on screen if message == '': return "No message entered" elif color == 'red': grove_rgb_lcd.setRGB(255, 0, 0) grove_rgb_lcd.setText(message) elif color == 'green': grove_rgb_lcd.setRGB(0, 255, 0) grove_rgb_lcd.setText(message) elif color == 'blue': grove_rgb_lcd.setRGB(0, 0, 255) grove_rgb_lcd.setText(message) print("Command processed") return render_template('monitor.html') elif request.method == "GET": return render_template('monitor.html') except ValueError: return "Not found"
def init(): global started global client client.on_connect = on_connect client.on_message = on_message client.connect_async("raspberrypi.local", 1883, 60) client.loop_start() # INIT time.sleep(0.50) grovepi.digitalWrite(led1,0) time.sleep(0.50) grovepi.digitalWrite(led2,0) time.sleep(0.50) grovepi.digitalWrite(led3,0) time.sleep(0.50) grovepi.digitalWrite(buzzer,0) time.sleep(0.50) grovepi.digitalWrite(relay,0) time.sleep(0.50) client.publish("led1_status", 0) client.publish("led2_status", 0) client.publish("led3_status", 0) client.publish("relay_status", 0) client.publish("display_status", "") client.publish("online", 1) time.sleep(2) lcd.setRGB(0,0,0) lcd.setText("IOT-DEVICE \nSTARTING") time.sleep(1) lcd.setRGB(100,100,100) lcd.setText("LOADING ... ") print("\n\nIOT is online\n\n") started=True
def motion(): time.sleep(0.22) try: if grovepi.digitalRead(pir_sensor): global canEdit if canEdit==True: lcd.setText("Welkom thuis") global isNight isNight if isNight==True: lcd.setRGB(0,0,0) else: lcd.setRGB(100,100,100) display_status="" client.publish("motion", 1) #time.sleep(5) else: client.publish("motion", 0) except (IOError,TypeError) as ex: error="Error: " + str(ex) print(error)
def on_message(client, userdata, msg): emotion = str(msg.payload, "utf-8") if emotion == "positive": lcd.setRGB(255,165,0) #orange lcd.setText_norefresh('positive') elif emotion == "negative": lcd.setRGB(255,255,0) #yellow lcd.setText_norefresh('negative') else: #neutral lcd.setRGB(0,255,0) #green lcd.setText_norefresh('neutral')
def set_display(settings): try: if settings['display_mode'] == 'post': # sets color on monitor if settings['color'] == 'red': grove_rgb_lcd.setRGB(255, 0, 0) elif settings['color'] == 'green': grove_rgb_lcd.setRGB(0, 255, 0) elif settings['color'] == 'blue': grove_rgb_lcd.setRGB(0,0, 255) # prints out message on display monitor grove_rgb_lcd.setText(settings['message']) except ValueError: return "Not found"
def set_display(settings): try: if settings['display_mode'] == 'post': # sets color on monitor if settings['color'] == 'red': grove_rgb_lcd.setRGB(255, 0, 0) elif settings['color'] == 'green': grove_rgb_lcd.setRGB(0, 255, 0) elif settings['color'] == 'blue': grove_rgb_lcd.setRGB(0, 0, 255) # prints out message on display monitor grove_rgb_lcd.setText(settings['message']) except ValueError: return "Not found"
def process_sensor_data(label_names, selected_model, sensor_data): """Classify unlabeled sensor data against the selected model and get a prediction. :param label_names: The list of labels. :type label_names: list :param selected_model: The most accurate classifer model in the form of a history object. :type selected_model: object :param sensor_data: The temperature and humidity data collected, formated with atmospheric pressure, air speed, metabolic rate, and clothing level. :type sensor_data: list of tuples """ try: sensor_data = ast.literal_eval(sensor_data) sensation = 0 for j, data in enumerate(sensor_data, start=1): print("Sensor data #{}: Prediction: {}".format( j, label_names[int(selected_model[1].predict(data))])) sensation += int(selected_model[1].predict(data)) sensation = int(sensation / len(sensor_data)) print("Overall sensation: {} ({})".format( sensation, label_names[sensation])) grove_rgb_lcd.setText_norefresh( "Sensation:\n{} ({})".format(sensation, label_names[sensation])) if sensation == 3: # Temperature is good: Everything is green. grove_rgb_lcd.setRGB(0, 255, 0) grovepi.digitalWrite(GREEN_LED, ON) time.sleep(2) grovepi.digitalWrite(GREEN_LED, OFF) grove_rgb_lcd.setRGB(0, 0, 0) grove_rgb_lcd.setText_norefresh("") else: # Temperature is too low: Turn to red. grove_rgb_lcd.setRGB(255, 0, 0) grovepi.digitalWrite(RED_LED, ON) time.sleep(2) grovepi.digitalWrite(RED_LED, OFF) except (IOError, TypeError) as ex: print("Error: {}".format(str(ex))) shutdown_board() except KeyboardInterrupt: shutdown_board() time.sleep(3) shutdown_board()
def sensor_test(): """Collects and displays temperature and humidity data""" sensor_data = [] for x in range(10): try: for y in range(3): [temp, humid] = grovepi.dht(DHT_SENSOR_PORT, BLUE_DHT) if not math.isnan(temp) and not math.isnan(humid): if temp >= 20.0: # Temperature is good: Everything is green. grove_rgb_lcd.setRGB(0, 255, 0) grovepi.digitalWrite(GREEN_LED, ON) time.sleep(2) grovepi.digitalWrite(GREEN_LED, OFF) else: # Temperature is too low: Turn to red. grove_rgb_lcd.setRGB(255, 0, 0) grovepi.digitalWrite(RED_LED, ON) time.sleep(2) grovepi.digitalWrite(RED_LED, OFF) t_str = str(temp) h_str = str(humid) print("Temperature: {}C | Humidity: {}%".format(t_str, h_str)) grove_rgb_lcd.setText_norefresh( "T: {} C\nH: {} %".format(temp, humid)) sensor_data.append([temp, humid]) # For DHT11, wait three seconds before next reading time.sleep(3) except (IOError, TypeError) as ex: print("Error: {}".format(str(ex))) shutdown_board() except KeyboardInterrupt: shutdown_board() print(sensor_data) # Wait 30 seconds before collecting next set of data grove_rgb_lcd.setRGB(0, 0, 0) time.sleep(30) shutdown_board()
def door_status_callback(client, userdata, msg): door_status = str(msg.payload, "utf-8") if lock_status is 0: if door_status == "Motion Detected": with lock: grove_rgb_lcd.setRGB(255, 165, 0) grove_rgb_lcd.setText_norefresh( "Motion Detected \nStatus: Locked ") with lock: grovepi.digitalWrite(buzzer, 0) elif door_status == "SAFETY MODE": with lock: grove_rgb_lcd.setRGB(255, 0, 0) grove_rgb_lcd.setText_norefresh( "SAFETY MODE \nStatus: Locked ") with lock: grovepi.digitalWrite(buzzer, 1) else: with lock: grove_rgb_lcd.setRGB(255, 255, 255) grove_rgb_lcd.setText_norefresh( "No Motion \nStatus: Locked ") with lock: grovepi.digitalWrite(buzzer, 0)
# read temp grovepi.temp(7) grovepi.dht(7, 0) # module_type: # DHT11 0 # DHT22 1 # DHT21 2 # DHT2301 3 # read ultrasonic grovepi.ultrasonicRead(4) import grove_rgb_lcd as lcd # set background to red, green and blue lcd.setRGB(200, 0, 0) time.sleep(1) lcd.setRGB(0, 200, 0) time.sleep(1) lcd.setRGB(0, 0, 200) time.sleep(1) # write text to RGB lcd.setText('Hello There') time.sleep(1) lcd.setRGB(255, 113, 181) time.sleep(1) def ReadDHTandText(dhtport=7): [t, h] = grovepi.dht(dhtport, 0)
def lcd_write_str(value): #print "Write string: " #print value grove_rgb_lcd.setRGB(0, 255, 0) grove_rgb_lcd.setText(value) return 0
def setColor(self, r, g, b): try: grove_rgb_lcd.setRGB(r, g, b) except: pass
print msg print "humidity:",humidity elif msg[:8].lower()=="distance".lower(): if en_grovepi: port=int(msg[8:]) dist=grovepi.ultrasonicRead(port) s.sensorupdate({'distance':dist}) if en_debug: print msg print "distance=",dist elif msg[:3].lower()=="lcd".lower(): if en_grovepi: import grove_rgb_lcd grove_rgb_lcd.setRGB(0,128,0) grove_rgb_lcd.setText(msg[3:]) if en_debug: print msg elif msg[:10].lower()=="setOutput".lower(): if en_grovepi: port=int(msg[10:]) a_read=grovepi.analogRead(port) s.sensorupdate({'analogRead':a_read}) if en_debug: print msg print "Analog Reading: " + str(a_read) else: if en_debug:
def on_connect(client, userdata, flags, rc): print("Connected to server (i.e., broker) with result code " + str(rc)) client.subscribe("anrg-pi1/led") client.message_callback_add("anrg-pi1/led", ledCallBack) client.subscribe("anrg-pi1/lcd") client.message_callback_add("anrg-pi1/lcd", lcdCallBack) client.subscribe("anrg-pi1/tempreture") client.subscribe("anrg-pi1/humidity") def on_message(client, userdata, msg): print("on_message: " + msg.topic + " " + str(msg.payload)) if __name__ == '__main__': #this section is covered in publisher_and_subscriber_example.py grove_rgb_lcd.setRGB(0, 64, 128) client = mqtt.Client() client.on_message = on_message client.on_connect = on_connect client.connect(host="eclipse.usc.edu", port=11000, keepalive=60) client.loop_start() while True: #read tempreture sensor #publish it #read humidity sensor #publish it time.sleep(1)
def lcd_backlight(state): """ Turn the backlight on or off """ if state: setRGB(255, 255, 255) else: setRGB(0, 0, 0)
def lcd_init(): """ Initialize LCD display """ setRGB(255, 255, 255)
client = mqtt.Client() client.on_message = on_message client.on_connect = on_connect client.connect(host="eclipse.usc.edu", port=11000, keepalive=60) client.loop_start() #initiate ports button = 2 ultrasonic_ranger = 3 led = 4 grovepi.pinMode(button, "INPUT") #splashscreen with lock: grove_rgb_lcd.setRGB(255, 255, 255) grove_rgb_lcd.setText("Tim & Andrew\nEE 250") time.sleep(2) grove_rgb_lcd.setText("") while True: with lock: rangervalue = grovepi.ultrasonicRead( ultrasonic_ranger) #check ranger reading client.publish("timandrew/ultrasonicRanger", rangervalue) #publish value to ultrasonicRanger topic with lock: buttonvalue = grovepi.digitalRead(button) #check button reading if buttonvalue: client.publish( "timandrew/button", "Button pressed!"
is, if you run `python3 grovepi_sensors.py` in terminal, this if-statement will be true""" t = grove_i2c_temp_hum_mini.th02() t.getTemperature = protect(t.getTemperature) t.getHumidity = protect(t.getHumidity) if __name__ == '__main__': PORT = 4 # D4 PORTR = 0 PORTW = 1 ldis = -1 lsen = -1 while True: #So we do not poll the sensors too quickly which may introduce noise, #sleep for a reasonable time of 200ms between each iteration. time.sleep(0.8) #try: temp = t.getTemperature() humid = t.getHumidity() #except TypeError: # print ("Error") time.sleep(0.1) grove_rgb_lcd.setText(" " + str(temp) + "cm \n " + str(humid) + "cm") grove_rgb_lcd.setRGB(0, 255, 0) buf = list("Grove -Update without erase") grove_rgb_lcd.setText("".join(buf)) for i in range(len(buf)): buf[i] = "." grove_rgb_lcd.setText_norefresh("".join(buf)) time.sleep(.1)
print msg print "humidity:", humidity elif msg[:8].lower() == "distance".lower(): if en_grovepi: port = int(msg[8:]) dist = grovepi.ultrasonicRead(port) s.sensorupdate({'distance': dist}) if en_debug: print msg print "distance=", dist elif msg[:3].lower() == "lcd".lower(): if en_grovepi: import grove_rgb_lcd grove_rgb_lcd.setRGB(0, 128, 0) grove_rgb_lcd.setText(msg[3:]) if en_debug: print msg elif msg[:10].lower() == "setOutput".lower(): if en_grovepi: port = int(msg[10:]) a_read = grovepi.analogRead(port) s.sensorupdate({'analogRead': a_read}) if en_debug: print msg print "Analog Reading: " + str(a_read) elif msg.lower() == "READ_IR".lower(): print "READ_IR!" if en_ir_sensor == 0:
def shutdown_board(): """Turns off LEDs and clears LCD screen""" grovepi.digitalWrite(RED_LED, OFF) grovepi.digitalWrite(GREEN_LED, OFF) grove_rgb_lcd.setRGB(0, 0, 0) grove_rgb_lcd.setText_norefresh("")
if en_debug: print msg print "distance=",dist elif msg[:3].lower()=="lcd".lower(): if en_grovepi: if en_debug: print msg[:3], msg[3:6],msg[6:] import grove_rgb_lcd if msg[3:6].lower() == "col".lower(): rgb = [] for i in range(0,6,2): rgb.append(int(msg[6:][i:i+2],16)) # convert from one hex string to three ints if en_debug: print "colours are:",rgb[0],rgb[1],rgb[2] grove_rgb_lcd.setRGB(rgb[0],rgb[1],rgb[2]) elif msg[3:6].lower() == "txt".lower(): txt = msg[6:] grove_rgb_lcd.setText(txt) else: pass if en_debug: print msg elif msg[:10].lower()=="setOutput".lower(): if en_grovepi: port=int(msg[10:]) a_read=grovepi.analogRead(port) s.sensorupdate({'analogRead':a_read}) if en_debug: print msg
def main(): global desired_temp_min global desired_temp_max global indoor_temp global outdoor_temp global temp global desired_temp global mode global hvac global wind_on global wind_off global i global flag read() while True: try: # Get indoor temp indoor_temp = int(get_indoor_temp()) # lcd sleep after 5 seonds time.sleep(.2) button_status = grovepi.digitalRead(button) i = i + 1 # if lcd is off turn on, if lcd is on change mode and sound buzzer # lcd sleep after 5 seconds if i < 6: if button_status: i = 0 lcd.setRGB(0,122,0) grovepi.digitalWrite(buzzer_pin, 1) time.sleep(.1) grovepi.digitalWrite(buzzer_pin, 0) if (mode <= 2): mode = mode + 1 else: mode = 0 else: lcd.setRGB(0,0,0) print("asleep") if button_status: i = 0 lcd.setRGB(0,122,0) # state machine for window if (indoor_temp > desired_temp): if (outdoor_temp < desired_temp): if hvac != "wind": # send open window client.publish("rpi-jaeishin/HVAC", str(wind_on)) print(wind_on) hvac = "wind" else: if hvac == "wind": # send close window client.publish("rpi-jaeishin/HVAC", str(wind_off)) print(wind_off) hvac = "AC" if (indoor_temp < desired_temp): if (outdoor_temp < desired_temp): if hvac == "wind": # send close window client.publish("rpi-jaeishin/HVAC", str(wind_off)) print(wind_off) hvac = "heat" else: if hvac != "wind": # send open window client.publish("rpi-jaeishin/HVAC", str(wind_on)) print(wind_on) hvac = "wind" if (indoor_temp == desired_temp): # send message close window if hvac == "wind": client.publish("rpi-jaeishin/HVAC", str(wind_off)) print(wind_off) hvac = "fan" # measure outdoor temp from API outdoor_temp = int(get_weather(DEFAULT_ZIP)) # Set LED to print in correct format #default if (mode == 1): print ("\nmode = 1 - Default") print("Temp: {:>3}F {:>4}".format(indoor_temp, hvac)) print("Desired: {:>3}F".format(desired_temp)) lcd.setText_norefresh("Temp: {:>3}F {:>4}\nDesired: {:>3}F".format(indoor_temp, hvac, desired_temp)) f=open('save.txt', 'w+') f.write(str(desired_temp)) f.close() #outdoor if (mode == 2): print("\nmode = 2 - Outdoor") print("Temp: {:>3}F {:>4}".format(indoor_temp, hvac)) print("Outdoor: {:>3}F".format(outdoor_temp)) lcd.setText_norefresh("Temp: {:>3}F {:>4}\nOutdoor: {:>3.2f}F".format(indoor_temp, hvac, outdoor_temp)) #edit if (mode == 0): print("\nmode = 0 - Edit") # get rotary angle set desired temp desired_temp = get_rotary_angle() print("Set Temp: {:>3}F".format(desired_temp)) lcd.setText_norefresh("Set Temp:{:>3}F".format(desired_temp)) except KeyboardInterrupt: lcd.setRGB(0,0,0) setText_norefresh("") break