Files
IoTManager/src/main.cpp

193 lines
3.5 KiB
C++
Raw Normal View History

2020-08-25 19:25:54 +03:00
2020-08-25 18:36:05 +03:00
#include "Class/CallBackTest.h"
#include "Class/NotAsinc.h"
2020-08-02 01:54:26 +02:00
#include "Class/Switch.h"
2020-08-24 13:56:12 +03:00
#include "Cmd.h"
2020-08-20 03:12:04 +03:00
#include "DeviceList.h"
2020-08-24 13:56:12 +03:00
#include "Global.h"
#include "HttpServer.h"
#include "Init.h"
#include "Utils/Timings.h"
2020-07-26 23:48:19 +02:00
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();
2020-08-26 01:03:45 +03:00
myNotAsincActions = new NotAsinc(do_LAST);
2020-07-26 23:48:19 +02:00
pm.info("FS");
fileSystemInit();
pm.info("Config");
loadConfig();
pm.info("Clock");
clock_init();
pm.info("Commands");
cmd_init();
pm.info("Sensors");
sensors_init();
pm.info("Init");
all_init();
pm.info("Network");
startSTAMode();
pm.info("Uptime");
uptime_init();
2020-08-26 01:03:45 +03:00
pm.info("telemetry");
2020-07-26 23:48:19 +02:00
telemetry_init();
pm.info("Updater");
2020-08-25 18:36:05 +03:00
upgradeInit();
2020-07-26 23:48:19 +02:00
pm.info("HttpServer");
HttpServer::init();
pm.info("WebAdmin");
web_init();
#ifdef UDP_ENABLED
pm.info("Broadcast UDP");
2020-08-25 19:25:54 +03:00
udpInit();
2020-07-26 23:48:19 +02:00
#endif
ts.add(
2020-08-25 18:36:05 +03:00
TEST, 1000 * 60, [&](void*) {
pm.info(printMemoryStatus());
},
nullptr, true);
2020-07-26 23:48:19 +02:00
2020-08-24 13:56:12 +03:00
just_load = false;
2020-07-26 23:48:19 +02:00
initialized = true;
}
void loop() {
if (!initialized) {
return;
}
#ifdef OTA_UPDATES_ENABLED
ArduinoOTA.handle();
#endif
#ifdef WS_enable
ws.cleanupClients();
#endif
2020-08-24 13:56:12 +03:00
#ifdef UDP_ENABLED
loopUdp();
#endif
timeNow->loop();
2020-07-26 23:48:19 +02:00
MqttClient::loop();
2020-08-02 01:54:26 +02:00
mySwitch->loop();
2020-07-26 23:48:19 +02:00
loopScenario();
2020-08-26 01:03:45 +03:00
loopCmd();
2020-07-26 23:48:19 +02:00
loopSerial();
2020-08-25 19:25:54 +03:00
myNotAsincActions->loop();
2020-07-26 23:48:19 +02:00
ts.update();
}
String getURL(const String& urls) {
String res = "";
HTTPClient http;
http.begin(urls);
int httpCode = http.GET();
if (httpCode == HTTP_CODE_OK) {
res = http.getString();
} else {
res = "error";
}
http.end();
return res;
}
void setChipId() {
chipId = getChipId();
pm.info("id: " + chipId);
}
void saveConfig() {
writeFile(String("config.json"), configSetupJson);
}
void setConfigParam(const char* param, const String& value) {
pm.info("set " + String(param) + ": " + value);
jsonWriteStr(configSetupJson, param, value);
saveConfig();
}
#ifdef ESP8266
void setLedStatus(LedStatus_t status) {
pinMode(LED_PIN, OUTPUT);
switch (status) {
case LED_OFF:
noTone(LED_PIN);
digitalWrite(LED_PIN, HIGH);
break;
case LED_ON:
noTone(LED_PIN);
digitalWrite(LED_PIN, LOW);
break;
case LED_SLOW:
tone(LED_PIN, 1);
break;
case LED_FAST:
tone(LED_PIN, 20);
break;
default:
break;
}
}
#else
void setLedStatus(LedStatus_t status) {
pinMode(LED_PIN, OUTPUT);
switch (status) {
case LED_OFF:
digitalWrite(LED_PIN, HIGH);
break;
case LED_ON:
digitalWrite(LED_PIN, LOW);
break;
case LED_SLOW:
break;
case LED_FAST:
break;
default:
break;
}
}
#endif
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);
}
2020-08-25 19:25:54 +03:00