Add DHT sensor

This commit is contained in:
Dmitry Borisenko
2020-09-04 15:35:35 +03:00
parent 26b5c173a2
commit a258c8c1b6
23 changed files with 402 additions and 311 deletions

View File

@@ -3,8 +3,8 @@
"chipID": "", "chipID": "",
"apssid": "IoTmanager", "apssid": "IoTmanager",
"appass": "", "appass": "",
"routerssid": "VOLODYA", "routerssid": "rise",
"routerpass": "BELCHENKO", "routerpass": "hostel3333",
"timezone": 2, "timezone": 2,
"ntp": "pool.ntp.org", "ntp": "pool.ntp.org",
"mqttServer": "91.204.228.124", "mqttServer": "91.204.228.124",
@@ -17,6 +17,6 @@
"weblogin": "admin", "weblogin": "admin",
"webpass": "admin", "webpass": "admin",
"udponoff": "1", "udponoff": "1",
"blink": "1", "blink": "0",
"oneWirePin": "2" "oneWirePin": "2"
} }

View File

@@ -1 +1 @@
analog-adc;id;anydata;Сенсоры;Аналоговый;order;gol;map[0,1024,0,1024];c[1] analog-adc;id;fillgauge;Сенсоры;Аналоговый;order;gol;map[0,1024,0,100];c[1]

View File

@@ -1 +1 @@
button-out;id;toggle;Кнопки;Освещение;order;st[0] button-out;id;toggleSunMoon;Кнопки;Освещение;order;st[0]

View File

@@ -0,0 +1 @@
dallas-temp;id;anydataTemp;Сенсоры;Температура;order;sal;c[1]

View File

@@ -1 +0,0 @@
dallas-temp;id;anydata;Сенсоры;Температура;order;sal;c[1]

1
data/items/dht11-hum.txt Normal file
View File

@@ -0,0 +1 @@
dht-hum;id;anydataHum;Сенсоры;Влажность;order;thd;type[dht11];c[1]

View File

@@ -0,0 +1 @@
dht-temp;id;anydataTemp;Сенсоры;Температура;order;thd;type[dht11];c[1]

1
data/items/dht22-hum.txt Normal file
View File

@@ -0,0 +1 @@
dht-hum;id;anydataHum;Сенсоры;Влажность;order;thd;type[dht22];c[1]

View File

@@ -0,0 +1 @@
dht-temp;id;anydataTemp;Сенсоры;Температура;order;thd;type[dht22];c[1]

View File

@@ -56,15 +56,19 @@
"title": { "title": {
"#": "Выберите элемент из списка<span class=\"caret\"></span>", "#": "Выберите элемент из списка<span class=\"caret\"></span>",
"/set?addItem=button-out-p": "1.Кнопка управляющая пином", "/set?addItem=button-out-p": "1.Кнопка управляющая пином",
"/set?addItem=button-out-np": "2.Кнопка не привязанная к пину", "/set?addItem=button-out-np": "2.Кнопка не привязанная к пину (виртуальная)",
"/set?addItem=pwm-out": "3.Широтно импульсная модуляция (pwm)", "/set?addItem=pwm-out": "3.Широтно импульсная модуляция (pwm)",
"/set?addItem=button-in": "4.Физическая кнопка", "/set?addItem=button-in": "4.Физическая кнопка (чтение состояния пина)",
"/set?addItem=input-digit": "5.Окно ввода цифровых значений", "/set?addItem=input-digit": "5.Окно ввода цифровых значений",
"/set?addItem=input-time": "6.Окно ввода времени", "/set?addItem=input-time": "6.Окно ввода времени",
"/set?addItem=output-text": "7.Окно вывода любого текста, предупреждения, цифры", "/set?addItem=output-text": "7.Окно вывода любого текста, предупреждения, цифры",
"/set?addItem=analog-adc": "8.Аналоговый датчик, чтение аналогового входа", "/set?addItem=analog-adc": "8.Аналоговый датчик, чтение аналогового входа",
"/set?addItem=dallas-tmp": "9.Датчик температуры (ds18b20)", "/set?addItem=dallas-temp": "9.Датчик температуры (ds18b20)",
"/set?addItem=ultrasonic-cm": "10.Ультрозвуковой датчик расстояния (JSN-SR04T, HC-SR04, HY-SRF05)" "/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)"
} }
}, },
{ {

View File

@@ -0,0 +1,5 @@
{
"widget": "anydata",
"after": "%",
"icon": "water"
}

View File

@@ -0,0 +1,5 @@
{
"widget": "anydata",
"after": "°С",
"icon": "thermometer"
}

View File

@@ -0,0 +1,5 @@
{
"widget": "toggle",
"icon": "sunny",
"iconOff": "moon"
}

View File

@@ -20,6 +20,7 @@ class LineParsing {
String _inv; String _inv;
String _state; String _state;
String _db; String _db;
String _type;
public: public:
LineParsing() : LineParsing() :
@@ -35,7 +36,8 @@ class LineParsing {
_c{""}, _c{""},
_inv{""}, _inv{""},
_state{""}, _state{""},
_db{""} _db{""},
_type{""}
{}; {};
@@ -71,6 +73,9 @@ class LineParsing {
if (arg.indexOf("c[") != -1) { if (arg.indexOf("c[") != -1) {
_c = extractInner(arg); _c = extractInner(arg);
} }
if (arg.indexOf("type[") != -1) {
_type = extractInner(arg);
}
} }
} }
@@ -113,6 +118,9 @@ class LineParsing {
String gc() { String gc() {
return _c; return _c;
} }
String gtype() {
return _type;
}
void clear() { void clear() {
_key = ""; _key = "";
@@ -127,6 +135,7 @@ class LineParsing {
_inv = ""; _inv = "";
_state = ""; _state = "";
_db = ""; _db = "";
_type = "";
} }
String extractInnerDigit(String str) { String extractInnerDigit(String str) {

View File

@@ -32,15 +32,15 @@ extern void bme280P_reading();
extern void bme280H_reading(); extern void bme280H_reading();
extern void bme280A_reading(); extern void bme280A_reading();
extern void dhtT(); //extern void dhtT();
extern void dhtH(); //extern void dhtH();
extern void dhtP(); //extern void dhtP();
extern void dhtC(); //extern void dhtC();
extern void dhtD(); //extern void dhtD();
extern void dhtH_reading(); //extern void dhtH_reading();
extern void dhtP_reading(); //extern void dhtP_reading();
extern void dhtC_reading(); //extern void dhtC_reading();
extern void dhtD_reading(); //extern void dhtD_reading();
extern void handle_time_init(); extern void handle_time_init();
extern void stepper(); extern void stepper();

View File

@@ -30,7 +30,7 @@
//#define WEBSOCKET_ENABLED //#define WEBSOCKET_ENABLED
//#define LAYOUT_IN_RAM //#define LAYOUT_IN_RAM
//#define UDP_ENABLED //#define UDP_ENABLED
//#define SSDP #define SSDP
/* /*
* Sensor * Sensor

View File

@@ -1,43 +1,75 @@
#pragma once #pragma once
#include <Arduino.h> #include <Arduino.h>
#include "Class/LineParsing.h" #include "Class/LineParsing.h"
#include "Global.h" #include "Global.h"
#include "items/SensorConvertingClass.h" #include "items/SensorConvertingClass.h"
DHTesp dht;
class SensorDhtClass : public SensorConvertingClass { class SensorDhtClass : public SensorConvertingClass {
public: public:
SensorDhtClass() : SensorConvertingClass(){}; SensorDhtClass() : SensorConvertingClass(){};
void SensorDhtInit() { void SensorDhtInit() {
//oneWire = new OneWire((uint8_t)_pin.toInt()); if (_type == "dht11") {
//sensors.setOneWire(oneWire); dht.setup(_pin.toInt(), DHTesp::DHT11);
//sensors.begin(); }
//sensors.setResolution(48); if (_type == "dht22") {
dht.setup(_pin.toInt(), DHTesp::DHT22);
}
sensorReadingMap += _key + ","; sensorReadingMap += _key + ",";
//dhtEnterCounter++;
//to do если надо будет читать несколько dht
//dhtEnterCounter++;
//jsonWriteInt(configOptionJson, _key + "_num", dhtEnterCounter); //jsonWriteInt(configOptionJson, _key + "_num", dhtEnterCounter);
jsonWriteStr(configOptionJson, _key + "_map", _map); jsonWriteStr(configOptionJson, _key + "_map", _map);
jsonWriteStr(configOptionJson, _key + "_с", _c); jsonWriteStr(configOptionJson, _key + "_с", _c);
} }
void SensorDhtRead(String key) { void SensorDhtReadTemp(String key) {
//to do если надо будет читать несколько dht
//int cnt = jsonReadInt(configOptionJson, key + "_num");
float value; float value;
byte num = sensors.getDS18Count(); static int counter;
sensors.requestTemperatures(); if (dht.getStatus() != 0 && counter < 5) {
counter++;
int cnt = jsonReadInt(configOptionJson, key + "_num"); //return;
} else {
for (byte i = 0; i < num; i++) { counter = 0;
if (i == cnt) { value = dht.getTemperature();
value = sensors.getTempCByIndex(i); if (String(value) != "nan") {
//value = this->mapping(key, value); //value = this->mapping(key, value);
float valueFl = this->correction(key, value); float valueFl = this->correction(key, value);
eventGen(key, ""); eventGen(key, "");
jsonWriteStr(configLiveJson, key, String(valueFl)); jsonWriteStr(configLiveJson, key, String(valueFl));
MqttClient::publishStatus(key, String(valueFl)); MqttClient::publishStatus(key, String(valueFl));
Serial.println("[I] sensor '" + key + "' data: " + 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);
} }
} }
} }

View File

@@ -26,3 +26,8 @@ extern void ultrasonicReading();
extern void dallasTemp(); extern void dallasTemp();
extern void dallasReading(); extern void dallasReading();
extern void dhtTemp();
extern void dhtReadingTemp();
extern void dhtHum();
extern void dhtReadingHum();

View File

@@ -33,6 +33,9 @@ void cmd_init() {
sCmd.addCommand("ultrasonic-cm", ultrasonicCm); sCmd.addCommand("ultrasonic-cm", ultrasonicCm);
sCmd.addCommand("dallas-temp", dallasTemp); 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("timerStart", timerStart_);
sCmd.addCommand("timerStop", timerStop_); sCmd.addCommand("timerStop", timerStop_);
#ifdef DHT_ENABLED //#ifdef DHT_ENABLED
sCmd.addCommand("dhtT", dhtT); // sCmd.addCommand("dhtT", dhtT);
sCmd.addCommand("dhtH", dhtH); // sCmd.addCommand("dhtH", dhtH);
sCmd.addCommand("dhtPerception", dhtP); // sCmd.addCommand("dhtPerception", dhtP);
sCmd.addCommand("dhtComfort", dhtC); // sCmd.addCommand("dhtComfort", dhtC);
sCmd.addCommand("dhtDewpoint", dhtD); // sCmd.addCommand("dhtDewpoint", dhtD);
#endif //#endif
#ifdef BMP_ENABLED #ifdef BMP_ENABLED
sCmd.addCommand("bmp280T", bmp280T); sCmd.addCommand("bmp280T", bmp280T);

View File

@@ -7,9 +7,9 @@ static const char* firstLine PROGMEM = "Тип элемента;Id;Виджет;
void addItem(String name) { void addItem(String name) {
String item = readFile("items/" + name + ".txt", 1024); String item = readFile("items/" + name + ".txt", 1024);
name = deleteToMarkerLast(name, "-"); 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"))); 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()) + "]"); item.replace("pin", "pin[" + String(getFreePinAll()) + "]");
} else if (item.indexOf("gol") != -1) { //analog } else if (item.indexOf("gol") != -1) { //analog
item.replace("gol", "pin[" + String(getFreePinAnalog()) + "]"); item.replace("gol", "pin[" + String(getFreePinAnalog()) + "]");
@@ -17,6 +17,8 @@ void addItem(String name) {
item.replace("cin", "pin[" + String(getFreePinAll()) + "," + String(getFreePinAll()) + "]"); 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]"); item.replace("sal", "pin[2]");
} else if (item.indexOf("thd") != -1) { //dht11/22
item.replace("thd", "pin[2]");
} }
item.replace("\r\n", ""); item.replace("\r\n", "");

View File

@@ -2,7 +2,7 @@
#include "Global.h" #include "Global.h"
GMedian<10, int> medianFilter; GMedian<10, int> medianFilter;
DHTesp dht; //DHTesp dht;
Adafruit_BMP280 bmp; Adafruit_BMP280 bmp;
Adafruit_Sensor *bmp_temp = bmp.getTemperatureSensor(); Adafruit_Sensor *bmp_temp = bmp.getTemperatureSensor();
@@ -33,225 +33,225 @@ void sensorsInit() {
//========================================================================================================================================= ////=========================================================================================================================================
//=========================================Модуль сенсоров DHT============================================================================= ////=========================================Модуль сенсоров DHT=============================================================================
#ifdef DHT_ENABLED //#ifdef DHT_ENABLED
//dhtT t 2 dht11 Температура#DHT,#t°C Датчики any-data 1 ////dhtT t 2 dht11 Температура#DHT,#t°C Датчики any-data 1
void dhtT() { //void dhtT() {
String value_name = sCmd.next(); // String value_name = sCmd.next();
String pin = sCmd.next(); // String pin = sCmd.next();
String sensor_type = sCmd.next(); // String sensor_type = sCmd.next();
String widget_name = sCmd.next(); // String widget_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();
//dhtT_value_name = value_name; // //dhtT_value_name = value_name;
if (sensor_type == "dht11") { // if (sensor_type == "dht11") {
dht.setup(pin.toInt(), DHTesp::DHT11); // dht.setup(pin.toInt(), DHTesp::DHT11);
} // }
if (sensor_type == "dht22") { // if (sensor_type == "dht22") {
dht.setup(pin.toInt(), DHTesp::DHT22); // dht.setup(pin.toInt(), DHTesp::DHT22);
} // }
createWidgetByType(widget_name, page_name, page_number, type, value_name); // createWidgetByType(widget_name, page_name, page_number, type, value_name);
//sensors_reading_map[4] = 1; // //sensors_reading_map[4] = 1;
} //}
//
void dhtT_reading() { //void dhtT_reading() {
float value = 0; // float value = 0;
static int counter; // static int counter;
if (dht.getStatus() != 0 && counter < 5) { // if (dht.getStatus() != 0 && counter < 5) {
//MqttClient::publishStatus(dhtT_value_name, String(dht.getStatusString())); // //MqttClient::publishStatus(dhtT_value_name, String(dht.getStatusString()));
counter++; // counter++;
} else { // } else {
counter = 0; // counter = 0;
value = dht.getTemperature(); // value = dht.getTemperature();
if (String(value) != "nan") { // if (String(value) != "nan") {
//eventGen(dhtT_value_name, ""); // //eventGen(dhtT_value_name, "");
//jsonWriteStr(configLiveJson, dhtT_value_name, String(value)); // //jsonWriteStr(configLiveJson, dhtT_value_name, String(value));
//MqttClient::publishStatus(dhtT_value_name, String(value)); // //MqttClient::publishStatus(dhtT_value_name, String(value));
//Serial.println("[I] sensor '" + dhtT_value_name + "' data: " + String(value)); // //Serial.println("[I] sensor '" + dhtT_value_name + "' data: " + String(value));
} // }
} // }
} //}
//
//dhtH h 2 dht11 Влажность#DHT,#t°C Датчики any-data 1 ////dhtH h 2 dht11 Влажность#DHT,#t°C Датчики any-data 1
void dhtH() { //void dhtH() {
String value_name = sCmd.next(); // String value_name = sCmd.next();
String pin = sCmd.next(); // String pin = sCmd.next();
String sensor_type = sCmd.next(); // String sensor_type = sCmd.next();
String widget_name = sCmd.next(); // String widget_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();
//dhtH_value_name = value_name; // //dhtH_value_name = value_name;
if (sensor_type == "dht11") { // if (sensor_type == "dht11") {
dht.setup(pin.toInt(), DHTesp::DHT11); // dht.setup(pin.toInt(), DHTesp::DHT11);
} // }
if (sensor_type == "dht22") { // if (sensor_type == "dht22") {
dht.setup(pin.toInt(), DHTesp::DHT22); // dht.setup(pin.toInt(), DHTesp::DHT22);
} // }
createWidgetByType(widget_name, page_name, page_number, type, value_name); // createWidgetByType(widget_name, page_name, page_number, type, value_name);
//sensors_reading_map[5] = 1; // //sensors_reading_map[5] = 1;
} //}
//
void dhtH_reading() { //void dhtH_reading() {
float value = 0; // float value = 0;
static int counter; // static int counter;
if (dht.getStatus() != 0 && counter < 5) { // if (dht.getStatus() != 0 && counter < 5) {
//MqttClient::publishStatus(dhtH_value_name, String(dht.getStatusString())); // //MqttClient::publishStatus(dhtH_value_name, String(dht.getStatusString()));
counter++; // counter++;
} else { // } else {
counter = 0; // counter = 0;
value = dht.getHumidity(); // value = dht.getHumidity();
if (String(value) != "nan") { // if (String(value) != "nan") {
//eventGen(dhtH_value_name, ""); // //eventGen(dhtH_value_name, "");
//jsonWriteStr(configLiveJson, dhtH_value_name, String(value)); // //jsonWriteStr(configLiveJson, dhtH_value_name, String(value));
//MqttClient::publishStatus(dhtH_value_name, String(value)); // //MqttClient::publishStatus(dhtH_value_name, String(value));
//Serial.println("[I] sensor '" + dhtH_value_name + "' data: " + String(value)); // //Serial.println("[I] sensor '" + dhtH_value_name + "' data: " + String(value));
} // }
} // }
} //}
//
//dhtPerception Восприятие: Датчики 4 ////dhtPerception Восприятие: Датчики 4
void dhtP() { //void dhtP() {
String widget_name = sCmd.next(); // String widget_name = sCmd.next();
String page_name = sCmd.next(); // String page_name = sCmd.next();
String page_number = sCmd.next(); // String page_number = sCmd.next();
createWidgetByType(widget_name, page_name, page_number, "any-data", "dhtPerception"); // createWidgetByType(widget_name, page_name, page_number, "any-data", "dhtPerception");
//sensors_reading_map[6] = 1; // //sensors_reading_map[6] = 1;
} //}
//
void dhtP_reading() { //void dhtP_reading() {
byte value; // byte value;
if (dht.getStatus() != 0) { // if (dht.getStatus() != 0) {
MqttClient::publishStatus("dhtPerception", String(dht.getStatusString())); // MqttClient::publishStatus("dhtPerception", String(dht.getStatusString()));
} else { // } else {
//value = dht.computePerception(jsonReadStr(configLiveJson, dhtT_value_name).toFloat(), jsonReadStr(configLiveJson, dhtH_value_name).toFloat(), false); // //value = dht.computePerception(jsonReadStr(configLiveJson, dhtT_value_name).toFloat(), jsonReadStr(configLiveJson, dhtH_value_name).toFloat(), false);
String final_line = perceptionStr(value); // String final_line = perceptionStr(value);
jsonWriteStr(configLiveJson, "dhtPerception", final_line); // jsonWriteStr(configLiveJson, "dhtPerception", final_line);
eventGen("dhtPerception", ""); // eventGen("dhtPerception", "");
MqttClient::publishStatus("dhtPerception", final_line); // MqttClient::publishStatus("dhtPerception", final_line);
if (mqtt.connected()) { // if (mqtt.connected()) {
Serial.println("[I] sensor 'dhtPerception' data: " + final_line); // Serial.println("[I] sensor 'dhtPerception' data: " + final_line);
} // }
} // }
} //}
//
//dhtComfort Степень#комфорта: Датчики 3 ////dhtComfort Степень#комфорта: Датчики 3
void dhtC() { //void dhtC() {
String widget_name = sCmd.next(); // String widget_name = sCmd.next();
String page_name = sCmd.next(); // String page_name = sCmd.next();
String page_number = sCmd.next(); // String page_number = sCmd.next();
createWidgetByType(widget_name, page_name, page_number, "anydata", "dhtComfort"); // createWidgetByType(widget_name, page_name, page_number, "anydata", "dhtComfort");
//sensors_reading_map[7] = 1; // //sensors_reading_map[7] = 1;
} //}
//
void dhtC_reading() { //void dhtC_reading() {
ComfortState cf; // ComfortState cf;
if (dht.getStatus() != 0) { // if (dht.getStatus() != 0) {
MqttClient::publishStatus("dhtComfort", String(dht.getStatusString())); // MqttClient::publishStatus("dhtComfort", String(dht.getStatusString()));
} else { // } else {
//dht.getComfortRatio(cf, jsonReadStr(configLiveJson, dhtT_value_name).toFloat(), jsonReadStr(configLiveJson, dhtH_value_name).toFloat(), false); // //dht.getComfortRatio(cf, jsonReadStr(configLiveJson, dhtT_value_name).toFloat(), jsonReadStr(configLiveJson, dhtH_value_name).toFloat(), false);
String final_line = comfortStr(cf); // String final_line = comfortStr(cf);
jsonWriteStr(configLiveJson, "dhtComfort", final_line); // jsonWriteStr(configLiveJson, "dhtComfort", final_line);
eventGen("dhtComfort", ""); // eventGen("dhtComfort", "");
MqttClient::publishStatus("dhtComfort", final_line); // MqttClient::publishStatus("dhtComfort", final_line);
Serial.println("[I] sensor 'dhtComfort' send date " + final_line); // Serial.println("[I] sensor 'dhtComfort' send date " + final_line);
} // }
} //}
//
const String perceptionStr(byte value) { //const String perceptionStr(byte value) {
String res; // String res;
switch (value) { // switch (value) {
case 0: // case 0:
res = F("Сухой воздух"); // res = F("Сухой воздух");
break; // break;
case 1: // case 1:
res = F("Комфортно"); // res = F("Комфортно");
break; // break;
case 2: // case 2:
res = F("Уютно"); // res = F("Уютно");
break; // break;
case 3: // case 3:
res = F("Хорошо"); // res = F("Хорошо");
break; // break;
case 4: // case 4:
res = F("Неудобно"); // res = F("Неудобно");
break; // break;
case 5: // case 5:
res = F("Довольно неудобно"); // res = F("Довольно неудобно");
break; // break;
case 6: // case 6:
res = F("Очень неудобно"); // res = F("Очень неудобно");
break; // break;
case 7: // case 7:
res = F("Невыносимо"); // res = F("Невыносимо");
default: // default:
res = F("Unknown"); // res = F("Unknown");
break; // break;
} // }
return res; // return res;
} //}
//
const String comfortStr(ComfortState value) { //const String comfortStr(ComfortState value) {
String res; // String res;
switch (value) { // switch (value) {
case Comfort_OK: // case Comfort_OK:
res = F("Отлично"); // res = F("Отлично");
break; // break;
case Comfort_TooHot: // case Comfort_TooHot:
res = F("Очень жарко"); // res = F("Очень жарко");
break; // break;
case Comfort_TooCold: // case Comfort_TooCold:
res = F("Очень холодно"); // res = F("Очень холодно");
break; // break;
case Comfort_TooDry: // case Comfort_TooDry:
res = F("Очень сухо"); // res = F("Очень сухо");
break; // break;
case Comfort_TooHumid: // case Comfort_TooHumid:
res = F("Очень влажно"); // res = F("Очень влажно");
break; // break;
case Comfort_HotAndHumid: // case Comfort_HotAndHumid:
res = F("Жарко и влажно"); // res = F("Жарко и влажно");
break; // break;
case Comfort_HotAndDry: // case Comfort_HotAndDry:
res = F("Жарко и сухо"); // res = F("Жарко и сухо");
break; // break;
case Comfort_ColdAndHumid: // case Comfort_ColdAndHumid:
res = F("Холодно и влажно"); // res = F("Холодно и влажно");
break; // break;
case Comfort_ColdAndDry: // case Comfort_ColdAndDry:
res = F("Холодно и сухо"); // res = F("Холодно и сухо");
break; // break;
default: // default:
res = F("Неизвестно"); // res = F("Неизвестно");
break; // break;
}; // };
return res; // return res;
} //}
//
//dhtDewpoint Точка#росы: Датчики 5 ////dhtDewpoint Точка#росы: Датчики 5
void dhtD() { //void dhtD() {
String widget_name = sCmd.next(); // String widget_name = sCmd.next();
String page_name = sCmd.next(); // String page_name = sCmd.next();
String page_number = sCmd.next(); // String page_number = sCmd.next();
createWidgetByType(widget_name, page_name, page_number, "anydata", "dhtDewpoint"); // createWidgetByType(widget_name, page_name, page_number, "anydata", "dhtDewpoint");
//sensors_reading_map[8] = 1; // //sensors_reading_map[8] = 1;
} //}
//
void dhtD_reading() { //void dhtD_reading() {
float value; // float value;
if (dht.getStatus() != 0) { // if (dht.getStatus() != 0) {
MqttClient::publishStatus("dhtDewpoint", String(dht.getStatusString())); // MqttClient::publishStatus("dhtDewpoint", String(dht.getStatusString()));
} else { // } else {
//value = dht.computeDewPoint(jsonReadStr(configLiveJson, dhtT_value_name).toFloat(), jsonReadStr(configLiveJson, dhtH_value_name).toFloat(), false); // //value = dht.computeDewPoint(jsonReadStr(configLiveJson, dhtT_value_name).toFloat(), jsonReadStr(configLiveJson, dhtH_value_name).toFloat(), false);
jsonWriteInt(configLiveJson, "dhtDewpoint", value); // jsonWriteInt(configLiveJson, "dhtDewpoint", value);
eventGen("dhtDewpoint", ""); // eventGen("dhtDewpoint", "");
MqttClient::publishStatus("dhtDewpoint", String(value)); // MqttClient::publishStatus("dhtDewpoint", String(value));
Serial.println("[I] sensor 'dhtDewpoint' data: " + String(value)); // Serial.println("[I] sensor 'dhtDewpoint' data: " + String(value));
} // }
} //}
#endif //#endif
//=========================================i2c bus esp8266 scl-4 sda-5 ==================================================================== //=========================================i2c bus esp8266 scl-4 sda-5 ====================================================================
//========================================================================================================================================= //=========================================================================================================================================
//=========================================Модуль сенсоров bmp280========================================================================== //=========================================Модуль сенсоров bmp280==========================================================================

View File

@@ -1,6 +1,7 @@
#include "Utils/SysUtils.h" #include "Utils/SysUtils.h"
#include "Utils/PrintMessage.h"
#include "Global.h" #include "Global.h"
#include "Utils/PrintMessage.h"
static const char* MODULE = "Main"; static const char* MODULE = "Main";
@@ -76,9 +77,9 @@ const String getMacAddress() {
return String(buf); return String(buf);
} }
#ifdef ESP8266 #ifdef ESP8266
void setLedStatus(LedStatus_t status) { void setLedStatus(LedStatus_t status) {
if (jsonReadBool(configSetupJson, "blink") == 1) {
pinMode(LED_PIN, OUTPUT); pinMode(LED_PIN, OUTPUT);
switch (status) { switch (status) {
case LED_OFF: case LED_OFF:
@@ -99,8 +100,10 @@ void setLedStatus(LedStatus_t status) {
break; break;
} }
} }
}
#else #else
void setLedStatus(LedStatus_t status) { void setLedStatus(LedStatus_t status) {
if (jsonReadBool(configSetupJson, "blink") == 1) {
pinMode(LED_PIN, OUTPUT); pinMode(LED_PIN, OUTPUT);
switch (status) { switch (status) {
case LED_OFF: case LED_OFF:
@@ -117,6 +120,7 @@ void setLedStatus(LedStatus_t status) {
break; break;
} }
} }
}
#endif #endif
//=================================================================== //===================================================================
/* /*

View File

@@ -1,20 +1,33 @@
#include "items/ItemsGlobal.h"
#include "items/SensorDhtClass.h" #include "items/SensorDhtClass.h"
#include "items/ItemsGlobal.h"
//#ifdef SensorDhtEnabled //#ifdef SensorDhtEnabled
//=========================================Модуль ультрозвукового дальномера================================================================== //=========================================DHT Sensor==================================================================
//dht-temp;id;anydata;Сенсоры;Температура;order;pin;c[1] //dht-temp;id;anydata;Сенсоры;Температура;order;pin;type[dht11];c[1]
//dht-hum;id;anydata;Сенсоры;Влажность;order;pin;type[dht11];c[1]
//========================================================================================================================================= //=========================================================================================================================================
SensorDhtClass mySensorDht; SensorDhtClass mySensorDht;
void DhtTemp() { void dhtTemp() {
mySensorDht.update(); mySensorDht.update();
String key = mySensorDht.gkey(); String key = mySensorDht.gkey();
sCmd.addCommand(key.c_str(), dhtReading); sCmd.addCommand(key.c_str(), dhtReadingTemp);
mySensorDht.SensorDhtInit(); mySensorDht.SensorDhtInit();
mySensorDht.clear(); mySensorDht.clear();
} }
void dhtReadingTemp() {
void dhtReading() {
String key = sCmd.order(); 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 //#endif