2021-12-22 14:49:25 +01:00
|
|
|
|
#include "Main.h"
|
2022-04-24 11:59:52 +03:00
|
|
|
|
#include <time.h>
|
2021-12-22 14:09:50 +01:00
|
|
|
|
|
2022-02-14 12:48:59 +03:00
|
|
|
|
IoTScenario iotScen; // объект управления сценарием
|
|
|
|
|
|
|
2022-04-24 11:59:52 +03:00
|
|
|
|
String volStrForSave = "";
|
|
|
|
|
|
unsigned long currentMillis;
|
|
|
|
|
|
unsigned long prevMillis;
|
|
|
|
|
|
|
2021-12-22 14:09:50 +01:00
|
|
|
|
void setup() {
|
|
|
|
|
|
Serial.begin(115200);
|
|
|
|
|
|
Serial.flush();
|
|
|
|
|
|
Serial.println();
|
|
|
|
|
|
Serial.println(F("--------------started----------------"));
|
2021-12-22 21:18:27 +01:00
|
|
|
|
|
2022-01-10 23:37:21 +01:00
|
|
|
|
//создание экземпляров классов
|
|
|
|
|
|
myNotAsyncActions = new NotAsync(do_LAST);
|
|
|
|
|
|
|
2021-12-22 21:18:27 +01:00
|
|
|
|
//инициализация файловой системы
|
2021-12-22 14:09:50 +01:00
|
|
|
|
fileSystemInit();
|
|
|
|
|
|
|
2022-02-02 23:39:41 +01:00
|
|
|
|
//получение chip id
|
|
|
|
|
|
setChipId();
|
|
|
|
|
|
|
2021-12-22 23:47:35 +01:00
|
|
|
|
//синхронизация глобальных переменных с flash
|
|
|
|
|
|
globalVarsSync();
|
|
|
|
|
|
|
2021-12-24 22:49:06 +01:00
|
|
|
|
//подключаемся к роутеру
|
|
|
|
|
|
routerConnect();
|
|
|
|
|
|
|
2021-12-23 18:18:32 +01:00
|
|
|
|
//инициализация асинхронного веб сервера и веб сокетов
|
2021-12-23 22:42:19 +01:00
|
|
|
|
#ifdef ASYNC_WEB_SERVER
|
|
|
|
|
|
asyncWebServerInit();
|
2021-12-24 22:49:06 +01:00
|
|
|
|
#endif
|
|
|
|
|
|
#ifdef ASYNC_WEB_SOCKETS
|
2021-12-23 22:42:19 +01:00
|
|
|
|
asyncWebSocketsInit();
|
|
|
|
|
|
#endif
|
|
|
|
|
|
|
2021-12-24 22:49:06 +01:00
|
|
|
|
//инициализация стандартного веб сервера и веб сокетов
|
2021-12-23 22:42:19 +01:00
|
|
|
|
#ifdef STANDARD_WEB_SERVER
|
|
|
|
|
|
standWebServerInit();
|
2021-12-23 18:18:32 +01:00
|
|
|
|
#endif
|
2021-12-23 23:47:13 +01:00
|
|
|
|
#ifdef STANDARD_WEB_SOCKETS
|
|
|
|
|
|
standWebSocketsInit();
|
|
|
|
|
|
#endif
|
|
|
|
|
|
|
2022-01-15 19:11:01 +01:00
|
|
|
|
//инициализация mqtt
|
2022-01-20 13:07:37 +01:00
|
|
|
|
mqttInit();
|
2022-01-15 19:11:01 +01:00
|
|
|
|
|
2022-02-13 16:13:51 +01:00
|
|
|
|
//настраиваем микроконтроллер
|
2022-01-15 02:01:22 +01:00
|
|
|
|
configure("/config.json");
|
|
|
|
|
|
|
2022-02-08 16:47:17 +01:00
|
|
|
|
//инициализация задач переодического выполнения
|
|
|
|
|
|
periodicTasksInit();
|
2022-02-13 00:40:15 +01:00
|
|
|
|
|
2022-02-15 00:03:28 +01:00
|
|
|
|
//синхронизация списка устройств
|
|
|
|
|
|
addThisDeviceToList();
|
|
|
|
|
|
|
2022-02-13 16:13:51 +01:00
|
|
|
|
//запуск работы udp
|
|
|
|
|
|
asyncUdpInit();
|
2022-02-15 00:03:28 +01:00
|
|
|
|
|
2022-02-14 12:48:59 +03:00
|
|
|
|
//загрузка сценария
|
|
|
|
|
|
iotScen.loadScenario("/scenario.txt");
|
2022-04-28 16:00:14 +03:00
|
|
|
|
// создаем событие завершения конфигурирования для возможности выполнения блока кода при загрузке
|
2022-08-12 22:13:50 +02:00
|
|
|
|
IoTItems.push_back((IoTItem *)new externalVariable("{\"id\":\"onStart\",\"val\":1,\"int\":60}"));
|
2022-04-28 16:03:33 +03:00
|
|
|
|
generateEvent("onStart", "");
|
2022-02-13 16:13:51 +01:00
|
|
|
|
|
2022-02-13 00:40:15 +01:00
|
|
|
|
// test
|
|
|
|
|
|
Serial.println("-------test start--------");
|
|
|
|
|
|
Serial.println("--------test end---------");
|
2022-02-21 20:00:18 +03:00
|
|
|
|
|
2022-02-25 15:38:32 +03:00
|
|
|
|
// симуляция добавления внешних событий
|
2022-02-28 01:10:14 +01:00
|
|
|
|
// IoTItems.push_back((IoTItem*)new externalVariable("{\"id\":\"rel1\",\"val\":10,\"int\":20}"));
|
|
|
|
|
|
// IoTItems.push_back((IoTItem*)new externalVariable("{\"id\":\"rel4\",\"val\":34,\"int\":30}"));
|
2022-02-25 15:38:32 +03:00
|
|
|
|
|
2022-02-26 22:42:57 +03:00
|
|
|
|
// пример получения JSON всех Items
|
2022-03-15 12:56:05 +01:00
|
|
|
|
// Serial.println(getParamsJson());
|
2022-02-28 01:10:14 +01:00
|
|
|
|
|
|
|
|
|
|
//чтение одного параметра
|
|
|
|
|
|
// Serial.println(findIoTItem("t1")->getValue());
|
2022-02-26 22:42:57 +03:00
|
|
|
|
|
2022-02-21 20:00:18 +03:00
|
|
|
|
//тест перебора пинов из расширения
|
|
|
|
|
|
// for (int i = 109; i < 112; i++) {
|
|
|
|
|
|
// IoTgpio.pinMode(i, OUTPUT);
|
|
|
|
|
|
// IoTgpio.digitalWrite(i, !IoTgpio.digitalRead(i));
|
|
|
|
|
|
// delay(1000);
|
|
|
|
|
|
// IoTgpio.digitalWrite(i, !IoTgpio.digitalRead(i));
|
|
|
|
|
|
// delay(1000);
|
|
|
|
|
|
// }
|
2021-12-22 14:09:50 +01:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void loop() {
|
2022-04-24 11:59:52 +03:00
|
|
|
|
// if(millis()%2000==0){
|
|
|
|
|
|
// //watch->settimeUnix(time(&iotTimeNow));
|
|
|
|
|
|
// Serial.println(watch->gettime("d-m-Y, H:i:s, M"));
|
|
|
|
|
|
// delay(1);
|
|
|
|
|
|
// }
|
2022-08-12 22:13:50 +02:00
|
|
|
|
|
2021-12-23 17:55:46 +01:00
|
|
|
|
//обновление задач таскера
|
|
|
|
|
|
ts.update();
|
2021-12-23 22:42:19 +01:00
|
|
|
|
|
2022-01-20 13:36:00 +01:00
|
|
|
|
//отправка json
|
|
|
|
|
|
#ifdef QUEUE_FROM_STR
|
|
|
|
|
|
if (sendJsonFiles) sendJsonFiles->loop();
|
|
|
|
|
|
#endif
|
2021-12-24 00:44:11 +01:00
|
|
|
|
|
2021-12-23 22:42:19 +01:00
|
|
|
|
#ifdef STANDARD_WEB_SERVER
|
2022-01-14 15:45:02 +01:00
|
|
|
|
//обработка web сервера
|
2021-12-23 22:42:19 +01:00
|
|
|
|
HTTP.handleClient();
|
|
|
|
|
|
#endif
|
2021-12-23 23:47:13 +01:00
|
|
|
|
|
|
|
|
|
|
#ifdef STANDARD_WEB_SOCKETS
|
2022-01-14 15:45:02 +01:00
|
|
|
|
//обработка web сокетов
|
2021-12-23 23:47:13 +01:00
|
|
|
|
standWebSocket.loop();
|
|
|
|
|
|
#endif
|
2022-01-15 02:01:22 +01:00
|
|
|
|
|
2022-01-15 19:11:01 +01:00
|
|
|
|
//обновление mqtt
|
|
|
|
|
|
mqttLoop();
|
|
|
|
|
|
|
2022-02-25 14:03:30 +03:00
|
|
|
|
// передаем управление каждому элементу конфигурации для выполнения своих функций
|
2022-08-12 22:13:50 +02:00
|
|
|
|
for (std::list<IoTItem *>::iterator it = IoTItems.begin(); it != IoTItems.end(); ++it) {
|
2022-02-25 14:03:30 +03:00
|
|
|
|
(*it)->loop();
|
2022-02-25 15:38:32 +03:00
|
|
|
|
if ((*it)->iAmDead) {
|
|
|
|
|
|
delete *it;
|
|
|
|
|
|
IoTItems.erase(it);
|
|
|
|
|
|
break;
|
|
|
|
|
|
}
|
2022-01-15 02:01:22 +01:00
|
|
|
|
}
|
2022-02-14 12:48:59 +03:00
|
|
|
|
|
2022-02-22 20:16:33 +01:00
|
|
|
|
handleOrder();
|
|
|
|
|
|
|
|
|
|
|
|
handleEvent();
|
|
|
|
|
|
|
2022-04-24 11:59:52 +03:00
|
|
|
|
// сохраняем значения IoTItems в файл каждую секунду, если были изменения (установлены маркеры на сохранение)
|
2022-08-13 12:18:58 +02:00
|
|
|
|
// currentMillis = millis();
|
|
|
|
|
|
// if (currentMillis - prevMillis >= 1000) {
|
|
|
|
|
|
// prevMillis = millis();
|
|
|
|
|
|
// volStrForSave = "";
|
|
|
|
|
|
// for (std::list<IoTItem *>::iterator it = IoTItems.begin(); it != IoTItems.end(); ++it) {
|
|
|
|
|
|
// if ((*it)->needSave) {
|
|
|
|
|
|
// (*it)->needSave = false;
|
|
|
|
|
|
// volStrForSave = volStrForSave + (*it)->getID() + "=" + (*it)->getValue() + ";";
|
|
|
|
|
|
// }
|
|
|
|
|
|
// }
|
|
|
|
|
|
//
|
|
|
|
|
|
// if (volStrForSave != "") {
|
|
|
|
|
|
// Serial.print("volStrForSave: ");
|
|
|
|
|
|
// Serial.println(volStrForSave.c_str());
|
|
|
|
|
|
// }
|
|
|
|
|
|
//}
|
2021-12-22 14:09:50 +01:00
|
|
|
|
}
|