From ec187af09dc850c20cde69fb7a741029dd8a1d4f Mon Sep 17 00:00:00 2001 From: Dmitry Borisenko <49808844+DmitryBorisenko33@users.noreply.github.com> Date: Sat, 22 Feb 2020 03:34:44 +0300 Subject: [PATCH] some fix --- Init.ino | 30 ++++- Time.ino | 4 +- ...2-esp8266_iot-manager_modules_firmware.ino | 16 +-- mqtt.ino | 108 +++++------------- set.h | 9 +- 5 files changed, 73 insertions(+), 94 deletions(-) diff --git a/Init.ino b/Init.ino index 84258f7d..a1e28379 100644 --- a/Init.ino +++ b/Init.ino @@ -149,7 +149,7 @@ void prsets_init() { request->send(200, "text/text", "OK"); // отправляем ответ о выполнении }); - + //default=============================================================================== server.on("/default", HTTP_GET, [](AsyncWebServerRequest * request) { writeFile("firmware.config.txt", readFile("configs/firmware.config.txt", 2048)); @@ -165,7 +165,7 @@ void up_time() { uint32_t mm = ss / 60; uint32_t hh = mm / 60; uint32_t dd = hh / 24; - + String out = ""; if (ss != 0) { @@ -186,3 +186,29 @@ void up_time() { } Serial.println(out + ", mqtt_lost_error: " + String(mqtt_lost_error) + ", wifi_lost_error: " + String(wifi_lost_error)); } + +void statistics() { + String urls = "http://backup.privet.lv/visitors/?"; + + urls += WiFi.macAddress().c_str(); + urls += "&"; + +#ifdef ESP8266 + urls += "iot-manager_esp8266"; +#endif +#ifdef ESP32 + urls += "iot-manager_esp32"; +#endif + urls += "&"; + +#ifdef ESP8266 + urls += ESP.getResetReason(); +#endif +#ifdef ESP32 + urls += "unknow"; +#endif + urls += "&"; + + urls += DATE_COMPILING; + String stat = getURL(urls); +} diff --git a/Time.ino b/Time.ino index 766aff96..bbef4623 100644 --- a/Time.ino +++ b/Time.ino @@ -16,7 +16,7 @@ void reconfigTime() { configTime(jsonRead(configSetup, "timezone").toInt() * 3600, 0, ntpServer); int i = 0; - Serial.println("[i]Awaiting for time "); + Serial.println("[i] Awaiting for time "); #ifdef ESP32 struct tm timeinfo; @@ -35,7 +35,7 @@ void reconfigTime() { // } #endif - Serial.print("Time = "); + Serial.print("[i] Time = "); Serial.print(GetDataDigital()); Serial.print(" "); Serial.println(GetTime()); diff --git a/esp32-esp8266_iot-manager_modules_firmware.ino b/esp32-esp8266_iot-manager_modules_firmware.ino index e7e32968..9dc95cbb 100644 --- a/esp32-esp8266_iot-manager_modules_firmware.ino +++ b/esp32-esp8266_iot-manager_modules_firmware.ino @@ -3,7 +3,7 @@ void setup() { Serial.begin(115200); - Serial.setDebugOutput(true); + //Serial.setDebugOutput(true); Serial.println("--------------started----------------"); //-------------------------------------------------------------- SPIFFS.begin(); @@ -48,16 +48,16 @@ void setup() { //-------------------------------------------------------------- Push_init(); Serial.println("[V] Push_init"); - - + //-------------------------------------------------------------- + statistics(); + Serial.println("[V] statistics"); + //-------------------------------------------------------------- + getMemoryLoad("[i] After loading"); + // ts.add(TEST, 20000, [&](void*) { - ts.add(TEST, 20000, [&](void*) { - - up_time(); - - }, nullptr, true); + // }, nullptr, true); } diff --git a/mqtt.ino b/mqtt.ino index 8e0e03c3..d1936ee1 100644 --- a/mqtt.ino +++ b/mqtt.ino @@ -4,42 +4,49 @@ void MQTT_init() { server.on("/mqttSave", HTTP_GET, [](AsyncWebServerRequest * request) { if (request->hasArg("mqttServer")) { - jsonWrite(configSetup, "mqttServer", request->getParam("mqttServer")->value()); + jsonWrite(configSetup, "mqttServer", request->getParam("mqttServer")->value()); } if (request->hasArg("mqttPort")) { - int port = (request->getParam("mqttPort")->value()).toInt(); - jsonWrite(configSetup, "mqttPort", port); + int port = (request->getParam("mqttPort")->value()).toInt(); + jsonWrite(configSetup, "mqttPort", port); } if (request->hasArg("mqttUser")) { - jsonWrite(configSetup, "mqttUser", request->getParam("mqttUser")->value()); + jsonWrite(configSetup, "mqttUser", request->getParam("mqttUser")->value()); } if (request->hasArg("mqttPass")) { - jsonWrite(configSetup, "mqttPass", request->getParam("mqttPass")->value()); + jsonWrite(configSetup, "mqttPass", request->getParam("mqttPass")->value()); } saveConfig(); - client.disconnect(); - MQTT_Connecting(false); + client.disconnect(); + MQTT_Connecting(); + + + int i = 0; + while (!client.connected() && i <= 25) { + delay(1000); + Serial.print("."); + i++; + } String tmp = "{}"; jsonWrite(tmp, "title", "" + stateMQTT()); jsonWrite(tmp, "class", "pop-up"); - request->send(200, "text/text", "ok"); - //request->send(200, "text/text", tmp); // отправляем ответ о выполнении + //request->send(200, "text/text", "ok"); + request->send(200, "text/text", tmp); // отправляем ответ о выполнении }); - - //проверка подключения к серверу ts.add(WIFI_MQTT_CONNECTION_CHECK, wifi_mqtt_reconnecting, [&](void*) { + up_time(); if (WiFi.status() == WL_CONNECTED) { Serial.println("[V] WiFi-ok"); if (client.connected()) { Serial.println("[V] MQTT-ok"); } else { - MQTT_Connecting(true); + MQTT_Connecting(); mqtt_lost_error++; } } else { @@ -61,64 +68,42 @@ void handleMQTT() { } } //===============================================ПОДКЛЮЧЕНИЕ======================================================== -void MQTT_Connecting(boolean out_date_send) { - +boolean MQTT_Connecting() { String mqtt_server = jsonRead(configSetup, "mqttServer"); - if ((mqtt_server != "")) { - static boolean first = true; if (!first) Serial.println("[E] Lost MQTT connection, start reconnecting"); first = false; - - //ssl//espClient.setCACert(local_root_ca1); - client.setServer(mqtt_server.c_str(), jsonReadtoInt(configSetup, "mqttPort")); - // подключаемся к MQTT серверу if (WiFi.status() == WL_CONNECTED) { if (!client.connected()) { Serial.println("[V] Connecting to MQTT server commenced"); - //busy = true; if (client.connect(chipID.c_str(), jsonRead(configSetup, "mqttUser").c_str(), jsonRead(configSetup, "mqttPass").c_str())) { Serial.println("[V] MQTT connected"); - client.setCallback(callback); - client.subscribe(prefix.c_str()); // Для приема получения HELLOW и подтверждения связи client.subscribe((prefix + "/" + chipID + "/+/control").c_str()); // Подписываемся на топики control client.subscribe((prefix + "/" + chipID + "/order").c_str()); // Подписываемся на топики order //client.subscribe((prefix + "/" + chipID + "/test").c_str()); //Для приема получения work и подтверждения связи (для приложения mqtt IOT MQTT Panel) - /* String tmp_line = id_of_other_device; - - while (tmp_line.length() != 0) { - - String id = selectToMarker(tmp_line, ","); //2058631-1589487 1 - id = selectFromMarkerToMarker(id, " ", 0); - client.subscribe((prefix + "/" + id + "/+/status").c_str(), 0); - Serial.println("->subscribed to device, id: " + id); - - tmp_line = deleteBeforeDelimiter(tmp_line, ","); - }*/ - client.subscribe((prefix + "/ids").c_str()); // Подписываемся на топики ids sendMQTT("test", "work"); Serial.println("[V] Callback set, subscribe done"); - //busy = false; - if (out_date_send) outcoming_date(); //отправляем данные в виджеты + //if (out_date_send) outcoming_date(); //отправляем данные в виджеты + return true; } else { - //Serial.println(stateMQTT()); Serial.println("[E] try again in " + String(wifi_mqtt_reconnecting / 1000) + " sec"); + return false; } } } } else { Serial.println("[E] No date for MQTT connection"); + return false; } } //=====================================================ВХОДЯЩИЕ ДАННЫЕ======================================================== - void callback(char* topic, byte* payload, unsigned int length) { Serial.print("[MQTT] "); Serial.print(topic); @@ -130,11 +115,9 @@ void callback(char* topic, byte* payload, unsigned int length) { } Serial.println(" => " + str); - if (str == "HELLO") outcoming_date(); - - //превращает название топика в команду, а значение в параметр команды + if (str == "HELLO") outcoming_date(); //превращает название топика в команду, а значение в параметр команды - if (topic_str.indexOf("control") > 0) { //IoTmanager/800324-1458415/RelaySet1/control 1 /IoTmanager/9139530-1458400/RelaySet1/control -> 1 + if (topic_str.indexOf("control") > 0) { //IoTmanager/800324-1458415/RelaySet1/control 1 //Serial.println(topic_str); String topic = selectFromMarkerToMarker(topic_str, "/", 3); //RelaySet1 String number = selectToMarkerLast(topic, "Set"); //1 @@ -154,8 +137,6 @@ void callback(char* topic, byte* payload, unsigned int length) { //данные которые отправляем при подключении или отбновлении страницы void outcoming_date() { - //busy = true; - sendAllWigets(); sendAllData(); @@ -166,12 +147,8 @@ void outcoming_date() { Serial.println("[V] Sending all date to iot manager completed"); - //busy = false; - } //======================================CONFIG================================================== -///IoTmanager/2058631-1589487/config {----viget----} -///sendMQTT("config", data); boolean sendMQTT(String end_of_topik, String data) { String topik = prefix + "/" + chipID + "/" + end_of_topik; boolean send_status = client.beginPublish(topik.c_str(), data.length(), false); @@ -180,38 +157,16 @@ boolean sendMQTT(String end_of_topik, String data) { return send_status; } //======================================STATUS================================================== -///IoTmanager/2058631-1589487/rel1/status {"status":"1"} -///sendSTATUS(topic, state) void sendSTATUS(String topik, String state) { topik = prefix + "/" + chipID + "/" + topik + "/" + "status"; String json_ = "{}"; jsonWrite(json_, "status", state); - - //long st_time = millis(); int send_status = client.publish (topik.c_str(), json_.c_str(), false); - //long end_time = millis(); - //Serial.println("send status = " + String(send_status) + ", timeout = " + String(end_time - st_time)); } -/*void sendSTATUS(String topik, String state, String type, String param) { - topik = prefix + "/" + chipID + "/" + topik + "/" + "status"; - String json_ = "{}"; - jsonWrite(json_, "status", state); - jsonWrite(json_, type, param); - - //long st_time = millis(); - int send_status = client.publish (topik.c_str(), json_.c_str(), false); - //long end_time = millis(); - //Serial.println("send status = " + String(send_status) + ", timeout = " + String(end_time - st_time)); - }*/ //======================================CONTROL================================================== -///IoTmanager/2058631-1589487/rel1/control 1 void sendCONTROL(String id, String topik, String state) { String all_line = prefix + "/" + id + "/" + topik + "/control"; - - //long st_time = millis(); int send_status = client.publish (all_line.c_str(), state.c_str(), false); - //long end_time = millis(); - //Serial.println("send control = " + String(send_status) + ", timeout = " + String(end_time - st_time)); } //=====================================================ОТПРАВЛЯЕМ ВИДЖЕТЫ======================================================== @@ -221,9 +176,7 @@ void sendAllWigets() { String line; int psn_1 = 0; int psn_2; - do { - psn_2 = all_vigets.indexOf("\r\n", psn_1); line = all_vigets.substring(psn_1, psn_2); line.replace("\n", ""); @@ -231,17 +184,14 @@ void sendAllWigets() { //jsonWrite(line, "id", String(counter)); //jsonWrite(line, "pageId", String(counter)); counter++; - sendMQTT("config",line); + sendMQTT("config", line); Serial.println("[V] " + line); psn_1 = psn_2 + 1; - } while (psn_2 + 2 < all_vigets.length()); - getMemoryLoad("[i] after send all vigets"); } } //=====================================================ОТПРАВЛЯЕМ ДАННЫЕ В ВИДЖЕТЫ ПРИ ОБНОВЛЕНИИ СТРАНИЦЫ======================================================== - void sendAllData() { //берет строку json и ключи превращает в топики а значения колючей в них посылает String current_config = configJson; //{"SSDP":"MODULES","lang":"","ip":"192.168.43.60","DS":"34.00","rel1":"1","rel2":"1"} @@ -253,7 +203,7 @@ void sendAllData() { //берет строку json и ключи превра while (current_config.length() != 0) { String tmp = selectToMarker (current_config, ","); - String topic = selectToMarker (tmp, ":"); + String topic = selectToMarker (tmp, ":"); topic.replace("\"", ""); String state = selectToMarkerLast (tmp, ":"); if (topic.indexOf("time") < 0) { @@ -287,7 +237,7 @@ void sendLogData(String file, String topic) { } String stateMQTT() { - + int state = client.state(); switch (state) { diff --git a/set.h b/set.h index 6422702d..e0210ded 100644 --- a/set.h +++ b/set.h @@ -75,6 +75,9 @@ Adafruit_Si7021 sensor_Si7021 = Adafruit_Si7021(); //#define WS_enable //----------------------------------------------------------------- +#define TIME_COMPILING String(__TIME__) +#define DATE_COMPILING String(__DATE__) + #define wifi_mqtt_reconnecting 20000 //----------------------------------------------------------------- #define analog_update_int 5000 @@ -87,9 +90,9 @@ Adafruit_Si7021 sensor_Si7021 = Adafruit_Si7021(); #define tank_level_shooting_interval 500 //интервал выстрела датчика #define tank_level_times_to_send 20 //после скольки выстрелов делать отправку данных //----------------------------------------------------------------- -#define dhtT_update_int 5000 -#define dhtH_update_int 5000 -#define dht_calculation_update_int 5000 +#define dhtT_update_int 10000 +#define dhtH_update_int 10000 +#define dht_calculation_update_int 10000 //-----------------------------------------------------------------