wifi debug

This commit is contained in:
IrvingGao 2024-05-27 21:50:20 +08:00
parent a8da95f25b
commit 9aba50be67
1 changed files with 51 additions and 28 deletions

View File

@ -75,10 +75,23 @@ def check_wifi_connection():
return False, None return False, None
def scan_wifi(): def scan_wifi():
try:
subprocess.run(['nmcli', 'dev', 'wifi', 'rescan'], check=True) subprocess.run(['nmcli', 'dev', 'wifi', 'rescan'], check=True)
cmd = "nmcli dev wifi" cmd = "nmcli dev wifi"
result = subprocess.run(cmd, shell=True, capture_output=True, text=True) result = subprocess.run(cmd, shell=True, capture_output=True, text=True)
except subprocess.CalledProcessError as e:
print(f"{datetime.datetime.now()}: Error scanning Wi-Fi: {e}")
error_time = datetime.datetime.now()
while led_enabled:
orangepi.set_led_off('blue')
orangepi.set_led_on('red')
time.sleep(0.5)
orangepi.set_led_on('blue')
orangepi.set_led_off('red')
time.sleep(0.5)
if error_time + datetime.timedelta(seconds=5) < datetime.datetime.now():
break
close_app()
ssid_list = [] ssid_list = []
wifi_list = [] wifi_list = []
output = result.stdout.strip() output = result.stdout.strip()
@ -127,26 +140,9 @@ def scan_wifi():
wifi_list.append({'ssid': ssid, 'signal': strength, 'mac': mac_address}) wifi_list.append({'ssid': ssid, 'signal': strength, 'mac': mac_address})
if len(wifi_list) == 15: if len(wifi_list) == 15:
break break
# save wifi_list to file
with open('wifi_list.json', 'w') as f:
json.dump(wifi_list, f)
return wifi_list return wifi_list
def load_saved_wifi():
try:
with open('wifi_list.json', 'r') as f:
wifi_list = json.load(f)
return wifi_list
except FileNotFoundError:
return []
def save_wifi(ssid, password):
wifi_list = load_saved_wifi()
wifi_list.append({'ssid': ssid, 'password': password})
with open('wifi_list.json', 'w') as f:
json.dump(wifi_list, f)
# 连接 Wi-Fi # 连接 Wi-Fi
def connect_wifi(ssid, password): def connect_wifi(ssid, password):
# 连接到用户选择的 Wi-Fi 网络 # 连接到用户选择的 Wi-Fi 网络
@ -177,6 +173,29 @@ def disconnect_wifi():
except Exception as e: except Exception as e:
print(f"{datetime.datetime.now()}: Error disconnecting from Wi-Fi: {e}") print(f"{datetime.datetime.now()}: Error disconnecting from Wi-Fi: {e}")
def connect_saved_wifi(scaned_wifi_list):
wifi_list = load_saved_wifi()
if not wifi_list:
return False, None
for wifi in wifi_list:
if wifi['ssid'] in [item['ssid'] for item in scaned_wifi_list]:
connect_wifi(wifi['ssid'], wifi['password'])
return True, wifi['ssid']
return False, None
def load_saved_wifi():
try:
with open('wifi_list.json', 'r') as f:
wifi_list = json.load(f)
return wifi_list
except FileNotFoundError:
return []
def save_wifi(ssid, password):
wifi_list = load_saved_wifi()
wifi_list.append({'ssid': ssid, 'password': password})
with open('wifi_list.json', 'w') as f:
json.dump(wifi_list, f)
# 主页 # 主页
@ -239,10 +258,14 @@ if __name__ == '__main__':
if connected: if connected:
print(f"{datetime.datetime.now()}: 系统已自动连接到 Wi-Fi 网络,退出程序") print(f"{datetime.datetime.now()}: 系统已自动连接到 Wi-Fi 网络,退出程序")
close_app() close_app()
else:
wifi_list = load_saved_wifi()
if not wifi_list:
wifi_list = scan_wifi() wifi_list = scan_wifi()
print(f"{datetime.datetime.now()}: 未连接到 Wi-Fi 网络")
connected, wifi_ssid = connect_saved_wifi(wifi_list)
if connected:
print(f"{datetime.datetime.now()}: 系统已自动连接到 Wi-Fi 网络 {wifi_ssid},退出程序")
close_app()
print(f"{datetime.datetime.now()}: 未连接到 Wi-Fi 网络, 开始热点模式")
start_hotspot() start_hotspot()
app.run(host='0.0.0.0', port=80) app.run(host='0.0.0.0', port=80)