diff --git a/Init.ino b/Init.ino index 14e3752e..84258f7d 100644 --- a/Init.ino +++ b/Init.ino @@ -53,7 +53,9 @@ void Scenario_init() { } void prsets_init() { + //part 1=============================================================================== + server.on("/relay", HTTP_GET, [](AsyncWebServerRequest * request) { writeFile("firmware.config.txt", readFile("configs/relay.config.txt", 2048)); writeFile("firmware.scenario.txt", readFile("configs/relay.scenario.txt", 2048)); @@ -85,7 +87,60 @@ void prsets_init() { Scenario_init(); request->send(200, "text/text", "OK"); // отправляем ответ о выполнении }); + + server.on("/relay_switch", HTTP_GET, [](AsyncWebServerRequest * request) { + writeFile("firmware.config.txt", readFile("configs/relay_sw.config.txt", 2048)); + writeFile("firmware.scenario.txt", readFile("configs/relay_sw.scenario.txt", 2048)); + Device_init(); + Scenario_init(); + request->send(200, "text/text", "OK"); // отправляем ответ о выполнении + }); + + server.on("/relay_button_remote", HTTP_GET, [](AsyncWebServerRequest * request) { + writeFile("firmware.config.txt", readFile("configs/relay_br.config.txt", 2048)); + writeFile("firmware.scenario.txt", readFile("configs/relay_br.scenario.txt", 2048)); + Device_init(); + Scenario_init(); + request->send(200, "text/text", "OK"); // отправляем ответ о выполнении + }); + + server.on("/relay_switch_remote", HTTP_GET, [](AsyncWebServerRequest * request) { + writeFile("firmware.config.txt", readFile("configs/relay_sr.config.txt", 2048)); + writeFile("firmware.scenario.txt", readFile("configs/relay_sr.scenario.txt", 2048)); + Device_init(); + Scenario_init(); + request->send(200, "text/text", "OK"); // отправляем ответ о выполнении + }); + //part 2=============================================================================== + + server.on("/dht11", HTTP_GET, [](AsyncWebServerRequest * request) { + writeFile("firmware.config.txt", readFile("configs/dht11.config.txt", 2048)); + writeFile("firmware.scenario.txt", readFile("configs/dht11.scenario.txt", 2048)); + Device_init(); + Scenario_init(); + request->send(200, "text/text", "OK"); // отправляем ответ о выполнении + }); + + server.on("/dht22", HTTP_GET, [](AsyncWebServerRequest * request) { + writeFile("firmware.config.txt", readFile("configs/dht22.config.txt", 2048)); + writeFile("firmware.scenario.txt", readFile("configs/dht22.scenario.txt", 2048)); + Device_init(); + Scenario_init(); + request->send(200, "text/text", "OK"); // отправляем ответ о выполнении + }); + + + server.on("/dallas", HTTP_GET, [](AsyncWebServerRequest * request) { + writeFile("firmware.config.txt", readFile("configs/dallas.config.txt", 2048)); + writeFile("firmware.scenario.txt", readFile("configs/dallas.scenario.txt", 2048)); + Device_init(); + Scenario_init(); + request->send(200, "text/text", "OK"); // отправляем ответ о выполнении + }); + + + server.on("/termostat", HTTP_GET, [](AsyncWebServerRequest * request) { writeFile("firmware.config.txt", readFile("configs/termostat.config.txt", 2048)); writeFile("firmware.scenario.txt", readFile("configs/termostat.scenario.txt", 2048)); @@ -94,13 +149,7 @@ void prsets_init() { request->send(200, "text/text", "OK"); // отправляем ответ о выполнении }); - server.on("/dht", HTTP_GET, [](AsyncWebServerRequest * request) { - writeFile("firmware.config.txt", readFile("configs/dht.config.txt", 2048)); - writeFile("firmware.scenario.txt", readFile("configs/dht.scenario.txt", 2048)); - Device_init(); - Scenario_init(); - request->send(200, "text/text", "OK"); // отправляем ответ о выполнении - }); + server.on("/default", HTTP_GET, [](AsyncWebServerRequest * request) { writeFile("firmware.config.txt", readFile("configs/firmware.config.txt", 2048)); @@ -116,21 +165,24 @@ void up_time() { uint32_t mm = ss / 60; uint32_t hh = mm / 60; uint32_t dd = hh / 24; + + String out = ""; if (ss != 0) { - Serial.println(String(ss) + " sec"); + out = "[i] uptime = " + String(ss) + " sec"; jsonWrite(configJson, "uptime", String(ss) + " sec"); } if (mm != 0) { - Serial.println(String(mm) + " min"); + out = "[i] uptime = " + String(mm) + " min"; jsonWrite(configJson, "uptime", String(mm) + " min"); } if (hh != 0) { - Serial.println(String(hh) + " hours"); + out = "[i] uptime = " + String(hh) + " hours"; jsonWrite(configJson, "uptime", String(hh) + " hours"); } if (dd != 0) { - Serial.println(String(dd) + " days"); + out = "[i] uptime = " + String(dd) + " days"; jsonWrite(configJson, "uptime", String(dd) + " days"); } + Serial.println(out + ", mqtt_lost_error: " + String(mqtt_lost_error) + ", wifi_lost_error: " + String(wifi_lost_error)); } diff --git a/Sensors.ino b/Sensors.ino index d37d7185..0453aa5e 100644 --- a/Sensors.ino +++ b/Sensors.ino @@ -137,19 +137,26 @@ void dhtT() { dht.setup(pin.toInt(), DHTesp::DHT22); } choose_viget_and_create(viget_name, page_name, page_number, type, "dhtT"); - ts.add(DHTT, dhtT_update_int + dht.getMinimumSamplingPeriod(), [&](void*) { + ts.add(DHTT, dhtT_update_int, [&](void*) { //dht.getMinimumSamplingPeriod() float value = 0; static float value_old; - value = dht.getTemperature(); - jsonWrite(configJson, "dhtT", String(value)); - //if (value_old != value) { - eventGen ("dhtT", ""); - sendSTATUS("dhtT", String(value)); - if (client.connected()) { - Serial.println("[i] sensor 'dhtT' send date " + String(value)); + static int counter; + if (dht.getStatus() != 0 && counter < 5) { + sendSTATUS("dhtT", String(dht.getStatusString())); + counter++; + } else { + counter = 0; + value = dht.getTemperature(); + jsonWrite(configJson, "dhtT", String(value)); + //if (value_old != value) { + eventGen ("dhtT", ""); + sendSTATUS("dhtT", String(value)); + if (client.connected()) { + Serial.println("[i] sensor 'dhtT' send date " + String(value)); + } + //} + value_old = value; } - //} - value_old = value; }, nullptr, true); } @@ -168,19 +175,26 @@ void dhtH() { dht.setup(pin.toInt(), DHTesp::DHT22); } choose_viget_and_create(viget_name, page_name, page_number, type, "dhtH"); - ts.add(DHTH, dhtH_update_int + dht.getMinimumSamplingPeriod(), [&](void*) { + ts.add(DHTH, dhtH_update_int , [&](void*) { //dht.getMinimumSamplingPeriod() int value = 0; static int value_old; - value = dht.getHumidity(); - jsonWrite(configJson, "dhtH", String(value)); - //if (value_old != value) { - eventGen ("dhtH", ""); - sendSTATUS("dhtH", String(value)); - if (client.connected()) { - Serial.println("[i] sensor 'dhtH' send date " + String(value)); + static int counter; + if (dht.getStatus() != 0 && counter < 5) { + sendSTATUS("dhtH", String(dht.getStatusString())); + counter++; + } else { + counter = 0; + value = dht.getHumidity(); + jsonWrite(configJson, "dhtH", String(value)); + //if (value_old != value) { + eventGen ("dhtH", ""); + sendSTATUS("dhtH", String(value)); + if (client.connected()) { + Serial.println("[i] sensor 'dhtH' send date " + String(value)); + } + //} + value_old = value; } - //} - value_old = value; }, nullptr, true); } @@ -191,13 +205,17 @@ void dhtPerception() { choose_viget_and_create(viget_name, page_name, page_number, "any-data", "dhtPerception"); ts.add(DHTP, dht_calculation_update_int, [&](void*) { byte value; - value = dht.computePerception(jsonRead(configJson, "dhtT").toFloat(), jsonRead(configJson, "dhtH").toFloat(), 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); + if (dht.getStatus() != 0) { + sendSTATUS("dhtPerception", String(dht.getStatusString())); + } else { + value = dht.computePerception(jsonRead(configJson, "dhtT").toFloat(), jsonRead(configJson, "dhtH").toFloat(), 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); } @@ -213,7 +231,6 @@ String perception(byte value) { if (value == 7) return "Сильно неудобно, полный звиздец"; } - void dhtComfort() { String viget_name = sCmd.next(); String page_name = sCmd.next(); @@ -222,46 +239,50 @@ void dhtComfort() { ts.add(DHTC, dht_calculation_update_int, [&](void*) { float value; ComfortState cf; - value = dht.getComfortRatio(cf, jsonRead(configJson, "dhtT").toFloat(), jsonRead(configJson, "dhtH").toFloat(), 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); + if (dht.getStatus() != 0) { + sendSTATUS("dhtComfort", String(dht.getStatusString())); + } else { + value = dht.getComfortRatio(cf, jsonRead(configJson, "dhtT").toFloat(), jsonRead(configJson, "dhtH").toFloat(), 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); } @@ -273,12 +294,16 @@ void dhtDewpoint() { choose_viget_and_create(viget_name, page_name, page_number, "any-data", "dhtDewpoint"); ts.add(DHTD, dht_calculation_update_int, [&](void*) { float value; - value = dht.computeDewPoint(jsonRead(configJson, "dhtT").toFloat(), jsonRead(configJson, "dhtH").toFloat(), false); - jsonWrite(configJson, "dhtDewpoint", value); - eventGen ("dhtDewpoint", ""); - sendSTATUS("dhtDewpoint", String(value)); - if (client.connected()) { - Serial.println("[i] sensor 'dhtDewpoint' send date " + String(value)); + if (dht.getStatus() != 0) { + sendSTATUS("dhtDewpoint", String(dht.getStatusString())); + } else { + value = dht.computeDewPoint(jsonRead(configJson, "dhtT").toFloat(), jsonRead(configJson, "dhtH").toFloat(), false); + jsonWrite(configJson, "dhtDewpoint", value); + eventGen ("dhtDewpoint", ""); + sendSTATUS("dhtDewpoint", String(value)); + if (client.connected()) { + Serial.println("[i] sensor 'dhtDewpoint' send date " + String(value)); + } } }, nullptr, true); } diff --git a/WiFi.ino b/WiFi.ino index 982f84dd..3f5ad044 100644 --- a/WiFi.ino +++ b/WiFi.ino @@ -58,6 +58,8 @@ void WIFI_init() { } else { WiFi.begin(_ssid.c_str(), _password.c_str()); + Serial.print("ssid: "); + Serial.println(_ssid); } // Делаем проверку подключения до тех пор пока счетчик tries // не станет равен нулю или не получим подключение diff --git a/data/.exclude.files b/data/.exclude.files deleted file mode 100644 index 955397fa..00000000 --- a/data/.exclude.files +++ /dev/null @@ -1,2 +0,0 @@ -/*.js.gz -/.exclude.files diff --git a/data/configs/dallas.config.txt b/data/configs/dallas.config.txt new file mode 100644 index 00000000..e69de29b diff --git a/data/configs/dallas.scenario.txt b/data/configs/dallas.scenario.txt new file mode 100644 index 00000000..e69de29b diff --git a/data/configs/dht.config.txt b/data/configs/dht11.config.txt similarity index 100% rename from data/configs/dht.config.txt rename to data/configs/dht11.config.txt diff --git a/data/configs/dht.scenario.txt b/data/configs/dht11.scenario.txt similarity index 100% rename from data/configs/dht.scenario.txt rename to data/configs/dht11.scenario.txt diff --git a/data/configs/dht22.config.txt b/data/configs/dht22.config.txt new file mode 100644 index 00000000..eba7dcaf --- /dev/null +++ b/data/configs/dht22.config.txt @@ -0,0 +1,5 @@ +dhtT DHT22 2 Температура#DHT,#t°C Датчики any-data 1 +dhtH DHT22 2 Влажность#DHT,#% Датчики any-data 2 +dhtComfort Степень#комфорта: Датчики 3 +dhtPerception Восприятие: Датчики 4 +dhtDewpoint Точка#росы: Датчики 5 \ No newline at end of file diff --git a/data/configs/dht22.scenario.txt b/data/configs/dht22.scenario.txt new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/data/configs/dht22.scenario.txt @@ -0,0 +1 @@ + diff --git a/data/configs/relay_br.config.txt b/data/configs/relay_br.config.txt new file mode 100644 index 00000000..051c96e2 --- /dev/null +++ b/data/configs/relay_br.config.txt @@ -0,0 +1 @@ +button 1 5 Включить#все Реле 0 1 \ No newline at end of file diff --git a/data/configs/relay_br.scenario.txt b/data/configs/relay_br.scenario.txt new file mode 100644 index 00000000..9eb30933 --- /dev/null +++ b/data/configs/relay_br.scenario.txt @@ -0,0 +1,8 @@ +button1 = 1 +mqtt 3233662-1589485 buttonSet_1_1 +mqtt 2233662-1589486 buttonSet_1_1 +end +button1 = 0 +mqtt 3233662-1589485 buttonSet_1_0 +mqtt 2233662-1589486 buttonSet_1_0 +end \ No newline at end of file diff --git a/data/configs/relay_rm.config.txt b/data/configs/relay_rm.config.txt new file mode 100644 index 00000000..bc49233e --- /dev/null +++ b/data/configs/relay_rm.config.txt @@ -0,0 +1 @@ +switch 1 0 10 \ No newline at end of file diff --git a/data/configs/relay_rm.scenario.txt b/data/configs/relay_rm.scenario.txt new file mode 100644 index 00000000..827e1495 --- /dev/null +++ b/data/configs/relay_rm.scenario.txt @@ -0,0 +1,3 @@ +switch1 = 1 +mqtt 3233662-1589489 buttonChange_1 +end \ No newline at end of file diff --git a/data/configs/relay_sr.config.txt b/data/configs/relay_sr.config.txt new file mode 100644 index 00000000..bc49233e --- /dev/null +++ b/data/configs/relay_sr.config.txt @@ -0,0 +1 @@ +switch 1 0 10 \ No newline at end of file diff --git a/data/configs/relay_sr.scenario.txt b/data/configs/relay_sr.scenario.txt new file mode 100644 index 00000000..0c48cbdf --- /dev/null +++ b/data/configs/relay_sr.scenario.txt @@ -0,0 +1,4 @@ +switch1 = 1 +mqtt 3233662-1589485 buttonChange_1 +mqtt 2233662-1589486 buttonChange_1 +end \ No newline at end of file diff --git a/data/configs/relay_sw.config.txt b/data/configs/relay_sw.config.txt new file mode 100644 index 00000000..9156708c --- /dev/null +++ b/data/configs/relay_sw.config.txt @@ -0,0 +1,2 @@ +button 1 13 Включить#реле Реле 0 1 +switch 1 0 10 \ No newline at end of file diff --git a/data/configs/relay_sw.scenario.txt b/data/configs/relay_sw.scenario.txt new file mode 100644 index 00000000..093de1fe --- /dev/null +++ b/data/configs/relay_sw.scenario.txt @@ -0,0 +1,3 @@ +switch1 = 1 +buttonChange 1 +end \ No newline at end of file diff --git a/data/configuration.json b/data/configuration.json index 733a3cc8..de86d685 100644 --- a/data/configuration.json +++ b/data/configuration.json @@ -38,35 +38,71 @@ }, { "type": "button", - "title": "Включение выключение реле", + "title": "Вкл. выкл. локального реле", "action": "/relay", "class": "btn btn-block btn-primary" - }, + }, { "type": "button", - "title": "Включение выключение реле в определенное время", + "title": "Вкл. выкл. локального реле в определенное время", "action": "/relay_timer", "class": "btn btn-block btn-primary" }, { "type": "button", - "title": "Включение выключение реле на определенный период времени", + "title": "Вкл. выкл. локального реле на определенный период времени", "action": "/relay_countdown", "class": "btn btn-block btn-primary" }, { "type": "button", - "title": "Включение выключение нескольких реле одной кнопкой в приложении", + "title": "Вкл. выкл. нескольких локальных реле кнопкой в приложении", "action": "/relay_several", "class": "btn btn-block btn-primary" }, + { + "type": "button", + "title": "Вкл. выкл. локального реле физической кнопкой (кнопка так же дублируется в приложении)", + "action": "/relay_switch", + "class": "btn btn-block btn-primary" + }, + { + "type": "button", + "title": "Вкл. выкл. нескольких удаленных реле кнопкой в приложении (нужно указать Device ID)", + "action": "/relay_button_remote", + "class": "btn btn-block btn-primary" + }, + { + "type": "button", + "title": "Вкл. выкл. нескольких удаленных реле физической кнопкой (нужно указать Device ID)", + "action": "/relay_switch_remote", + "class": "btn btn-block btn-primary" + }, { "type": "h4", "title": "Раздел 2. Сенсоры" }, { "type": "button", - "title": "Термостат на ds18b20", + "title": "Сенсор DHT11", + "action": "/dht11", + "class": "btn btn-block btn-primary" + }, + { + "type": "button", + "title": "Сенсор DHT22, DHT33, DHT44, AM2302, RHT03", + "action": "/dht22", + "class": "btn btn-block btn-primary" + }, + { + "type": "button", + "title": "Сенсор DS18B20", + "action": "/dallas", + "class": "btn btn-block btn-primary" + }, + { + "type": "button", + "title": "Термостат на DS18B20", "action": "/termostat", "class": "btn btn-block btn-primary" }, @@ -89,12 +125,7 @@ "class": "btn btn-block btn-primary" }, - { - "type": "button", - "title": "Чтение датчика dht", - "action": "/dht", - "class": "btn btn-block btn-primary" - }, + { "type": "hr" }, diff --git a/data/edit.htm b/data/edit.htm deleted file mode 100644 index 5e2f46ce..00000000 --- a/data/edit.htm +++ /dev/null @@ -1,572 +0,0 @@ - - -
-