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