diff --git a/Cmd.ino b/Cmd.ino index 85b4cc8d..42efe5f6 100644 --- a/Cmd.ino +++ b/Cmd.ino @@ -15,6 +15,8 @@ void CMD_init() { sCmd.addCommand("dhtT", dhtT); sCmd.addCommand("dhtH", dhtH); + sCmd.addCommand("dhtPerception", dhtPerception); + sCmd.addCommand("dhtComfort", dhtComfort); sCmd.addCommand("logging", logging); diff --git a/Init.ino b/Init.ino index b8825c02..7efe9d90 100644 --- a/Init.ino +++ b/Init.ino @@ -38,7 +38,7 @@ void Device_init() { ts.remove(DHTT); ts.remove(DHTH); //================ - + all_vigets = ""; txtExecution("firmware.config.txt"); //outcoming_date(); @@ -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"); + } +} diff --git a/Sensors.ino b/Sensors.ino index 3016ab4d..f15b999e 100644 --- a/Sensors.ino +++ b/Sensors.ino @@ -124,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) { @@ -149,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(); @@ -172,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) { @@ -201,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") 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); diff --git a/data/config-my.json b/data/config-my.json new file mode 100644 index 00000000..ae16f518 --- /dev/null +++ b/data/config-my.json @@ -0,0 +1 @@ +{"SSDP":"MODULES","chipID":"905542-1458415","ssidAP":"WiFi","passwordAP":"","ssid":"rise","password":"hostel3333","timezone":3,"mqttServer":"m12.cloudmqtt.com","mqttPort":14053,"mqttUser":"lbscvzuj","mqttPass":"bLxlveOgaF8F","scenario":"1","timers":"0","pushingbox_id":"v7C133E426B0C69E","web_login":"admin","web_pass":"admin"} \ No newline at end of file diff --git a/data/config-users.json b/data/config-users.json deleted file mode 100644 index 0479064d..00000000 --- a/data/config-users.json +++ /dev/null @@ -1 +0,0 @@ -{"SSDP":"MODULES","chipID":"905542-1458415","ssidAP":"WiFi","passwordAP":"","ssid":"your_ssid","password":"your_pass","timezone":3,"mqttServer":"","mqttPort":0,"mqttUser":"","mqttPass":"","scenario":"1","timers":"0","pushingbox_id":"","web_login":"admin","web_pass":"admin"} \ No newline at end of file diff --git a/data/config.json b/data/config.json index ae16f518..0479064d 100644 --- a/data/config.json +++ b/data/config.json @@ -1 +1 @@ -{"SSDP":"MODULES","chipID":"905542-1458415","ssidAP":"WiFi","passwordAP":"","ssid":"rise","password":"hostel3333","timezone":3,"mqttServer":"m12.cloudmqtt.com","mqttPort":14053,"mqttUser":"lbscvzuj","mqttPass":"bLxlveOgaF8F","scenario":"1","timers":"0","pushingbox_id":"v7C133E426B0C69E","web_login":"admin","web_pass":"admin"} \ No newline at end of file +{"SSDP":"MODULES","chipID":"905542-1458415","ssidAP":"WiFi","passwordAP":"","ssid":"your_ssid","password":"your_pass","timezone":3,"mqttServer":"","mqttPort":0,"mqttUser":"","mqttPass":"","scenario":"1","timers":"0","pushingbox_id":"","web_login":"admin","web_pass":"admin"} \ No newline at end of file diff --git a/data/configuration.json b/data/configuration.json index 934d06c4..2d5e7c64 100644 --- a/data/configuration.json +++ b/data/configuration.json @@ -20,6 +20,10 @@ "type": "h4", "title": "IP address: {{ip}}" }, +{ + "type": "h4", + "title": "Uptime: {{uptime}}" + }, { "type": "hr" }, diff --git a/data/vigets/viget.progressR.json b/data/vigets/viget.progressR.json index 99bde43e..dd3a9873 100644 --- a/data/vigets/viget.progressR.json +++ b/data/vigets/viget.progressR.json @@ -1,7 +1,6 @@ { "widget" : "progress-round", - "icon" : "globe", - "descrColor" : "orange", + "descrColor" : "", "max" : "100", "stroke" : "20", "color" : "#45ccce", diff --git a/esp32-esp8266_iot-manager_modules_firmware.ino b/esp32-esp8266_iot-manager_modules_firmware.ino index 29ff6469..51fa84b4 100644 --- a/esp32-esp8266_iot-manager_modules_firmware.ino +++ b/esp32-esp8266_iot-manager_modules_firmware.ino @@ -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); } diff --git a/main.ino b/main.ino index 2a962fec..2ed3fa31 100644 --- a/main.ino +++ b/main.ino @@ -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) + "%; "); diff --git a/set.h b/set.h index fd384f91..7692f606 100644 --- a/set.h +++ b/set.h @@ -36,7 +36,7 @@ AsyncEventSource events("/events"); #include "time.h" #include 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, TIME, 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 @@ -60,8 +60,8 @@ GMedian medianFilter; OneWire *oneWire; DallasTemperature sensors; //---------------------------------------------------------------- -#include //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(); @@ -89,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 //-----------------------------------------------------------------