Files
IoTManager/src/main.cpp
Dmitry Borisenko e505eb9b6e changes
2020-09-06 23:00:33 +03:00

127 lines
2.4 KiB
C++

#include <SSDP.h>
#include "BufferExecute.h"
#include "Class/CallBackTest.h"
#include "Class/NotAsinc.h"
#include "Class/ScenarioClass.h"
#include "Utils/statUtils.h"
#include "Cmd.h"
#include "Global.h"
#include "Init.h"
#include "ItemsList.h"
#include "Utils/Timings.h"
#include "Utils\WebUtils.h"
#include "items/ButtonInClass.h"
void not_async_actions();
static const char* MODULE = "Main";
Timings metric;
boolean initialized = false;
void setup() {
WiFi.setAutoConnect(false);
WiFi.persistent(false);
Serial.begin(115200);
Serial.flush();
Serial.println();
Serial.println("--------------started----------------");
setChipId();
myNotAsincActions = new NotAsinc(do_LAST);
myScenario = new Scenario();
pm.info("FS");
fileSystemInit();
pm.info("Config");
loadConfig();
pm.info("Clock");
clock_init();
pm.info("Commands");
cmd_init();
pm.info("Sensors");
sensorsInit();
pm.info("Init");
all_init();
pm.info("Network");
startSTAMode();
pm.info("Uptime");
uptime_init();
pm.info("Updater");
upgradeInit();
pm.info("HttpServer");
HttpServer::init();
pm.info("WebAdmin");
web_init();
initSt();
#ifdef UDP_ENABLED
pm.info("Broadcast UDP");
udpInit();
#endif
#ifdef SSDP_EN
pm.info("Ssdp Init");
SsdpInit();
#endif
ts.add(
TEST, 1000 * 60, [&](void*) {
pm.info(printMemoryStatus());
},
nullptr, true);
just_load = false;
initialized = true; //this second POST makes the data to be processed (you don't need to connect as "keep-alive" for that to work)
}
void loop() {
if (!initialized) {
return;
}
#ifdef OTA_UPDATES_ENABLED
ArduinoOTA.handle();
#endif
#ifdef WS_enable
ws.cleanupClients();
#endif
#ifdef UDP_ENABLED
loopUdp();
#endif
timeNow->loop();
MqttClient::loop();
myButtonIn.loop();
myScenario->loop();
loopCmdExecute();
//loopSerial();
myNotAsincActions->loop();
ts.update();
}
void clock_init() {
timeNow = new Clock();
timeNow->setNtpPool(jsonReadStr(configSetupJson, "ntp"));
timeNow->setTimezone(jsonReadStr(configSetupJson, "timezone").toInt());
ts.add(
TIME_SYNC, 30000, [&](void*) {
timeNow->hasSync();
},
nullptr, true);
}