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": "",
|
||||
"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"
|
||||
}
|
||||
@@ -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": {
|
||||
"#": "Выберите элемент из списка<span class=\"caret\"></span>",
|
||||
"/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)"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
||||
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 _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) {
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -30,7 +30,7 @@
|
||||
//#define WEBSOCKET_ENABLED
|
||||
//#define LAYOUT_IN_RAM
|
||||
//#define UDP_ENABLED
|
||||
//#define SSDP
|
||||
#define SSDP
|
||||
|
||||
/*
|
||||
* Sensor
|
||||
|
||||
@@ -1,43 +1,75 @@
|
||||
#pragma once
|
||||
#include <Arduino.h>
|
||||
|
||||
#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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -25,4 +25,9 @@ extern void ultrasonicCm();
|
||||
extern void ultrasonicReading();
|
||||
|
||||
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("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);
|
||||
@@ -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", "");
|
||||
|
||||
440
src/Sensors.cpp
440
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==========================================================================
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
Reference in New Issue
Block a user