Refactor wifi connection into separate file
This commit is contained in:
parent
d1199575ff
commit
0365b4c3e2
46
pico/src/connection.py
Normal file
46
pico/src/connection.py
Normal file
@ -0,0 +1,46 @@
|
||||
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)
|
@ -1,53 +1,9 @@
|
||||
import network
|
||||
import asyncio
|
||||
|
||||
from statusled import StatusLED
|
||||
from statusled import STATUS_LED
|
||||
from log import Logger, Color
|
||||
from sensors.ultrasonic import UltraSonicSensor
|
||||
|
||||
STATUS_LED = StatusLED()
|
||||
|
||||
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)
|
||||
|
||||
from connection import ensure_network
|
||||
|
||||
async def read_sensor():
|
||||
log = Logger("tank", Color.CYAN)
|
||||
|
@ -30,3 +30,5 @@ class StatusLED:
|
||||
await asyncio.sleep(t_blink)
|
||||
|
||||
await asyncio.sleep(t_2)
|
||||
|
||||
STATUS_LED = StatusLED()
|
||||
|
Loading…
Reference in New Issue
Block a user