From b0e06707bd61c5f812cfbd7a80f150dd38969970 Mon Sep 17 00:00:00 2001 From: Dmitry Borisenko <49808844+DmitryBorisenko33@users.noreply.github.com> Date: Sun, 19 Dec 2021 22:19:35 +0100 Subject: [PATCH] =?UTF-8?q?=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D0=BB=20LC?= =?UTF-8?q?D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- data_esp/items/items.txt | 8 +++++++- data_esp/set.device.json.gz | Bin 3020 -> 3081 bytes include/YourSensor.h | 3 ++- include/items/vSensorAny.h | 2 ++ platformio.ini | 4 +++- src/YourSensor.cpp | 30 +++++++++++++++++++++++++----- src/items/vSensorAny.cpp | 6 +++++- 7 files changed, 44 insertions(+), 9 deletions(-) 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 28938bb6e8a6485d67093ecd6657c8d429e326d0..f484816e797851e5b40ba97fada4d42be67f7218 100644 GIT binary patch delta 3078 zcmV+h4EgiS7l{}LABzYGah|`C2P1!y=F!*E2Z9x}A_fyH;!!H(ByM8n*v59+OjRY) zt{YQGs+=~5;=(fTq24jx9Wo^=r-wc^HFYS^VOY~GSyQ`@EApDuVN?;-G<|=Cj2s{4 zqbmVdC`B|uB$Q4Gn%SVXx(bp6BZ6}s2?N2p{FbCz&GI|S)j3+XbqUF3Cfw(|A=y%B zY-2+ev(n~f>m8mjq9PeqFeR;uImH_C?%E9W=d8%;tzNue$ywJ$S-l~qJBc7B5of$} zth;y#OBLWRm{7FjEo_}r)Qo>I=mX>3HCtQ|>}|VXZ`q%+Gj@V4cEE~pVPhkik@dxe z&CQGCc0*uAb_Bdib^&?F`i0VGdq|p9?FUHQlCzSktzRgIcXXtR)N|CjP~vP4aQW0O zu(JI?U{7#L?9W&kCZxj3$a7UTvg@KDeY7SSCRp6%akuZlM4hlxFp7TzGz%-(a%^7bS(9rYgIgtnGG5wEGcjG3VWX+fE~}6_rLJgsvU+1LIH7u%?PJ7YWsE9<{RKP4;6fo_O8{3m#t`rX!w&dF zan=MB1rl`b!=WU2hV|jl{OlNZ&o}b->KLd=UJ_HOMN7)gMUa1KB*eZ4mpcQhKoK$@ zIbIQ*?i76fOZz@6LhM7HbXT=M*(j2Y4oFrQu?qrS9JnDDv_2W_&n|}SV$JM;NEwK1 z0ox)l{2Ydm-3a{h$bwPDe!z|~+&F`*;)r8!2LyJ6a)Lkv_ZiVRhF>Q>;m`q0g?*Qm z=KDiVBbR{aKa&UpJ7;r?+4gb2M-<}ArX(@ zxl=&)9*9^1)eCfslS7U$hO;s%*~};Kq}W3FamK2^WE%mp3oepX z6o)z=*mp@*eLdTs#U!$r46%o-!igWi2PlDxMCJ}x#@>ImcLa7!% zK?$ye*teLb0fjPJZ;=-UoHfaG(riU-x8N_Ae}_xopK~NkQ6t>U8+o85pzl)mHtHdy z%*b>i8uoudmB*q;GgYEhXfbX10>ZVc)PlzQ(0DC8 z;X{fjNfGs>8+y|LmSHf9HSV0ywQy}I67j()Mx0_#$0-^O;7=?@KjWb5%h#i^F!a8C zZ7Ce{A;vg~G44lfZO1hMT^CE0pgLZYB^g>N4mNiz*c!3f-kD%oO>?5rDS?m&v3#?aL~si8@5KNBnu>@p(&> z2mODL83nLofpX{(&!ZS|+?-Rz@CN(|#+C>xj5O8*UXJ^W9r?lF3Q2hdq-=z?MM?|_ zZW?c%0~+Ds+A*v{TzmKleo+d3Q3!s&&|0vHFbF_tpBpQyIT01@fb;Z4HbP_}`t5;$ zM`({|MnuIW?is1z!cB?LDNnYMo7>4N#hia=SOFmon^35nvz{uDMVA5fGCeBfQo0WT zc})j_@dr}ykQV`s%e8Vt7KA2%N|4+^#J!w&g20!MJIzH6lpG=Lj`0}`<=FPDiI-XE zFfdj_#ktBQD&fw2*-JD=!pF`nJOm1|nkT$0NBiP9w)X}<0K)3;fH_T zgkwR7-dFb>n0e~ocY;iNA?M51CWx1>sM|5*--NuAhpf8vPBbsTB2Ks|PlfY&ADkzN z^W?cXUt72u3Hu57(JA6Ib#6{CUt4<551(n`GYx+0S&wJxWZ-w$8L+DY!@HC$sA7NP z>VgmISBN@Rd1wyh=wvE_U^O!;qj=Uw{9CEODCLeK&3-cnuBO0(2{B5J134#Cz@g zt~szO1|2@>@OMaoqUuKoceVZv-^+CKI$i<2!6f5B4@U1%^sZ98av^i0tv`RU>Z^L- zQo|_6&AWrMwu^+t@Wlh=F5LIrb+${Aaz|Sy!FWoe4K)&pSZWCAemJ{J?>&!=ml_H{ zZiH`X@N%RnNwn-yK89n=PjpgB)ziegtq=>%UQa zJ8jq-DPxS<^2#qzktFewA>4li-z_!g(+E>v@7p^-pkACb#bCI=u<8=_H?#F+d=EMx zxVN(d-}gBJ1+wd{7VV3)U0y`B5d&vR$cz8vu=o+nTjM`&FVpL+vB-xDNiQM&88W`L;Da+YWJc5u(mSsNI3lBOxH7N#{o=nO~T5{ z>|cxg?FZJq598Tmio2)vw19<-7pmHh671a`SbQw5iDuG}bt}GMN^0sOL;55qnbwGv zk-xF2K};M`t!KAM-&Wgv{ClB^QR573FWTnchcmvnhE^AgiAn&Wc7_R)dzN zgW>D>8Rt5oS(cXNUBmOUtMD2MzMY~ObHfQmOx}V%-6fIGjFf+5#D$2S7fel&Q^E@i zSMf6=@S&g~rsSLnr`~!V`rz@jq2<(65GlfgFT6H^pBX`iyaHwdq&Q#p6V_^IjZItS zR9|!ZbaMkw^ZPU>ckSI48^+2m(3Bi$a~NmQOIBlW*}itFmkJdi0POG;_6UDA{(ogZv#;RL`a7uJ{}ABoEA}<}0WN=Ik7vgc^C1D+v>Sv1c?U`r zTvkzCQgOD6PMQj~F7iC7*X2d5S?%rm?m+u40Nw9m%+Ho;?lG8yHPUeo+CKB@j1rEu z*HY!#F&&mQXfE&rW;Q>d;bx*e-0o3ReOexnw40y1t}lPhq@;G|-df+bmdoXS0RYL* zEidEG%F0mJM76O2cMSe&%Bl=v_Q-xnG-Ty1U)e7s$?1$0p9+H;_L>iN=2p2J6F(5h zs%%|;030}J_O*`dpIFvgIjaX8KXJ!%&K`=6k&uJ#+FQ)qPXmoB^_bHt??lrz6uCDi@w?yu!k6=QB@w6n)c|OlgI=3 zpsSYZWv_Qs(!ZEXDw3!wTKe+A=~IdRjHfyLU5bD9Y+UT22CuHOqM8$xe_RVFf4Jay zs^h!{!YWNKP4YJq4zQNv;Q{@?-6`*(XU4L0Gd?z!maR-K0gJ%w*rK*{T~y&!WaEaR zeGH52hMuu?`Idb7cnoavnON7jn!U}%>7LnjSbQNK@l`o5rDm|!pMWf{NUIh#c;+7u zH`I3jG!~3f7cM4(q5^M^#vvwHk}=aApp2YKNrS$s*WaJnKHsqA{@n7yr@ig#e5=v; zDOt7M06SW`rkccadD+EvW#!*x5411$pErr023qCxi|4Ry@ixNN$0P{ab6ExaYY?ev Uj(KzC`R6wO0?(OI0jn|q0Bm3EsQ>@~ delta 3017 zcmV;)3pVtL7|a(3ABzYG5+S*f2P1#pY1b}&AYdShG?-Wsf>I$TaS}7fHn!7dswyq* zx-k_P6h0sjgE4{lz=!maHBFQ5U%38{IOkkD&O6T5!T>^(>wE2U&i&oqrivx z=xV?fN)b&E38hnlWZUuFb%3&Wfzw7{vRvf^}7t)oWt5mk44CamG8t z{l!aKssMk%q@ty6VCyMG%^82AJ}}jPW=mHDd)qGATlOt>#!j%s4p=!MY;2@*vc7a> zbMrj8T@zTD9RaV3T|yqRey;S{9+GBt`#uu4*vbheI2PH^#Zldl{ni2TyEJV zR<-X7>ng2r7Ocl$Oh)CoHUr8s{;#SpL`wS(Z@ zO$hPG)OqrLMEZ9C)Eo8}!Uyu3GI3;wtO0_Ya*Z_QtSTz!JLv~BsWSYXu^NC5+(3Qc zk^^o?(rY&@$vj`CKLM9xv@_O#IaUU*wJJW1nvLotEU9P>a)2O;Dy!M(KnJYKdC`*6 zf|Y)wsEcZPNxc{;V$Xkt6!D9dV&o-E8=9Wh*3~YdK!Z3%NzsD^Lx~O#Qch^WX+XA*&ENrM_r+vU+1LIj(w_?W4zGRrD%?{Utj^=Rz)EO8`?iMi=k|-4579 zdENvR1rl`O834qTTDvp$&|&MuDZ;_d8!NEL`| z0oyV#`~rrM-30t{&w^gXzR!-)-8h4+=7?i&2LyJ6a)Lkv_ZiVRhF`}&;m`prg?)!r z=ETpp)U$XOQ|# zFY3_bIT9x}oYX9mn)OJbOig0A2y7oN4q=2=u*TzQfGbM|;R)gi>)o8Ay*pfj z%P7I+5c>|pG@wvL?Je`ffU_olXaw^6zlzhjWfb$ZJH}c_R(qkAhtPO4 zGVMc(7)cTHH8-@T15CqU6&u_*q3g<9%h9M0PI2NCe>P6BSO9J0r9N zG(%9V$DR>V;5h|`Jo_c9t;2Nhd6R~lzJx23?+|V#5YX#7db$MWoqp+`K9qQ`M#P95DF@Fy5MJghL$nh$s}?sInJ2ZPHb#8UxsbWu!=G5qDiydi&}zAQ z_b{+-kubSCf1un#bkD6DU6SMryE+NRQyOiF`6Obc#YOqy?3R*y9vjcqm4JWT1TWEf zcx`if9W^(!4krDubW6*XbDKQW}w3X*9}SUK4Yj1yF8 zNqIe|X(k+D5Mtw#bI`pEr+6)|-K`gE5>QZv$$kr1MKQ7|<{P75zxc^yA<0v`$* zVp=YkaEhxJp${I<8d^b32azH?_|lux_?Z)Qh%2BbK#KEaKVyHchT7P+^-K9R*H1S# z@G!qmYjVfl?a*P&>;i4Ukv2PV6}?~;hRg2SshKL&fB>+=Tbv!;Dn>Hsq#U!{o%75m z7uiGD$o`G}!oG$>*zX~G|5Jdkuh}>3N4Wf*J(>?E7efNHX?Ft!@(xI9SXNP9QggOH zPTCT-KJq+i=H-87%vtU2X0_X0)zbYTuM)|X~VQu}l7%x^o>E~$g?BRgs!Ha*dU%N79bogM)C0dEPdkT-@yw=}vXj*MKg0I_xuFb@$Hva~aT z=h)k2?dgAs$S*r-Nl%z?t9Q(YtpWniqpc1F>;XDyoGN!qZF|nn$=U&Y&{QkUwAb7E zAD+ym6iHMSEqn3c49P@)!P5!;Za{Z5E)SRn&#v>LS`d|gd=`-YaKZ7E!g;NM)!JSH zbY6D-M?>km*)PN$_&Up*Uc&upJ>*m8UBc!AO0_H|yiv;zKhgVeUhyt(?~3!8rd LxDQlDdoch22W!ky 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();