diff --git a/data_esp/items/items.txt b/data_esp/items/items.txt index 3cf592d9..e5b8e2ac 100644 --- a/data_esp/items/items.txt +++ b/data_esp/items/items.txt @@ -34,4 +34,10 @@ 0;uptime;uptid;anydataTime;Системные;%name%#uptime;order;int[60]* 0;sht20;tmpid;anydataTemp;Сенсоры;Температура;1;c[1] 0;sht20;humid;anydataHum;Сенсоры;Влажность;2;c[1];int[50]* -0;sensor;anyid;anydata;Сенсоры;Параметр;1;c[1];int[10];type[type1]* \ No newline at end of file +0;sensor;anyid;anydata;Сенсоры;Параметр;1;c[1];int[10];type[HDC1080_temp];addr[0x76] +0;sensor;anyid;anydata;Сенсоры;Параметр;1;c[1];int[10];type[HDC1080_hum];addr[0x76]* +0;sensor;anyid;anydata;Сенсоры;Параметр;1;c[1];int[10];type[AHTX0_temp];addr[0x76] +0;sensor;anyid;anydata;Сенсоры;Параметр;1;c[1];int[10];type[AHTX0_hum];addr[0x76]* +0;sensor;anyid;anydata;Сенсоры;Параметр;1;c[0];k[0];int[10];type[LCD];val[any] +0;sensor;anyid;anydata;Сенсоры;Параметр;1;c[8];k[1];int[10];type[LCD];val[any]* +0;sensor;anyid;anydata;Сенсоры;Параметр;1;c[1];int[10];type[type1];addr[0x76]* \ No newline at end of file diff --git a/data_esp/set.device.json.gz b/data_esp/set.device.json.gz index 28938bb6..f484816e 100644 Binary files a/data_esp/set.device.json.gz and b/data_esp/set.device.json.gz differ diff --git a/include/YourSensor.h b/include/YourSensor.h index a793b19c..c70b0bba 100644 --- a/include/YourSensor.h +++ b/include/YourSensor.h @@ -3,5 +3,6 @@ #include float yourSensorReading(String type, String addr); -void HDC1080_init(String &addr); +void HDC1080_init(String addr); void AHTX0_init(); +void LCD_init(); diff --git a/include/items/vSensorAny.h b/include/items/vSensorAny.h index 65970c93..6155c4a2 100644 --- a/include/items/vSensorAny.h +++ b/include/items/vSensorAny.h @@ -20,9 +20,11 @@ class SensorAny { String _paramsAny; int _interval; float _c; + float _k; String _key; String _addr; String _type; + String _val; unsigned long prevMillis; unsigned long difference; diff --git a/platformio.ini b/platformio.ini index 9d0b04f9..a11f6404 100644 --- a/platformio.ini +++ b/platformio.ini @@ -43,6 +43,7 @@ lib_deps = robtillaart/SHT2x@^0.1.1 ClosedCube HDC1080 Adafruit AHTX0 + LiquidCrystal_I2C monitor_filters = esp8266_exception_decoder upload_speed = 921600 monitor_speed = 115200 @@ -69,6 +70,7 @@ lib_deps = robtillaart/SHT2x@^0.1.1 ClosedCube HDC1080 Adafruit AHTX0 + LiquidCrystal_I2C monitor_filters = esp8266_exception_decoder upload_speed = 921600 monitor_speed = 115200 @@ -113,6 +115,7 @@ lib_deps = robtillaart/SHT2x@^0.1.1 ClosedCube HDC1080 Adafruit AHTX0 + LiquidCrystal_I2C monitor_filters = esp32_exception_decoder upload_speed = 921600 monitor_speed = 115200 @@ -132,7 +135,6 @@ lib_deps = ESP32 AnalogWrite ESP32Servo MySensors @2.3.2 - robtillaart/SHT2x@^0.1.1 monitor_filters = esp32_exception_decoder upload_speed = 921600 monitor_speed = 115200 diff --git a/src/YourSensor.cpp b/src/YourSensor.cpp index d3099973..4295b33e 100644 --- a/src/YourSensor.cpp +++ b/src/YourSensor.cpp @@ -1,9 +1,12 @@ #include "YourSensor.h" +#include "Global.h" +#include "Utils/JsonUtils.h" #include "Utils/StringUtils.h" //подключаем необходимые файлы библиотеки #include +#include #include "ClosedCube_HDC1080.h" @@ -15,14 +18,17 @@ Adafruit_AHTX0 aht; Adafruit_Sensor *aht_humidity, *aht_temp; sensors_event_t tmpEvent_t; -float yourSensorReading(String type, String addr) { +//создаем объект LCD +LiquidCrystal_I2C LCD(0x27, 16, 2); + +float yourSensorReading(String type, String paramsAny) { float value; //========================================================HDC1080================================================================ if (type == "HDC1080_temp") { - HDC1080_init(addr); + HDC1080_init(jsonReadStr(paramsAny, "addr")); value = hdc1080.readTemperature(); } else if (type == "HDC1080_hum") { - HDC1080_init(addr); + HDC1080_init(jsonReadStr(paramsAny, "addr")); value = hdc1080.readHumidity(); } //==========================================================AHTX0================================================================= @@ -30,15 +36,21 @@ float yourSensorReading(String type, String addr) { AHTX0_init(); aht_temp->getEvent(&tmpEvent_t); value = tmpEvent_t.temperature; - } else if (type == "typeAHTX0_hum") { + } else if (type == "AHTX0_hum") { AHTX0_init(); aht_humidity->getEvent(&tmpEvent_t); value = tmpEvent_t.relative_humidity; } + //==========================================================LCD================================================================= + if (type == "LCD") { + LCD_init(); + LCD.setCursor(jsonReadInt(paramsAny, "с"), jsonReadInt(paramsAny, "k")); + LCD.print(jsonReadFloat(configLiveJson, jsonReadStr(paramsAny, "val"))); + } return value; } -void HDC1080_init(String &addr) { +void HDC1080_init(String addr) { static bool HDC1080_flag = true; if (HDC1080_flag) { hdc1080.begin(hexStringToUint8(addr)); @@ -61,3 +73,11 @@ void AHTX0_init() { AHTX0_flag = false; } } + +void LCD_init() { + static bool LCD_flag = true; + if (LCD_flag) { + LCD.init(); //инициализация дисплея + LCD.backlight(); //включаем подсветку + } +} diff --git a/src/items/vSensorAny.cpp b/src/items/vSensorAny.cpp index 2dfbe267..621535bd 100644 --- a/src/items/vSensorAny.cpp +++ b/src/items/vSensorAny.cpp @@ -13,9 +13,11 @@ SensorAny::SensorAny(const String& paramsAny) { _interval = jsonReadInt(_paramsAny, "int"); _c = jsonReadFloat(_paramsAny, "c"); + _k = jsonReadFloat(_paramsAny, "k"); _key = jsonReadStr(_paramsAny, "key"); _addr = jsonReadStr(_paramsAny, "addr"); _type = jsonReadStr(_paramsAny, "type"); + _val = jsonReadStr(_paramsAny, "val"); } SensorAny::~SensorAny() {} @@ -29,7 +31,7 @@ void SensorAny::loop() { } void SensorAny::read() { - float value = yourSensorReading(_type, _addr); + float value = yourSensorReading(_type, _paramsAny); value = value * _c; @@ -54,6 +56,8 @@ void AnySensor() { jsonWriteStr(params, "addr", myLineParsing.gaddr()); jsonWriteStr(params, "int", myLineParsing.gint()); jsonWriteStr(params, "c", myLineParsing.gc()); + jsonWriteStr(params, "k", myLineParsing.gk()); + jsonWriteStr(params, "val", myLineParsing.gval()); jsonWriteStr(params, "type", myLineParsing.gtype()); myLineParsing.clear();