|
|
@@ -5,27 +5,31 @@
|
|
|
Preferences preferences;
|
|
|
|
|
|
// 持久化存储的参数
|
|
|
-String deviceID;
|
|
|
-String serverAddress;
|
|
|
-uint16_t serverPort;
|
|
|
+String deviceID; //MAC地址 id
|
|
|
+String serverAddress; //mqtt服务器地址
|
|
|
+uint16_t serverPort; //mqtt端口
|
|
|
+uint16_t otaPort; // 新增 OTA 端口号
|
|
|
|
|
|
// 加载服务器参数
|
|
|
void loadServerParams() {
|
|
|
preferences.begin("settings", true);
|
|
|
- serverAddress = preferences.getString("serverAddress", "192.168.3.31");
|
|
|
- serverPort = preferences.getUInt("serverPort", 1883);
|
|
|
+ serverAddress = preferences.getString("serverAddress", "192.168.3.31"); //mqtt地址
|
|
|
+ serverPort = preferences.getUInt("serverPort", 1883); //mqtt端口
|
|
|
+ otaPort = preferences.getUInt("otaPort", 2999); // 新增 OTA 端口号,默认 2999
|
|
|
preferences.end();
|
|
|
Serial.println("[信息] 加载服务器参数:");
|
|
|
- Serial.println("服务器地址: " + serverAddress);
|
|
|
- Serial.println("服务器端口: " + String(serverPort));
|
|
|
+ Serial.println("服务器地址: " + serverAddress); // 打印服务器地址
|
|
|
+ Serial.println("服务器端口: " + String(serverPort)); // 打印 MQTT 端口号
|
|
|
+ Serial.println("OTA 端口: " + String(otaPort)); // 打印 OTA 端口号
|
|
|
}
|
|
|
|
|
|
// 保存参数回调
|
|
|
void saveParamsCallback() {
|
|
|
Serial.println("[信息] 正在保存自定义参数...");
|
|
|
preferences.begin("settings", false);
|
|
|
- preferences.putString("serverAddress", serverAddress);
|
|
|
- preferences.putUInt("serverPort", serverPort);
|
|
|
+ preferences.putString("serverAddress", serverAddress); // 保存 MQTT 服务器地址
|
|
|
+ preferences.putUInt("serverPort", serverPort); // 保存 MQTT 端口号
|
|
|
+ preferences.putUInt("otaPort", otaPort); // 保存 OTA 端口号
|
|
|
preferences.end();
|
|
|
Serial.println("[信息] 参数保存成功。");
|
|
|
}
|
|
|
@@ -33,15 +37,20 @@ void saveParamsCallback() {
|
|
|
// WiFi 配网功能
|
|
|
void setupWiFiConfig() {
|
|
|
WiFiManager wifiManager;
|
|
|
-setConstantOn(true); // LED 常亮
|
|
|
+ setConstantOn(true); // LED 常亮
|
|
|
+
|
|
|
WiFiManagerParameter customServer("server", "服务器地址", serverAddress.c_str(), 40);
|
|
|
WiFiManagerParameter customPort("port", "服务器端口", String(serverPort).c_str(), 6);
|
|
|
+ WiFiManagerParameter customOtaPort("otaPort", "OTA 端口", String(otaPort).c_str(), 6); // 新增 OTA 端口配置
|
|
|
wifiManager.addParameter(&customServer);
|
|
|
wifiManager.addParameter(&customPort);
|
|
|
+ wifiManager.addParameter(&customOtaPort); // 添加 OTA 端口配置
|
|
|
|
|
|
- wifiManager.setSaveParamsCallback([]() {
|
|
|
+ // 修复:捕获 customOtaPort
|
|
|
+ wifiManager.setSaveParamsCallback([&customOtaPort]() {
|
|
|
serverAddress = WiFiManagerParameter("server", "服务器地址", serverAddress.c_str(), 40).getValue();
|
|
|
serverPort = String(WiFiManagerParameter("port", "服务器端口", String(serverPort).c_str(), 6).getValue()).toInt();
|
|
|
+ otaPort = String(customOtaPort.getValue()).toInt(); // 保存 OTA 端口号
|
|
|
});
|
|
|
|
|
|
wifiManager.setConfigPortalTimeout(50); // 配置模式超时时间为 60 秒
|
|
|
@@ -49,15 +58,14 @@ setConstantOn(true); // LED 常亮
|
|
|
if (!wifiManager.startConfigPortal("人体存在感应器_Config")) {
|
|
|
Serial.println("[错误] 配置模式超时或未完成配置!");
|
|
|
feedWatchdog();
|
|
|
- // 关闭 LED
|
|
|
-setConstantOn(false);
|
|
|
+ setConstantOn(false); // 关闭 LED
|
|
|
} else {
|
|
|
serverAddress = customServer.getValue();
|
|
|
serverPort = String(customPort.getValue()).toInt();
|
|
|
+ otaPort = String(customOtaPort.getValue()).toInt(); // 保存 OTA 端口号
|
|
|
saveParamsCallback();
|
|
|
loadServerParams(); // 重新加载保存的服务器配置
|
|
|
- // 关闭 LED
|
|
|
-setConstantOn(false);
|
|
|
+ setConstantOn(false); // 关闭 LED
|
|
|
}
|
|
|
}
|
|
|
|