def __init__(self, screen): global port self.has_connection_to_birdhouse = False self.initializing = True self.orig_data = { } self.bhserial = None self.port = port if not port: raise Exception("I don't know what port to use!") super(Main, self).__init__(screen, screen.height * 2 // 3, screen.width * 2 // 3, hover_focus=True, title="Birdhouse Configurator") layout = Layout([100], fill_frame=True) self.add_layout(layout) self.layout = layout # For use when detecting changes # Add some colors to our palette self.palette["changed"] = (Screen.COLOUR_RED, Screen.A_NORMAL, Screen.COLOUR_BLUE) self._status_msg = Label("Welcome!") self.reset_form() # Connection info layout.add_widget(Text("Birdhouse Number:", "birdhouse_number", validator=r"^\d\d\d$", on_change=self.input_changed)) self.layout.find_widget("birdhouse_number").value = args.number layout.add_widget(RadioButtons([("Red", "Red"), ("Yellow", "Yellow"), ("Green", "Green"), ("Cycle", "all"), ("Off", "off")], "Test LEDs", "led_test", on_change=self.on_test_leds_changed)) self.layout.find_widget("led_test").value = "off" # Parameters layout.add_widget(Text("Uptime:", "uptime")) layout.find_widget("uptime").disabled=True layout.add_widget(Text("Temp Sensor:", "temperatureSensor")) layout.find_widget("temperatureSensor").disabled=True layout.add_widget(Text("Found Plantower Sensor:", "plantowerSensorDetected")) layout.find_widget("plantowerSensorDetected").disabled=True layout.add_widget(Text("WiFi Status:", "wifi_status")) layout.find_widget("wifi_status").disabled=True layout.add_widget(Text("MQTT Status:", "mqtt_status")) layout.find_widget("mqtt_status").disabled=True layout.add_widget(RadioButtons([("Traditional (R/Y/G)", 'RYG'), ("Traditional, wired backward", 'RYG_REVERSED'), ("Single square LED", 'DOTSTAR'), ("Single round LED", '4PIN')], "LED Style:", "led_style", on_change=self.on_led_style_changed)) layout.add_widget(Text("Device Token:", "device_token", on_change=self.input_changed)) layout.add_widget(Text("Local SSID:", "local_ssid", on_change=self.input_changed)) layout.find_widget("local_ssid").disabled=True layout.add_widget(Text("Local Password:"******"local_pass", on_change=self.input_changed)) layout.add_widget(Text("WiFi SSID:", "wifi_ssid", on_change=self.input_changed)) layout.add_widget(Text("WiFi Password:"******"wifi_pass", on_change=self.input_changed)) layout.add_widget(Text("MQTT Url:", "mqtt_url", on_change=self.input_changed)) layout.add_widget(Text("MQTT Port:", "mqtt_port", on_change=self.input_changed)) layout.add_widget(Divider()) # Buttons layout2 = Layout([1, 1, 1, 1]) self.add_layout(layout2) layout2.add_widget(Button("Server", self.server_config), 0) layout2.add_widget(Button("Commit", self.write_values), 0) layout2.add_widget(Button("Refresh", self.reload_values), 1) # layout2.add_widget(Button("Rescan Ports", self.scan_ports), 1) layout2.add_widget(Button("Reboot Birdhouse", self.reboot), 2) layout2.add_widget(Button("Exit", self._quit), 3) layout3 = Layout([100]) self.add_layout(layout3) layout3.add_widget(Divider()) layout3.add_widget(Button("Finalize", self.finalize), 0) layout3.add_widget(Button("Get Token from SSID", self.retrieve_token), 0) # Status message layout4 = Layout([100]) self.add_layout(layout4) layout4.add_widget(Divider()) layout4.add_widget(self._status_msg) self.fix() # Calculate positions of widgets self.initializing = False self.bhserial = serial.Serial(port, 115200, timeout=5) self.query_birdhouse(port) self.port = port self.has_connection_to_birdhouse = True self.input_changed() self.overwrite_params_with_cmd_line_values = False
def __init__(self, screen, settings, tbapi, serial): self.has_connection_to_birdhouse = False self.initializing = True self.orig_data = {} self.tbapi = tbapi self.token_ok = False self.bhserial = serial self.settings = settings # For keeping track of threads self.busy = False # Is a thread off doing something? self.timeout = 0 # When will that the active thread be considered tardy and marked absent? self.active_thread = None # if not port: # raise Exception("I don't know what port to use!") super(MainMenu, self).__init__(screen, screen.height * 2 // 3, screen.width * 2 // 3, hover_focus=True, title="Birdhouse Configurator") layout = Layout([100], fill_frame=True) self.add_layout(layout) self.layout = layout # For use when detecting changes # Add some colors to our palette self.palette["changed"] = (Screen.COLOUR_RED, Screen.A_NORMAL, Screen.COLOUR_BLUE) self._status_msg = Label("Welcome!") # User supplied data: layout.add_widget( Text("Birdhouse Number:", "birdhouse_number", validator=r'^\d+$', on_change=self.on_birdhouse_number_changed, on_blur=partial(self.on_blurred, "birdhouse_number", True))) layout.add_widget( Text("Device Token:", "device_token", validator=token_validation_pattern, on_blur=partial(self.on_blurred, "device_token", True))) layout.add_widget( Text("Local Password:"******"local_pass", on_blur=partial(self.on_blurred, "local_pass", False))) layout.add_widget( Text("WiFi SSID:", "wifi_ssid", on_blur=partial(self.on_blurred, "wifi_ssid", False))) layout.add_widget( Text("WiFi Password:"******"wifi_pass", on_blur=partial(self.on_blurred, "wifi_pass", False))) layout.add_widget( RadioButtons(led_styles, "LED Style:", "led_style", on_change=self.on_led_style_changed)) # provision.py [<number> --token TOKEN --ledstyle LEDSTYLE --wifissid SSID --wifipass PASSWORD --devicepass PASSWORD] # layout.add_widget(RadioButtons([("Red", "Red"), ("Yellow", "Yellow"), ("Green", "Green"), ("Cycle", "all"), ("Off", "off")], "Test LEDs", "led_test", on_change=self.on_test_leds_changed)) # self.layout.find_widget("led_test").value = "off" # Parameters layout.add_widget(Text("Using device on Port:", "port")) layout.find_widget("port").disabled = True # layout.find_widget("port").value = settings.portname or "Device not found! Please plug it in!" layout.add_widget( Text("Local SSID:", "local_ssid", on_change=self.input_changed)) layout.find_widget("local_ssid").disabled = True layout.add_widget(Divider()) # Buttons layout2 = Layout([1, 1]) self.add_layout(layout2) layout2.add_widget( Button("[Install firmware]", self.install_firmware, add_box=False), 0) layout2.add_widget(Button("[Exit]", self._quit, add_box=False), 1) layout3 = Layout([16, 15, 8]) self.add_layout(layout3) layout3.add_widget( Button("[Write settings]", self.save_values_to_device, add_box=False), 0) layout3.add_widget( Button("[Load settings]", self.load_values_from_device, add_box=False), 1) layout3.add_widget(Button("[Reboot]", self.reboot, add_box=False), 2) # Status message layout_status = Layout([100]) self.add_layout(layout_status) layout_status.add_widget(self._status_msg) self.fix() # Calculate positions of widgets self.initializing = False self.has_connection_to_birdhouse = False self.input_changed() self.overwrite_params_with_cmd_line_values = False self.set_widgets_from_settings()