This commit is contained in:
gcw_4spBpAfv
2026-02-09 11:24:46 +08:00
parent 8aea76d99b
commit 573c0a3385
6 changed files with 330 additions and 93 deletions

View File

@@ -1195,12 +1195,6 @@ class OTAManager:
try:
# 与 4G 一致OTA 期间暂停主循环 / 心跳等
self._begin_ota()
ip, error = network_manager.connect_wifi(ssid, password)
if error:
safe_enqueue({"result": "wifi_failed", "error": error}, 2)
return
safe_enqueue({"result": "wifi_connected", "ip": ip}, 2)
if not ota_url:
safe_enqueue({"result": "ota_failed", "reason": "missing_url"}, 2)
return
@@ -1209,11 +1203,19 @@ class OTAManager:
host = parsed_url.hostname
port = parsed_url.port or (443 if parsed_url.scheme == 'https' else 80)
if not network_manager.is_server_reachable(host, port, timeout=8):
err_msg = f"网络不通:无法连接 {host}:{port}"
safe_enqueue({"result": err_msg}, 2)
self.logger.error(err_msg)
# 先连接 WiFi并把 OTA host:port 作为“可达性验证目标”
# 只有连接成功 + 可访问 OTA 地址,才会把 SSID/PASS 落盘到 /boot/
ip, error = network_manager.connect_wifi(
ssid,
password,
verify_host=host,
verify_port=port,
persist=True,
)
if error:
safe_enqueue({"result": "wifi_failed", "error": error}, 2)
return
safe_enqueue({"result": "wifi_connected", "ip": ip}, 2)
downloaded_filename = self.get_filename_from_url(ota_url, default_name="main_tmp")
self.logger.info(f"[OTA] 下载文件将保存为: {downloaded_filename}")