import network import asyncio from log import Logger, Color from statusled import STATUS_LED async def ensure_network(): from secret import SSID, PASSWORD log = Logger("net", Color.BLUE) nic = network.WLAN(network.STA_IF) log.info("setting up WLAN interface...") nic.active(True) while not nic.active(): await asyncio.sleep(0.1) log.info("connecting...") nic.connect(SSID, PASSWORD) logged = False status_name = { network.STAT_CONNECT_FAIL: "CONNECT_FAIL", network.STAT_CONNECTING: "CONNECTING", network.STAT_IDLE: "IDLE", network.STAT_NO_AP_FOUND: "NO_AP_FOUND", network.STAT_WRONG_PASSWORD: "WRONG_PASSWORD" } while True: if (status := nic.status()) == network.STAT_GOT_IP: # pyright: ignore[reportAny] STATUS_LED.status(2) if not logged: logged = True log.success(f"Got IP: {nic.ifconfig()!r}") rssi = nic.status("rssi") # pyright: ignore[reportAny] log.info(f"{rssi=}") else: logged = False STATUS_LED.status(1) log.warning("status={}".format(status_name.get(status, f"UNKNOWN ({status})"))) # pyright: ignore[reportAny] if status == network.STAT_CONNECT_FAIL or status == network.STAT_NO_AP_FOUND: log.info("retrying in 3s...") await asyncio.sleep(3) nic.connect(SSID, PASSWORD) await asyncio.sleep(1)