You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
61 lines
1.8 KiB
Python
61 lines
1.8 KiB
Python
"""This is a dowsing rod for WiFi APs"""
|
|
|
|
___title___ = "Dowsing Rod"
|
|
___license___ = "MIT"
|
|
___dependencies___ = ["sleep", "app", "wifi", "sim800"]
|
|
___categories___ = ["EMF", "System"]
|
|
|
|
import ugfx, wifi, app
|
|
from tilda import Buttons
|
|
from time import sleep
|
|
|
|
status_height = 20
|
|
ssid = 'emfcamp-legacy18'
|
|
|
|
ugfx.init()
|
|
ugfx.clear()
|
|
ugfx.set_default_font(ugfx.FONT_FIXED)
|
|
|
|
ugfx.Label(5, 180, 240, 15, "Press A to scan, MENU to exit")
|
|
|
|
# while (not Buttons.is_pressed(Buttons.BTN_A)) and (not Buttons.is_pressed(Buttons.BTN_B)) and (not Buttons.is_pressed(Buttons.BTN_Menu)):
|
|
while not Buttons.is_pressed(Buttons.BTN_Menu):
|
|
if not Buttons.is_pressed(Buttons.BTN_A) and not Buttons.is_pressed(Buttons.BTN_B):
|
|
ugfx.poll()
|
|
continue
|
|
|
|
if Buttons.is_pressed(Buttons.BTN_B):
|
|
ugfx.clear()
|
|
ugfx.Label(0, 0, 240, 25, "SSID:")
|
|
ssid_box = ugfx.Textbox(0, 25, 240, 25, text=ssid)
|
|
ugfx.Keyboard(0, ugfx.height()//2, ugfx.width(), ugfx.height()//2)
|
|
ssid_box.set_focus()
|
|
while not Buttons.is_pressed(Buttons.BTN_A):
|
|
ugfx.poll()
|
|
continue
|
|
ssid = ssid_box.text()
|
|
|
|
ugfx.clear()
|
|
|
|
wifi.nic().active(False)
|
|
wifi.nic().active(True)
|
|
|
|
# networks = [{ "ssid": ap[0], "mac": ap[1], "channel": ap[2], "signal": ap[3] } for ap in wifi.nic().scan()]
|
|
networks = sorted([net for net in wifi.nic().scan() if net[0] == ssid], key=lambda n: n[3], reverse=True)
|
|
|
|
aps = []
|
|
for ap in [(net[1], net[3]) for net in networks]:
|
|
if ap[0] not in [ap[0] for ap in aps]:
|
|
aps.append(ap)
|
|
|
|
y = 0
|
|
for ap in aps[:20]:
|
|
ugfx.Label(0, y, 240, 25, "{1}dB {0}".format(*ap))
|
|
y += status_height
|
|
|
|
if len(aps) == 0:
|
|
ugfx.Label(0, y, 240, 25, "No %s APs found" % ssid)
|
|
|
|
ugfx.clear()
|
|
app.restart_to_default()
|