diff --git a/include/Consts.h b/include/Consts.h index f468114e..a7d05935 100644 --- a/include/Consts.h +++ b/include/Consts.h @@ -87,6 +87,11 @@ enum TimerTask_t { WIFI_SCAN, enum notAsincActions { ZERO, do_UPGRADE, + do_GETLASTVERSION, + do_UDPDATAPARSE, + do_MQTTUDP, + do_BUSSCAN, + do_MQTTPARAMSCHANGED, }; enum ErrorType_t { diff --git a/include/Global.h b/include/Global.h index 2047d21a..8b3cb440 100644 --- a/include/Global.h +++ b/include/Global.h @@ -153,7 +153,7 @@ extern void setConfigParam(const char* param, const String& value); extern String getURL(const String& urls); extern void do_fscheck(); -extern void do_scan_bus(); +extern void doBusScan(); extern void servo_(); extern void clock_init(); @@ -223,7 +223,7 @@ extern void createChart(String widget_name, String page_name, String page_number extern void pushControl(); // UDP -extern void udp_init(); +extern void udpInit(); extern void do_udp_data_parse(); extern void do_mqtt_send_settings_to_udp(); diff --git a/include/Upgrade.h b/include/Upgrade.h index e031a765..4d21f53b 100644 --- a/include/Upgrade.h +++ b/include/Upgrade.h @@ -1,5 +1,8 @@ #pragma once -void getLastVersion(); +#include -void do_update(); \ No newline at end of file +const String getAvailableUrl(const char* mcu); +void getLastVersion(); +void upgradeInit(); +void upgrade_firmware(); \ No newline at end of file diff --git a/include/udp_.h b/include/udp_.h new file mode 100644 index 00000000..6583878c --- /dev/null +++ b/include/udp_.h @@ -0,0 +1,9 @@ +#pragma once + +extern void udpInit(); +extern bool isUdpEnabled(); +extern void loopUdp(); +extern void handleUdp_esp32(); +extern void do_udp_data_parse(); +extern void add_dev_in_list(String filename, String id, String dev_name, String ip); +extern void send_mqtt_to_udp(); \ No newline at end of file diff --git a/src/MqttClient.cpp b/src/MqttClient.cpp index 5137f324..168f7cd0 100644 --- a/src/MqttClient.cpp +++ b/src/MqttClient.cpp @@ -1,8 +1,10 @@ #include "MqttClient.h" + +#include + +#include "Class/NotAsinc.h" #include "Global.h" #include "Init.h" -#include -#include "Class/NotAsinc.h" static const char* MODULE = "Mqtt"; @@ -18,6 +20,13 @@ String mqttPrefix; String mqttRootDevice; void init() { + + myNotAsincActions->add( + do_MQTTPARAMSCHANGED, [&](void*) { + reconnect(); + }, + nullptr); + mqtt.setCallback(handleSubscribedUpdates); ts.add( @@ -133,7 +142,6 @@ void handleSubscribedUpdates(char* topic, uint8_t* payload, size_t length) { #endif } else if (topicStr.indexOf("control")) { - //iotTeam/12882830-1458415/light 1 String key = selectFromMarkerToMarker(topicStr, "/", 3); @@ -144,27 +152,22 @@ void handleSubscribedUpdates(char* topic, uint8_t* payload, size_t length) { order_loop += ","; } else if (topicStr.indexOf("order")) { - payloadStr.replace("_", " "); order_loop += payloadStr; order_loop += ","; } else if (topicStr.indexOf("update")) { - if (payloadStr == "1") { myNotAsincActions->make(do_UPGRADE); } } else if (topicStr.indexOf("devc")) { - writeFile(String(DEVICE_CONFIG_FILE), payloadStr); Device_init(); } else if (topicStr.indexOf("devs")) { - writeFile(String(DEVICE_SCENARIO_FILE), payloadStr); loadScenario(); - } } diff --git a/src/Upgrade.cpp b/src/Upgrade.cpp index 2f517372..effac97c 100644 --- a/src/Upgrade.cpp +++ b/src/Upgrade.cpp @@ -1,37 +1,22 @@ #include "Upgrade.h" + #include "Class/NotAsinc.h" -#include "Global.h" #include "ESP8266.h" +#include "Global.h" static const char* MODULE = "Update"; - static const char* check_update_url PROGMEM = "http://91.204.228.124:1100/update/%s/version.txt"; -const String getAvailableUrl(const char* mcu) { - char buf[128]; - sprintf_P(buf, check_update_url, mcu); - return buf; -} - -void getLastVersion() { - if (checkUpdatesFlag) { - String url; -#ifdef ESP8266 - url = getAvailableUrl("esp8266"); -#else - url = getAvailableUrl("esp32"); -#endif - lastVersion = getURL(url); - jsonWriteStr(configSetupJson, "last_version", lastVersion); - checkUpdatesFlag = false; - } -} - void upgradeInit() { - myNotAsincActions->add( do_UPGRADE, [&](void*) { - upgrade_firmware(); + upgrade_firmware(); + }, + nullptr); + + myNotAsincActions->add( + do_GETLASTVERSION, [&](void*) { + getLastVersion(); }, nullptr); @@ -43,6 +28,23 @@ void upgradeInit() { }; } +const String getAvailableUrl(const char* mcu) { + char buf[128]; + sprintf_P(buf, check_update_url, mcu); + return buf; +} + +void getLastVersion() { + String url; +#ifdef ESP8266 + url = getAvailableUrl("esp8266"); +#else + url = getAvailableUrl("esp32"); +#endif + lastVersion = getURL(url); + jsonWriteStr(configSetupJson, "last_version", lastVersion); +} + void upgrade_firmware() { String scanerioBackup, configBackup, setupBackup; diff --git a/src/Web.cpp b/src/Web.cpp index 25a21dd9..baa1a20b 100644 --- a/src/Web.cpp +++ b/src/Web.cpp @@ -167,37 +167,37 @@ void web_init() { if (request->hasArg("mqttServer")) { jsonWriteStr(configSetupJson, "mqttServer", request->getParam("mqttServer")->value()); saveConfig(); - mqttParamsChanged = true; + myNotAsincActions->make(do_MQTTPARAMSCHANGED); request->send(200); } if (request->hasArg("mqttPort")) { int port = (request->getParam("mqttPort")->value()).toInt(); jsonWriteInt(configSetupJson, "mqttPort", port); saveConfig(); - mqttParamsChanged = true; + myNotAsincActions->make(do_MQTTPARAMSCHANGED); request->send(200); } if (request->hasArg("mqttPrefix")) { jsonWriteStr(configSetupJson, "mqttPrefix", request->getParam("mqttPrefix")->value()); saveConfig(); - mqttParamsChanged = true; + myNotAsincActions->make(do_MQTTPARAMSCHANGED); request->send(200); } if (request->hasArg("mqttUser")) { jsonWriteStr(configSetupJson, "mqttUser", request->getParam("mqttUser")->value()); saveConfig(); - mqttParamsChanged = true; + myNotAsincActions->make(do_MQTTPARAMSCHANGED); request->send(200); } if (request->hasArg("mqttPass")) { jsonWriteStr(configSetupJson, "mqttPass", request->getParam("mqttPass")->value()); saveConfig(); - mqttParamsChanged = true; + myNotAsincActions->make(do_MQTTPARAMSCHANGED); request->send(200); } //-------------------------------------------------------------------------------- if (request->hasArg("mqttsend")) { - mqtt_send_settings_to_udp = true; + myNotAsincActions->make(do_MQTTUDP); request->send(200); } @@ -256,7 +256,7 @@ void web_init() { * Check */ server.on("/check", HTTP_GET, [](AsyncWebServerRequest* request) { - checkUpdatesFlag = true; + myNotAsincActions->make(do_GETLASTVERSION); pm.info("firmware version: " + lastVersion); if (!FLASH_4MB) { diff --git a/src/bus.cpp b/src/bus.cpp new file mode 100644 index 00000000..8e210398 --- /dev/null +++ b/src/bus.cpp @@ -0,0 +1,18 @@ +#include "Bus/BusScannerFactory.h" +#include "Class/NotAsinc.h" +#include "Global.h" + +void busInit() { + myNotAsincActions->add( + do_BUSSCAN, [&](void*) { + doBusScan(); + }, + nullptr); +} + +void doBusScan() { + String res = ""; + BusScanner* scanner = BusScannerFactory::get(configSetupJson, busToScan, res); + scanner->scan(); + jsonWriteStr(configLiveJson, String(scanner->tag()), res); +} \ No newline at end of file diff --git a/src/main.cpp b/src/main.cpp index 4ac7524d..f6e2f00c 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1,4 +1,4 @@ -#include "Bus/BusScannerFactory.h" + #include "Class/CallBackTest.h" #include "Class/NotAsinc.h" #include "Class/Switch.h" @@ -67,7 +67,7 @@ void setup() { #ifdef UDP_ENABLED pm.info("Broadcast UDP"); - udp_init(); + udpInit(); #endif ts.add( @@ -96,31 +96,17 @@ void loop() { loopUdp(); #endif timeNow->loop(); - myNotAsincActions->loop(); - not_async_actions(); MqttClient::loop(); loopCmd(); mySwitch->loop(); loopScenario(); loopSerial(); + + myNotAsincActions->loop(); ts.update(); } -void not_async_actions() { -#ifdef UDP_ENABLED - do_udp_data_parse(); - do_mqtt_send_settings_to_udp(); -#endif - if (mqttParamsChanged) { - MqttClient::reconnect(); - mqttParamsChanged = false; - } - getLastVersion(); - - - do_scan_bus(); -} String getURL(const String& urls) { String res = ""; @@ -205,12 +191,4 @@ void clock_init() { nullptr, true); } -void do_scan_bus() { - if (busScanFlag) { - String res = ""; - BusScanner* scanner = BusScannerFactory::get(configSetupJson, busToScan, res); - scanner->scan(); - jsonWriteStr(configLiveJson, String(scanner->tag()), res); - busScanFlag = false; - } -} + diff --git a/src/udp.cpp b/src/udp_.cpp similarity index 88% rename from src/udp.cpp rename to src/udp_.cpp index 2f7ba644..a94d49b0 100644 --- a/src/udp.cpp +++ b/src/udp_.cpp @@ -1,3 +1,6 @@ +#include "Class/NotAsinc.h" +#include "udp.h" +#include "udp_.h" #include "Global.h" static const char* MODULE = "Udp"; @@ -16,13 +19,21 @@ int udp_period; boolean udp_busy = false; unsigned int udp_port = 4210; -//TODO Помомему тут ошибка в define'ах -void handleUdp_esp32(); - -void add_dev_in_list(String fileName, String id, String dev_name, String ip); #ifdef UDP_ENABLED -void udp_init() { +void udpInit() { + myNotAsincActions->add( + do_UDPDATAPARSE, [&](void*) { + do_udp_data_parse(); + }, + nullptr); + + myNotAsincActions->add( + do_MQTTUDP, [&](void*) { + send_mqtt_to_udp(); + }, + nullptr); + removeFile("dev.csv"); addFileLn("dev.csv", "device id;device name;ip address"); @@ -82,7 +93,7 @@ void loopUdp() { } received = String(udp_packet); if (received.indexOf("iotm;") >= 0 || received.indexOf("mqttServer") >= 0) { - udp_data_parse = true; + myNotAsincActions->make(do_UDPDATAPARSE); } #endif ; @@ -96,10 +107,10 @@ void handleUdp_esp32() { remote_ip = packet.remoteIP().toString(); if (jsonReadStr(configSetupJson, "udponoff") == "1") { if (received.indexOf("iotm;") >= 0) { - udp_data_parse = true; + myNotAsincActions->make(do_UDPDATAPARSE); } if (received.indexOf("mqttServer") >= 0) { - udp_data_parse = true; + myNotAsincActions->make(do_UDPDATAPARSE); } } }); @@ -108,9 +119,6 @@ void handleUdp_esp32() { } void do_udp_data_parse() { - if (!udp_data_parse) { - return; - } if (received.indexOf("mqttServer") >= 0) { pm.info("received setting"); jsonWriteStr(configSetupJson, "mqttServer", jsonReadStr(received, "mqttServer")); @@ -119,12 +127,11 @@ void do_udp_data_parse() { jsonWriteStr(configSetupJson, "mqttUser", jsonReadStr(received, "mqttUser")); jsonWriteStr(configSetupJson, "mqttPass", jsonReadStr(received, "mqttPass")); saveConfig(); - mqttParamsChanged = true; + myNotAsincActions->make(do_MQTTPARAMSCHANGED); } if (received.indexOf("iotm;") >= 0) { add_dev_in_list("dev.csv", selectFromMarkerToMarker(received, ";", 1), selectFromMarkerToMarker(received, ";", 2), received); } - udp_data_parse = false; } void add_dev_in_list(String filename, String id, String dev_name, String ip) { @@ -157,10 +164,4 @@ void send_mqtt_to_udp() { udp_busy = false; } -void do_mqtt_send_settings_to_udp() { - if (mqtt_send_settings_to_udp) { - mqtt_send_settings_to_udp = false; - send_mqtt_to_udp(); - } -} #endif \ No newline at end of file