mirror of
https://github.com/IoTManagerProject/IoTManager.git
synced 2026-03-26 22:22:16 +03:00
mqtt подключение
This commit is contained in:
@@ -18,14 +18,14 @@ void globalVarsSync() {
|
||||
jsonWriteStr_(settingsFlashJson, "root", mqttRootDevice);
|
||||
jsonWriteStr_(settingsFlashJson, "id", chipId);
|
||||
|
||||
saveSettingsFlashJson();
|
||||
syncSettingsFlashJson();
|
||||
|
||||
jsonWriteStr_(errorsHeapJson, "errors", ""); //метка для парсинга
|
||||
jsonWriteStr_(ssidListHeapJson, "ssid", ""); //метка для парсинга
|
||||
jsonWriteStr(paramsHeapJson, "params", ""); //метка для парсинга
|
||||
}
|
||||
|
||||
void saveSettingsFlashJson() {
|
||||
void syncSettingsFlashJson() {
|
||||
writeFile(F("settings.json"), settingsFlashJson);
|
||||
}
|
||||
|
||||
|
||||
@@ -52,6 +52,8 @@ String mqttPrefix = "";
|
||||
String mqttUser = "";
|
||||
String mqttPass = "";
|
||||
|
||||
unsigned long mqttUptime;
|
||||
|
||||
String chipId = "";
|
||||
String prex = "";
|
||||
String all_widgets = "";
|
||||
|
||||
@@ -48,6 +48,8 @@ void setup() {
|
||||
|
||||
configure("/config.json");
|
||||
|
||||
syncSettingsFlashJson();
|
||||
|
||||
//инициализация задач переодического выполнения
|
||||
periodicTasksInit();
|
||||
}
|
||||
|
||||
@@ -9,11 +9,17 @@ void mqttInit() {
|
||||
SerialPrint("I", F("WIFI"), F("OK"));
|
||||
if (mqtt.connected()) {
|
||||
SerialPrint("I", F("MQTT"), "OK");
|
||||
jsonWriteInt_(errorsHeapJson, F("mqtt"), mqtt.state());
|
||||
jsonWriteStr_(errorsHeapJson, F("mqtt"), getStateStr(mqtt.state()));
|
||||
|
||||
static unsigned int prevMillis;
|
||||
mqttUptime = mqttUptime + (millis() - prevMillis);
|
||||
prevMillis = millis();
|
||||
|
||||
// setLedStatus(LED_OFF);
|
||||
} else {
|
||||
SerialPrint("E", F("MQTT"), F("✖ Connection lost"));
|
||||
jsonWriteInt_(errorsHeapJson, F("mqtt"), mqtt.state());
|
||||
jsonWriteStr_(errorsHeapJson, F("mqtt"), getStateStr(mqtt.state()));
|
||||
mqttUptime = 0;
|
||||
mqttConnect();
|
||||
}
|
||||
} else {
|
||||
@@ -37,7 +43,8 @@ boolean mqttConnect() {
|
||||
bool res = false;
|
||||
if (mqttServer == "") {
|
||||
SerialPrint("E", "MQTT", F("mqttServer empty"));
|
||||
jsonWriteInt_(errorsHeapJson, F("mqtt"), 6);
|
||||
jsonWriteStr_(errorsHeapJson, F("mqtt"), getStateStr(6));
|
||||
standWebSocket.broadcastTXT(errorsHeapJson);
|
||||
return res;
|
||||
}
|
||||
SerialPrint("I", "MQTT", "connection started");
|
||||
@@ -59,19 +66,22 @@ boolean mqttConnect() {
|
||||
SerialPrint("I", F("MQTT"), F("Go to connection without login and password"));
|
||||
} else {
|
||||
SerialPrint("E", F("MQTT"), F("✖ Login or password missed"));
|
||||
jsonWriteInt_(errorsHeapJson, F("mqtt"), 7);
|
||||
jsonWriteStr_(errorsHeapJson, F("mqtt"), getStateStr(7));
|
||||
standWebSocket.broadcastTXT(errorsHeapJson);
|
||||
return res;
|
||||
}
|
||||
|
||||
if (connected) {
|
||||
if (mqtt.connected()) {
|
||||
SerialPrint("I", F("MQTT"), F("✔ connected"));
|
||||
jsonWriteInt_(errorsHeapJson, F("mqtt"), mqtt.state());
|
||||
jsonWriteStr_(errorsHeapJson, F("mqtt"), getStateStr(mqtt.state()));
|
||||
standWebSocket.broadcastTXT(errorsHeapJson);
|
||||
// setLedStatus(LED_OFF);
|
||||
mqttSubscribe();
|
||||
res = true;
|
||||
} else {
|
||||
SerialPrint("E", F("MQTT"), "🡆 Could't connect, retry in " + String(MQTT_RECONNECT_INTERVAL / 1000) + "s");
|
||||
jsonWriteInt_(errorsHeapJson, F("mqtt"), mqtt.state());
|
||||
jsonWriteStr_(errorsHeapJson, F("mqtt"), getStateStr(mqtt.state()));
|
||||
standWebSocket.broadcastTXT(errorsHeapJson);
|
||||
// setLedStatus(LED_FAST);
|
||||
}
|
||||
}
|
||||
@@ -309,43 +319,49 @@ void publishState() {
|
||||
//}
|
||||
}
|
||||
|
||||
const String getStateStr() {
|
||||
switch (mqtt.state()) {
|
||||
const String getStateStr(int e) {
|
||||
switch (e) {
|
||||
case -4:
|
||||
return F("no respond");
|
||||
return F("e1");
|
||||
break;
|
||||
case -3:
|
||||
return F("connection was broken");
|
||||
return F("e2");
|
||||
break;
|
||||
case -2:
|
||||
return F("connection failed");
|
||||
return F("e3");
|
||||
break;
|
||||
case -1:
|
||||
return F("client disconnected");
|
||||
return F("e4");
|
||||
break;
|
||||
case 0:
|
||||
return F("client connected");
|
||||
return F("e5");
|
||||
break;
|
||||
case 1:
|
||||
return F("doesn't support the requested version");
|
||||
return F("e6");
|
||||
break;
|
||||
case 2:
|
||||
return F("rejected the client identifier");
|
||||
return F("e7");
|
||||
break;
|
||||
case 3:
|
||||
return F("unable to accept the connection");
|
||||
return F("e8");
|
||||
break;
|
||||
case 4:
|
||||
return F("wrong username/password");
|
||||
return F("e9");
|
||||
break;
|
||||
case 5:
|
||||
return F("not authorized to connect");
|
||||
return F("e10");
|
||||
break;
|
||||
case 6:
|
||||
return F("e11");
|
||||
break;
|
||||
case 7:
|
||||
return F("e12");
|
||||
break;
|
||||
case 8:
|
||||
return F("e13");
|
||||
break;
|
||||
default:
|
||||
return F("unspecified");
|
||||
return F("unk");
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// 6 сервер не задан
|
||||
// 7 Логин или пароль отсутствует
|
||||
|
||||
@@ -13,6 +13,7 @@ void periodicTasksInit() {
|
||||
jsonWriteInt_(errorsHeapJson, F("rssi"), RSSIquality());
|
||||
// uptime
|
||||
jsonWriteStr_(errorsHeapJson, F("upt"), prettyMillis(millis()));
|
||||
jsonWriteStr_(errorsHeapJson, F("uptm"), prettyMillis(mqttUptime));
|
||||
// build ver
|
||||
jsonWriteStr_(errorsHeapJson, F("bver"), String(FIRMWARE_VERSION));
|
||||
periodicWsSend();
|
||||
@@ -34,6 +35,6 @@ void printGlobalVarSize() {
|
||||
|
||||
if (settingsFlashJsonSize > halfBuffer || errorsHeapJsonSize > halfBuffer || paramsFlashJsonSize > halfBuffer || paramsHeapJsonSize > halfBuffer) {
|
||||
SerialPrint(F("EE"), F("Json"), F("Insufficient buffer size!!!"));
|
||||
jsonWriteInt(errorsHeapJson, "jsbuf", 1);
|
||||
jsonWriteInt(errorsHeapJson, "jse1", 1);
|
||||
}
|
||||
}
|
||||
@@ -9,10 +9,14 @@ void standWebServerInit() {
|
||||
HTTP.serveStatic("/js/", FileFS, "/js/", "max-age=31536000"); // кеширование на 1 год
|
||||
HTTP.serveStatic("/png/", FileFS, "/png/", "max-age=31536000"); // кеширование на 1 год
|
||||
|
||||
HTTP.on("/settings.json", HTTP_GET, []() {
|
||||
HTTP.on("/settingsh.json", HTTP_GET, []() {
|
||||
HTTP.send(200, "application/json", settingsFlashJson);
|
||||
});
|
||||
|
||||
HTTP.on("/settingsf.json", HTTP_GET, []() {
|
||||
HTTP.send(200, "application/json", readFile(F("settings.json"), 20000));
|
||||
});
|
||||
|
||||
HTTP.on("/errors.json", HTTP_GET, []() {
|
||||
HTTP.send(200, "application/json", errorsHeapJson);
|
||||
});
|
||||
|
||||
@@ -21,7 +21,7 @@ void webSocketEvent(uint8_t num, WStype_t type, uint8_t* payload, size_t length)
|
||||
SerialPrint("i", "WS " + String(num), "WS client connected");
|
||||
if (num > 3) {
|
||||
SerialPrint("E", "WS", "Too many clients, connection closed!!!");
|
||||
jsonWriteInt(errorsHeapJson, "wscle", 1);
|
||||
jsonWriteInt(errorsHeapJson, "wse1", 1);
|
||||
standWebSocket.close();
|
||||
standWebSocketsInit();
|
||||
}
|
||||
@@ -80,17 +80,19 @@ void webSocketEvent(uint8_t num, WStype_t type, uint8_t* payload, size_t length)
|
||||
if (headerStr == "/connection|") {
|
||||
sendFileToWs("/settings.json", num, 1024);
|
||||
//запуск асинхронного сканирования wifi сетей при переходе на страницу соединений
|
||||
RouterFind(jsonReadStr(settingsFlashJson, F("routerssid")));
|
||||
// RouterFind(jsonReadStr(settingsFlashJson, F("routerssid")));
|
||||
}
|
||||
//**сохранение**//
|
||||
if (headerStr == "/sgnittes|") {
|
||||
writeFileUint8tByFrames("settings.json", payload, length, headerLenth, 256);
|
||||
settingsFlashJson = readFile(F("settings.json"), 4096);
|
||||
writeUint8tToString(payload, length, headerLenth, settingsFlashJson);
|
||||
// settingsFlashJson = readFile(F("settings.json"), 4096);
|
||||
}
|
||||
//**отправка**//
|
||||
if (headerStr == "/scan|") {
|
||||
//запуск асинхронного сканирования wifi сетей при нажатии выпадающего списка
|
||||
RouterFind(jsonReadStr(settingsFlashJson, F("routerssid")));
|
||||
standWebSocket.sendTXT(num, ssidListHeapJson);
|
||||
}
|
||||
// list ===================================================================
|
||||
//**отправка**//
|
||||
@@ -107,7 +109,10 @@ void webSocketEvent(uint8_t num, WStype_t type, uint8_t* payload, size_t length)
|
||||
ESP.restart();
|
||||
}
|
||||
if (headerStr == "/mqtt|") {
|
||||
jsonWriteStr_(errorsHeapJson, F("mqtt"), F("e13"));
|
||||
// if (jsonReadStr(errorsHeapJson, "mqtt") != "e13") {
|
||||
mqttReconnect();
|
||||
//}
|
||||
}
|
||||
|
||||
} break;
|
||||
|
||||
@@ -274,7 +274,8 @@ String jsonWriteFloat(String& json, String name, float value) {
|
||||
}
|
||||
|
||||
void jsonErrorDetected() {
|
||||
int number = jsonReadInt(errorsHeapJson, F("jserr"));
|
||||
jsonWriteInt(errorsHeapJson, F("jse2"), 1);
|
||||
int number = jsonReadInt(errorsHeapJson, F("jse2n"));
|
||||
number++;
|
||||
jsonWriteInt(errorsHeapJson, F("jserr"), number);
|
||||
jsonWriteInt(errorsHeapJson, F("jse2n"), number);
|
||||
}
|
||||
Reference in New Issue
Block a user