Commit 78f9907c authored by waterword's avatar waterword

feat(factory): 优化 WiFi 连接功能

- 添加加密模式检测和处理
- 优化 WiFi 扫描和连接流程
- 增加系统信息更新功能
- 调整工厂测试列表页面布局
- 移除冗余代码和注释
parent a3d3dfb0
File added
......@@ -323,6 +323,7 @@
title_TEXT: "WIFI",
initWifissid: "Midea_WifiBT",
initWifipwd: "",
initencryptedMode:"",
Reminder_TEXT: "请配置SSID为Midea_WifiBT,密码为空的WIFI路由器,且确保路由器能连上外网",
wifiInfo_TEXT: "Midea_WifiBT",
wifiInfoWarn_TEXT: "Midea_WifiBT信号强度需要大于-38dB",
......@@ -1143,8 +1144,8 @@
InterValTime: function () {
console.log("=========================InterValTime====================");
wifiEventJS.connect_wifi(this.initWifissid, this.initWifipwd);
wifiEventJS.enableWLANSwitch();
wifiEventJS.connect_wifi(this.initWifissid, this.initWifipwd,this.initencryptedMode);
this.$setY("id_hide", 0)
......@@ -1194,8 +1195,8 @@
this.$setOpacity("id_hide", 0.5)
document.setAttribute('id_enableWLANPageList', 'list-set-edge-flash', false);
wifiEventJS.connect_wifi(this.initWifissid, this.initWifipwd);
wifiEventJS.enableWLANSwitch();
wifiEventJS.connect_wifi(this.initWifissid, this.initWifipwd,this.initencryptedMode);
// wifiEventJS.enableWLANSwitch();
this.testTimer = this.$setTimeout(this.InterValTime, 5000, [], this);
if (this.firstLoadInit == 1) {
......@@ -1288,6 +1289,8 @@
});
},
touchedscanWifiList: function (node, topNode, x, y) {
console.log("================touchedscanWifiList===============");
wifiEventJS.enableWLANSwitch();
factoryDivPageJump.movePage("id_enableWLANChooseOnDiv");
},
//touchedStartScanWifiButton: function (node, topNode, x, y) {
......@@ -1317,7 +1320,7 @@
console.log("touchedStartScanWifiButton");
console.log("====================================================");
this.hideShowConnectbutton(0);
wifiEventJS.connect_wifi(this.initWifissid, this.initWifipwd);
wifiEventJS.connect_wifi(this.initWifissid, this.initWifipwd,this.initencryptedMode);
setTimeout(() => {
this.hideShowConnectbutton(1);
}, 10000);
......
......@@ -27,6 +27,8 @@
// var systemCtrl = require("systemCtrl.js");
var systemCtrl = require("systemCtrl.js");
var yesJumpPage = require("factoryYesJumpPage.js");
var onestart = 1;
// var _userdata = require("userdata.js");
// var userData = _userdata.userData;
export default {
......@@ -142,15 +144,15 @@
en: 1,
index: 0,
},
{
id: "id_factoryTestTp",
name: "tp",
startup: "factoryTestTp",
top: 370,
left: 350,
en: 1,
index: 0,
},
//{
// id: "id_factoryTestTp",
// name: "tp",
// startup: "factoryTestTp",
// top: 370,
//left: 350,
// en: 1,
// index: 0,
// },
],
},
......@@ -229,10 +231,16 @@
onShow: function () {
console.log(this.$uri + "===========onShow=============");
if(userData.factoryFlag != 1){
if (userData.factoryFlag != 1) {
userData.factoryFlag = 1;
}
console.log("wifiEventJS.enableWLANScanValue()================================================1");
if (onestart) {
var wifiEventJS = require("factory_testWifi.js");
wifiEventJS.enableWLANScanValue();
console.log("wifiEventJS.enableWLANScanValue()================================================2");
onestart = 0;
}
var process = require("@system.process")
if (process.platform == "win32") {
globalThat.$FontPath = "./../re860a-v1.0/GothamMedium.ttf";
......
......@@ -177,6 +177,7 @@ function startSystemInfoTimer(obj) {
if (systemInfoTimer != null) {
clearInterval(systemInfoTimer);
}
updateSystemInfo();
systemInfoTimer = setInterval(() => {
updateSystemInfo();
}, 5000);
......
......@@ -23,6 +23,7 @@ var cnt = 0;
var connectWifiSSID = null;
var connectWifiPassword = null;
var signalLevel = 0;
var _encryptedMode = "";
var _connectWifiTimerId = undefined
var _connectWifiCnt = 0;
......@@ -32,6 +33,8 @@ var connectingState = 0; //模拟用来表示连接wifi的状态,0表示未连
var connectTimeout = 0;
var flushTimeTimer = null;
var oneFlag = 1;
var writeWpaConf = require("writeWpaConf.js")
// var wlan_enalbed = userData.enableWLANSwitchFlag
......@@ -44,6 +47,36 @@ function testWifiInitPage(obj) {
that = obj;
}
// function parseWifiScanResults(output) {
// const lines = output.split('\n');
// const results = [];
// // 从第三行开始解析(跳过前两行标题)
// for (let i = 2; i < lines.length; i++) {
// const line = lines[i].trim();
// if (!line) continue; // 跳过空行
// // 按多个空格分割行
// const parts = line.split(/\s+/).filter(part => part !== '');
// if (parts.length >= 4) {
// const signalLevel = parseInt(parts[2]); // 信号强度在第3列
// let ssid = parts.slice(4).join(' '); // SSID 在第5列及之后(可能包含空格)
// const flags = parts[3]; // 加密标志在第4列
// const isEncrypted = !flags.includes("[ESS]") ||
// flags.includes("WPA") ||
// flags.includes("WEP") ||
// flags.includes("PSK");
// results.push({
// ssid: ssid || '', // 如果 SSID 为空,则设为空字符串
// signalLevel: signalLevel,
// isEncrypted: isEncrypted
// });
// }
// }
// return results;
// }
function parseWifiScanResults(output) {
const lines = output.split('\n');
const results = [];
......@@ -64,10 +97,25 @@ function parseWifiScanResults(output) {
flags.includes("WPA") ||
flags.includes("WEP") ||
flags.includes("PSK");
let encryptedMode = 'Open'; // 默认开放网络
if (flags.includes('WPA3')) {
encryptedMode = 'WPA';
} else if (flags.includes('WPA2')) {
encryptedMode = 'WPA';
} else if (flags.includes('WPA')) {
encryptedMode = 'WPA';
} else if (flags.includes('WEP')) {
encryptedMode = 'WEP';
} else if (!flags.includes('[ESS]')) {
encryptedMode = 'Unknown'; // 非开放网络但未识别类型
}
console.debug("ssid:" + ssid + " signalLevel:" + signalLevel + " isEncrypted:" + isEncrypted + " encryptedMode:" + encryptedMode);
results.push({
ssid: ssid || '', // 如果 SSID 为空,则设为空字符串
signalLevel: signalLevel,
isEncrypted: isEncrypted
isEncrypted: isEncrypted,
encryptedMode: encryptedMode
});
}
}
......@@ -75,7 +123,6 @@ function parseWifiScanResults(output) {
return results;
}
// var wlan_enalbed = userData.enableWLANSwitchFlag
// // const generalSettingPage = proxy.indexObj.getPage("generalSetting");
......@@ -90,13 +137,14 @@ function parseWifiScanResults(output) {
// proxy.on("onEnableWLANSwitch", function () {
function onGotoWlanEnterPasswordPageEvent(value, signal) {
function onGotoWlanEnterPasswordPageEvent(value, signal, encrypted) {
console.log("receive onGotoWlanEnterPasswordPage singal!");
// var activePage = that.activePage;
that.crtTitleWlanEnterPasswordText = value; //刷新标题
that.crtTitleWlanConnectingText = value;
connectWifiSSID = value;
signalLevel = signal;
_encryptedMode = encrypted;
console.log("==========signalLevel :" + signalLevel + "connectWifiSSID :" + connectWifiSSID + "=======");
that.crtEnterPasswordShowText = "";
that.crtEnterPasswordShowInvisiableText = "";
......@@ -107,15 +155,10 @@ function onGotoWlanEnterPasswordPageEvent(value, signal) {
}
function connect_wifi(ssid, psk) {
var getPath = require("getPath.js");
var fullPath = getPath.getFactoryFullPath();
if (1) {
systemCtrl.executeSystemCommand(fullPath + "factoryTest_plugin/shell/connectWifi.sh" + " " + ssid + " " + psk)
return;
}
// function connect_wifi(ssid, psk) {
function connect_wifi(ssid, psk, mode) {
// if (psk == "Open") {
systemCtrl.executeSystemCommand("killall -9 udhcpc")
systemCtrl.executeSystemCommand("wpa_cli -p /tmp/wpa_supplicant/sockets -i wlan0 set_network 0 ssid \'\"" + ssid + "\"\'")
systemCtrl.executeSystemCommand("usleep 10000") //10ms 用于缓冲
......@@ -132,6 +175,16 @@ function connect_wifi(ssid, psk) {
systemCtrl.executeSystemCommand("usleep 500000") //500ms 用于缓冲联网状态
//启动udhcpc
systemCtrl.executeSystemCommand("udhcpc -b -i wlan0 -t 1 -A 1 -R -H test")
// }
// else if(!(psk == null || psk == "" || psk == "null")) {
// }
// else {
console.log("ssid: " + ssid + "psk " + psk + "mode " + mode);
// writeWpaConf.set(ssid, psk, mode)
// systemCtrl.executeSystemCommand("/tmp/wlanInit.sh &") //重启wifi连接
// // return
// }
}
function diConnectWifi() {
systemCtrl.executeSystemCommand("wpa_cli -p /tmp/wpa_supplicant/sockets -i wlan0 disable_network 0")
......@@ -194,6 +247,8 @@ function refreshWifiList(wifi_list) {
var ssid = wifi_list[i].ssid
var signalLevel = wifi_list[i].signalLevel
var isEncrypted = wifi_list[i].isEncrypted
var encryptedMode = wifi_list[i].encryptedMode
console.log("========ssid:" + ssid + " signalLevel:" + signalLevel + " isEncrypted:" + isEncrypted + " encryptedMode:" + encryptedMode + "=====")
if (ssid.length == 0)
continue
......@@ -239,6 +294,7 @@ function refreshWifiList(wifi_list) {
"background-color": "transparent",
"text": ssid + "(" + signalLevel + " dBm)",
"ssid": ssid,
"encryptedMode": encryptedMode,
"signalValue": signalLevel,
"events": {
onclick: function (node, topNode, x, y) {
......@@ -247,7 +303,7 @@ function refreshWifiList(wifi_list) {
console.log("node.attributes.text = " + this.attributes.text + " node.attributes.signalValue = " + this.attributes.signalValue);
console.log("click wlan_list_item"); //需要添加一个点击事件
console.log("this.attributes.ssid = " + this.attributes.ssid);
onGotoWlanEnterPasswordPageEvent(this.attributes.ssid, this.attributes.signalValue);
onGotoWlanEnterPasswordPageEvent(this.attributes.ssid, this.attributes.signalValue, this.attributes.encryptedMode);
// proxy.emit("onGotoWlanEnterPasswordPage", this.attributes.text, this.attributes.signalValue);
}
}
......@@ -299,6 +355,10 @@ function enableWLANSwitch() {
console.log("its win32.")
return;
}
if (resultsWifiList && oneFlag) {
refreshWifiList(resultsWifiList)
oneFlag = 0;
}
systemCtrl.executeSystemCommand("rm -fr /tmp/scan_result.txt")
systemCtrl.executeSystemCommand("wpa_cli -p /tmp/wpa_supplicant/sockets scan")
......@@ -306,9 +366,10 @@ function enableWLANSwitch() {
systemCtrl.executeSystemCommand("wpa_cli -p /tmp/wpa_supplicant/sockets scan_results > /tmp/scan_result.txt")
var content = fs.read("/tmp/scan_result.txt", "r")
console.log("====================content")
if (content) {
resultsWifiList = parseWifiScanResults(content)
// console.log(JSON.stringify(resultsWifiList))
console.log(JSON.stringify(resultsWifiList))
refreshWifiList(resultsWifiList)
}
}, 5000)
......@@ -471,16 +532,43 @@ function onInstallationGeneralSettingConnectWifi(value) {
function ConnectWifi(value) {
var ssid = connectWifiSSID;
var pwd = value;
console.log("ConnectWifi: " + ssid + "pwd: " + pwd);
var encrypte = _encryptedMode;
console.log("ConnectWifi: " + ssid + "pwd: " + pwd + "encrypte: " + encrypte);
// var factory_wifi = require("factory_wifi.js");
// factory_wifi.testWifiConnect(ssid, pwd);
// connect_wifi(ssid,pwd);
that.initWifissid = ssid;
that.initWifipwd = pwd;
that.initencryptedMode = encrypte;
console.log("that.initWifissid: " + that.initWifissid + "that.initWifipwd: " + that.initWifipwd + "that.initencryptedMode: " + that.initencryptedMode);
that.InterValTime();
console.log("===================ConnectWifi: " + that.initWifissid + "--pwd: " + that.initWifipwd);
}
function enableWLANScanValue() {
console.log("Is @@@@@@@@@@@@@@@@@@@@@@@@@@#3333333")
// if (!userData.enableWLANSwitchFlag) {
// return;
// }
var process = require("@system.process")
if (process.platform == "win32") {
console.log("its win32.")
return;
}
systemCtrl.executeSystemCommand("rm -fr /tmp/scan_result.txt")
systemCtrl.executeSystemCommand("wpa_cli -p /tmp/wpa_supplicant/sockets scan")
setTimeout(function () {
systemCtrl.executeSystemCommand("wpa_cli -p /tmp/wpa_supplicant/sockets scan_results > /tmp/scan_result.txt")
var content = fs.read("/tmp/scan_result.txt", "r")
if (content) {
resultsWifiList = parseWifiScanResults(content)
console.log(JSON.stringify(resultsWifiList))
// refreshWifiList(resultsWifiList)
}
}, 5000)
}
module.exports = {
enableWLANSwitch: enableWLANSwitch,
......@@ -488,6 +576,7 @@ module.exports = {
getWifiInfo: getWifiInfo,
testWifiInitPage: testWifiInitPage,
ConnectWifi: ConnectWifi,
enableWLANScanValue: enableWLANScanValue,
}
\ No newline at end of file
# WiFi连接脚本
# 用法: ./connect_wifi.sh <SSID> <PSK>
#!/bin/sh
if [ $# -ne 2 ]; then
echo "用法: $0 <SSID> <PSK>"
exit 1
fi
echo "==================connect wifi ================"
set -e
SSID=$1
PSK=$2
# 终止现有的udhcpc进程
killall -9 udhcpc
if [ -z "$SSID" ]; then
echo "Usage: $0 <SSID> [PSK]"
exit 1
fi
echo "ssid :$SSID pwd :$PSK"
# 配置WiFi网络
wpa_cli -p /tmp/wpa_supplicant/sockets -i wlan0 set_network 0 ssid '\"'$SSID'\"'
usleep 10000 # 10ms缓冲
killall hostapd dnsmasq udhcpc wpa_supplicant 2>/dev/null || true
sleep 1
wpa_cli -p /tmp/wpa_supplicant/sockets -i wlan0 set_network 0 psk '\"'$PSK'\"'
usleep 10000 # 10ms缓冲
wifi_down 2>/dev/null || true
wifi_up 2>/dev/null || true
wpa_cli -p /tmp/wpa_supplicant/sockets -i wlan0 save_config
usleep 10000 # 10ms缓冲
for i in $(seq 10); do
[ -d /sys/class/net/wlan0 ] && break
echo "wait wlan0 ... $i"
sleep 0.5
done
[ -d /sys/class/net/wlan0 ] || { echo "wlan0 not found"; exit 1; }
wpa_cli -p /tmp/wpa_supplicant/sockets -i wlan0 reconfigure
usleep 200000 # 200ms缓冲设置和执行
# 重新启用网络连接
wpa_cli -p /tmp/wpa_supplicant/sockets -i wlan0 disable_network 0
usleep 10000 # 10ms缓冲
if [ -n "$PSK" ]; then
cat > /tmp/wpa_supplicant.conf <<EOF
ctrl_interface=/var/run/wpa_supplicant
update_config=1
network={
ssid="$SSID"
psk="$PSK"
key_mgmt=WPA-PSK
scan_ssid=1
}
EOF
else
cat > /tmp/wpa_supplicant.conf <<EOF
ctrl_interface=/var/run/wpa_supplicant
update_config=1
network={
ssid="$SSID"
key_mgmt=NONE
}
EOF
fi
wpa_cli -p /tmp/wpa_supplicant/sockets -i wlan0 enable_network 0
usleep 500000 # 500ms缓冲联网状态
# 启动DHCP客户端
udhcpc -b -i wlan0 -t 1 -A 1 -R -H test
echo "WiFi连接命令已执行"
wpa_supplicant -Dnl80211,wext -iwlan0 -c /tmp/wpa_supplicant.conf -B
sleep 3
if wpa_cli -iwlan0 status | grep -q "wpa_state=COMPLETED"; then
udhcpc -i wlan0 -n -q -t 5 -T 5
echo "[DONE] IP ok"
else
echo "[FAIL]"
exit 1
fi
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment