6 Commits
2.1.0 ... 2.1.1

Author SHA1 Message Date
Dmitry Borisenko
70d0378034 dht comfort add 2020-02-15 20:21:00 +03:00
Dmitry Borisenko
a2c146a0e9 DHT new library and uptime support 2020-02-15 20:17:25 +03:00
Dmitry Borisenko
92c8b79e2a time zone input add 2020-02-13 21:26:36 +03:00
Dmitry Borisenko
96db5965f6 time zone input add 2020-02-13 21:22:54 +03:00
Dmitry Borisenko
05ff2225c9 some fix 2020-02-13 21:18:51 +03:00
Dmitry Borisenko
f91960e325 add time timer 2020-02-13 20:20:34 +03:00
17 changed files with 340 additions and 139 deletions

86
Cmd.ino
View File

@@ -15,26 +15,33 @@ void CMD_init() {
sCmd.addCommand("dhtT", dhtT);
sCmd.addCommand("dhtH", dhtH);
sCmd.addCommand("dhtPerception", dhtPerception);
sCmd.addCommand("dhtComfort", dhtComfort);
sCmd.addCommand("logging", logging);
sCmd.addCommand("inputDigit", inputDigit);
sCmd.addCommand("digitSet", digitSet);
sCmd.addCommand("text", text);
sCmd.addCommand("textSet", textSet);
sCmd.addCommand("inputTime", inputTime);
sCmd.addCommand("timeSet", timeSet);
sCmd.addCommand("timerStart", timerStart);
sCmd.addCommand("timerStop", timerStop);
sCmd.addCommand("text", text);
sCmd.addCommand("textSet", textSet);
sCmd.addCommand("mqtt", mqttOrderSend);
sCmd.addCommand("http", httpOrderSend);
sCmd.addCommand("push", pushControl);
// sCmd.addCommand("time", time);
// sCmd.addCommand("timeSet", timeSet);
handle_time_init();
//======новые виджеты ver2.0=======//
/*
sCmd.addCommand("inputText", inputText);
sCmd.addCommand("inputTextSet", inputTextSet);
@@ -47,6 +54,7 @@ void CMD_init() {
sCmd.addCommand("inputDate", inputDate);
//sCmd.addCommand("inputDropdown", inputDropdown);
*/
//=================================//
}
@@ -211,7 +219,7 @@ void handleButton() {
}
//=====================================================================================================================================
//=========================================Добавление окна ввода переменной============================================================
//=========================================Добавление окна ввода цифры=================================================================
void inputDigit() {
String value_name = sCmd.next();
String number = value_name.substring(5);
@@ -230,6 +238,31 @@ void digitSet() {
jsonWrite(configJson, "digitSet" + number, value);
sendSTATUS("digitSet" + number, value);
}
//=====================================================================================================================================
//=========================================Добавление окна ввода времени===============================================================
void inputTime() {
String value_name = sCmd.next();
String number = value_name.substring(4);
String viget_name = sCmd.next();
viget_name.replace("#", " ");
String page_name = sCmd.next();
page_name.replace("#", " ");
String start_state = sCmd.next();
String page_number = sCmd.next();
start_state.replace(":", ".");
jsonWrite(configJson, "timeSet" + number, start_state);
start_state.replace(".", ":");
createViget (viget_name, page_name, page_number, "vigets/viget.inputTime.json", "timeSet" + number);
}
void timeSet() {
String number = sCmd.next();
String value = sCmd.next();
value.replace(":", ".");
jsonWrite(configJson, "timeSet" + number, value);
value.replace(".", ":");
sendSTATUS("timeSet" + number, value);
}
//=====================================================================================================================================
//=========================================Добавление текстового виджета============================================================
void text() {
@@ -260,9 +293,19 @@ void textSet() {
sendSTATUS("textSet" + number, text);
}
void handle_time_init() {
ts.add(TIME, 1000, [&](void*) {
String tmp = GetTimeWOsec();
tmp.replace(":", ".");
jsonWrite(configJson, "timenowSet", tmp);
eventGen ("timenowSet", "");
}, nullptr, true);
}
//====================================================================================================================================================
void inputText() {
/*
void inputText() {
String number = sCmd.next();
String viget_name = sCmd.next();
viget_name.replace("#", " ");
@@ -272,15 +315,15 @@ void inputText() {
String page_number = sCmd.next();
jsonWrite(configJson, "inputTextSet" + number, start_state);
createViget (viget_name, page_name, page_number, "vigets/viget.inputText.json", "inputTextSet" + number);
}
void inputTextSet() {
}
void inputTextSet() {
String number = sCmd.next();
String value = sCmd.next();
jsonWrite(configJson, "inputTextSet" + number, value);
sendSTATUS("inputTextSet" + number, value);
}
}
void inputTime() {
void inputTime() {
String number = sCmd.next();
String viget_name = sCmd.next();
viget_name.replace("#", " ");
@@ -290,18 +333,18 @@ void inputTime() {
String page_number = sCmd.next();
jsonWrite(configJson, "inputTimeSet" + number, start_state);
createViget (viget_name, page_name, page_number, "vigets/viget.inputTime.json", "inputTimeSet" + number);
}
void inputTimeSet() {
}
void inputTimeSet() {
String number = sCmd.next();
String value = sCmd.next();
value.replace(":", ".");
jsonWrite(configJson, "inputTimeSet" + number, value);
value.replace(".", ":");
sendSTATUS("inputTimeSet" + number, value);
}
}
void inputDate() {
void inputDate() {
String number = sCmd.next();
String viget_name = sCmd.next();
viget_name.replace("#", " ");
@@ -311,13 +354,14 @@ void inputDate() {
String page_number = sCmd.next();
jsonWrite(configJson, "inputDateSet" + number, start_state);
createViget (viget_name, page_name, page_number, "vigets/viget.inputDate.json", "inputDateSet" + number);
}
void inputDateSet() {
}
void inputDateSet() {
String number = sCmd.next();
String value = sCmd.next();
jsonWrite(configJson, "inputDateSet" + number, value);
sendSTATUS("inputDateSet" + number, value);
}
}
*/
//=================================================Глобальные команды удаленного управления===========================================================
void mqttOrderSend() {
@@ -430,7 +474,7 @@ void createViget (String viget_name, String page_name, String page_number, Stri
}
/*
void createViget (String viget_name, String page_name, String page_number, String file, String topic, String key, String value) {
void createViget (String viget_name, String page_name, String page_number, String file, String topic, String key, String value) {
String viget;
viget = readFile(file, 1024);
@@ -452,9 +496,9 @@ void createViget (String viget_name, String page_name, String page_number, Stri
all_vigets += viget + "\r\n";
viget = "";
}
}
void createViget (String viget_name, String page_name, String page_number, String file, String topic, String key, String value, String key2, String value2) {
void createViget (String viget_name, String page_name, String page_number, String file, String topic, String key, String value, String key2, String value2) {
String viget;
viget = readFile(file, 1024);
@@ -477,7 +521,7 @@ void createViget (String viget_name, String page_name, String page_number, Stri
all_vigets += viget + "\r\n";
viget = "";
}
}
*/
String vidgetConfigWrite(String viget, String key, String value) {

View File

@@ -50,3 +50,23 @@ void Scenario_init() {
scenario = readFile("firmware.scenario.txt", 2048);
}
}
void up_time() {
uint32_t ss = millis() / 1000;
uint32_t mm = ss / 60;
uint32_t hh = mm / 60;
uint32_t dd = hh / 24;
if (mm != 0) {
Serial.println(String(mm) + " min");
jsonWrite(configJson, "uptime", String(mm) + " min");
}
if (hh != 0) {
Serial.println(String(hh) + " hours");
jsonWrite(configJson, "uptime", String(hh) + " hours");
}
if (dd != 0) {
Serial.println(String(dd) + " days");
jsonWrite(configJson, "uptime", String(dd) + " days");
}
}

View File

@@ -17,18 +17,24 @@ void handleScenario() {
//Serial.println(i);
String condition = selectToMarker (tmp, "\n"); //выделяем первую строку самого сценария button1 = 1 (условие)
String param_name = selectFromMarkerToMarker(condition, " " , 0);
param_name = add_set(param_name); //из первой страки берем имя параметра button1 и вставляем в него Set и получаем buttonSet1
if (param_name.indexOf("timenow") != -1){
param_name = param_name + "Set";
}
String order = jsonRead(optionJson, "scenario_status"); //читаем весь файл событий
String param = selectToMarker (order, ","); //читаем первое событие из файла событий
if (param_name == param) { //если поступившее событие равно событию заданному buttonSet1 в файле начинаем его обработку
String sign = selectFromMarkerToMarker(condition, " " , 1); //читаем знак (=)
String value = selectFromMarkerToMarker(condition, " " , 2); //читаем значение (1)
if (value.indexOf("digit") != -1) {
value = add_set(value);
value = jsonRead(configJson, value);
}
if (value.indexOf("time") != -1) {
value = add_set(value);
value = jsonRead(configJson, value);
}
boolean flag = false; //если одно из значений совпало то только тогда начинаем выполнять комнады
if (sign == "=") {
if (jsonRead(configJson, param_name) == value) flag = true;

View File

@@ -18,7 +18,8 @@ void analog() {
ts.add(ANALOG_, analog_update_int, [&](void*) {
static int analog_old;
#ifdef ESP32
int analog_in = analogRead(pin.toInt());
//int pin_int = pin.toInt();
int analog_in;// = analogRead(pin_int);
#endif
#ifdef ESP8266
int analog_in = analogRead(A0);
@@ -123,16 +124,22 @@ void dallas() {
//======================================================================================================================
//=========================================Модуль сенсоров DHT==========================================================
void dhtT() {
String sensor_type = sCmd.next();
String pin = sCmd.next();
String viget_name = sCmd.next();
String page_name = sCmd.next();
String type = sCmd.next();
String page_number = sCmd.next();
dht.setup(pin.toInt());
if (sensor_type == "DHT11") {
dht.setup(pin.toInt(), DHTesp::DHT11);
}
if (sensor_type == "DHT22") {
dht.setup(pin.toInt(), DHTesp::DHT22);
}
choose_viget_and_create(viget_name, page_name, page_number, type, "dhtT");
ts.add(DHTT, dhtT_update_int, [&](void*) {
int value = 0;
static int value_old;
ts.add(DHTT, dhtT_update_int + dht.getMinimumSamplingPeriod(), [&](void*) {
float value = 0;
static float value_old;
value = dht.getTemperature();
jsonWrite(configJson, "dhtT", String(value));
//if (value_old != value) {
@@ -148,14 +155,20 @@ void dhtT() {
void dhtH() {
String sensor_type = sCmd.next();
String pin = sCmd.next();
String viget_name = sCmd.next();
String page_name = sCmd.next();
String type = sCmd.next();
String page_number = sCmd.next();
dht.setup(pin.toInt());
if (sensor_type == "DHT11") {
dht.setup(pin.toInt(), DHTesp::DHT11);
}
if (sensor_type == "DHT22") {
dht.setup(pin.toInt(), DHTesp::DHT22);
}
choose_viget_and_create(viget_name, page_name, page_number, type, "dhtH");
ts.add(DHTH, dhtH_update_int, [&](void*) {
ts.add(DHTH, dhtH_update_int + dht.getMinimumSamplingPeriod(), [&](void*) {
int value = 0;
static int value_old;
value = dht.getHumidity();
@@ -171,6 +184,107 @@ void dhtH() {
}, nullptr, true);
}
void dhtPerception() {
String viget_name = sCmd.next();
String page_name = sCmd.next();
String page_number = sCmd.next();
choose_viget_and_create(viget_name, page_name, page_number, "any-data", "dhtPerception");
ts.add(DHTP, dhtPerception_update_int, [&](void*) {
byte value;
ComfortState cf;
value = dht.computePerception(jsonRead(configJson, "dhtT").toFloat(), jsonRead(configJson, "dhtH").toInt(), false);
String final_line = perception(value);
jsonWrite(configJson, "dhtPerception", final_line);
eventGen ("dhtPerception", "");
sendSTATUS("dhtPerception", final_line);
if (client.connected()) {
Serial.println("[i] sensor dhtPerception send date " + final_line);
}
}, nullptr, true);
}
String perception(byte value) {
if (value == 0) return "Сухой воздух";
if (value == 1) return "Комфортно";
if (value == 2) return "Уютно";
if (value == 3) return "Хорошо";
if (value == 4) return "Неудобно";
if (value == 5) return "Довольно неудобно";
if (value == 6) return "Очень неудобно";
if (value == 7) return "Сильно неудобно, полный звиздец";
}
void dhtComfort() {
String viget_name = sCmd.next();
String page_name = sCmd.next();
String page_number = sCmd.next();
choose_viget_and_create(viget_name, page_name, page_number, "any-data", "dhtComfort");
ts.add(DHTC, dhtComfort_update_int, [&](void*) {
float value;
ComfortState cf;
value = dht.getComfortRatio(cf, jsonRead(configJson, "dhtT").toFloat(), jsonRead(configJson, "dhtH").toInt(), false);
String comfortStatus;
switch (cf) {
case Comfort_OK:
comfortStatus = "Отлично";
break;
case Comfort_TooHot:
comfortStatus = "Очень жарко";
break;
case Comfort_TooCold:
comfortStatus = "Очень холодно";
break;
case Comfort_TooDry:
comfortStatus = "Очень сухо";
break;
case Comfort_TooHumid:
comfortStatus = "Очень влажно";
break;
case Comfort_HotAndHumid:
comfortStatus = "Жарко и влажно";
break;
case Comfort_HotAndDry:
comfortStatus = "Жарко и сухо";
break;
case Comfort_ColdAndHumid:
comfortStatus = "Холодно и влажно";
break;
case Comfort_ColdAndDry:
comfortStatus = "Холодно и сухо";
break;
default:
comfortStatus = "Неизвестно";
break;
};
String final_line = comfortStatus;
jsonWrite(configJson, "dhtComfort", final_line);
eventGen ("dhtComfort", "");
sendSTATUS("dhtComfort", final_line);
if (client.connected()) {
Serial.println("[i] sensor dhtComfort send date " + final_line);
}
}, nullptr, true);
}
void dhtDewPoint() {
String viget_name = sCmd.next();
String page_name = sCmd.next();
String page_number = sCmd.next();
choose_viget_and_create(viget_name, page_name, page_number, "any-data", "dhtPerception");
ts.add(DHTP, dhtPerception_update_int, [&](void*) {
byte value;
ComfortState cf;
value = dht.computePerception(jsonRead(configJson, "dhtT").toFloat(), jsonRead(configJson, "dhtH").toInt(), false);
String final_line = perception(value);
jsonWrite(configJson, "dhtPerception", final_line);
eventGen ("dhtPerception", "");
sendSTATUS("dhtPerception", final_line);
if (client.connected()) {
Serial.println("[i] sensor dhtPerception send date " + final_line);
}
}, nullptr, true);
}
void choose_viget_and_create(String viget_name, String page_name, String page_number, String type, String topik) {
@@ -200,12 +314,12 @@ void logging() {
if (sensor_name == "level") jsonWrite(optionJson, "level_logging_count", maxCount);
if (sensor_name == "dallas") jsonWrite(optionJson, "dallas_logging_count", maxCount);
if (sensor_name == "ph") jsonWrite(optionJson, "ph_logging_count", maxCount);
/*
/*
if (sensor_name == "analog") createViget (viget_name, page_name, page_number, "vigets/viget.chart.json", "loganalog", "maxCount", maxCount);
if (sensor_name == "level") createViget (viget_name, page_name, page_number, "vigets/viget.chart.json", "loglevel", "maxCount", maxCount);
if (sensor_name == "dallas") createViget (viget_name, page_name, page_number, "vigets/viget.chart.json", "logdallas", "maxCount", maxCount);
if (sensor_name == "ph") createViget (viget_name, page_name, page_number, "vigets/viget.chart.json", "logph", "maxCount", maxCount);
*/
*/
if (sensor_name == "analog") {
flagLoggingAnalog = true;
ts.remove(ANALOG_LOG);

View File

@@ -1,54 +1,50 @@
#ifdef ESP8266
#include <time.h>
void Time_Init() {
server.on("/Time", HTTP_GET, [](AsyncWebServerRequest * request) {
//handle_Time();
request->send(200, "text/text", "OK"); // отправляем ответ о выполнении
});
server.on("/timeZone", HTTP_GET, [](AsyncWebServerRequest * request) {
//handle_time_zone();
request->send(200, "text/text", "OK"); // отправляем ответ о выполнении
});
timeSynch(jsonReadtoInt(configSetup, "timezone"));
}
void timeSynch(int zone) {
if (WiFi.status() == WL_CONNECTED) {
// Настройка соединения с NTP сервером
configTime(zone * 3600, 0, "pool.ntp.org", "ru.pool.ntp.org");
// int i = 0;
// Serial.println("\nWaiting for time");
// while (!time(nullptr) && i < 10) {
// Serial.print(".");
// i++;
// delay(1000);
// }
Serial.println("");
Serial.println("ITime Ready!");
delay(1000);
Serial.println(GetTime());
Serial.println(GetDate());
}
}
/*// Установка параметров времянной зоны по запросу вида http://192.168.0.101/timeZone?timeZone=3
void handle_time_zone() {
if (request->hasArg("timeZone")) {
jsonWrite(configSetup, "timeZone", request->getParam("timeZone")->value());
if (request->hasArg("timezone")) {
jsonWrite(configSetup, "timezone", request->getParam("timezone")->value());
}
saveConfig();
//request->send(200, "text/text", "OK");
reconfigTime();
request->send(200, "text/text", "OK"); // отправляем ответ о выполнении
});
reconfigTime();
}
void handle_Time() {
timeSynch(jsonReadtoInt(configSetup, "timezone"));
//request->send(200, "text/text", "OK");
}
*/
void reconfigTime() {
if (WiFi.status() == WL_CONNECTED) {
configTime(jsonRead(configSetup, "timezone").toInt() * 3600, 0, ntpServer);
int i = 0;
Serial.println("[i]Awaiting for time ");
#ifdef ESP32
struct tm timeinfo;
while (!getLocalTime(&timeinfo) && i <= 4) {
Serial.print(".");
i++;
delay(1000);
}
#endif
#ifdef ESP8266
// while (!time(nullptr) && i < 4) {
// Serial.print(".");
// i++;
delay(2000);
// }
#endif
Serial.print("Time = ");
Serial.print(GetDataDigital());
Serial.print(" ");
Serial.println(GetTime());
} else {
Serial.println("[E] Get time impossible, no wifi connection");
}
}
// Получение текущего времени
String GetTime() {
time_t now = time(nullptr); // получаем время с помощью библиотеки time.h

View File

@@ -1,20 +0,0 @@
#ifdef ESP32
void Time_Init() {
//init and get the time
configTime(gmtOffset_sec, daylightOffset_sec, ntpServer);
printLocalTime();
}
void printLocalTime() {
struct tm timeinfo;
if (!getLocalTime(&timeinfo)) {
Serial.println("[E] Failed to obtain time");
return;
}
Serial.println(&timeinfo, "[V] %A, %B %d %Y %H:%M:%S");
}
#endif

View File

@@ -85,8 +85,9 @@ void WIFI_init() {
// о подключении и выводим адрес IP
Serial.println("");
Serial.println("[V] WiFi connected");
Serial.println("[V] IP address: ");
Serial.println(WiFi.localIP());
Serial.print("[V] IP address: ");
Serial.print(WiFi.localIP());
Serial.println("");
jsonWrite(configJson, "ip", WiFi.localIP().toString());
}

View File

@@ -20,6 +20,10 @@
"type": "h4",
"title": "IP address: {{ip}}"
},
{
"type": "h4",
"title": "Uptime: {{uptime}}"
},
{
"type": "hr"
},

View File

@@ -3,18 +3,27 @@ button 2 13 Прихожая Реле 0 2
button 3 14 Кухня Реле 0 3
pwm 1 3 Яркость#коредор: Реле 1023 4
pwm 2 4 Яркость#ванная: Реле 510 5
analog 0 Аналоговый#вход,#% Датчики progress-round 1 1024 1 1024 6
//dallas 2 Водонагреватель,#t°C Датчики any-data 7
//dhtT 2 Температура#DHT,#t°C Датчики any-data 8
//dhtH 2 Влажность#DHT,#% Датчики any-data 9
//level Вода#в#баке,#% Датчики any-data 125 20 10
inputDigit digit1 При#скольки#включить? Датчики 10 11
button 4 na Кнопка Датчики 0 12
button 5 na Вкл#обратный#таймер Таймеры 0 13
inputDigit digit2 Через#сколько#секунд#включить? Таймеры 5 14
button 6 5 Включится#по#таймеру Таймеры 0 15
//-------------------------------------------------------------------------------------------------
//analog 0 Аналоговый#вход,#% Датчики progress-round 1 1024 1 1024 6
inputDigit digit1 При#скольки#включить? Датчики 10 7
inputDigit digit2 При#скольки#выключить? Датчики 0 8
button 4 na Нагреватель Датчики 0 9
//dallas 2 Водонагреватель,#t°C Датчики any-data 10
dhtT DHT11 2 Температура#DHT,#t°C Датчики any-data 11
dhtH DHT11 2 Влажность#DHT,#% Датчики any-data 12
dhtComfort Степень#комфорта: Датчики 12
dhtPerception Восприятие: Датчики 13
//level Вода#в#баке,#% Датчики any-data 125 20 14
//-------------------------------------------------------------------------------------------------
button 5 na Вкл#обратный#таймер Таймеры 0 15
inputDigit digit3 Через#сколько#секунд#включить? Таймеры 5 16
button 6 na Включится#по#таймеру Таймеры 0 17
inputTime time1 Во#сколько#включить? Таймеры 20.30 18
button 7 5 Включится#по#таймеру Таймеры 0 19
//-------------------------------------------------------------------------------------------------
switch 1 0 20
textSet 1 неопределено
text 1 Квартира Двери 22
button 7 scenario Вкл#выкл#все#сценарии Сценарии 1 23
button 8 line1,line2, Вкл#выкл#выбранные#сценарии Сценарии 1 24
//-------------------------------------------------------------------------------------------------
button 8 scenario Вкл#выкл#все#сценарии Сценарии 1 23
button 9 line1,line2, Вкл#выкл#выбранные#сценарии Сценарии 1 24

View File

@@ -11,15 +11,18 @@ end
analog > digit1
buttonSet 4 1
end
analog < digit1
analog < digit2
buttonSet 4 0
end
button5 = 1
timerStart 1 digit2 sec
timerStart 1 digit3 sec
end
timer1 = 0
buttonSet 6 1
end
timenow = time1
buttonSet 7 1
end
switch1 = 1
textSet 1 закрыто-time
push закрыто вход

View File

@@ -116,6 +116,26 @@
"action": "web?web_login=[[web-login]]&web_pass=[[web-pass]]",
"class": "btn btn-block btn-success"
},
{
"type": "hr"
},
{
"type": "h2",
"title": "Временная зона"
},
{
"type": "input",
"title": "Логин",
"name":"time-zone",
"state": "{{timezone}}",
"pattern": ".{1,20}"
},
{
"type": "button",
"title": "Сохранить",
"action": "timeZone?timezone=[[time-zone]]",
"class": "btn btn-block btn-success"
},
{
"type": "hr"
},

View File

@@ -1,6 +1,5 @@
{
"widget" : "input",
"size" : "small",
"color" : "orange",
"color" : "blue",
"type" : "time"
}

View File

@@ -1,7 +1,6 @@
{
"widget" : "progress-round",
"icon" : "globe",
"descrColor" : "orange",
"descrColor" : "",
"max" : "100",
"stroke" : "20",
"color" : "#45ccce",

View File

@@ -53,11 +53,11 @@ void setup() {
getMemoryLoad("[i] After loading");
// ts.add(TEST, 1000, [&](void*) {
ts.add(TEST, 5000, [&](void*) {
//getMemoryLoad("[i] Periodic check");
up_time();
// }, nullptr, true);
}, nullptr, true);
}

View File

@@ -268,7 +268,7 @@ void getMemoryLoad(String text) {
#endif
int memory_remain = ESP.getFreeHeap();
int memory_used = all_memory - memory_remain;
int memory_load = memory_used * 100 / all_memory;
int memory_load = (memory_used * 100) / all_memory;
if (memory_load > 65) Serial.print("Attention!!! too match memory used!!!");
Serial.print(text + " memory used:");
Serial.print(String(memory_load) + "%; ");

View File

@@ -253,6 +253,9 @@ void sendAllData() { //берет строку json и ключи превра
String topic = selectToMarker (tmp, ":");
topic.replace("\"", "");
String state = selectToMarkerLast (tmp, ":");
if (topic.indexOf("time") < 0) {
state.replace(".", ":");
}
state.replace("\"", "");
if (topic != ssdpS && topic != "lang" && topic != "ip" && topic.indexOf("_in") < 0) {
sendSTATUS(topic, state);

9
set.h
View File

@@ -20,6 +20,7 @@ HTTPClient http;
#endif
//==общие библиотеки и объекты==//
#include "time.h"
#ifdef OTA_enable
#include <ArduinoOTA.h>
#endif
@@ -35,7 +36,7 @@ AsyncEventSource events("/events");
#include "time.h"
#include <TickerScheduler.h>
TickerScheduler ts(30);
enum { ROUTER_SEARCHING, WIFI_MQTT_CONNECTION_CHECK, LEVEL, ANALOG_, DALLAS, DHTT, DHTH, ANALOG_LOG, LEVEL_LOG, DALLAS_LOG, PH_LOG, CMD , TIMER_COUNTDOWN, TIMERS, TEST};
enum { ROUTER_SEARCHING, WIFI_MQTT_CONNECTION_CHECK, LEVEL, ANALOG_, DALLAS, DHTT, DHTH, DHTC, DHTP, ANALOG_LOG, LEVEL_LOG, DALLAS_LOG, PH_LOG, CMD , TIMER_COUNTDOWN, TIMERS, TIME, TEST};
//ssl//#include "dependencies/WiFiClientSecure/WiFiClientSecure.h" //using older WiFiClientSecure
#include <PubSubClient.h>
@@ -59,8 +60,8 @@ GMedian medianFilter;
OneWire *oneWire;
DallasTemperature sensors;
//----------------------------------------------------------------
#include <DHT.h> //https://github.com/markruys/arduino-DHT
DHT dht;
#include "DHTesp.h"
DHTesp dht;
//----------------------------------------------------------------
#include "Adafruit_Si7021.h" //https://github.com/adafruit/Adafruit_Si7021
Adafruit_Si7021 sensor_Si7021 = Adafruit_Si7021();
@@ -88,6 +89,8 @@ Adafruit_Si7021 sensor_Si7021 = Adafruit_Si7021();
//-----------------------------------------------------------------
#define dhtT_update_int 5000
#define dhtH_update_int 5000
#define dhtComfort_update_int 5000
#define dhtPerception_update_int 5000
//-----------------------------------------------------------------