From 9aba50be6742b9fa55839c5dfaae7e8631d1164f Mon Sep 17 00:00:00 2001 From: IrvingGao <1729854488@qq.com> Date: Mon, 27 May 2024 21:50:20 +0800 Subject: [PATCH] wifi debug --- wifi_manager.py | 79 +++++++++++++++++++++++++++++++------------------ 1 file changed, 51 insertions(+), 28 deletions(-) diff --git a/wifi_manager.py b/wifi_manager.py index 27db486..6c48547 100644 --- a/wifi_manager.py +++ b/wifi_manager.py @@ -75,10 +75,23 @@ def check_wifi_connection(): return False, None def scan_wifi(): - subprocess.run(['nmcli', 'dev', 'wifi', 'rescan'], check=True) - cmd = "nmcli dev wifi" - result = subprocess.run(cmd, shell=True, capture_output=True, text=True) - + try: + subprocess.run(['nmcli', 'dev', 'wifi', 'rescan'], check=True) + cmd = "nmcli dev wifi" + 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 = [] wifi_list = [] output = result.stdout.strip() @@ -127,26 +140,9 @@ def scan_wifi(): wifi_list.append({'ssid': ssid, 'signal': strength, 'mac': mac_address}) if len(wifi_list) == 15: break - # save wifi_list to file - with open('wifi_list.json', 'w') as f: - json.dump(wifi_list, f) 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 def connect_wifi(ssid, password): # 连接到用户选择的 Wi-Fi 网络 @@ -177,6 +173,29 @@ def disconnect_wifi(): except Exception as 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: print(f"{datetime.datetime.now()}: 系统已自动连接到 Wi-Fi 网络,退出程序") close_app() - else: - wifi_list = load_saved_wifi() - if not wifi_list: - wifi_list = scan_wifi() - print(f"{datetime.datetime.now()}: 未连接到 Wi-Fi 网络") - start_hotspot() - app.run(host='0.0.0.0', port=80) \ No newline at end of file + + wifi_list = scan_wifi() + + 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() + app.run(host='0.0.0.0', port=80) \ No newline at end of file