chore(led-driver): add http_poll client and UDP/mDNS test helpers
Made-with: Cursor
This commit is contained in:
71
tests/udp_client.py
Normal file
71
tests/udp_client.py
Normal file
@@ -0,0 +1,71 @@
|
||||
#!/usr/bin/env python3
|
||||
"""UDP discovery test — runs on MicroPython (ESP32).
|
||||
|
||||
Brings up Wi-Fi from settings (test harness only), then **`hello.discover_controller_udp(device_name, wdt)`**.
|
||||
`hello` does not use Settings or connect Wi‑Fi.
|
||||
|
||||
In firmware, **`main.py`** discovers the controller IP in RAM for HTTP; it is not written to settings.
|
||||
|
||||
Deploy `src` (including `hello.py`), then from host with cwd `led-driver`:
|
||||
|
||||
mpremote connect PORT run tests/udp_client.py
|
||||
"""
|
||||
|
||||
import time
|
||||
|
||||
import network
|
||||
import utime
|
||||
from machine import WDT
|
||||
|
||||
from hello import discover_controller_udp
|
||||
from settings import Settings
|
||||
|
||||
CONNECT_WAIT_S = 45
|
||||
WDT_MS = 10000
|
||||
|
||||
|
||||
def _wait_wifi(sta, timeout_s, wdt):
|
||||
deadline = utime.ticks_add(utime.ticks_ms(), int(timeout_s * 1000))
|
||||
while not sta.isconnected():
|
||||
wdt.feed()
|
||||
if utime.ticks_diff(deadline, utime.ticks_ms()) <= 0:
|
||||
return False
|
||||
print("WiFi status:", sta.status())
|
||||
wdt.feed()
|
||||
time.sleep(1)
|
||||
wdt.feed()
|
||||
return True
|
||||
|
||||
|
||||
def main():
|
||||
settings = Settings()
|
||||
ssid = settings.get("ssid") or ""
|
||||
password = settings.get("password") or ""
|
||||
|
||||
if not ssid:
|
||||
print("udp_client: set ssid/password in settings.json (test harness Wi-Fi).")
|
||||
raise SystemExit(1)
|
||||
|
||||
sta = network.WLAN(network.STA_IF)
|
||||
sta.active(True)
|
||||
try:
|
||||
sta.config(pm=network.WLAN.PM_NONE)
|
||||
except (AttributeError, ValueError, TypeError):
|
||||
pass
|
||||
|
||||
wdt = WDT(timeout=WDT_MS)
|
||||
wdt.feed()
|
||||
print("udp_client: connecting to", repr(ssid))
|
||||
sta.connect(ssid, password)
|
||||
wdt.feed()
|
||||
if not _wait_wifi(sta, CONNECT_WAIT_S, wdt):
|
||||
print("WiFi timeout, status=", sta.status())
|
||||
raise SystemExit(1)
|
||||
|
||||
ip = discover_controller_udp(settings.get("name", ""), wdt=wdt)
|
||||
if not ip:
|
||||
raise SystemExit(1)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in New Issue
Block a user