import network import ujson import ure as re import usocket as socket import time from gs.little_apache import LittleApache class Setup: wlans = [] def __init__(self): self.ap_ssid = "Growsystem 1.0" self.ap_password = "password" self.wlans = [] self.selected_ssid = "" self.wlan_password = "" self.pin = "" def scan_wlans(self): print("Scan for WiFis") wlan = network.WLAN(network.STA_IF) wlan.active(True) self.wlans = [w[0].decode() for w in wlan.scan()] print("Detected WiFis: ", self.wlans) wlan.active(False) def start_ap_mode(self): wlan = network.WLAN(network.STA_IF) wlan.active(False) wlan_config = { "ssid": self.ap_ssid, "pw": self.ap_password } print("Switch to ap mode with data:", wlan_config) ap = network.WLAN(network.AP_IF) ap.config(essid=self.ap_ssid, password=self.ap_password) ap.active(True) self.net = ap print("Connect with your browser to:", ap.ifconfig()[0]) def stop_ap_mode(self): print("Stop ap mode") ap = network.WLAN(network.AP_IF) ap.active(False) def get_initial_config_webserver(self): self.la = LittleApache(self.net) self.la.available_wifis = self.wlans self.la.start() config = self.la.http_request.get_content_json() print("start webserver end:", config) return config def save_config(self, config): config = { "ssid": config['ssid'], "password": config['password'], "pin": config['pin'] } print("Save config:", config) with open("/gs/config/initial_config.py", "w") as f: f.write("config = " + ujson.dumps(config)) def switch_to_client_mode(self): print("Switch to client mode") ap = network.WLAN(network.AP_IF) ap.active(False) wlan = network.WLAN(network.STA_IF) wlan.active(True) wlan.connect(self.selected_ssid, self.wlan_password) while not wlan.isconnected(): time.sleep(1) print("Connected to", self.selected_ssid) def setup_pico(self): self.scan_wlans() self.start_ap_mode() config = self.get_initial_config_webserver() self.save_config(config) # self.stop_ap_mode() # self.switch_to_client_mode()