diff --git a/data/config.json b/data/config.json
index 7aa21254..0776aa6c 100644
--- a/data/config.json
+++ b/data/config.json
@@ -3,8 +3,8 @@
"chipID": "",
"apssid": "IoTmanager",
"appass": "",
- "routerssid": "VOLODYA",
- "routerpass": "BELCHENKO",
+ "routerssid": "rise",
+ "routerpass": "hostel3333",
"timezone": 2,
"ntp": "pool.ntp.org",
"mqttServer": "91.204.228.124",
@@ -17,6 +17,6 @@
"weblogin": "admin",
"webpass": "admin",
"udponoff": "1",
- "blink": "1",
+ "blink": "0",
"oneWirePin": "2"
}
\ No newline at end of file
diff --git a/data/items/analog-adc.txt b/data/items/analog-adc.txt
index 73e84382..2e9cb193 100644
--- a/data/items/analog-adc.txt
+++ b/data/items/analog-adc.txt
@@ -1 +1 @@
-analog-adc;id;anydata;Сенсоры;Аналоговый;order;gol;map[0,1024,0,1024];c[1]
\ No newline at end of file
+analog-adc;id;fillgauge;Сенсоры;Аналоговый;order;gol;map[0,1024,0,100];c[1]
\ No newline at end of file
diff --git a/data/items/button-out-np.txt b/data/items/button-out-np.txt
index 5fa21dd1..4337b77f 100644
--- a/data/items/button-out-np.txt
+++ b/data/items/button-out-np.txt
@@ -1 +1 @@
-button-out;id;toggle;Кнопки;Освещение;order;st[0]
\ No newline at end of file
+button-out;id;toggleSunMoon;Кнопки;Освещение;order;st[0]
\ No newline at end of file
diff --git a/data/items/dallas-temp.txt b/data/items/dallas-temp.txt
new file mode 100644
index 00000000..e4c701ee
--- /dev/null
+++ b/data/items/dallas-temp.txt
@@ -0,0 +1 @@
+dallas-temp;id;anydataTemp;Сенсоры;Температура;order;sal;c[1]
\ No newline at end of file
diff --git a/data/items/dallas-tmp.txt b/data/items/dallas-tmp.txt
deleted file mode 100644
index bdc19b76..00000000
--- a/data/items/dallas-tmp.txt
+++ /dev/null
@@ -1 +0,0 @@
-dallas-temp;id;anydata;Сенсоры;Температура;order;sal;c[1]
\ No newline at end of file
diff --git a/data/items/dht11-hum.txt b/data/items/dht11-hum.txt
new file mode 100644
index 00000000..697596e5
--- /dev/null
+++ b/data/items/dht11-hum.txt
@@ -0,0 +1 @@
+dht-hum;id;anydataHum;Сенсоры;Влажность;order;thd;type[dht11];c[1]
\ No newline at end of file
diff --git a/data/items/dht11-temp.txt b/data/items/dht11-temp.txt
new file mode 100644
index 00000000..dcb5df39
--- /dev/null
+++ b/data/items/dht11-temp.txt
@@ -0,0 +1 @@
+dht-temp;id;anydataTemp;Сенсоры;Температура;order;thd;type[dht11];c[1]
\ No newline at end of file
diff --git a/data/items/dht22-hum.txt b/data/items/dht22-hum.txt
new file mode 100644
index 00000000..9efa3d32
--- /dev/null
+++ b/data/items/dht22-hum.txt
@@ -0,0 +1 @@
+dht-hum;id;anydataHum;Сенсоры;Влажность;order;thd;type[dht22];c[1]
\ No newline at end of file
diff --git a/data/items/dht22-temp.txt b/data/items/dht22-temp.txt
new file mode 100644
index 00000000..149f9f67
--- /dev/null
+++ b/data/items/dht22-temp.txt
@@ -0,0 +1 @@
+dht-temp;id;anydataTemp;Сенсоры;Температура;order;thd;type[dht22];c[1]
\ No newline at end of file
diff --git a/data/set.device.json b/data/set.device.json
index 42a32fb7..497a6f10 100644
--- a/data/set.device.json
+++ b/data/set.device.json
@@ -56,15 +56,19 @@
"title": {
"#": "Выберите элемент из списка",
"/set?addItem=button-out-p": "1.Кнопка управляющая пином",
- "/set?addItem=button-out-np": "2.Кнопка не привязанная к пину",
- "/set?addItem=pwm-out": "3.Широтно импульсная модуляция(pwm)",
- "/set?addItem=button-in": "4.Физическая кнопка",
+ "/set?addItem=button-out-np": "2.Кнопка не привязанная к пину (виртуальная)",
+ "/set?addItem=pwm-out": "3.Широтно импульсная модуляция (pwm)",
+ "/set?addItem=button-in": "4.Физическая кнопка (чтение состояния пина)",
"/set?addItem=input-digit": "5.Окно ввода цифровых значений",
"/set?addItem=input-time": "6.Окно ввода времени",
"/set?addItem=output-text": "7.Окно вывода любого текста, предупреждения, цифры",
"/set?addItem=analog-adc": "8.Аналоговый датчик, чтение аналогового входа",
- "/set?addItem=dallas-tmp": "9.Датчик температуры (ds18b20)",
- "/set?addItem=ultrasonic-cm": "10.Ультрозвуковой датчик расстояния (JSN-SR04T, HC-SR04, HY-SRF05)"
+ "/set?addItem=dallas-temp": "9.Датчик температуры (ds18b20)",
+ "/set?addItem=ultrasonic-cm": "10.Ультрозвуковой датчик расстояния (JSN-SR04T, HC-SR04, HY-SRF05)",
+ "/set?addItem=dht11-temp": "11.Датчик температуры (DHT11)",
+ "/set?addItem=dht11-hum": "12.Датчик влажности (DHT11)",
+ "/set?addItem=dht22-temp": "13.Датчик температуры (DHT22, DHT33, DHT44, AM2302, RHT03)",
+ "/set?addItem=dht22-hum": "14.Датчик влажности (DHT22, DHT33, DHT44, AM2302, RHT03)"
}
},
{
diff --git a/data/widgets/anydataHum.json b/data/widgets/anydataHum.json
new file mode 100644
index 00000000..ebc5b5af
--- /dev/null
+++ b/data/widgets/anydataHum.json
@@ -0,0 +1,5 @@
+{
+ "widget": "anydata",
+ "after": "%",
+ "icon": "water"
+}
\ No newline at end of file
diff --git a/data/widgets/anydataTemp.json b/data/widgets/anydataTemp.json
new file mode 100644
index 00000000..112da222
--- /dev/null
+++ b/data/widgets/anydataTemp.json
@@ -0,0 +1,5 @@
+{
+ "widget": "anydata",
+ "after": "°С",
+ "icon": "thermometer"
+}
\ No newline at end of file
diff --git a/data/widgets/toggleSunMoon.json b/data/widgets/toggleSunMoon.json
new file mode 100644
index 00000000..5501aa75
--- /dev/null
+++ b/data/widgets/toggleSunMoon.json
@@ -0,0 +1,5 @@
+{
+ "widget": "toggle",
+ "icon": "sunny",
+ "iconOff": "moon"
+}
\ No newline at end of file
diff --git a/include/Class/LineParsing.h b/include/Class/LineParsing.h
index 006282b1..95544fd4 100644
--- a/include/Class/LineParsing.h
+++ b/include/Class/LineParsing.h
@@ -20,6 +20,7 @@ class LineParsing {
String _inv;
String _state;
String _db;
+ String _type;
public:
LineParsing() :
@@ -35,7 +36,8 @@ class LineParsing {
_c{""},
_inv{""},
_state{""},
- _db{""}
+ _db{""},
+ _type{""}
{};
@@ -71,6 +73,9 @@ class LineParsing {
if (arg.indexOf("c[") != -1) {
_c = extractInner(arg);
}
+ if (arg.indexOf("type[") != -1) {
+ _type = extractInner(arg);
+ }
}
}
@@ -113,6 +118,9 @@ class LineParsing {
String gc() {
return _c;
}
+ String gtype() {
+ return _type;
+ }
void clear() {
_key = "";
@@ -127,6 +135,7 @@ class LineParsing {
_inv = "";
_state = "";
_db = "";
+ _type = "";
}
String extractInnerDigit(String str) {
diff --git a/include/Cmd.h b/include/Cmd.h
index 705b7eb4..311169d1 100644
--- a/include/Cmd.h
+++ b/include/Cmd.h
@@ -32,15 +32,15 @@ extern void bme280P_reading();
extern void bme280H_reading();
extern void bme280A_reading();
-extern void dhtT();
-extern void dhtH();
-extern void dhtP();
-extern void dhtC();
-extern void dhtD();
-extern void dhtH_reading();
-extern void dhtP_reading();
-extern void dhtC_reading();
-extern void dhtD_reading();
+//extern void dhtT();
+//extern void dhtH();
+//extern void dhtP();
+//extern void dhtC();
+//extern void dhtD();
+//extern void dhtH_reading();
+//extern void dhtP_reading();
+//extern void dhtC_reading();
+//extern void dhtD_reading();
extern void handle_time_init();
extern void stepper();
diff --git a/include/Consts.h b/include/Consts.h
index 5c2b9da0..9dfb2bb3 100644
--- a/include/Consts.h
+++ b/include/Consts.h
@@ -30,7 +30,7 @@
//#define WEBSOCKET_ENABLED
//#define LAYOUT_IN_RAM
//#define UDP_ENABLED
-//#define SSDP
+#define SSDP
/*
* Sensor
diff --git a/include/items/SensorDhtClass.h b/include/items/SensorDhtClass.h
index 516b88da..31b9b174 100644
--- a/include/items/SensorDhtClass.h
+++ b/include/items/SensorDhtClass.h
@@ -1,43 +1,75 @@
#pragma once
#include
+
#include "Class/LineParsing.h"
#include "Global.h"
#include "items/SensorConvertingClass.h"
-
+DHTesp dht;
class SensorDhtClass : public SensorConvertingClass {
public:
SensorDhtClass() : SensorConvertingClass(){};
void SensorDhtInit() {
- //oneWire = new OneWire((uint8_t)_pin.toInt());
- //sensors.setOneWire(oneWire);
- //sensors.begin();
- //sensors.setResolution(48);
-
+ if (_type == "dht11") {
+ dht.setup(_pin.toInt(), DHTesp::DHT11);
+ }
+ if (_type == "dht22") {
+ dht.setup(_pin.toInt(), DHTesp::DHT22);
+ }
sensorReadingMap += _key + ",";
- //dhtEnterCounter++;
+ //to do если надо будет читать несколько dht
+ //dhtEnterCounter++;
//jsonWriteInt(configOptionJson, _key + "_num", dhtEnterCounter);
+
jsonWriteStr(configOptionJson, _key + "_map", _map);
jsonWriteStr(configOptionJson, _key + "_с", _c);
}
- void SensorDhtRead(String key) {
+ void SensorDhtReadTemp(String key) {
+ //to do если надо будет читать несколько dht
+ //int cnt = jsonReadInt(configOptionJson, key + "_num");
float value;
- byte num = sensors.getDS18Count();
- sensors.requestTemperatures();
-
- int cnt = jsonReadInt(configOptionJson, key + "_num");
-
- for (byte i = 0; i < num; i++) {
- if (i == cnt) {
- value = sensors.getTempCByIndex(i);
+ static int counter;
+ if (dht.getStatus() != 0 && counter < 5) {
+ counter++;
+ //return;
+ } else {
+ counter = 0;
+ value = dht.getTemperature();
+ if (String(value) != "nan") {
//value = this->mapping(key, value);
float valueFl = this->correction(key, value);
eventGen(key, "");
jsonWriteStr(configLiveJson, key, String(valueFl));
MqttClient::publishStatus(key, String(valueFl));
Serial.println("[I] sensor '" + key + "' data: " + String(valueFl));
+ } else {
+ Serial.println("[E] sensor '" + key);
+ }
+ }
+ }
+
+ void SensorDhtReadHum(String key) {
+ //to do если надо будет читать несколько dht
+ //int cnt = jsonReadInt(configOptionJson, key + "_num");
+ float value;
+ static int counter;
+ if (dht.getStatus() != 0 && counter < 5) {
+ counter++;
+ //return;
+ } else {
+ counter = 0;
+ value = dht.getHumidity();
+ if (String(value) != "nan") {
+ //value = this->mapping(key, value);
+ float valueFl = this->correction(key, value);
+ eventGen(key, "");
+ jsonWriteStr(configLiveJson, key, String(valueFl));
+ MqttClient::publishStatus(key, String(valueFl));
+ Serial.println("[I] sensor '" + key + "' data: " + String(valueFl));
+ } else {
+ Serial.println("[E] sensor '" + key);
}
}
}
diff --git a/include/items/itemsGlobal.h b/include/items/itemsGlobal.h
index 3fedfc5d..c6eb6b0a 100644
--- a/include/items/itemsGlobal.h
+++ b/include/items/itemsGlobal.h
@@ -25,4 +25,9 @@ extern void ultrasonicCm();
extern void ultrasonicReading();
extern void dallasTemp();
-extern void dallasReading();
\ No newline at end of file
+extern void dallasReading();
+
+extern void dhtTemp();
+extern void dhtReadingTemp();
+extern void dhtHum();
+extern void dhtReadingHum();
\ No newline at end of file
diff --git a/src/Cmd.cpp b/src/ItemsGlobal.cpp
similarity index 97%
rename from src/Cmd.cpp
rename to src/ItemsGlobal.cpp
index 1a5b03c4..1d1b7e21 100644
--- a/src/Cmd.cpp
+++ b/src/ItemsGlobal.cpp
@@ -33,6 +33,9 @@ void cmd_init() {
sCmd.addCommand("ultrasonic-cm", ultrasonicCm);
sCmd.addCommand("dallas-temp", dallasTemp);
+ sCmd.addCommand("dht-temp", dhtTemp);
+ sCmd.addCommand("dht-hum", dhtHum);
+
@@ -42,13 +45,13 @@ void cmd_init() {
sCmd.addCommand("timerStart", timerStart_);
sCmd.addCommand("timerStop", timerStop_);
-#ifdef DHT_ENABLED
- sCmd.addCommand("dhtT", dhtT);
- sCmd.addCommand("dhtH", dhtH);
- sCmd.addCommand("dhtPerception", dhtP);
- sCmd.addCommand("dhtComfort", dhtC);
- sCmd.addCommand("dhtDewpoint", dhtD);
-#endif
+//#ifdef DHT_ENABLED
+// sCmd.addCommand("dhtT", dhtT);
+// sCmd.addCommand("dhtH", dhtH);
+// sCmd.addCommand("dhtPerception", dhtP);
+// sCmd.addCommand("dhtComfort", dhtC);
+// sCmd.addCommand("dhtDewpoint", dhtD);
+//#endif
#ifdef BMP_ENABLED
sCmd.addCommand("bmp280T", bmp280T);
diff --git a/src/ItemsList.cpp b/src/ItemsList.cpp
index b0ef9d36..6a9d4592 100644
--- a/src/ItemsList.cpp
+++ b/src/ItemsList.cpp
@@ -7,16 +7,18 @@ static const char* firstLine PROGMEM = "Тип элемента;Id;Виджет;
void addItem(String name) {
String item = readFile("items/" + name + ".txt", 1024);
name = deleteToMarkerLast(name, "-");
- item.replace("id", name + String(getNewElementNumber("id.txt")));
+ item.replace("id", name + "-" + String(getNewElementNumber("id.txt")));
item.replace("order", String(getNewElementNumber("order.txt")));
- if (item.indexOf("pin") != -1) { //all cases
+ if (item.indexOf("pin") != -1) { //all cases (random pins from available)
item.replace("pin", "pin[" + String(getFreePinAll()) + "]");
} else if (item.indexOf("gol") != -1) { //analog
item.replace("gol", "pin[" + String(getFreePinAnalog()) + "]");
} else if (item.indexOf("cin") != -1) { //ultrasonic
item.replace("cin", "pin[" + String(getFreePinAll()) + "," + String(getFreePinAll()) + "]");
- } else if (item.indexOf("sal") != -1) { //dallas
+ } else if (item.indexOf("sal") != -1) { //dallas
item.replace("sal", "pin[2]");
+ } else if (item.indexOf("thd") != -1) { //dht11/22
+ item.replace("thd", "pin[2]");
}
item.replace("\r\n", "");
diff --git a/src/Sensors.cpp b/src/Sensors.cpp
index 4d6a73ef..5eb87641 100644
--- a/src/Sensors.cpp
+++ b/src/Sensors.cpp
@@ -2,7 +2,7 @@
#include "Global.h"
GMedian<10, int> medianFilter;
-DHTesp dht;
+//DHTesp dht;
Adafruit_BMP280 bmp;
Adafruit_Sensor *bmp_temp = bmp.getTemperatureSensor();
@@ -33,225 +33,225 @@ void sensorsInit() {
-//=========================================================================================================================================
-//=========================================Модуль сенсоров DHT=============================================================================
-#ifdef DHT_ENABLED
-//dhtT t 2 dht11 Температура#DHT,#t°C Датчики any-data 1
-void dhtT() {
- String value_name = sCmd.next();
- String pin = sCmd.next();
- String sensor_type = sCmd.next();
- String widget_name = sCmd.next();
- String page_name = sCmd.next();
- String type = sCmd.next();
- String page_number = sCmd.next();
- //dhtT_value_name = value_name;
- if (sensor_type == "dht11") {
- dht.setup(pin.toInt(), DHTesp::DHT11);
- }
- if (sensor_type == "dht22") {
- dht.setup(pin.toInt(), DHTesp::DHT22);
- }
- createWidgetByType(widget_name, page_name, page_number, type, value_name);
- //sensors_reading_map[4] = 1;
-}
-
-void dhtT_reading() {
- float value = 0;
- static int counter;
- if (dht.getStatus() != 0 && counter < 5) {
- //MqttClient::publishStatus(dhtT_value_name, String(dht.getStatusString()));
- counter++;
- } else {
- counter = 0;
- value = dht.getTemperature();
- if (String(value) != "nan") {
- //eventGen(dhtT_value_name, "");
- //jsonWriteStr(configLiveJson, dhtT_value_name, String(value));
- //MqttClient::publishStatus(dhtT_value_name, String(value));
- //Serial.println("[I] sensor '" + dhtT_value_name + "' data: " + String(value));
- }
- }
-}
-
-//dhtH h 2 dht11 Влажность#DHT,#t°C Датчики any-data 1
-void dhtH() {
- String value_name = sCmd.next();
- String pin = sCmd.next();
- String sensor_type = sCmd.next();
- String widget_name = sCmd.next();
- String page_name = sCmd.next();
- String type = sCmd.next();
- String page_number = sCmd.next();
- //dhtH_value_name = value_name;
- if (sensor_type == "dht11") {
- dht.setup(pin.toInt(), DHTesp::DHT11);
- }
- if (sensor_type == "dht22") {
- dht.setup(pin.toInt(), DHTesp::DHT22);
- }
- createWidgetByType(widget_name, page_name, page_number, type, value_name);
- //sensors_reading_map[5] = 1;
-}
-
-void dhtH_reading() {
- float value = 0;
- static int counter;
- if (dht.getStatus() != 0 && counter < 5) {
- //MqttClient::publishStatus(dhtH_value_name, String(dht.getStatusString()));
- counter++;
- } else {
- counter = 0;
- value = dht.getHumidity();
- if (String(value) != "nan") {
- //eventGen(dhtH_value_name, "");
- //jsonWriteStr(configLiveJson, dhtH_value_name, String(value));
- //MqttClient::publishStatus(dhtH_value_name, String(value));
- //Serial.println("[I] sensor '" + dhtH_value_name + "' data: " + String(value));
- }
- }
-}
-
-//dhtPerception Восприятие: Датчики 4
-void dhtP() {
- String widget_name = sCmd.next();
- String page_name = sCmd.next();
- String page_number = sCmd.next();
- createWidgetByType(widget_name, page_name, page_number, "any-data", "dhtPerception");
- //sensors_reading_map[6] = 1;
-}
-
-void dhtP_reading() {
- byte value;
- if (dht.getStatus() != 0) {
- MqttClient::publishStatus("dhtPerception", String(dht.getStatusString()));
- } else {
- //value = dht.computePerception(jsonReadStr(configLiveJson, dhtT_value_name).toFloat(), jsonReadStr(configLiveJson, dhtH_value_name).toFloat(), false);
- String final_line = perceptionStr(value);
- jsonWriteStr(configLiveJson, "dhtPerception", final_line);
- eventGen("dhtPerception", "");
- MqttClient::publishStatus("dhtPerception", final_line);
- if (mqtt.connected()) {
- Serial.println("[I] sensor 'dhtPerception' data: " + final_line);
- }
- }
-}
-
-//dhtComfort Степень#комфорта: Датчики 3
-void dhtC() {
- String widget_name = sCmd.next();
- String page_name = sCmd.next();
- String page_number = sCmd.next();
- createWidgetByType(widget_name, page_name, page_number, "anydata", "dhtComfort");
- //sensors_reading_map[7] = 1;
-}
-
-void dhtC_reading() {
- ComfortState cf;
- if (dht.getStatus() != 0) {
- MqttClient::publishStatus("dhtComfort", String(dht.getStatusString()));
- } else {
- //dht.getComfortRatio(cf, jsonReadStr(configLiveJson, dhtT_value_name).toFloat(), jsonReadStr(configLiveJson, dhtH_value_name).toFloat(), false);
- String final_line = comfortStr(cf);
- jsonWriteStr(configLiveJson, "dhtComfort", final_line);
- eventGen("dhtComfort", "");
- MqttClient::publishStatus("dhtComfort", final_line);
- Serial.println("[I] sensor 'dhtComfort' send date " + final_line);
- }
-}
-
-const String perceptionStr(byte value) {
- String res;
- switch (value) {
- case 0:
- res = F("Сухой воздух");
- break;
- case 1:
- res = F("Комфортно");
- break;
- case 2:
- res = F("Уютно");
- break;
- case 3:
- res = F("Хорошо");
- break;
- case 4:
- res = F("Неудобно");
- break;
- case 5:
- res = F("Довольно неудобно");
- break;
- case 6:
- res = F("Очень неудобно");
- break;
- case 7:
- res = F("Невыносимо");
- default:
- res = F("Unknown");
- break;
- }
- return res;
-}
-
-const String comfortStr(ComfortState value) {
- String res;
- switch (value) {
- case Comfort_OK:
- res = F("Отлично");
- break;
- case Comfort_TooHot:
- res = F("Очень жарко");
- break;
- case Comfort_TooCold:
- res = F("Очень холодно");
- break;
- case Comfort_TooDry:
- res = F("Очень сухо");
- break;
- case Comfort_TooHumid:
- res = F("Очень влажно");
- break;
- case Comfort_HotAndHumid:
- res = F("Жарко и влажно");
- break;
- case Comfort_HotAndDry:
- res = F("Жарко и сухо");
- break;
- case Comfort_ColdAndHumid:
- res = F("Холодно и влажно");
- break;
- case Comfort_ColdAndDry:
- res = F("Холодно и сухо");
- break;
- default:
- res = F("Неизвестно");
- break;
- };
- return res;
-}
-
-//dhtDewpoint Точка#росы: Датчики 5
-void dhtD() {
- String widget_name = sCmd.next();
- String page_name = sCmd.next();
- String page_number = sCmd.next();
- createWidgetByType(widget_name, page_name, page_number, "anydata", "dhtDewpoint");
- //sensors_reading_map[8] = 1;
-}
-
-void dhtD_reading() {
- float value;
- if (dht.getStatus() != 0) {
- MqttClient::publishStatus("dhtDewpoint", String(dht.getStatusString()));
- } else {
- //value = dht.computeDewPoint(jsonReadStr(configLiveJson, dhtT_value_name).toFloat(), jsonReadStr(configLiveJson, dhtH_value_name).toFloat(), false);
- jsonWriteInt(configLiveJson, "dhtDewpoint", value);
- eventGen("dhtDewpoint", "");
- MqttClient::publishStatus("dhtDewpoint", String(value));
- Serial.println("[I] sensor 'dhtDewpoint' data: " + String(value));
- }
-}
-#endif
+////=========================================================================================================================================
+////=========================================Модуль сенсоров DHT=============================================================================
+//#ifdef DHT_ENABLED
+////dhtT t 2 dht11 Температура#DHT,#t°C Датчики any-data 1
+//void dhtT() {
+// String value_name = sCmd.next();
+// String pin = sCmd.next();
+// String sensor_type = sCmd.next();
+// String widget_name = sCmd.next();
+// String page_name = sCmd.next();
+// String type = sCmd.next();
+// String page_number = sCmd.next();
+// //dhtT_value_name = value_name;
+// if (sensor_type == "dht11") {
+// dht.setup(pin.toInt(), DHTesp::DHT11);
+// }
+// if (sensor_type == "dht22") {
+// dht.setup(pin.toInt(), DHTesp::DHT22);
+// }
+// createWidgetByType(widget_name, page_name, page_number, type, value_name);
+// //sensors_reading_map[4] = 1;
+//}
+//
+//void dhtT_reading() {
+// float value = 0;
+// static int counter;
+// if (dht.getStatus() != 0 && counter < 5) {
+// //MqttClient::publishStatus(dhtT_value_name, String(dht.getStatusString()));
+// counter++;
+// } else {
+// counter = 0;
+// value = dht.getTemperature();
+// if (String(value) != "nan") {
+// //eventGen(dhtT_value_name, "");
+// //jsonWriteStr(configLiveJson, dhtT_value_name, String(value));
+// //MqttClient::publishStatus(dhtT_value_name, String(value));
+// //Serial.println("[I] sensor '" + dhtT_value_name + "' data: " + String(value));
+// }
+// }
+//}
+//
+////dhtH h 2 dht11 Влажность#DHT,#t°C Датчики any-data 1
+//void dhtH() {
+// String value_name = sCmd.next();
+// String pin = sCmd.next();
+// String sensor_type = sCmd.next();
+// String widget_name = sCmd.next();
+// String page_name = sCmd.next();
+// String type = sCmd.next();
+// String page_number = sCmd.next();
+// //dhtH_value_name = value_name;
+// if (sensor_type == "dht11") {
+// dht.setup(pin.toInt(), DHTesp::DHT11);
+// }
+// if (sensor_type == "dht22") {
+// dht.setup(pin.toInt(), DHTesp::DHT22);
+// }
+// createWidgetByType(widget_name, page_name, page_number, type, value_name);
+// //sensors_reading_map[5] = 1;
+//}
+//
+//void dhtH_reading() {
+// float value = 0;
+// static int counter;
+// if (dht.getStatus() != 0 && counter < 5) {
+// //MqttClient::publishStatus(dhtH_value_name, String(dht.getStatusString()));
+// counter++;
+// } else {
+// counter = 0;
+// value = dht.getHumidity();
+// if (String(value) != "nan") {
+// //eventGen(dhtH_value_name, "");
+// //jsonWriteStr(configLiveJson, dhtH_value_name, String(value));
+// //MqttClient::publishStatus(dhtH_value_name, String(value));
+// //Serial.println("[I] sensor '" + dhtH_value_name + "' data: " + String(value));
+// }
+// }
+//}
+//
+////dhtPerception Восприятие: Датчики 4
+//void dhtP() {
+// String widget_name = sCmd.next();
+// String page_name = sCmd.next();
+// String page_number = sCmd.next();
+// createWidgetByType(widget_name, page_name, page_number, "any-data", "dhtPerception");
+// //sensors_reading_map[6] = 1;
+//}
+//
+//void dhtP_reading() {
+// byte value;
+// if (dht.getStatus() != 0) {
+// MqttClient::publishStatus("dhtPerception", String(dht.getStatusString()));
+// } else {
+// //value = dht.computePerception(jsonReadStr(configLiveJson, dhtT_value_name).toFloat(), jsonReadStr(configLiveJson, dhtH_value_name).toFloat(), false);
+// String final_line = perceptionStr(value);
+// jsonWriteStr(configLiveJson, "dhtPerception", final_line);
+// eventGen("dhtPerception", "");
+// MqttClient::publishStatus("dhtPerception", final_line);
+// if (mqtt.connected()) {
+// Serial.println("[I] sensor 'dhtPerception' data: " + final_line);
+// }
+// }
+//}
+//
+////dhtComfort Степень#комфорта: Датчики 3
+//void dhtC() {
+// String widget_name = sCmd.next();
+// String page_name = sCmd.next();
+// String page_number = sCmd.next();
+// createWidgetByType(widget_name, page_name, page_number, "anydata", "dhtComfort");
+// //sensors_reading_map[7] = 1;
+//}
+//
+//void dhtC_reading() {
+// ComfortState cf;
+// if (dht.getStatus() != 0) {
+// MqttClient::publishStatus("dhtComfort", String(dht.getStatusString()));
+// } else {
+// //dht.getComfortRatio(cf, jsonReadStr(configLiveJson, dhtT_value_name).toFloat(), jsonReadStr(configLiveJson, dhtH_value_name).toFloat(), false);
+// String final_line = comfortStr(cf);
+// jsonWriteStr(configLiveJson, "dhtComfort", final_line);
+// eventGen("dhtComfort", "");
+// MqttClient::publishStatus("dhtComfort", final_line);
+// Serial.println("[I] sensor 'dhtComfort' send date " + final_line);
+// }
+//}
+//
+//const String perceptionStr(byte value) {
+// String res;
+// switch (value) {
+// case 0:
+// res = F("Сухой воздух");
+// break;
+// case 1:
+// res = F("Комфортно");
+// break;
+// case 2:
+// res = F("Уютно");
+// break;
+// case 3:
+// res = F("Хорошо");
+// break;
+// case 4:
+// res = F("Неудобно");
+// break;
+// case 5:
+// res = F("Довольно неудобно");
+// break;
+// case 6:
+// res = F("Очень неудобно");
+// break;
+// case 7:
+// res = F("Невыносимо");
+// default:
+// res = F("Unknown");
+// break;
+// }
+// return res;
+//}
+//
+//const String comfortStr(ComfortState value) {
+// String res;
+// switch (value) {
+// case Comfort_OK:
+// res = F("Отлично");
+// break;
+// case Comfort_TooHot:
+// res = F("Очень жарко");
+// break;
+// case Comfort_TooCold:
+// res = F("Очень холодно");
+// break;
+// case Comfort_TooDry:
+// res = F("Очень сухо");
+// break;
+// case Comfort_TooHumid:
+// res = F("Очень влажно");
+// break;
+// case Comfort_HotAndHumid:
+// res = F("Жарко и влажно");
+// break;
+// case Comfort_HotAndDry:
+// res = F("Жарко и сухо");
+// break;
+// case Comfort_ColdAndHumid:
+// res = F("Холодно и влажно");
+// break;
+// case Comfort_ColdAndDry:
+// res = F("Холодно и сухо");
+// break;
+// default:
+// res = F("Неизвестно");
+// break;
+// };
+// return res;
+//}
+//
+////dhtDewpoint Точка#росы: Датчики 5
+//void dhtD() {
+// String widget_name = sCmd.next();
+// String page_name = sCmd.next();
+// String page_number = sCmd.next();
+// createWidgetByType(widget_name, page_name, page_number, "anydata", "dhtDewpoint");
+// //sensors_reading_map[8] = 1;
+//}
+//
+//void dhtD_reading() {
+// float value;
+// if (dht.getStatus() != 0) {
+// MqttClient::publishStatus("dhtDewpoint", String(dht.getStatusString()));
+// } else {
+// //value = dht.computeDewPoint(jsonReadStr(configLiveJson, dhtT_value_name).toFloat(), jsonReadStr(configLiveJson, dhtH_value_name).toFloat(), false);
+// jsonWriteInt(configLiveJson, "dhtDewpoint", value);
+// eventGen("dhtDewpoint", "");
+// MqttClient::publishStatus("dhtDewpoint", String(value));
+// Serial.println("[I] sensor 'dhtDewpoint' data: " + String(value));
+// }
+//}
+//#endif
//=========================================i2c bus esp8266 scl-4 sda-5 ====================================================================
//=========================================================================================================================================
//=========================================Модуль сенсоров bmp280==========================================================================
diff --git a/src/Utils/SysUtils.cpp b/src/Utils/SysUtils.cpp
index d5c957d6..e5db4ea8 100644
--- a/src/Utils/SysUtils.cpp
+++ b/src/Utils/SysUtils.cpp
@@ -1,6 +1,7 @@
#include "Utils/SysUtils.h"
-#include "Utils/PrintMessage.h"
+
#include "Global.h"
+#include "Utils/PrintMessage.h"
static const char* MODULE = "Main";
@@ -76,45 +77,48 @@ const String getMacAddress() {
return String(buf);
}
-
#ifdef ESP8266
void setLedStatus(LedStatus_t status) {
- pinMode(LED_PIN, OUTPUT);
- switch (status) {
- case LED_OFF:
- noTone(LED_PIN);
- digitalWrite(LED_PIN, HIGH);
- break;
- case LED_ON:
- noTone(LED_PIN);
- digitalWrite(LED_PIN, LOW);
- break;
- case LED_SLOW:
- tone(LED_PIN, 1);
- break;
- case LED_FAST:
- tone(LED_PIN, 20);
- break;
- default:
- break;
+ if (jsonReadBool(configSetupJson, "blink") == 1) {
+ pinMode(LED_PIN, OUTPUT);
+ switch (status) {
+ case LED_OFF:
+ noTone(LED_PIN);
+ digitalWrite(LED_PIN, HIGH);
+ break;
+ case LED_ON:
+ noTone(LED_PIN);
+ digitalWrite(LED_PIN, LOW);
+ break;
+ case LED_SLOW:
+ tone(LED_PIN, 1);
+ break;
+ case LED_FAST:
+ tone(LED_PIN, 20);
+ break;
+ default:
+ break;
+ }
}
}
#else
void setLedStatus(LedStatus_t status) {
- pinMode(LED_PIN, OUTPUT);
- switch (status) {
- case LED_OFF:
- digitalWrite(LED_PIN, HIGH);
- break;
- case LED_ON:
- digitalWrite(LED_PIN, LOW);
- break;
- case LED_SLOW:
- break;
- case LED_FAST:
- break;
- default:
- break;
+ if (jsonReadBool(configSetupJson, "blink") == 1) {
+ pinMode(LED_PIN, OUTPUT);
+ switch (status) {
+ case LED_OFF:
+ digitalWrite(LED_PIN, HIGH);
+ break;
+ case LED_ON:
+ digitalWrite(LED_PIN, LOW);
+ break;
+ case LED_SLOW:
+ break;
+ case LED_FAST:
+ break;
+ default:
+ break;
+ }
}
}
#endif
diff --git a/src/items/SensorDhtClass.cpp b/src/items/SensorDhtClass.cpp
index 29b36690..c26c7a1c 100644
--- a/src/items/SensorDhtClass.cpp
+++ b/src/items/SensorDhtClass.cpp
@@ -1,20 +1,33 @@
-#include "items/ItemsGlobal.h"
#include "items/SensorDhtClass.h"
+
+#include "items/ItemsGlobal.h"
//#ifdef SensorDhtEnabled
-//=========================================Модуль ультрозвукового дальномера==================================================================
-//dht-temp;id;anydata;Сенсоры;Температура;order;pin;c[1]
+//=========================================DHT Sensor==================================================================
+//dht-temp;id;anydata;Сенсоры;Температура;order;pin;type[dht11];c[1]
+//dht-hum;id;anydata;Сенсоры;Влажность;order;pin;type[dht11];c[1]
//=========================================================================================================================================
SensorDhtClass mySensorDht;
-void DhtTemp() {
+void dhtTemp() {
mySensorDht.update();
String key = mySensorDht.gkey();
- sCmd.addCommand(key.c_str(), dhtReading);
+ sCmd.addCommand(key.c_str(), dhtReadingTemp);
mySensorDht.SensorDhtInit();
mySensorDht.clear();
}
-
-void dhtReading() {
+void dhtReadingTemp() {
String key = sCmd.order();
- mySensorDht.SensorDhtRead(key);
+ mySensorDht.SensorDhtReadTemp(key);
+}
+
+void dhtHum() {
+ mySensorDht.update();
+ String key = mySensorDht.gkey();
+ sCmd.addCommand(key.c_str(), dhtReadingHum);
+ mySensorDht.SensorDhtInit();
+ mySensorDht.clear();
+}
+void dhtReadingHum() {
+ String key = sCmd.order();
+ mySensorDht.SensorDhtReadHum(key);
}
//#endif
\ No newline at end of file