From 57a5bb6df2f5dff9d08dafc8353e913472bd4d58 Mon Sep 17 00:00:00 2001 From: Dmitry Borisenko <67171972+IoTManagerProject@users.noreply.github.com> Date: Sun, 11 Jun 2023 17:07:04 +0200 Subject: [PATCH] =?UTF-8?q?=D1=81=D0=BF=D0=B8=D1=81=D0=BE=D0=BA=20=D1=83?= =?UTF-8?q?=D1=81=D1=82=D1=80=D0=BE=D0=B9=D1=81=D1=82=D0=B2=20=D0=B8=D1=81?= =?UTF-8?q?=D0=BF=D1=80=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=D0=B8=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- data_svelte/build/bundle.css.gz | Bin 5516 -> 5526 bytes data_svelte/build/bundle.js.gz | Bin 49944 -> 50209 bytes data_svelte/index.html | 6 +++--- src/DeviceList.cpp | 24 ++++++++++++++---------- src/WsServer.cpp | 3 ++- 5 files changed, 19 insertions(+), 14 deletions(-) diff --git a/data_svelte/build/bundle.css.gz b/data_svelte/build/bundle.css.gz index 8c7bb6f3ef7dcca2b9354d4151f3c835b1bb9e25..910785a1961592fb22edcd1f1c0d73e9a5abc6cf 100644 GIT binary patch delta 5373 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 IyJ%?t1@tvSLjV8( delta 5362 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 Rj?V+;=Bhwa)D8y5KL9{aR4V`g diff --git a/data_svelte/build/bundle.js.gz b/data_svelte/build/bundle.js.gz index 0db852d11880042d513c3d4ba5856840b33f2f9a..2d726583509573b39afe48474a192feead8250e2 100644 GIT binary patch delta 17379 zcmV)EK)}D4h6AC90|y_A2ncH8g|P?GfPeXKTTc=HSBwS05t|YpNz;Ida<$)-q%BR- zv_Mrk_DkZ{@pJvwISQ4yK|%rq2q6&n5B$n~AO8aU3;ZQ~X7+sho|ES^1q7(6ci-$a zd(Y0!&cMTDEuPMRJ=RAzs03=!Yoc!NI(An5%HGtRp7zxl=<(RpeZ_{fMt|(m z`=nwuyqG1qz{;^m6(*8P^Lk&T*Y>zQf}R&MCy4A{}=2;FC{={QWCSAMY~}!$+E*<3RH( zs}c`@-yoVw%^LFlilfSBOYi;rr+nS4| zDzv1=VF#mSF>E2C5xo`Ubu}EHD2U!nwRmsFTKjP3bH}li1g@^AR~zsp(JYA8cTfCSOzsS4t10t zw(8>8TwexIc;=_#;TojU;{d{(>~^#Z3eV5xL}f##;UqWxdBti|Z}%s9)Yt2aA^uXN ze^vNoe@!@&zb<@oe^x!cZGQ-l#Gez6s-GABR(ta`Q=3*E*du61{Q?i{YIXn3U#;Q2 z`ExmS`u}Y&?gssT~4;Hdc(Xfoxco!03;l=ix}yLoTq4kvwgH@1YWkL>K^ zm2h_TS9quYe}#92S9sNWqgK6nbD=&JUFGqeN_`72@UHOWPNiO$gMX^!|G}4b2ick1 zWEt$Mz8*r-H+nc^Uk!0q;d>$bScpU4>FS||Ue&K_MRy}7cwu%}L>NPCUMyZJ_8{l8 zBA$p{@krbek3}TW4u7Z)$_pPbX&Z?$E1J=jDcOu65mHTzUf!0w(h7IPvRPFs$B0Hu z5_)8azAm7AzMm3&7?=xt-vmiX4$(9q*|SmtdB+6E91L)^ZzVXmr114h)^3^SoeZTP z;{fwTA`(~?IHLm<;*5rqFmSn__-LGmhR|Mk-pSDTftv&+w10!b>36v}ZHCs?wtSo( zaOk!RUG=<^;S~1PY4@O8Qo;>?`<=q&9+&pa6|r`Ku+Gp9N2!LRk;ho)T%NmJ?t0$I zaQ50!VfYT`{mNzd(r>NX9J=R1A9~)&O8yaF2>yb8ORQ5K$7Ej%y+UV&3w+{A+4a$R z#Gx_PmRRyN%YPju+UwmK;_I@j&2pNef%&fY&*wec8us-KGg2`cUDDysGZF-tYdR7Sk?eX~E&BOoY)$m8cY<~;CDum(l@fbeL!*KVi817~< zd{PL*z3~`64lm0u6e)KyTfqa$S@n#(s0bGv5HpncL?vzwXt1bM=O+1?N)CcYIh*V# zS#i)mlzhu1C&ELedSH@otK^`Olyi?AB`FS)smT5U(pV}{vNa>b24675AsU#6jJjgAEYVSmUGPh3Pd#t=0ebR2ohMRp?!k;5U@ zNSpE*M^I~<%ral5&XCZ35Xq9H>W0!u)h$-&i%D&ir$X8lGf8eFsP|vmf_5FxR?JQkGr|$$uFtiNN4pZJ-P20=~e>q}9P~5=7I@!6K(h z{JuN4P8{;DsMPs{l?phfGezrTzY5IjYvv!1Mm1C9fUyq`!FFXMc%^ zJ56Lt=e#==dHr0MA1NLJe!pt?_=H%C%MNyp!RR;R1cy9i0u6!-=?Z z8TkUPF7({; za4iqRyH~~VZWhDmg)n?J9>bS;7;an@!;LJ4dxbE3H6Fv2EAv9=jquQWavme5Wra99 z;w@uG+`SFBU+M4(iTCtvJ|(G?hbD^?l?BKS<(#pjcp{)eD2q*(#e;Y#Rk|IM!LrH# zw2E>bC}-O+N07m)mjUEHyMJdYAZo685}Kuxb+o-HIgHzSfEExAOxDaj~g+o?ZpHa(y^`aiiY$NN%UKYOf67cr8=QE>A4FXt{vu0cTplMOI zH3>!CT>xTn^|EsA1{?~e*L@=|wgEi3^%jCH9C1urIMH<$ZGSgl#4xSm$*s2$!+>)| z+i$Y`yM?ncgy7)sNnIw)Vh$xZlUza1MDv)7$0n|5(b$f8YlM2k=oL2cGM$%fl7bBP zHi#dV)C)^;J6X|^%tkg*eBQ+-NwJ$uh!NWAlDfCGi0;UV+-^=La{Hn$-c2I6>2+jQ zcxy;i*!82Pgnw-7!mS$(VV8vHvt(Uc5XVH5)i>e`rKS&Zf@a9!nd5bQLh!2y)}m03ro+&R}htrFA|GQ+pP^IS-zr%Q?S_Yr&;Vx z)*1=JZ||!@N>x1LZ)<8ntm*IWfWFqvSBJiy^OrFRyHt)@b1-@_J~&_>Sd8?Bk| zOijIWqdi{NWhtxmaab^3Ta@YfY*}=g>g$vp z!xX!(zLo=}lKi!;dfsW^7pwl3QF+%Y>1-r}825j4A zh<|Go(JfOZ+DNRqXy6f1tlW`<*#6*3<-Ja++@fdlJ`?MyXwNCyrK=$)y)T~oXzftS zYZ_k2KQ(AmDBh)lE?kaHksr5#hkoD*2cGM|v46{0D7u^Ov*Vc}BDz6t?aOj&XLIX~&F%2A z+zu}i&JA-rpIoDEVJ?5#WQ3aP`Rf(pv{jt$Kn0CFWw;nS6ys3GunKb7IrlUK#aSu2 zwhx+P&|$y~*Q$T)lC}^C&1uvD3~Is=+v$ib#pNoaBOL~jAXVqrCzxBg8i%&8%72Lc zCX2^|CVyM(*Xqp)*{`bw-|XBkA}>M`9z~VAgOcV${6kMu>JzOgbtSDSb;Z||N}2A` z9zaTUkpVp&c$YmAO-;Q^1#S03dd^p2+V@qM_OGhKRH^0s$LGFPP>pBdXFvsW+jvkS zb)`!2X5mzjg5Y;)^pr)(VHmTO#ecK#KL1?boK8IPnd(jcUlTk2usUjV{q4u7f~TH0NE zprl?_8S8rvzh}O3zcmM6cLao1{O>=OdIf-!#tBJ^P=V|)SAlGJL@gcf&&&p5B91U* zqdYUSH|C7+o;g!|AGbBcUUV~w0 zxk?E)Luha;yYF+7+~e;>_J7yOABuO7B!Vh&T`Mo7#0p>uo%T`Gez6~)DX>eN3}-;A zp9jJn?=;K%y}12?DR765k#?O&tru`}uUEB}XmjL_s}6k&R9)OWp`5 zwf2*^H-e%xlGK=~mSjA@F9bV~XCs}b9JcyNmv%~*eJHasjCw8EJ%5Re5DAte-7=wA ziErmA&m#G~3#CA+y6qnXu`mp3+!}uNq3F-CoM{v#7B5{;tpSChep$lQrCMDr^uqTv zATJcSWU0bID>r25q376bO?L4;Bg0KP$|k;Wk)@p0ny@#fq;C$igJU;YSeKP zfrFl_7D!@($%lcm=@nKcdD~Mqz0zC>luci}5=dz?$+zsF7lck_%uAGx zm6zd(kBEW5%zqZdVb%F-BXwxG=gwc5v)3SV?0PR~mGBazGy~ad?+%2W-_pYjtH2cA zF%*s{0rnSUgzJ$DRD_kYD#B8QmP>#CBBKSBV_z;2G?Yx{BtZF>h(uuuof2p$dq0D3 zS1sr|yHWbv4}+^4Q{$irkd>yYKB9Cq(E2HSWCcp4CVz4@_i^|&p6lDAE#7_G(+#(% z17xYe8}HTErRHE8WlyfDzJE4eUTC>5b}p3{n*G1L(3Rwc)_i#(7XHz4LY?RY_wJkB zL>f6Egl!O=t_6i~rL@Lz7Df>0lTiziF{_@&>pu#J#a*P3k+Y{pR? zM8$9k^I@st(vB)x(q+<|Y@)?fZj6U#N@JhJVlyW;2)*sf_@`$}avGJ9fdxAjvH9^C@|; z=SAej>NkCLjP(WmRi&@SY#=~(w@8kSD(8`#!8=7VxBw-W)2shFS+~+=ETZzCK%fSE3<< zC`mDQ5_4}Br4GR9!jiBsbZX*`$RBVD3-|!boGEa{y4I50kg*?AyCKRLx_=4{JyvJj z)HMRLI{Db}=@NeEd>!*C86RA0%tnT{E7}v9P}lrTl#--ML1e9k#=x5fjn}$k53w5L zn^)h<(~*j;`^q{}>kDt7Bekkb`a3wD#@O2)Gp%k$cEfA6t)R7p0H7>GaS>USeN3t6nCX~M~YWc zyp-a$6nj!^;1W@a6)B!bu`9(RDeg$|Sc(rz@ewIL3K|D{C+dxjCQ?Fl`+a(4&^2Fp zG)Lb<{e7yxWBo0=pnsI&Qv$U#Xf%-Y*>j)A^xbyf9DSs}A-Of6?~eXHKwqz%%P1k> zzyN#nb)dh7372q0pAGDGOkRmY5HiiCiIH^iGMx0cf&WuYgC7$3Bx=^u;1vR&N6mT~ z{Di>!QL~W-?-KYdYR;v>j|hAkHRsddJ8zZfo^J^pe@iZ zNtAO=8+qRALG_zXF|;|cvH~UAiZ!BIZtF16UTw59V-#RYM?@HA6(8OAyw`*9*9~^y zL*%#XPDXUgwCgt7wHr<6iAg!{TR@Z4*Z*8`O+Lf$&jA3IqtQ~e#`vr|B%T|L?-C^& zT}f5a#27QH6My#=<4rG(QLXgQV7mfrV_^G4i3fUuexCPQu-zTdx;I|&yU}><%KflG z@*_a9MKT;5LrNDVO8Ku9&rj2Jx0+KWdPuC0>`TTW@yhK=gXd5J(H;tlt_ ziH`#bt*gcAT!kJ3a;zZxIzAvLdO=f=b3o1&z?!$L*M^aa6CXJ zM|u^MYJVA&-a07lLP%J4XeH!WAhEm!(Dz>xmfxWZ*BKsOeEq}MskCbI>gb^jGEc3C z9ugZC?T3W+Ai~n9Vm$5yupI-y6 z>qT+BR~XlqdAL5j23+@w;`*vEu8;C?{qQy5`nV{ryM=L$WFE3zc@5YmvM9Pz7RI-i zi+^wDI`AD8#?kiS*g-!cn-#;*x*_9jWh-{tvn#zv zhL$@q1jIl2$%|vIpS2@>0kxFk`c{>jgYkivye;}r)PmL`Li&VX6i+S4|k5qpTK%^qfLt7Hc@gCm^*v%9tD*mzE)Jt3oq zq!q?smbg7Che7+&o|(g-GieXcVbH0xr|2-~-O?VX!=M+^o~vCDS8UT(@xHDiGwiiz z*?6|tLo9suFe6`&A!!GZ&VZTw+JCcVJnQTsc0YTV>95C=v;#_Kz!w49bK7|K*h5zX z?BNRnt=raS@I+_8mj>GN$awCshprLW!M0B6+ZYa#9cS|IZdP=l(6yeW47sAzmx)jiyVSmm~FVZT2D1Yj;5u!3! zRB!6i%$hJQO!-|dKe!WN47No#a`A>7&)t={cz4Cnix+de;10z^T@kStwZ&1ryA>1d zBckO+>v6Q;&V}O*F;%^YZH^dR#&E;|rZOU??ogHvsS9zl!dEGpb7iLIxkOvid_@G+ zmWQ@2Q<)r7Cb);;ixnVg$U8mUb7DHGfX@fDEf!kJ~{-INKf zD~O;n**BTYr7}6AOmKh17e<j?NBmEc#yT0mpWicP1LHA_rcy1CHk1 z>X~@Bojma3eMC~c|6poqYAT@Xg6rl$Ld?=3ol0Q9>4kPz12xm3dg&+H-PP_#wJW9e z#KzMyo&)1Ka=UEDF@K;tj`Q4cEa#5nHFq47xnsG@t_GVX`}@+=L7GZPQwwRTVLU6+ zR7jed7>|r-15r-~`{^6|4_|s?4^=15FwVc~;i7{n}8O_CpD%>gfacoksY8mkRQGdKM?T7S?UY=3mT9}V9YGq;_G z`{A46ewc@Qrzq~d!nmL1;lBK4xG(47zEc$U^J2J9c9>KesH&{n4O4g``=LsSmQ9ZN z=CmNN=UgSnnxvdfc8vYdWlFxRl4Ew<9!59@Zed@45USp)DRUBWO69;pM)y|jmI1kF z^;w23d(rAu4S({Z)rbh+O3~moy$QdlXx&}Y*o?ilnwrWqo=b8VCgJu$lCZ&Cl4X~~ zZxf^mTd9bJ#1m&JaZBwb4^msnN3N>=E8jj-$kZsc`rTtJd^3YlFNun3{;Jm})cp0) zYpVssL~`%#uD_0r3F|16%QyXrY~fv_pdPBxbi;LOihl_d94NGIvybrSyXmt^-yiM2 ziGjQccig}Ily+Ob8~uyc=Y&VWpZ?DvP#^$?p=U(Den}%y>oEhq7f>v2L?331jDAtQ zg3=>4OVez6-s`EvH+YWx75}n=OQsrGvwMC^XU*n$-s?f~>qa8qO!Pm}BQ!=X$1a~! z+!acOIe(<@D*eTt^aBHKJHQ?THhftv=e?e4vB&{Qj`4GJQoli6&l)fAgq=I)m#FdQ z$9Bw$l8o?#A#B~#qGNabx~q+d!WSkUzf~QKCy?)gC=b&xFe241i7@V(u?i~w$iN!}I%a z!vutd7qPQ(p+^J6bz$D#PNpU7q&VN020ws>_j{Lb*!)KOp4!Nr$yrZ0#%DJsd z*fT|KsG@MlQ_hNVo{)nxpLb=B(;sL$SCm_IIPkHG^I_$DR5?;#bVl}~v#)PT`Q)fQ zUE>+Dht87h;S;61J;(oa=@?_-jk@s+jOReQdvr@|@t{!fL%}nIrYS%<8Z)1#VAUL0jbV3EuzC)x!LXi80q637q>Ubx zEXda~(`9NZX9k&MTUPbF9`lIpCV-1q$&O|h_zKA@Z-s6_Kl`MShfnU1ci|r)l-|~M z46OW3-@__rF1XMR-~YXx?FA^M_kXZykz(d7ok{#z!2ZC& zrXjMvy_Ndfl{KB7O8nUj!6Z`bA$>&RX?vW?@R%~BDUHbb9@k}9MUL;5__H~J&%_KS zp^sQR;ZIUIo=}do7$7p|h)A5{q&!u2A82=5yL;N*&~7BPr|+&H?b_vZ6n`E{yKp(+ zv9zm}0|I@_X2s6kPiq^Bl0ahvJrSh=oE+kEc`VNj5A)JTzQm==zd`=k`ct}QzAV|}+-kot+|$H7Tu#guk9A9NRiVUX=yW`I^>dmaP!}63p;-U6+Mwh7 zM!nz_cHi%~Cg}+-s1gN;-G2>KqJ$m%fkN6*QYZeSnT6R>3;~`4dg6aR(;CS*`>Oo% zoY4XJbyl8y^(pA1P<@K3`Nir|?p~%YB}zhdDGq@*P?O^H0VjcquOyswAFx5gif`X} z?r8>7r@yCZ#Egjrnz&FOZ8kjLUY|dby6KVBEUTArVBmT$E*D7= z>&Hx`-&gLJpJo+J=znEB3Hr^G{P!7Q7p=Qa7SS!J#W7P$@`X#^Fv(~c%I#HoCRz1D zZXh_E*b*qGY+HmniDF0~^3u=+^L4TYa>JY($SF@A>TEd@1F0TC^BLVm7uC;cGa6IP zrFbc}#7^AgItx`FD!%IzI$h8?K&uifDkmOK<^sFg60ZEgQ5vq6w z<0D6n)*_HGYONDbr*+~hv^GmYU#W5fvZ=|>5IfzudbVN1(ccOhHlsg`j(**c6bKcT zb%_)}AF*=K#DB9xHPm*fx@kL9^rnt zWoomv271jB1ToilOnbyAD|Sr~dj!I;soMZ*`??>CVLF0-F)oIpkB;Xr9un+Bo6))e zFIUZlGblSeoE3?<>550KeN2XxSXq(qj2QGU)=`IY*?;~(-!o#+ZFVm-Vi5L^lrEF1 z)$P_5`Qxsaj8#7WvM*j;s(ilsHnq=p|7&&6w-aCYyfZ4VHPD0NP7p2ebkMht;yA%k z!xjX2zWVF~Dqhh|DhPP>;ZN`U5sFU8=ukZK) zS~>E7y?{88oD)yL^bqK`7$;P3-9mj}h4q8mEH1nx}%?>kv=bcMlQ0kUZt# zH$^+GJKXk@jk3TR$SoXkY?s+Mw^#+ag=;nJzJIdwfz#uj=}k{l`vIb5!jZ=7VP7}; zA)f$Gu>R*Idi_zl?5fch63miUTgrpAP z0wfe7e~;A}vUu$;$cr@ep|q=fieZowC<}$qB2C<=cEz$FK?Y%iUy;fOD|A3o7$ja& zqJLt@XaHQLj_NPzLhDy7)QgNt1sFi*5o{fNpO8>?4UD-H1W^iZ9C#r8f>dZ4B-3qz z$dD7^NWWG1A~dZ{D`>>h)<<@B(v@mlu~Ofm(}c3-s9TVG%~zzEE@=LW1^JPEbzAA& zZ(ccfpiI4QOi}!9oQ=wKc?(x84}+a;_*{4&nVa8{ zg$!*$2Op%#Dr*A>@nKZs{Uj-dWE@yV`PJF0BVdgiksy?_&|&R&gxXknf~2coz4}6P z(cD1Uxda!&3r*Au764w z@micFw2J4quhGn=?7HwmjoMti+EVq91Fc?v!mzg{R{$}q2j^nfV7-Q5j(?d#urfmD zo@x@L@l0g>nHO$^L3j*aswA};TcrK`4O=TF&!1mZtLND1FB`OEV#+CEGO9n#e(@(7 zKWqvE3kDA*d{F*e$G>oI{{h{+Jb&zry8XCBv;`{mldJ(|W8Di?;nr4yp*&8Jy{a{L zATZJm!p5{HnchTDx)LU()NB__qshNNCv-@rlC%tETd8*SR`MeII-q{{ezG)X<}qjE z7c0OZv8C6qr}RvLC3MTrU=HDry#1nKd5z~*2K-Mv0ckbjv1b=Z^cbS@6n{^*lRUm~ zjwr=|3W4G{qopvYKF`B})eb955x^mxBURwu&V%&Qg~^qg#wlYk!{!#-M^T22hH!}7 z*0xr9mB2KMxjAmW;6(bWSulC5(=a(n2P*y=g*luaHeJdfVYMcXkTOVt3*^umOjuf& zM&IzJk`*coSEQ3CQV&JaO@C52;o9;Q66!Z2#ZuB|h0g4{t*X-=tiy1Q%K?&%{zz+K zXOv82VW*vlULuCVKMB`G>J;1%;R$$Fq)xwcX_Gru;h%cvooSt$!kujwggegO5`2Qi z*(ZB^tqK3gTCKk3TMhBCnW~tnKK0G=bduB?6fsP{LOH3FlM@oRN`J^ZXvrfbl_tt0 zeYSP8R9$E_Zp@b&HyWi`{Hx;s%&nu@)*L`{8dR;8YDd*p9RU2d@opZ?RBORA!ETf8 z@JgrnUw$94o;lbWA}ueN_(xIq@JRZQlWugn02^w0~roKrpm=2wihZ|W`mdLvEHK*ShYlp?;s$m1Zz@ZsfK^Low} zyUkhloi7gI8^Z?SB!QtdhT*h*78qDN1MEDor*>}5hM75fFn`$`9VDVdb5tWgE6y;- z&KGMbt5iox0TWQw>YOnmUF6DTEC9 z^m*aFEvG2B=snK9!D_Ndm}q4g^l^$4-XezMNmAic)P+Lu8A*KfZSWD+(CZ(~K?uUDZqrXK`xOc`+uR_LzK<^8~Wlc{y$7=kx*UiNofOG3%GVs*66x~llJdCJpq{7e63!e=gZGe z*6VX~jYhqOuX?UvO5X~mM0rNes&kEnh5W4I@qbw*d8W>))y6_~3|hVMc@0%wJ(Jgn zO}Nz?)rDJQG8>K0tfev=nanyYFx0qNZPXh1nRUiz)>fHy%zfS_m9= z%YS=EdNZ%;4>0UGIU$&uXbF!(Ef!Kqw4~WpFtHOanSPtZ=GpiLU5jjk^3hd(>?WuT z=tLL2)_FXVd=BP^31UD;WccTwf*1Q>lpMj|n0tCHty!%txb`GOnii31fis9 z*3?fX=Dkoxvq@eBALyI1dirrpMS#RQp6fuWiX{|HNECn`@O(v_%M=*=>ZV7 z^n}TN&pu^-#41Oou0X#yt^~e8r8>?8zR`upac9(v?i2M+kXuh*o6(@?_;)ppVueae zqhXqvo|5>H>MBwKp|;kr8}FP+h9Z_4Sna+USgqIe5NUt`qs|5qHDTH1PKV#=yniTO z-enOZ&V}QwZ^l_5|6!$h%sA_+kur4SOjnhpJR4rP*8xmMqHZKw18N|94s<&z;S;EOOZEMpdoX!sKVOpppx>%evC;YJqwsu zIhxP6yA-)p&LhApj zVY8Xu@Z5ISRr}ifO}noR{e4ZH^TJ7d*#Mfa`2z^wb$_43H=_HTbwIFq_KMK-5;IWo>03Y>Rw9`N{J8KUwBNpzgW4IBO(t z_nH)))C|S)V|$QlrC$PsoaM(;Q;)&9G%S`bg+S#k$jWj`2UdjBT_h3HFjrcs$3eX` zKc&r4Miiyrq9`3-cYn?yho1O~c1}FKKjjZ5gI51TAACPMWpR$^TI=SB;=bU7U8A+C zMV>(6)lafof6C&%Q>V$Pmrd&BAoX|XdYr|wAU=hBtZ3F2=kUPhux)bK4sysnKbDP= zL!15?rzcN{f7XUx*_b4>sh@Ld@`MWPw6ZVU=PNB@WuunLnSU%iZgu;loyxSTuc2y# zy4lwOb$}%s0|H+u^-PGZ6*T3la%d}r%%^$^d6uO0IF&zy{V?i*Gt(*UpO@B-yK;D5 zT8W2UkP0uLpcREcQxo)2c()EcXt5xbP<-={r@$yI+t(Oj(TwzcV%LA+h?mi){2tm< zsNo(x@{>pNQh)kbCGYquMCe`htO6S~Fj0T>?3s)Y4||ab2z810hOBH7C`d8^xJAgz zX){bh)ifbT!{`73@8|F3u`!oTOv9XJ==Rw7+b+JNqXYdqVVY+y4bfJC=Atn6a~B)? zpMjo*@lCsp(mfw)Cqgf_srO0)iO#`&RYTcL3A3a55PukOdZ>o=Of`J-S{fiLytjXs zA}eSa#wLqJ{Tvl*j6yUk~VE4Hm|wa ztPT{luGy)*01jFBhx zEyC3kKg3fvt3JsI2Fct_k0xZArCFS2!EK76=|t6JlO7T3dZ*Rg`+%WG_K8r6q%srbfI99NO4 zC4a+^wP^23wlYMNIsLQ32z);Ui%^y*m{%huPaj26~M1_ak*Ve1}M6 z)$uzCK-?$G>}w_G{dUPxm|MP7iWAl#GFx9y6M@(|ZFLdKGza7iuwCOZ7fC=i?{43} zNAEw9h{i-;dFjN{CL08VKB0j}Yb1!V=@hS9U%RH zkTybAc_^EMpu)Sa@pgxXZFgwkS1#QHsuq0lP*y4?TAKFe3+oR?>@3Yx7Zu<`3cz$Y zP1qZwK4+KW7_TzE>fzr>Ygocr8=RVH`LVu|g0bR0F3G+8B=l}bj*>D)XdhG0=6^7q zlf|=i*M1D8UiVFd+CpLHz$kd@CY@e2#peFCq-cRa-uM#P@-N zoeis%IH7FL>1UsQ&YEQmlT!+LH-G)Spr1`TF5%}BgvVleW(EVPqus&c2v;2tQ&Me4 z89(Lf@j;NXd_X_jl+SAO6P6u}h(7n;)xdmtoLzjT7$Ep|Tuu19{q~w=B5@7vmxRd+uk%OdwG6<%m~ zE6Qn~<9LL_M2FSBR;Jac2STEUFM2*r^Yk`#(H{M5qk=*QDMKxll>_CAeahd7`y z*gMUAYKMla;}f@0?0*v5M?FTRK^`sT>}+a!muM!GPKR;-kkEgI#$|5NUbMd*gHn=} zG8U%yzrXxGNI)$vRGAyF-^HSGzJp^TtM}S3=SrME9fXRo<_xxDQ*bT zk`P%6Wme3qg?}s26jfv>DvH;&@otK0RYe@?h+PwrFz21>IU$&sJ^^vh5fwc*#I#(h z@GIVvX2gUV)TetFo~X=X>bv@yGFH1@k&ORY+qLe>5Cq}>o?^}rW^5nUHDN75#Qjd< z5|O<$hTR!vnmvns36c2YArMdGNqkj(or_}yf}QER+#%@2t!L$w`LiZ$q$Jhgb*fQSl-G%k4bQzQBXViZ;uB5Bju$ z3ZONe2Y+zG11Qr|_mcGZWiav-9oXd-jp}+4wK|`eHTe}Lcml1V0on5vQq|V^Dt!Cs ziIws51Vv9^zm~M8tdM%rR_#gK+6Ga*vSZQ~reYaPTC2FD*UZzAo_JDnIJkbO3^@lI z9<^qMl^cNuz)RWMJV+@o0Fq;(sdGWRkJPm4i`pq9zIlob?EM$3!(J z&5zF?dD?jWG>X|3Lxa;XJ;C6ruEA9p+(w(=eq1@mm7kDyTsg)?n;TZ?22Pp-ugQqs zX%oeRKv1y^zQXuKNI!4OS_*Jrx_`43y;;qBHy&2z#thB&k$Hu zsf)<%xpf^wf(^Kb?T6dLD;gXI(53dXS9KZ5c~{ENCmkJ zVy2j@hLT)73b|b5;dCr0DNXz^?&SgMeScw7>}?)EuF^*_8yIA0TgX#yP|&K(%DyL& znU}Sp`)M#(r*#7&M*c^;#$;W)hUF_=Jjg6(8Rt73+Wr-k%xI;+f7y!SP*YFw@jB}Y zT(6et?MjFVyq)sIiSlB>s$zS%FjxEie8hF9R)agR9ayGKT}%8ecy1FyHyfFbw|`Kv ziXG(zXtBk#e}TEK!uxM#Bcf+o^SU^cSOw_r)Jt)XLU(^2Zmmy?v45Nx zfyx@46Qs^=>4EQ18;5L{er&()u79xruxLb595yP!qK`Hu48PdxV7i+H-52)a{aK;r z`*FjQB_7nUe_hT<>J36YioGoF&zDJU-9CU#=^AH zbCJz5TsnXF0v~jKM7PH<*Kq?B>a^oENw1mkWhV2KOewm$Hk#C`n|UT88-Mu0yHcJO zrJTs@4M^_nBzLd?rokHfS5WH>l$)t-Ae!pYJgX|+{;ht=Et(BF`9(kS90R6Yk6jvb zmuLAJj0^akc%Yn-2zTQ5zTKj>{7p<%XN|5_$rbqM{t#{K>tV^L zV||lY>c;lgbZSE=n{>HXjN<$HLx&g4^{;| z+5e?(>UJGf$F7649j{0ZuT@-+w;pyk6=;}rTG3n%G9+r`H<1a_cOJFX(F`!siPmmJ(u&)l}Xf z+Q9tXyW{bwL`9U4113A$r6{$B9)R#{O3hY~ zxgq+p8{J;K$<>8y4A0;W%K-)0o81o|Ovt+U!%8%btmhNTgp7Dz^-mVR#`{&_`&IN_ zIlLrDA3$~!zke5Prgin4riekN5>I3_hSJXQs4KJ2QlIM-&mw5XPAe$&@SY5A*`~FWl)7$QWdP592^co=AUNt zw3B7P1ApsKcpCy+Di|=7{HNA;NqrkbI&=urHhSvY z{T{WmX?j+p<+~WEy0t}e=9Ii^VlOH-ABxIpFn_3|%7QpW2Bsm|Wz~|_s-;))V30Gn z#t1nG+?g{a4#-0~kI`gvQ%vac5M%+Q16%xNGTFo&KME)GUcBV~Cfs1S-kT<-2k^kwNBb^;*UZ{=oN>f=niZUINB6B+N{?zq2a=y$rFS9TDSB)`_Pm7d;@jTNn{tYCUmUOz@5kbxZmFUA(8KdV6BbuRQ^@T`G*?DNnJHrJO_XeuDmCl91YuZ{thVq`HKsHcsK& zO7$1U5f72}Q!ve%cubzbSP~!K(<^)N%9B*LcptAr$^(bw;pQT!+ei9*8pL8tllXsN zlLouQq2Hi}b4qBUGtwI`uzKDcDuABc8S0$R~= zDL4(z@qAU2x0NFX18C_-s9--r^iUt0%EU|YL_8Bu#axtpd}=JV#6s-iLsSURcE_gf zhz})=V_7)KCkmNn zdaI>56fW6e@(weSHsvlTbX-iALZ5^)J9vCLXEvo%ZYy}!cI@B36LzfE&^51)UQ#I7 a-CI|NV{DLTWC$m7<&K{wzb=x^*#ZE!DFRji delta 17112 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 z - IoT Manager 4.4.5 + IoT Manager 4.4.6 - + - + diff --git a/src/DeviceList.cpp b/src/DeviceList.cpp index 250af529..32620625 100644 --- a/src/DeviceList.cpp +++ b/src/DeviceList.cpp @@ -37,10 +37,10 @@ void addThisDeviceToList() { AsyncUDP asyncUdp; void udpListningInit() { - // если был включен автоматический поиск устройств - if (jsonReadInt(settingsFlashJson, F("udps")) != 0) { - if (asyncUdp.listenMulticast(IPAddress(239, 255, 255, 255), 4210)) { - asyncUdp.onPacket([](AsyncUDPPacket packet) { + if (asyncUdp.listenMulticast(IPAddress(239, 255, 255, 255), 4210)) { + asyncUdp.onPacket([](AsyncUDPPacket packet) { + // если был включен автоматический поиск устройств то начнем запись в оперативную память + if (jsonReadInt(settingsFlashJson, F("udps")) != 0) { // Serial.print("UDP Packet Type: "); // Serial.println(packet.isBroadcast() ? "Broadcast" : packet.isMulticast() ? "Multicast" : "Unicast"); // Serial.print("From: "); @@ -55,8 +55,8 @@ void udpListningInit() { // Serial.print(packet.length()); // Serial.print(", Data: "); // Serial.write(packet.data(), packet.length()); - // String data = {packet.data(), packet.length()}; // для ESP32 подходит как замена uint8tToString, но 8266 не переваривает + String data = uint8tToString(packet.data(), packet.length()); String remoteWorkgroup = ""; data.replace("[", ""); @@ -67,21 +67,25 @@ void udpListningInit() { if (remoteWorkgroup == loacalWorkgroup) { SerialPrint("i", F("UDP"), "IP: " + packet.remoteIP().toString() + ":" + String(packet.remotePort())); jsonMergeArrays(devListHeapJson, data); + // эксперементальный вариант отправки нового списка сразу по приходу + // sendStringToWs("devlis", devListHeapJson, -1); } } else { SerialPrint("E", F("UDP"), F("Udp packet invalid")); } + // reply to the client // String ip = WiFi.localIP().toString(); // asyncUdp.broadcastTo(ip.c_str(), packet.remotePort()); // packet.printf(ip.c_str(), packet.length()); - }); - } - SerialPrint("i", F("UDP"), F("Udp listning inited")); - } else { - devListHeapJson = ""; + } else { + devListHeapJson = ""; + } + }); } + + SerialPrint("i", F("UDP"), F("Udp listning inited")); } void udpBroadcastInit() { diff --git a/src/WsServer.cpp b/src/WsServer.cpp index aa7cd24f..822dc881 100644 --- a/src/WsServer.cpp +++ b/src/WsServer.cpp @@ -428,10 +428,11 @@ void sendStringToWs(const String& header, String& payload, int client_id) { void sendDeviceList(uint8_t num) { if (jsonReadInt(settingsFlashJson, F("udps")) != 0) { // если включен автопоиск то отдаем список из оперативной памяти - SerialPrint("E", "FS", devListHeapJson); + SerialPrint("i", "FS", "heap list"); sendStringToWs("devlis", devListHeapJson, num); } else { // если выключен автопоиск то отдаем список из флешь памяти sendFileToWsByFrames("/devlist.json", "devlis", "", num, WEB_SOCKETS_FRAME_SIZE); + SerialPrint("i", "FS", "flash list"); } }