mirror of
https://github.com/IoTManagerProject/IoTManager.git
synced 2026-03-26 22:22:16 +03:00
DHT new library and uptime support
This commit is contained in:
2
Cmd.ino
2
Cmd.ino
@@ -15,6 +15,8 @@ void CMD_init() {
|
|||||||
|
|
||||||
sCmd.addCommand("dhtT", dhtT);
|
sCmd.addCommand("dhtT", dhtT);
|
||||||
sCmd.addCommand("dhtH", dhtH);
|
sCmd.addCommand("dhtH", dhtH);
|
||||||
|
sCmd.addCommand("dhtPerception", dhtPerception);
|
||||||
|
sCmd.addCommand("dhtComfort", dhtComfort);
|
||||||
|
|
||||||
sCmd.addCommand("logging", logging);
|
sCmd.addCommand("logging", logging);
|
||||||
|
|
||||||
|
|||||||
22
Init.ino
22
Init.ino
@@ -38,7 +38,7 @@ void Device_init() {
|
|||||||
ts.remove(DHTT);
|
ts.remove(DHTT);
|
||||||
ts.remove(DHTH);
|
ts.remove(DHTH);
|
||||||
//================
|
//================
|
||||||
|
|
||||||
all_vigets = "";
|
all_vigets = "";
|
||||||
txtExecution("firmware.config.txt");
|
txtExecution("firmware.config.txt");
|
||||||
//outcoming_date();
|
//outcoming_date();
|
||||||
@@ -50,3 +50,23 @@ void Scenario_init() {
|
|||||||
scenario = readFile("firmware.scenario.txt", 2048);
|
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");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
137
Sensors.ino
137
Sensors.ino
@@ -124,16 +124,22 @@ void dallas() {
|
|||||||
//======================================================================================================================
|
//======================================================================================================================
|
||||||
//=========================================Модуль сенсоров DHT==========================================================
|
//=========================================Модуль сенсоров DHT==========================================================
|
||||||
void dhtT() {
|
void dhtT() {
|
||||||
|
String sensor_type = sCmd.next();
|
||||||
String pin = sCmd.next();
|
String pin = sCmd.next();
|
||||||
String viget_name = sCmd.next();
|
String viget_name = sCmd.next();
|
||||||
String page_name = sCmd.next();
|
String page_name = sCmd.next();
|
||||||
String type = sCmd.next();
|
String type = sCmd.next();
|
||||||
String page_number = 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");
|
choose_viget_and_create(viget_name, page_name, page_number, type, "dhtT");
|
||||||
ts.add(DHTT, dhtT_update_int, [&](void*) {
|
ts.add(DHTT, dhtT_update_int + dht.getMinimumSamplingPeriod(), [&](void*) {
|
||||||
int value = 0;
|
float value = 0;
|
||||||
static int value_old;
|
static float value_old;
|
||||||
value = dht.getTemperature();
|
value = dht.getTemperature();
|
||||||
jsonWrite(configJson, "dhtT", String(value));
|
jsonWrite(configJson, "dhtT", String(value));
|
||||||
//if (value_old != value) {
|
//if (value_old != value) {
|
||||||
@@ -149,14 +155,20 @@ void dhtT() {
|
|||||||
|
|
||||||
|
|
||||||
void dhtH() {
|
void dhtH() {
|
||||||
|
String sensor_type = sCmd.next();
|
||||||
String pin = sCmd.next();
|
String pin = sCmd.next();
|
||||||
String viget_name = sCmd.next();
|
String viget_name = sCmd.next();
|
||||||
String page_name = sCmd.next();
|
String page_name = sCmd.next();
|
||||||
String type = sCmd.next();
|
String type = sCmd.next();
|
||||||
String page_number = 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");
|
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;
|
int value = 0;
|
||||||
static int value_old;
|
static int value_old;
|
||||||
value = dht.getHumidity();
|
value = dht.getHumidity();
|
||||||
@@ -172,6 +184,107 @@ void dhtH() {
|
|||||||
}, nullptr, true);
|
}, 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) {
|
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 == "level") jsonWrite(optionJson, "level_logging_count", maxCount);
|
||||||
if (sensor_name == "dallas") jsonWrite(optionJson, "dallas_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 == "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 == "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 == "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 == "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 == "ph") createViget (viget_name, page_name, page_number, "vigets/viget.chart.json", "logph", "maxCount", maxCount);
|
||||||
*/
|
*/
|
||||||
if (sensor_name == "analog") {
|
if (sensor_name == "analog") {
|
||||||
flagLoggingAnalog = true;
|
flagLoggingAnalog = true;
|
||||||
ts.remove(ANALOG_LOG);
|
ts.remove(ANALOG_LOG);
|
||||||
|
|||||||
1
data/config-my.json
Normal file
1
data/config-my.json
Normal file
@@ -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"}
|
||||||
@@ -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"}
|
|
||||||
@@ -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"}
|
{"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"}
|
||||||
@@ -20,6 +20,10 @@
|
|||||||
"type": "h4",
|
"type": "h4",
|
||||||
"title": "IP address: {{ip}}"
|
"title": "IP address: {{ip}}"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"type": "h4",
|
||||||
|
"title": "Uptime: {{uptime}}"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"type": "hr"
|
"type": "hr"
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
{
|
{
|
||||||
"widget" : "progress-round",
|
"widget" : "progress-round",
|
||||||
"icon" : "globe",
|
"descrColor" : "",
|
||||||
"descrColor" : "orange",
|
|
||||||
"max" : "100",
|
"max" : "100",
|
||||||
"stroke" : "20",
|
"stroke" : "20",
|
||||||
"color" : "#45ccce",
|
"color" : "#45ccce",
|
||||||
|
|||||||
@@ -53,11 +53,11 @@ void setup() {
|
|||||||
getMemoryLoad("[i] After loading");
|
getMemoryLoad("[i] After loading");
|
||||||
|
|
||||||
|
|
||||||
// ts.add(TEST, 1000, [&](void*) {
|
ts.add(TEST, 5000, [&](void*) {
|
||||||
|
|
||||||
//getMemoryLoad("[i] Periodic check");
|
up_time();
|
||||||
|
|
||||||
// }, nullptr, true);
|
}, nullptr, true);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
2
main.ino
2
main.ino
@@ -268,7 +268,7 @@ void getMemoryLoad(String text) {
|
|||||||
#endif
|
#endif
|
||||||
int memory_remain = ESP.getFreeHeap();
|
int memory_remain = ESP.getFreeHeap();
|
||||||
int memory_used = all_memory - memory_remain;
|
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!!!");
|
if (memory_load > 65) Serial.print("Attention!!! too match memory used!!!");
|
||||||
Serial.print(text + " memory used:");
|
Serial.print(text + " memory used:");
|
||||||
Serial.print(String(memory_load) + "%; ");
|
Serial.print(String(memory_load) + "%; ");
|
||||||
|
|||||||
8
set.h
8
set.h
@@ -36,7 +36,7 @@ AsyncEventSource events("/events");
|
|||||||
#include "time.h"
|
#include "time.h"
|
||||||
#include <TickerScheduler.h>
|
#include <TickerScheduler.h>
|
||||||
TickerScheduler ts(30);
|
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
|
//ssl//#include "dependencies/WiFiClientSecure/WiFiClientSecure.h" //using older WiFiClientSecure
|
||||||
#include <PubSubClient.h>
|
#include <PubSubClient.h>
|
||||||
@@ -60,8 +60,8 @@ GMedian medianFilter;
|
|||||||
OneWire *oneWire;
|
OneWire *oneWire;
|
||||||
DallasTemperature sensors;
|
DallasTemperature sensors;
|
||||||
//----------------------------------------------------------------
|
//----------------------------------------------------------------
|
||||||
#include <DHT.h> //https://github.com/markruys/arduino-DHT
|
#include "DHTesp.h"
|
||||||
DHT dht;
|
DHTesp dht;
|
||||||
//----------------------------------------------------------------
|
//----------------------------------------------------------------
|
||||||
#include "Adafruit_Si7021.h" //https://github.com/adafruit/Adafruit_Si7021
|
#include "Adafruit_Si7021.h" //https://github.com/adafruit/Adafruit_Si7021
|
||||||
Adafruit_Si7021 sensor_Si7021 = Adafruit_Si7021();
|
Adafruit_Si7021 sensor_Si7021 = Adafruit_Si7021();
|
||||||
@@ -89,6 +89,8 @@ Adafruit_Si7021 sensor_Si7021 = Adafruit_Si7021();
|
|||||||
//-----------------------------------------------------------------
|
//-----------------------------------------------------------------
|
||||||
#define dhtT_update_int 5000
|
#define dhtT_update_int 5000
|
||||||
#define dhtH_update_int 5000
|
#define dhtH_update_int 5000
|
||||||
|
#define dhtComfort_update_int 5000
|
||||||
|
#define dhtPerception_update_int 5000
|
||||||
//-----------------------------------------------------------------
|
//-----------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user