Commit 78f9907c authored by waterword's avatar waterword

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

- 添加加密模式检测和处理
- 优化 WiFi 扫描和连接流程
- 增加系统信息更新功能
- 调整工厂测试列表页面布局
- 移除冗余代码和注释
parent a3d3dfb0
File added
...@@ -323,6 +323,7 @@ ...@@ -323,6 +323,7 @@
title_TEXT: "WIFI", title_TEXT: "WIFI",
initWifissid: "Midea_WifiBT", initWifissid: "Midea_WifiBT",
initWifipwd: "", initWifipwd: "",
initencryptedMode:"",
Reminder_TEXT: "请配置SSID为Midea_WifiBT,密码为空的WIFI路由器,且确保路由器能连上外网", Reminder_TEXT: "请配置SSID为Midea_WifiBT,密码为空的WIFI路由器,且确保路由器能连上外网",
wifiInfo_TEXT: "Midea_WifiBT", wifiInfo_TEXT: "Midea_WifiBT",
wifiInfoWarn_TEXT: "Midea_WifiBT信号强度需要大于-38dB", wifiInfoWarn_TEXT: "Midea_WifiBT信号强度需要大于-38dB",
...@@ -1143,8 +1144,8 @@ ...@@ -1143,8 +1144,8 @@
InterValTime: function () { InterValTime: function () {
console.log("=========================InterValTime===================="); console.log("=========================InterValTime====================");
wifiEventJS.connect_wifi(this.initWifissid, this.initWifipwd); wifiEventJS.connect_wifi(this.initWifissid, this.initWifipwd,this.initencryptedMode);
wifiEventJS.enableWLANSwitch();
this.$setY("id_hide", 0) this.$setY("id_hide", 0)
...@@ -1194,8 +1195,8 @@ ...@@ -1194,8 +1195,8 @@
this.$setOpacity("id_hide", 0.5) this.$setOpacity("id_hide", 0.5)
document.setAttribute('id_enableWLANPageList', 'list-set-edge-flash', false); document.setAttribute('id_enableWLANPageList', 'list-set-edge-flash', false);
wifiEventJS.connect_wifi(this.initWifissid, this.initWifipwd); wifiEventJS.connect_wifi(this.initWifissid, this.initWifipwd,this.initencryptedMode);
wifiEventJS.enableWLANSwitch(); // wifiEventJS.enableWLANSwitch();
this.testTimer = this.$setTimeout(this.InterValTime, 5000, [], this); this.testTimer = this.$setTimeout(this.InterValTime, 5000, [], this);
if (this.firstLoadInit == 1) { if (this.firstLoadInit == 1) {
...@@ -1288,6 +1289,8 @@ ...@@ -1288,6 +1289,8 @@
}); });
}, },
touchedscanWifiList: function (node, topNode, x, y) { touchedscanWifiList: function (node, topNode, x, y) {
console.log("================touchedscanWifiList===============");
wifiEventJS.enableWLANSwitch();
factoryDivPageJump.movePage("id_enableWLANChooseOnDiv"); factoryDivPageJump.movePage("id_enableWLANChooseOnDiv");
}, },
//touchedStartScanWifiButton: function (node, topNode, x, y) { //touchedStartScanWifiButton: function (node, topNode, x, y) {
...@@ -1317,7 +1320,7 @@ ...@@ -1317,7 +1320,7 @@
console.log("touchedStartScanWifiButton"); console.log("touchedStartScanWifiButton");
console.log("===================================================="); console.log("====================================================");
this.hideShowConnectbutton(0); this.hideShowConnectbutton(0);
wifiEventJS.connect_wifi(this.initWifissid, this.initWifipwd); wifiEventJS.connect_wifi(this.initWifissid, this.initWifipwd,this.initencryptedMode);
setTimeout(() => { setTimeout(() => {
this.hideShowConnectbutton(1); this.hideShowConnectbutton(1);
}, 10000); }, 10000);
......
...@@ -27,6 +27,8 @@ ...@@ -27,6 +27,8 @@
// var systemCtrl = require("systemCtrl.js"); // var systemCtrl = require("systemCtrl.js");
var systemCtrl = require("systemCtrl.js"); var systemCtrl = require("systemCtrl.js");
var yesJumpPage = require("factoryYesJumpPage.js"); var yesJumpPage = require("factoryYesJumpPage.js");
var onestart = 1;
// var _userdata = require("userdata.js"); // var _userdata = require("userdata.js");
// var userData = _userdata.userData; // var userData = _userdata.userData;
export default { export default {
...@@ -142,15 +144,15 @@ ...@@ -142,15 +144,15 @@
en: 1, en: 1,
index: 0, index: 0,
}, },
{ //{
id: "id_factoryTestTp", // id: "id_factoryTestTp",
name: "tp", // name: "tp",
startup: "factoryTestTp", // startup: "factoryTestTp",
top: 370, // top: 370,
left: 350, //left: 350,
en: 1, // en: 1,
index: 0, // index: 0,
}, // },
], ],
}, },
...@@ -229,10 +231,16 @@ ...@@ -229,10 +231,16 @@
onShow: function () { onShow: function () {
console.log(this.$uri + "===========onShow============="); console.log(this.$uri + "===========onShow=============");
if(userData.factoryFlag != 1){ if (userData.factoryFlag != 1) {
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") var process = require("@system.process")
if (process.platform == "win32") { if (process.platform == "win32") {
globalThat.$FontPath = "./../re860a-v1.0/GothamMedium.ttf"; globalThat.$FontPath = "./../re860a-v1.0/GothamMedium.ttf";
......
...@@ -177,6 +177,7 @@ function startSystemInfoTimer(obj) { ...@@ -177,6 +177,7 @@ function startSystemInfoTimer(obj) {
if (systemInfoTimer != null) { if (systemInfoTimer != null) {
clearInterval(systemInfoTimer); clearInterval(systemInfoTimer);
} }
updateSystemInfo();
systemInfoTimer = setInterval(() => { systemInfoTimer = setInterval(() => {
updateSystemInfo(); updateSystemInfo();
}, 5000); }, 5000);
......
...@@ -23,6 +23,7 @@ var cnt = 0; ...@@ -23,6 +23,7 @@ var cnt = 0;
var connectWifiSSID = null; var connectWifiSSID = null;
var connectWifiPassword = null; var connectWifiPassword = null;
var signalLevel = 0; var signalLevel = 0;
var _encryptedMode = "";
var _connectWifiTimerId = undefined var _connectWifiTimerId = undefined
var _connectWifiCnt = 0; var _connectWifiCnt = 0;
...@@ -32,6 +33,8 @@ var connectingState = 0; //模拟用来表示连接wifi的状态,0表示未连 ...@@ -32,6 +33,8 @@ var connectingState = 0; //模拟用来表示连接wifi的状态,0表示未连
var connectTimeout = 0; var connectTimeout = 0;
var flushTimeTimer = null; var flushTimeTimer = null;
var oneFlag = 1;
var writeWpaConf = require("writeWpaConf.js")
// var wlan_enalbed = userData.enableWLANSwitchFlag // var wlan_enalbed = userData.enableWLANSwitchFlag
...@@ -44,6 +47,36 @@ function testWifiInitPage(obj) { ...@@ -44,6 +47,36 @@ function testWifiInitPage(obj) {
that = 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) { function parseWifiScanResults(output) {
const lines = output.split('\n'); const lines = output.split('\n');
const results = []; const results = [];
...@@ -64,10 +97,25 @@ function parseWifiScanResults(output) { ...@@ -64,10 +97,25 @@ function parseWifiScanResults(output) {
flags.includes("WPA") || flags.includes("WPA") ||
flags.includes("WEP") || flags.includes("WEP") ||
flags.includes("PSK"); 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({ results.push({
ssid: ssid || '', // 如果 SSID 为空,则设为空字符串 ssid: ssid || '', // 如果 SSID 为空,则设为空字符串
signalLevel: signalLevel, signalLevel: signalLevel,
isEncrypted: isEncrypted isEncrypted: isEncrypted,
encryptedMode: encryptedMode
}); });
} }
} }
...@@ -75,7 +123,6 @@ function parseWifiScanResults(output) { ...@@ -75,7 +123,6 @@ function parseWifiScanResults(output) {
return results; return results;
} }
// var wlan_enalbed = userData.enableWLANSwitchFlag // var wlan_enalbed = userData.enableWLANSwitchFlag
// // const generalSettingPage = proxy.indexObj.getPage("generalSetting"); // // const generalSettingPage = proxy.indexObj.getPage("generalSetting");
...@@ -90,13 +137,14 @@ function parseWifiScanResults(output) { ...@@ -90,13 +137,14 @@ function parseWifiScanResults(output) {
// proxy.on("onEnableWLANSwitch", function () { // proxy.on("onEnableWLANSwitch", function () {
function onGotoWlanEnterPasswordPageEvent(value, signal) { function onGotoWlanEnterPasswordPageEvent(value, signal, encrypted) {
console.log("receive onGotoWlanEnterPasswordPage singal!"); console.log("receive onGotoWlanEnterPasswordPage singal!");
// var activePage = that.activePage; // var activePage = that.activePage;
that.crtTitleWlanEnterPasswordText = value; //刷新标题 that.crtTitleWlanEnterPasswordText = value; //刷新标题
that.crtTitleWlanConnectingText = value; that.crtTitleWlanConnectingText = value;
connectWifiSSID = value; connectWifiSSID = value;
signalLevel = signal; signalLevel = signal;
_encryptedMode = encrypted;
console.log("==========signalLevel :" + signalLevel + "connectWifiSSID :" + connectWifiSSID + "======="); console.log("==========signalLevel :" + signalLevel + "connectWifiSSID :" + connectWifiSSID + "=======");
that.crtEnterPasswordShowText = ""; that.crtEnterPasswordShowText = "";
that.crtEnterPasswordShowInvisiableText = ""; that.crtEnterPasswordShowInvisiableText = "";
...@@ -107,15 +155,10 @@ function onGotoWlanEnterPasswordPageEvent(value, signal) { ...@@ -107,15 +155,10 @@ function onGotoWlanEnterPasswordPageEvent(value, signal) {
} }
function connect_wifi(ssid, psk) { // function connect_wifi(ssid, psk) {
var getPath = require("getPath.js"); function connect_wifi(ssid, psk, mode) {
var fullPath = getPath.getFactoryFullPath();
if (1) {
systemCtrl.executeSystemCommand(fullPath + "factoryTest_plugin/shell/connectWifi.sh" + " " + ssid + " " + psk)
return;
}
// if (psk == "Open") {
systemCtrl.executeSystemCommand("killall -9 udhcpc") systemCtrl.executeSystemCommand("killall -9 udhcpc")
systemCtrl.executeSystemCommand("wpa_cli -p /tmp/wpa_supplicant/sockets -i wlan0 set_network 0 ssid \'\"" + ssid + "\"\'") systemCtrl.executeSystemCommand("wpa_cli -p /tmp/wpa_supplicant/sockets -i wlan0 set_network 0 ssid \'\"" + ssid + "\"\'")
systemCtrl.executeSystemCommand("usleep 10000") //10ms 用于缓冲 systemCtrl.executeSystemCommand("usleep 10000") //10ms 用于缓冲
...@@ -132,6 +175,16 @@ function connect_wifi(ssid, psk) { ...@@ -132,6 +175,16 @@ function connect_wifi(ssid, psk) {
systemCtrl.executeSystemCommand("usleep 500000") //500ms 用于缓冲联网状态 systemCtrl.executeSystemCommand("usleep 500000") //500ms 用于缓冲联网状态
//启动udhcpc //启动udhcpc
systemCtrl.executeSystemCommand("udhcpc -b -i wlan0 -t 1 -A 1 -R -H test") 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() { function diConnectWifi() {
systemCtrl.executeSystemCommand("wpa_cli -p /tmp/wpa_supplicant/sockets -i wlan0 disable_network 0") systemCtrl.executeSystemCommand("wpa_cli -p /tmp/wpa_supplicant/sockets -i wlan0 disable_network 0")
...@@ -194,6 +247,8 @@ function refreshWifiList(wifi_list) { ...@@ -194,6 +247,8 @@ function refreshWifiList(wifi_list) {
var ssid = wifi_list[i].ssid var ssid = wifi_list[i].ssid
var signalLevel = wifi_list[i].signalLevel var signalLevel = wifi_list[i].signalLevel
var isEncrypted = wifi_list[i].isEncrypted 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) if (ssid.length == 0)
continue continue
...@@ -239,6 +294,7 @@ function refreshWifiList(wifi_list) { ...@@ -239,6 +294,7 @@ function refreshWifiList(wifi_list) {
"background-color": "transparent", "background-color": "transparent",
"text": ssid + "(" + signalLevel + " dBm)", "text": ssid + "(" + signalLevel + " dBm)",
"ssid": ssid, "ssid": ssid,
"encryptedMode": encryptedMode,
"signalValue": signalLevel, "signalValue": signalLevel,
"events": { "events": {
onclick: function (node, topNode, x, y) { onclick: function (node, topNode, x, y) {
...@@ -247,7 +303,7 @@ function refreshWifiList(wifi_list) { ...@@ -247,7 +303,7 @@ function refreshWifiList(wifi_list) {
console.log("node.attributes.text = " + this.attributes.text + " node.attributes.signalValue = " + this.attributes.signalValue); console.log("node.attributes.text = " + this.attributes.text + " node.attributes.signalValue = " + this.attributes.signalValue);
console.log("click wlan_list_item"); //需要添加一个点击事件 console.log("click wlan_list_item"); //需要添加一个点击事件
console.log("this.attributes.ssid = " + this.attributes.ssid); 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); // proxy.emit("onGotoWlanEnterPasswordPage", this.attributes.text, this.attributes.signalValue);
} }
} }
...@@ -299,6 +355,10 @@ function enableWLANSwitch() { ...@@ -299,6 +355,10 @@ function enableWLANSwitch() {
console.log("its win32.") console.log("its win32.")
return; return;
} }
if (resultsWifiList && oneFlag) {
refreshWifiList(resultsWifiList)
oneFlag = 0;
}
systemCtrl.executeSystemCommand("rm -fr /tmp/scan_result.txt") systemCtrl.executeSystemCommand("rm -fr /tmp/scan_result.txt")
systemCtrl.executeSystemCommand("wpa_cli -p /tmp/wpa_supplicant/sockets scan") systemCtrl.executeSystemCommand("wpa_cli -p /tmp/wpa_supplicant/sockets scan")
...@@ -306,9 +366,10 @@ function enableWLANSwitch() { ...@@ -306,9 +366,10 @@ function enableWLANSwitch() {
systemCtrl.executeSystemCommand("wpa_cli -p /tmp/wpa_supplicant/sockets scan_results > /tmp/scan_result.txt") systemCtrl.executeSystemCommand("wpa_cli -p /tmp/wpa_supplicant/sockets scan_results > /tmp/scan_result.txt")
var content = fs.read("/tmp/scan_result.txt", "r") var content = fs.read("/tmp/scan_result.txt", "r")
console.log("====================content")
if (content) { if (content) {
resultsWifiList = parseWifiScanResults(content) resultsWifiList = parseWifiScanResults(content)
// console.log(JSON.stringify(resultsWifiList)) console.log(JSON.stringify(resultsWifiList))
refreshWifiList(resultsWifiList) refreshWifiList(resultsWifiList)
} }
}, 5000) }, 5000)
...@@ -471,16 +532,43 @@ function onInstallationGeneralSettingConnectWifi(value) { ...@@ -471,16 +532,43 @@ function onInstallationGeneralSettingConnectWifi(value) {
function ConnectWifi(value) { function ConnectWifi(value) {
var ssid = connectWifiSSID; var ssid = connectWifiSSID;
var pwd = value; 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"); // var factory_wifi = require("factory_wifi.js");
// factory_wifi.testWifiConnect(ssid, pwd); // factory_wifi.testWifiConnect(ssid, pwd);
// connect_wifi(ssid,pwd); // connect_wifi(ssid,pwd);
that.initWifissid = ssid; that.initWifissid = ssid;
that.initWifipwd = pwd; that.initWifipwd = pwd;
that.initencryptedMode = encrypte;
console.log("that.initWifissid: " + that.initWifissid + "that.initWifipwd: " + that.initWifipwd + "that.initencryptedMode: " + that.initencryptedMode);
that.InterValTime(); that.InterValTime();
console.log("===================ConnectWifi: " + that.initWifissid + "--pwd: " + that.initWifipwd); 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 = { module.exports = {
enableWLANSwitch: enableWLANSwitch, enableWLANSwitch: enableWLANSwitch,
...@@ -488,6 +576,7 @@ module.exports = { ...@@ -488,6 +576,7 @@ module.exports = {
getWifiInfo: getWifiInfo, getWifiInfo: getWifiInfo,
testWifiInitPage: testWifiInitPage, testWifiInitPage: testWifiInitPage,
ConnectWifi: ConnectWifi, ConnectWifi: ConnectWifi,
enableWLANScanValue: enableWLANScanValue,
} }
\ No newline at end of file
# WiFi连接脚本 #!/bin/sh
# 用法: ./connect_wifi.sh <SSID> <PSK>
if [ $# -ne 2 ]; then echo "==================connect wifi ================"
echo "用法: $0 <SSID> <PSK>" set -e
exit 1
fi
SSID=$1 SSID=$1
PSK=$2 PSK=$2
# 终止现有的udhcpc进程 if [ -z "$SSID" ]; then
killall -9 udhcpc echo "Usage: $0 <SSID> [PSK]"
exit 1
fi
echo "ssid :$SSID pwd :$PSK"
# 配置WiFi网络 killall hostapd dnsmasq udhcpc wpa_supplicant 2>/dev/null || true
wpa_cli -p /tmp/wpa_supplicant/sockets -i wlan0 set_network 0 ssid '\"'$SSID'\"' sleep 1
usleep 10000 # 10ms缓冲
wpa_cli -p /tmp/wpa_supplicant/sockets -i wlan0 set_network 0 psk '\"'$PSK'\"' wifi_down 2>/dev/null || true
usleep 10000 # 10ms缓冲 wifi_up 2>/dev/null || true
wpa_cli -p /tmp/wpa_supplicant/sockets -i wlan0 save_config for i in $(seq 10); do
usleep 10000 # 10ms缓冲 [ -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缓冲设置和执行
# 重新启用网络连接 if [ -n "$PSK" ]; then
wpa_cli -p /tmp/wpa_supplicant/sockets -i wlan0 disable_network 0 cat > /tmp/wpa_supplicant.conf <<EOF
usleep 10000 # 10ms缓冲 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