[wifi] scan

This commit is contained in:
IrvingGao 2024-06-13 18:09:43 +08:00
parent b763ae0ae4
commit 93c29b4a11
1 changed files with 52 additions and 1 deletions

View File

@ -178,13 +178,63 @@ def check_wifi_connection():
wifi_ssid = columns[3]
if led_enabled:
orangepi.set_led_off('blue')
logging.info(f"Wi-Fi connected: {wifi_ssid}")
return True, wifi_ssid
elif len(columns) >= 4 and columns[2] == "connecting":
wifi_ssid = columns[4]
if led_enabled:
orangepi.set_led_on('blue')
logging.info(f"Wi-Fi connected: {wifi_ssid}")
return True, wifi_ssid
return False, None
def get_known_wifi():
# 定义一个空列表来存储解析后的连接信息
connections = []
cmd = "nmcli connection show"
result = subprocess.run(cmd, shell=True, capture_output=True, text=True)
output = result.stdout.strip()
lines = output.split("\n")[1:] # Skip the header line
# output = result.stdout.strip()
# 按行分割输出
# lines = output.strip().split('\n')[1:] # 跳过标题行
# 遍历每一行以解析连接信息
for line in lines:
if line.strip(): # 确保跳过空行
# 分割每一行以获取字段
fields = line.split()
if len(fields) >= 4:
# 创建一个字典来存储当前连接的信息
connection_info = {
'ssid': fields[0],
# 'uuid': fields[1],
'type': fields[2],
# 'device': fields[3] if fields[3] != '--' else None # 如果设备列为'--'则设为None
}
# 将连接信息添加到列表中
if connection_info['type'] == 'wifi': # 只处理wifi连接信息
connections.append(connection_info)
logging.info(f"Known Wi-Fi connections: {connections}")
return connections
def check_known_wifi(scan_wifi_list):
known_wifi_exist = False
known_wifi_list = get_known_wifi()
for known_wifi in known_wifi_list:
for wifi in scan_wifi_list:
if known_wifi['ssid'] == wifi['ssid']:
known_wifi_exist = True
if not known_wifi_exist:
return False
while known_wifi_exist:
logging.info(f"Known Wi-Fi exist, wait for connecting...")
connected, _ = check_wifi_connection()
if connected:
break
return True
def force_scan_wifi():
wifi_list = []
while wifi_list == []:
@ -270,7 +320,6 @@ def scan_wifi():
json.dump(wifi_list, f)
logging.info(f"Wi-Fi scaned list: {wifi_list}")
return wifi_list
# 连接 Wi-Fi
@ -390,6 +439,8 @@ if __name__ == '__main__':
# wifi_list = scan_wifi()
# time.sleep(2) # 等待2秒确保wifi scan完成
known_wifi = get_known_wifi()
connected, wifi_ssid = check_wifi_connection()
if connected:
logging.info(f"系统已自动连接到 Wi-Fi 网络,退出程序")