Files

40 lines
1.2 KiB
Python

try:
import network
has_network = True
except ImportError:
has_network = False
class _ActiveWiFiUtil:
def __init__(self):
self.wlan = network.WLAN(network.STA_IF)
self.wlan.active(True)
def scan(self):
"""Scans for networks and returns a list of dictionaries with ssid and rssi."""
print("Scanning for Wi-Fi networks...")
networks = self.wlan.scan()
result = []
for net in networks:
try:
ssid = net[0].decode('utf-8')
except Exception:
try:
ssid = ''.join(chr(b) if 32 <= b < 127 else '?' for b in net[0])
except Exception:
ssid = "<Unknown SSID>"
rssi = net[3]
if ssid: # Filter out hidden/empty SSIDs
result.append({"ssid": ssid, "rssi": rssi})
# Sort by signal strength (RSSI) descending
result.sort(key=lambda x: x['rssi'], reverse=True)
return result
class _DummyWiFiUtil:
def __init__(self):
print("Wi-Fi not supported on this platform.")
def scan(self):
return []
WiFiUtil = _ActiveWiFiUtil if has_network else _DummyWiFiUtil