mirror of
https://github.com/IoTManagerProject/IoTManager.git
synced 2026-03-26 22:22:16 +03:00
Add DHT sensor
This commit is contained in:
@@ -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"
|
||||||
}
|
}
|
||||||
@@ -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]
|
||||||
@@ -1 +1 @@
|
|||||||
button-out;id;toggle;Кнопки;Освещение;order;st[0]
|
button-out;id;toggleSunMoon;Кнопки;Освещение;order;st[0]
|
||||||
1
data/items/dallas-temp.txt
Normal file
1
data/items/dallas-temp.txt
Normal file
@@ -0,0 +1 @@
|
|||||||
|
dallas-temp;id;anydataTemp;Сенсоры;Температура;order;sal;c[1]
|
||||||
@@ -1 +0,0 @@
|
|||||||
dallas-temp;id;anydata;Сенсоры;Температура;order;sal;c[1]
|
|
||||||
1
data/items/dht11-hum.txt
Normal file
1
data/items/dht11-hum.txt
Normal file
@@ -0,0 +1 @@
|
|||||||
|
dht-hum;id;anydataHum;Сенсоры;Влажность;order;thd;type[dht11];c[1]
|
||||||
1
data/items/dht11-temp.txt
Normal file
1
data/items/dht11-temp.txt
Normal file
@@ -0,0 +1 @@
|
|||||||
|
dht-temp;id;anydataTemp;Сенсоры;Температура;order;thd;type[dht11];c[1]
|
||||||
1
data/items/dht22-hum.txt
Normal file
1
data/items/dht22-hum.txt
Normal file
@@ -0,0 +1 @@
|
|||||||
|
dht-hum;id;anydataHum;Сенсоры;Влажность;order;thd;type[dht22];c[1]
|
||||||
1
data/items/dht22-temp.txt
Normal file
1
data/items/dht22-temp.txt
Normal file
@@ -0,0 +1 @@
|
|||||||
|
dht-temp;id;anydataTemp;Сенсоры;Температура;order;thd;type[dht22];c[1]
|
||||||
@@ -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)"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|||||||
5
data/widgets/anydataHum.json
Normal file
5
data/widgets/anydataHum.json
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"widget": "anydata",
|
||||||
|
"after": "%",
|
||||||
|
"icon": "water"
|
||||||
|
}
|
||||||
5
data/widgets/anydataTemp.json
Normal file
5
data/widgets/anydataTemp.json
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"widget": "anydata",
|
||||||
|
"after": "°С",
|
||||||
|
"icon": "thermometer"
|
||||||
|
}
|
||||||
5
data/widgets/toggleSunMoon.json
Normal file
5
data/widgets/toggleSunMoon.json
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"widget": "toggle",
|
||||||
|
"icon": "sunny",
|
||||||
|
"iconOff": "moon"
|
||||||
|
}
|
||||||
@@ -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) {
|
||||||
|
|||||||
@@ -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();
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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();
|
||||||
@@ -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);
|
||||||
@@ -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", "");
|
||||||
|
|||||||
440
src/Sensors.cpp
440
src/Sensors.cpp
@@ -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==========================================================================
|
||||||
|
|||||||
@@ -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
|
||||||
//===================================================================
|
//===================================================================
|
||||||
/*
|
/*
|
||||||
|
|||||||
@@ -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
|
||||||
Reference in New Issue
Block a user