great changes

This commit is contained in:
Dmitry Borisenko
2020-08-25 19:25:54 +03:00
parent 532925756f
commit 7f7bad305c
10 changed files with 108 additions and 89 deletions

View File

@@ -87,6 +87,11 @@ enum TimerTask_t { WIFI_SCAN,
enum notAsincActions { enum notAsincActions {
ZERO, ZERO,
do_UPGRADE, do_UPGRADE,
do_GETLASTVERSION,
do_UDPDATAPARSE,
do_MQTTUDP,
do_BUSSCAN,
do_MQTTPARAMSCHANGED,
}; };
enum ErrorType_t { enum ErrorType_t {

View File

@@ -153,7 +153,7 @@ extern void setConfigParam(const char* param, const String& value);
extern String getURL(const String& urls); extern String getURL(const String& urls);
extern void do_fscheck(); extern void do_fscheck();
extern void do_scan_bus(); extern void doBusScan();
extern void servo_(); extern void servo_();
extern void clock_init(); extern void clock_init();
@@ -223,7 +223,7 @@ extern void createChart(String widget_name, String page_name, String page_number
extern void pushControl(); extern void pushControl();
// UDP // UDP
extern void udp_init(); extern void udpInit();
extern void do_udp_data_parse(); extern void do_udp_data_parse();
extern void do_mqtt_send_settings_to_udp(); extern void do_mqtt_send_settings_to_udp();

View File

@@ -1,5 +1,8 @@
#pragma once #pragma once
void getLastVersion(); #include <Arduino.h>
void do_update(); const String getAvailableUrl(const char* mcu);
void getLastVersion();
void upgradeInit();
void upgrade_firmware();

9
include/udp_.h Normal file
View File

@@ -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();

View File

@@ -1,8 +1,10 @@
#include "MqttClient.h" #include "MqttClient.h"
#include <LittleFS.h>
#include "Class/NotAsinc.h"
#include "Global.h" #include "Global.h"
#include "Init.h" #include "Init.h"
#include <LittleFS.h>
#include "Class/NotAsinc.h"
static const char* MODULE = "Mqtt"; static const char* MODULE = "Mqtt";
@@ -18,6 +20,13 @@ String mqttPrefix;
String mqttRootDevice; String mqttRootDevice;
void init() { void init() {
myNotAsincActions->add(
do_MQTTPARAMSCHANGED, [&](void*) {
reconnect();
},
nullptr);
mqtt.setCallback(handleSubscribedUpdates); mqtt.setCallback(handleSubscribedUpdates);
ts.add( ts.add(
@@ -133,7 +142,6 @@ void handleSubscribedUpdates(char* topic, uint8_t* payload, size_t length) {
#endif #endif
} else if (topicStr.indexOf("control")) { } else if (topicStr.indexOf("control")) {
//iotTeam/12882830-1458415/light 1 //iotTeam/12882830-1458415/light 1
String key = selectFromMarkerToMarker(topicStr, "/", 3); String key = selectFromMarkerToMarker(topicStr, "/", 3);
@@ -144,27 +152,22 @@ void handleSubscribedUpdates(char* topic, uint8_t* payload, size_t length) {
order_loop += ","; order_loop += ",";
} else if (topicStr.indexOf("order")) { } else if (topicStr.indexOf("order")) {
payloadStr.replace("_", " "); payloadStr.replace("_", " ");
order_loop += payloadStr; order_loop += payloadStr;
order_loop += ","; order_loop += ",";
} else if (topicStr.indexOf("update")) { } else if (topicStr.indexOf("update")) {
if (payloadStr == "1") { if (payloadStr == "1") {
myNotAsincActions->make(do_UPGRADE); myNotAsincActions->make(do_UPGRADE);
} }
} else if (topicStr.indexOf("devc")) { } else if (topicStr.indexOf("devc")) {
writeFile(String(DEVICE_CONFIG_FILE), payloadStr); writeFile(String(DEVICE_CONFIG_FILE), payloadStr);
Device_init(); Device_init();
} else if (topicStr.indexOf("devs")) { } else if (topicStr.indexOf("devs")) {
writeFile(String(DEVICE_SCENARIO_FILE), payloadStr); writeFile(String(DEVICE_SCENARIO_FILE), payloadStr);
loadScenario(); loadScenario();
} }
} }

View File

@@ -1,37 +1,22 @@
#include "Upgrade.h" #include "Upgrade.h"
#include "Class/NotAsinc.h" #include "Class/NotAsinc.h"
#include "Global.h"
#include "ESP8266.h" #include "ESP8266.h"
#include "Global.h"
static const char* MODULE = "Update"; static const char* MODULE = "Update";
static const char* check_update_url PROGMEM = "http://91.204.228.124:1100/update/%s/version.txt"; 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() { void upgradeInit() {
myNotAsincActions->add( myNotAsincActions->add(
do_UPGRADE, [&](void*) { do_UPGRADE, [&](void*) {
upgrade_firmware(); upgrade_firmware();
},
nullptr);
myNotAsincActions->add(
do_GETLASTVERSION, [&](void*) {
getLastVersion();
}, },
nullptr); 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() { void upgrade_firmware() {
String scanerioBackup, configBackup, setupBackup; String scanerioBackup, configBackup, setupBackup;

View File

@@ -167,37 +167,37 @@ void web_init() {
if (request->hasArg("mqttServer")) { if (request->hasArg("mqttServer")) {
jsonWriteStr(configSetupJson, "mqttServer", request->getParam("mqttServer")->value()); jsonWriteStr(configSetupJson, "mqttServer", request->getParam("mqttServer")->value());
saveConfig(); saveConfig();
mqttParamsChanged = true; myNotAsincActions->make(do_MQTTPARAMSCHANGED);
request->send(200); request->send(200);
} }
if (request->hasArg("mqttPort")) { if (request->hasArg("mqttPort")) {
int port = (request->getParam("mqttPort")->value()).toInt(); int port = (request->getParam("mqttPort")->value()).toInt();
jsonWriteInt(configSetupJson, "mqttPort", port); jsonWriteInt(configSetupJson, "mqttPort", port);
saveConfig(); saveConfig();
mqttParamsChanged = true; myNotAsincActions->make(do_MQTTPARAMSCHANGED);
request->send(200); request->send(200);
} }
if (request->hasArg("mqttPrefix")) { if (request->hasArg("mqttPrefix")) {
jsonWriteStr(configSetupJson, "mqttPrefix", request->getParam("mqttPrefix")->value()); jsonWriteStr(configSetupJson, "mqttPrefix", request->getParam("mqttPrefix")->value());
saveConfig(); saveConfig();
mqttParamsChanged = true; myNotAsincActions->make(do_MQTTPARAMSCHANGED);
request->send(200); request->send(200);
} }
if (request->hasArg("mqttUser")) { if (request->hasArg("mqttUser")) {
jsonWriteStr(configSetupJson, "mqttUser", request->getParam("mqttUser")->value()); jsonWriteStr(configSetupJson, "mqttUser", request->getParam("mqttUser")->value());
saveConfig(); saveConfig();
mqttParamsChanged = true; myNotAsincActions->make(do_MQTTPARAMSCHANGED);
request->send(200); request->send(200);
} }
if (request->hasArg("mqttPass")) { if (request->hasArg("mqttPass")) {
jsonWriteStr(configSetupJson, "mqttPass", request->getParam("mqttPass")->value()); jsonWriteStr(configSetupJson, "mqttPass", request->getParam("mqttPass")->value());
saveConfig(); saveConfig();
mqttParamsChanged = true; myNotAsincActions->make(do_MQTTPARAMSCHANGED);
request->send(200); request->send(200);
} }
//-------------------------------------------------------------------------------- //--------------------------------------------------------------------------------
if (request->hasArg("mqttsend")) { if (request->hasArg("mqttsend")) {
mqtt_send_settings_to_udp = true; myNotAsincActions->make(do_MQTTUDP);
request->send(200); request->send(200);
} }
@@ -256,7 +256,7 @@ void web_init() {
* Check * Check
*/ */
server.on("/check", HTTP_GET, [](AsyncWebServerRequest* request) { server.on("/check", HTTP_GET, [](AsyncWebServerRequest* request) {
checkUpdatesFlag = true; myNotAsincActions->make(do_GETLASTVERSION);
pm.info("firmware version: " + lastVersion); pm.info("firmware version: " + lastVersion);
if (!FLASH_4MB) { if (!FLASH_4MB) {

18
src/bus.cpp Normal file
View File

@@ -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);
}

View File

@@ -1,4 +1,4 @@
#include "Bus/BusScannerFactory.h"
#include "Class/CallBackTest.h" #include "Class/CallBackTest.h"
#include "Class/NotAsinc.h" #include "Class/NotAsinc.h"
#include "Class/Switch.h" #include "Class/Switch.h"
@@ -67,7 +67,7 @@ void setup() {
#ifdef UDP_ENABLED #ifdef UDP_ENABLED
pm.info("Broadcast UDP"); pm.info("Broadcast UDP");
udp_init(); udpInit();
#endif #endif
ts.add( ts.add(
@@ -96,31 +96,17 @@ void loop() {
loopUdp(); loopUdp();
#endif #endif
timeNow->loop(); timeNow->loop();
myNotAsincActions->loop();
not_async_actions();
MqttClient::loop(); MqttClient::loop();
loopCmd(); loopCmd();
mySwitch->loop(); mySwitch->loop();
loopScenario(); loopScenario();
loopSerial(); loopSerial();
myNotAsincActions->loop();
ts.update(); 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 getURL(const String& urls) {
String res = ""; String res = "";
@@ -205,12 +191,4 @@ void clock_init() {
nullptr, true); 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;
}
}

View File

@@ -1,3 +1,6 @@
#include "Class/NotAsinc.h"
#include "udp.h"
#include "udp_.h"
#include "Global.h" #include "Global.h"
static const char* MODULE = "Udp"; static const char* MODULE = "Udp";
@@ -16,13 +19,21 @@ int udp_period;
boolean udp_busy = false; boolean udp_busy = false;
unsigned int udp_port = 4210; 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 #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"); removeFile("dev.csv");
addFileLn("dev.csv", "device id;device name;ip address"); addFileLn("dev.csv", "device id;device name;ip address");
@@ -82,7 +93,7 @@ void loopUdp() {
} }
received = String(udp_packet); received = String(udp_packet);
if (received.indexOf("iotm;") >= 0 || received.indexOf("mqttServer") >= 0) { if (received.indexOf("iotm;") >= 0 || received.indexOf("mqttServer") >= 0) {
udp_data_parse = true; myNotAsincActions->make(do_UDPDATAPARSE);
} }
#endif #endif
; ;
@@ -96,10 +107,10 @@ void handleUdp_esp32() {
remote_ip = packet.remoteIP().toString(); remote_ip = packet.remoteIP().toString();
if (jsonReadStr(configSetupJson, "udponoff") == "1") { if (jsonReadStr(configSetupJson, "udponoff") == "1") {
if (received.indexOf("iotm;") >= 0) { if (received.indexOf("iotm;") >= 0) {
udp_data_parse = true; myNotAsincActions->make(do_UDPDATAPARSE);
} }
if (received.indexOf("mqttServer") >= 0) { 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() { void do_udp_data_parse() {
if (!udp_data_parse) {
return;
}
if (received.indexOf("mqttServer") >= 0) { if (received.indexOf("mqttServer") >= 0) {
pm.info("received setting"); pm.info("received setting");
jsonWriteStr(configSetupJson, "mqttServer", jsonReadStr(received, "mqttServer")); jsonWriteStr(configSetupJson, "mqttServer", jsonReadStr(received, "mqttServer"));
@@ -119,12 +127,11 @@ void do_udp_data_parse() {
jsonWriteStr(configSetupJson, "mqttUser", jsonReadStr(received, "mqttUser")); jsonWriteStr(configSetupJson, "mqttUser", jsonReadStr(received, "mqttUser"));
jsonWriteStr(configSetupJson, "mqttPass", jsonReadStr(received, "mqttPass")); jsonWriteStr(configSetupJson, "mqttPass", jsonReadStr(received, "mqttPass"));
saveConfig(); saveConfig();
mqttParamsChanged = true; myNotAsincActions->make(do_MQTTPARAMSCHANGED);
} }
if (received.indexOf("iotm;") >= 0) { if (received.indexOf("iotm;") >= 0) {
add_dev_in_list("dev.csv", selectFromMarkerToMarker(received, ";", 1), selectFromMarkerToMarker(received, ";", 2), received); 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) { 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; 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 #endif