Implement re-connection on error

This commit is contained in:
Kai Vogelgesang 2025-07-01 23:06:16 +02:00
parent 4546c6c5d0
commit 1132335ea8
Signed by: kai
GPG Key ID: 3FC8578CC818A9EB

View File

@ -70,13 +70,23 @@ async def ensure_network():
nic = network.WLAN(network.STA_IF)
print("[net] setting up WLAN interface...")
nic.active(True)
while not nic.active():
await asyncio.sleep(0.1)
print("[net] 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 nic.status() == network.STAT_GOT_IP:
if (status := nic.status()) == network.STAT_GOT_IP: # pyright: ignore[reportAny]
STATUS_LED.status(2)
if not logged:
logged = True
@ -85,6 +95,11 @@ async def ensure_network():
print(f"[net] {rssi=}")
else:
STATUS_LED.status(1)
print("[net] 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:
print("[net] retrying in 3s...")
await asyncio.sleep(3)
nic.connect(SSID, PASSWORD)
await asyncio.sleep(1)