mirror of
https://github.com/IoTManagerProject/IoTManager.git
synced 2026-03-30 20:09:14 +03:00
исправвил баги mqtt
This commit is contained in:
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -28,4 +28,6 @@ void publishWidgets();
|
|||||||
void publishState();
|
void publishState();
|
||||||
|
|
||||||
void mqttCallback(char* topic, uint8_t* payload, size_t length);
|
void mqttCallback(char* topic, uint8_t* payload, size_t length);
|
||||||
|
void handleMqttStatus(bool send);
|
||||||
|
void handleMqttStatus(bool send, int state);
|
||||||
const String getStateStr(int e);
|
const String getStateStr(int e);
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ void mqttInit() {
|
|||||||
SerialPrint("I", F("WIFI"), F("OK"));
|
SerialPrint("I", F("WIFI"), F("OK"));
|
||||||
if (mqtt.connected()) {
|
if (mqtt.connected()) {
|
||||||
SerialPrint("I", F("MQTT"), "OK");
|
SerialPrint("I", F("MQTT"), "OK");
|
||||||
jsonWriteStr_(errorsHeapJson, F("mqtt"), getStateStr(mqtt.state()));
|
handleMqttStatus(false);
|
||||||
|
|
||||||
static unsigned int prevMillis;
|
static unsigned int prevMillis;
|
||||||
mqttUptime = mqttUptime + (millis() - prevMillis);
|
mqttUptime = mqttUptime + (millis() - prevMillis);
|
||||||
@@ -18,7 +18,7 @@ void mqttInit() {
|
|||||||
// setLedStatus(LED_OFF);
|
// setLedStatus(LED_OFF);
|
||||||
} else {
|
} else {
|
||||||
SerialPrint("E", F("MQTT"), F("✖ Connection lost"));
|
SerialPrint("E", F("MQTT"), F("✖ Connection lost"));
|
||||||
jsonWriteStr_(errorsHeapJson, F("mqtt"), getStateStr(mqtt.state()));
|
handleMqttStatus(false);
|
||||||
mqttUptime = 0;
|
mqttUptime = 0;
|
||||||
mqttConnect();
|
mqttConnect();
|
||||||
}
|
}
|
||||||
@@ -43,8 +43,9 @@ boolean mqttConnect() {
|
|||||||
bool res = false;
|
bool res = false;
|
||||||
if (mqttServer == "") {
|
if (mqttServer == "") {
|
||||||
SerialPrint("E", "MQTT", F("mqttServer empty"));
|
SerialPrint("E", "MQTT", F("mqttServer empty"));
|
||||||
jsonWriteStr_(errorsHeapJson, F("mqtt"), getStateStr(6));
|
|
||||||
standWebSocket.broadcastTXT(errorsHeapJson);
|
handleMqttStatus(true, 6);
|
||||||
|
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
SerialPrint("I", "MQTT", "connection started");
|
SerialPrint("I", "MQTT", "connection started");
|
||||||
@@ -66,22 +67,19 @@ boolean mqttConnect() {
|
|||||||
SerialPrint("I", F("MQTT"), F("Go to connection without login and password"));
|
SerialPrint("I", F("MQTT"), F("Go to connection without login and password"));
|
||||||
} else {
|
} else {
|
||||||
SerialPrint("E", F("MQTT"), F("✖ Login or password missed"));
|
SerialPrint("E", F("MQTT"), F("✖ Login or password missed"));
|
||||||
jsonWriteStr_(errorsHeapJson, F("mqtt"), getStateStr(7));
|
handleMqttStatus(true, 7);
|
||||||
standWebSocket.broadcastTXT(errorsHeapJson);
|
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (mqtt.connected()) {
|
if (mqtt.state() == 0) {
|
||||||
SerialPrint("I", F("MQTT"), F("✔ connected"));
|
SerialPrint("I", F("MQTT"), F("✔ connected"));
|
||||||
jsonWriteStr_(errorsHeapJson, F("mqtt"), getStateStr(mqtt.state()));
|
handleMqttStatus(true);
|
||||||
standWebSocket.broadcastTXT(errorsHeapJson);
|
|
||||||
// setLedStatus(LED_OFF);
|
// setLedStatus(LED_OFF);
|
||||||
mqttSubscribe();
|
mqttSubscribe();
|
||||||
res = true;
|
res = true;
|
||||||
} else {
|
} else {
|
||||||
SerialPrint("E", F("MQTT"), "🡆 Could't connect, retry in " + String(MQTT_RECONNECT_INTERVAL / 1000) + "s");
|
SerialPrint("E", F("MQTT"), "🡆 Could't connect, retry in " + String(MQTT_RECONNECT_INTERVAL / 1000) + "s");
|
||||||
jsonWriteStr_(errorsHeapJson, F("mqtt"), getStateStr(mqtt.state()));
|
handleMqttStatus(true);
|
||||||
standWebSocket.broadcastTXT(errorsHeapJson);
|
|
||||||
// setLedStatus(LED_FAST);
|
// setLedStatus(LED_FAST);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -319,45 +317,59 @@ void publishState() {
|
|||||||
//}
|
//}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void handleMqttStatus(bool send) {
|
||||||
|
String stateStr = getStateStr(mqtt.state());
|
||||||
|
Serial.println(stateStr);
|
||||||
|
jsonWriteStr_(errorsHeapJson, F("mqtt"), stateStr);
|
||||||
|
if (!send) standWebSocket.broadcastTXT(errorsHeapJson);
|
||||||
|
}
|
||||||
|
|
||||||
|
void handleMqttStatus(bool send, int state) {
|
||||||
|
String stateStr = getStateStr(state);
|
||||||
|
Serial.println(stateStr);
|
||||||
|
jsonWriteStr_(errorsHeapJson, F("mqtt"), stateStr);
|
||||||
|
if (!send) standWebSocket.broadcastTXT(errorsHeapJson);
|
||||||
|
}
|
||||||
|
|
||||||
const String getStateStr(int e) {
|
const String getStateStr(int e) {
|
||||||
switch (e) {
|
switch (e) {
|
||||||
case -4:
|
case -4: //Нет ответа от сервера
|
||||||
return F("e1");
|
return F("e1");
|
||||||
break;
|
break;
|
||||||
case -3:
|
case -3: //Соединение было разорвано
|
||||||
return F("e2");
|
return F("e2");
|
||||||
break;
|
break;
|
||||||
case -2:
|
case -2: //Ошибка соединения. Обычно возникает когда неверно указано название сервера MQTT
|
||||||
return F("e3");
|
return F("e3");
|
||||||
break;
|
break;
|
||||||
case -1:
|
case -1: //Клиент был отключен
|
||||||
return F("e4");
|
return F("e4");
|
||||||
break;
|
break;
|
||||||
case 0:
|
case 0: //подключено
|
||||||
return F("e5");
|
return F("e5");
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1: //Ошибка версии
|
||||||
return F("e6");
|
return F("e6");
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2: //Отклонен идентификатор
|
||||||
return F("e7");
|
return F("e7");
|
||||||
break;
|
break;
|
||||||
case 3:
|
case 3: //Не могу установить соединение
|
||||||
return F("e8");
|
return F("e8");
|
||||||
break;
|
break;
|
||||||
case 4:
|
case 4: //Неправильное имя пользователя/пароль
|
||||||
return F("e9");
|
return F("e9");
|
||||||
break;
|
break;
|
||||||
case 5:
|
case 5: //Не авторизован для подключения
|
||||||
return F("e10");
|
return F("e10");
|
||||||
break;
|
break;
|
||||||
case 6:
|
case 6: //Название сервера пустое
|
||||||
return F("e11");
|
return F("e11");
|
||||||
break;
|
break;
|
||||||
case 7:
|
case 7: //Имя пользователя или пароль пустые
|
||||||
return F("e12");
|
return F("e12");
|
||||||
break;
|
break;
|
||||||
case 8:
|
case 8: //Подключение в процессе
|
||||||
return F("e13");
|
return F("e13");
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
|||||||
@@ -47,13 +47,7 @@ void webSocketEvent(uint8_t num, WStype_t type, uint8_t* payload, size_t length)
|
|||||||
SerialPrint("E", "WS " + String(num), "Package without header");
|
SerialPrint("E", "WS " + String(num), "Package without header");
|
||||||
}
|
}
|
||||||
|
|
||||||
// all pages===================================================================
|
// page dashboard===================================================================
|
||||||
//**отправка**//
|
|
||||||
if (headerStr == ("/all|")) {
|
|
||||||
standWebSocket.sendTXT(num, ssidListHeapJson);
|
|
||||||
standWebSocket.sendTXT(num, errorsHeapJson);
|
|
||||||
}
|
|
||||||
// dashboard===================================================================
|
|
||||||
//**отправка**//
|
//**отправка**//
|
||||||
if (headerStr == "/|") {
|
if (headerStr == "/|") {
|
||||||
sendFileToWs("/layout.json", num, 1024);
|
sendFileToWs("/layout.json", num, 1024);
|
||||||
@@ -63,7 +57,7 @@ void webSocketEvent(uint8_t num, WStype_t type, uint8_t* payload, size_t length)
|
|||||||
if (headerStr == "/tuoyal|") {
|
if (headerStr == "/tuoyal|") {
|
||||||
writeFileUint8tByFrames("layout.json", payload, length, headerLenth, 256);
|
writeFileUint8tByFrames("layout.json", payload, length, headerLenth, 256);
|
||||||
}
|
}
|
||||||
// configutation===============================================================
|
// page configutation================================================================
|
||||||
//**отправка**//
|
//**отправка**//
|
||||||
if (headerStr == "/config|") {
|
if (headerStr == "/config|") {
|
||||||
sendFileToWs("/items.json", num, 1024);
|
sendFileToWs("/items.json", num, 1024);
|
||||||
@@ -75,10 +69,12 @@ void webSocketEvent(uint8_t num, WStype_t type, uint8_t* payload, size_t length)
|
|||||||
if (headerStr == "/gifnoc|") {
|
if (headerStr == "/gifnoc|") {
|
||||||
writeFileUint8tByFrames("config.json", payload, length, headerLenth, 256);
|
writeFileUint8tByFrames("config.json", payload, length, headerLenth, 256);
|
||||||
}
|
}
|
||||||
// connection===================================================================
|
// page connection===================================================================
|
||||||
//**отправка**//
|
//**отправка**//
|
||||||
if (headerStr == "/connection|") {
|
if (headerStr == "/connection|") {
|
||||||
sendFileToWs("/settings.json", num, 1024);
|
sendFileToWs("/settings.json", num, 1024);
|
||||||
|
standWebSocket.sendTXT(num, ssidListHeapJson);
|
||||||
|
standWebSocket.sendTXT(num, errorsHeapJson);
|
||||||
//запуск асинхронного сканирования wifi сетей при переходе на страницу соединений
|
//запуск асинхронного сканирования wifi сетей при переходе на страницу соединений
|
||||||
// RouterFind(jsonReadStr(settingsFlashJson, F("routerssid")));
|
// RouterFind(jsonReadStr(settingsFlashJson, F("routerssid")));
|
||||||
}
|
}
|
||||||
@@ -86,6 +82,7 @@ void webSocketEvent(uint8_t num, WStype_t type, uint8_t* payload, size_t length)
|
|||||||
if (headerStr == "/sgnittes|") {
|
if (headerStr == "/sgnittes|") {
|
||||||
writeFileUint8tByFrames("settings.json", payload, length, headerLenth, 256);
|
writeFileUint8tByFrames("settings.json", payload, length, headerLenth, 256);
|
||||||
writeUint8tToString(payload, length, headerLenth, settingsFlashJson);
|
writeUint8tToString(payload, length, headerLenth, settingsFlashJson);
|
||||||
|
standWebSocket.sendTXT(num, errorsHeapJson);
|
||||||
// settingsFlashJson = readFile(F("settings.json"), 4096);
|
// settingsFlashJson = readFile(F("settings.json"), 4096);
|
||||||
}
|
}
|
||||||
//**отправка**//
|
//**отправка**//
|
||||||
@@ -94,26 +91,32 @@ void webSocketEvent(uint8_t num, WStype_t type, uint8_t* payload, size_t length)
|
|||||||
RouterFind(jsonReadStr(settingsFlashJson, F("routerssid")));
|
RouterFind(jsonReadStr(settingsFlashJson, F("routerssid")));
|
||||||
standWebSocket.sendTXT(num, ssidListHeapJson);
|
standWebSocket.sendTXT(num, ssidListHeapJson);
|
||||||
}
|
}
|
||||||
// list ===================================================================
|
//**сохранение**//
|
||||||
|
if (headerStr == "/mqtt|") {
|
||||||
|
sendFileToWs("/settings.json", num, 1024); //отправляем в ответ новые полученные настройки
|
||||||
|
handleMqttStatus(false, 8); //меняем статус на неопределенный
|
||||||
|
mqttReconnect(); //начинаем переподключение
|
||||||
|
standWebSocket.sendTXT(num, errorsHeapJson); //отправляем что статус неопределен
|
||||||
|
}
|
||||||
|
// page list ==========================================================================
|
||||||
//**отправка**//
|
//**отправка**//
|
||||||
if (headerStr == "/list|") {
|
if (headerStr == "/list|") {
|
||||||
standWebSocket.sendTXT(num, devListHeapJson);
|
standWebSocket.sendTXT(num, devListHeapJson);
|
||||||
}
|
}
|
||||||
// system ===================================================================
|
// page system =========================================================================
|
||||||
|
//**отправка**//
|
||||||
|
if (headerStr == "/system|") {
|
||||||
|
standWebSocket.sendTXT(num, errorsHeapJson);
|
||||||
|
}
|
||||||
//**сохранение**//
|
//**сохранение**//
|
||||||
if (headerStr == "/rorre|") {
|
if (headerStr == "/rorre|") {
|
||||||
writeUint8tValueToJsonString(payload, length, headerLenth, errorsHeapJson);
|
writeUint8tValueToJsonString(payload, length, headerLenth, errorsHeapJson);
|
||||||
}
|
}
|
||||||
// orders ===================================================================
|
// orders ==============================================================================
|
||||||
|
//**команда перезагрузки esp**//
|
||||||
if (headerStr == "/reboot|") {
|
if (headerStr == "/reboot|") {
|
||||||
ESP.restart();
|
ESP.restart();
|
||||||
}
|
}
|
||||||
if (headerStr == "/mqtt|") {
|
|
||||||
jsonWriteStr_(errorsHeapJson, F("mqtt"), F("e13"));
|
|
||||||
// if (jsonReadStr(errorsHeapJson, "mqtt") != "e13") {
|
|
||||||
mqttReconnect();
|
|
||||||
//}
|
|
||||||
}
|
|
||||||
|
|
||||||
} break;
|
} break;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user