From a430110f94453551fb4c650e46d5eeb591fd5ef3 Mon Sep 17 00:00:00 2001 From: Thomas Peterson Date: Mon, 9 Feb 2026 15:28:12 +0100 Subject: [PATCH] Fixes --- .../index/ArcWidget.cpp.C855CC6EB2D676E3.idx | Bin 9560 -> 10372 bytes .../ButtonWidget.cpp.6932614AE5FC71F9.idx | Bin 11336 -> 14784 bytes .../ButtonWidget.hpp.551D0D3595AEDB81.idx | Bin 1456 -> 1714 bytes .../KnxHandlers.cpp.CB0E869699204D5E.idx | Bin 4122 -> 4122 bytes .../index/KnxWorker.cpp.DE6DF2C0B88ED24E.idx | Bin 11124 -> 11176 bytes .../index/KnxWorker.hpp.F9067C35E6DD8F11.idx | Bin 1758 -> 1914 bytes .../WidgetConfig.cpp.FD56F9F36C29A5DA.idx | Bin 15718 -> 16654 bytes .../WidgetConfig.hpp.CAEFE2EEEB2A6996.idx | Bin 20130 -> 20476 bytes .../WidgetManager.cpp.D8CE609DC911F13E.idx | Bin 66234 -> 67486 bytes main/KnxWorker.cpp | 42 ++++++++++++ main/KnxWorker.hpp | 6 +- main/WidgetConfig.cpp | 21 ++++-- main/WidgetConfig.hpp | 11 +-- main/WidgetManager.cpp | 63 ++++++++++++++---- main/webserver/KnxHandlers.cpp | 2 +- main/widgets/ButtonWidget.cpp | 53 +++++++++++++-- main/widgets/RoomCardWidgetBase.cpp | 20 ++++-- sdkconfig | 7 +- web-interface/src/components/SidebarRight.vue | 15 ++++- .../widgets/settings/ButtonSettings.vue | 11 ++- .../widgets/settings/RoomCardSettings.vue | 22 ++++-- 21 files changed, 220 insertions(+), 53 deletions(-) diff --git a/.cache/clangd/index/ArcWidget.cpp.C855CC6EB2D676E3.idx b/.cache/clangd/index/ArcWidget.cpp.C855CC6EB2D676E3.idx index 042a7b2c6440449d87af72bf7e50bd9f1eb0356b..ab37e96786c5fbf56027274692d47c2b988f9a6c 100644 GIT binary patch literal 10372 zcmZ8m30zIv_iyE-Q{CoUxAER?-P@cSjWmf$MQ9)iH>H6zqS7FgCJjo1N|HGlem!Xr z9x4^DLU=?T#d|9B;^E=pe-58>@4o*&A3pc{-D|DA_S$Rjz4ksn9&T=_hGJs#*LfsG zg>GJpiHV6R6aO}Cj$f}SDJC{|rkGgL{=TZfO(U&J+rI`jZ>T+%Ic@K&1B+DTXnbYdLxrl{@Hip$%g0b=j>9?3u3vR2jzJ;mmEUnRA_A$CTrp7s}s7<=Qz(r5nByOgo272CQ%jhNja8Aj%|A~|ycU-p zThP(FS)nkFmv;^C9*i)*T==_0vUjF|_gSZ;h-$u1u>2Ou;mh@>zdjl{6n8tKuGI7E zf7RI+oUT8+S8aVUC!wZM`Sj_idxs<+v!+kU7D_s$ync7?rjzxZxSWhf>usfvWyoD- zX8B)LkiR}M9&xsfu07rV?c%JguCaavE@w%FN799nbh zwd=o*8jDgCnOQZg#_Z|e_E$Wen9a+5t9dXJI~wul+3aqc$lb>(Yyb9%oxaE<{Sxyl zJu@>i!ad5csqEiUu4~y&S+{q_l_3&~;>I#tICt}=c?Ol}r(AlDNqVM6GZhz2>#a*%u zx_2I84R>iKdrIm5dhdO#A(I?Euwr}07Kh(g?mKqxOo>@!?lLY`F|=gu@)s-I9j6_C zP}17jw%}8qL1A2A#cvYL?yo=gI;^V4x~j@cU##%Y|K-2EW9L&R4p}?am%L{z@740W z(nQ~Nb9r0LHItF>0AtQ-1=$Bi>FWy*dFG5f9D1Yc@zu}UK+A^qC}nqDPik0{*ZRo; z^IMkZj^Vmi_wHU@z373Bhfn!{@fSCbH7jForO+xqypmI7e0Vr?^g!A4@O}Q_&%+|) zZ=BNmb#ach+>UCye@nvd%66s(>1MuFU#q`%S6@zlX|2zDmo|yHy`A$?it7iPxZCfp z`jjT6;MJk_Rjl_)|1w)?D~sIU^7=0RXE*Vntfj&9nd#w#C(jhi1E*^mC8TMR^uZpP1RBd+*9b zw`k;XRr1 zo^3i&c&2;wd79Ijfr5tPGeiAqU6O(u=70OJU~}Kc?`Qc+H~!=Pc3*M4X#BRN}}Gc1Qz>(44$e|`St;eVyZs5*(JLHu-&s;seKC4gvTjKAdz8~=3 z9X1~Q#+x4<82;3_(DuyJ+^I_CFb9i?PhH@ zzkAX{Z`R=O?pqa#Qk&$5_a6HDmVpko@57>$?FEf0$5q!M+t*>2pb#ru9 z={z3=kMW4>+ltecnw?m2RLAw4r=Em{S(N}h8csx{qKaVb%1ieo6rzZfg&q1B`q4h&XiCun!H-fosUNf^ zzqx33Vb!}s2fiB`;WsDz-u-fWV^i$JsV#9I&OaQwY4v;UmXlk@*hdEw`cLxsD=j9| zzEx*;Pps_MJbgW2^}=&oKm5fD4J*A=#(r1zNsoCVac9a4$yse@_ZGO|lbaUL8?}vI z);D%Oz*9fh!+Fzk@xg+&mUAz-?_XCh_>G_6xNXLjh0;EGMn(9|s|z{%oaCCL6NgXs z=h!>{u}GQ~a_)=fdcC7>V^cI!KfJ7*{ZHS=;i9oee>|FR`03J?_bC%M_!D1_^t2sG zUh{3VoWs5SF8zu0QQsTiRl?|-6K)mmyvO11Rlb)dJ(<2GxQ;j@w?+le12Hk1htIYK%aqF~i2nvx zK&%%!K%oOPZvah-Mi;}0)0FrNb9{Ap%&$<6CU%Wb=>?iRP4nmfKikE`dM@)bRLXid z3gS0^no(9(Hn;)uG*G6~+|~z-)(iYOd^<{&fFT+ong}cd-7?Tah?jA4$G*h5$!#|>H#h_rvxzytWn@nA!F=n z_@m`;GzLUV8lI+3nVL;Ae3>+VaJo3b>uc-JLV9%2bFif#YdwGWKQLY9hq`W>V1!hE zAWfxD{7Z}0C3}sYyT94cGT!`7W*TAG$F+e(K2fcRSQNdZ;VBu7-q*sm%>I~KlG^oBT zU(ujCwSz0AM~HU=t6LpP%cYC2WpCL(To(I|Uz(B&-46@B4L<`8ah!CwH+bTk|foz)y(FM#d zFr@q@dYJ^XNwA@UHZ|MgU@{iKB%@IU##LZ}xLOOwwL(JIdx^ZiLAEaGsx@XUhs4*$ z&<0%r3)C0rA+4uD{j_kc651Dlb^%n8f%XB`2Xcs$1E4YhEQ+AEN^v5C$z76KE2JYF zYr$gMqh+wXj|E(EEayS}JaCaNCSmp@xKhJ*)VX^e>sK-$R~eas$eJKi4uL;&j3O9c z%A_t%j2QfwcP+jV60BgIU^4`kf=(%*#0k(jAtVf!6~8dPa?FHuAVeWVu&aQytV z*XyirTaex2({UPgrdi9G>Ls^TTa$bPxHZ6X%0O?Xy)*xM(Hznp{w)4%iYK8fe-R2- z@c9&cAmP?`?CWuR(w+iW!GzlN(mZ-patpGYNNY~G6AQ^pZ_FD#W8$%R0h|_}VmG_v zPbWD-izZ2vqpXq8h-QvLJK8)1Dlin72vinRmZSnk=xQ)Dm-GFt247Eat_8!1`M2HcXg5%(GD3>^fj$*ZX%kgd+vp^Ol^Y!2H5fqHa3O%xjH z@es(NbI?|f5yu>9oxzyFL?DmBL!mFjmx+dr;fKONMxY2>5Qy&Gd}IDhM3?WtcR}G& zzCQwk7(uA1AYPE*Feb(uf``Z>!Xerr92Cw9LGwC6I{|G?a7*w)gcF&G=xLkip11^Q z%?HbT5EK?f&t*U>17$>_47g=rDndAxfh$7PfL4vj4qXH8HGuX~13@(qj;PcFtzM*; zdf?WJ^imIw^&-7AfMbIQ(FC+6P)0WCcCcv&M-gH{J1je6-95Xe>K3d$V9ls-crT@40w160^h+mMau8mk#= zA<%?wf(o0en`$GimMWHLd1a$wgTgu5b5P4Jx-R;NuBVKrJOUR>EtW;n!&}Q+a0C!T z2v7+?kGN1)C|b;ivBFRot{sk^YZ2@SH2pWQHlV_htVk4Y)ZU2dMzNz%-B?yEDjdg* z(?xua*NR7d{sp9d0a+yX+CjS=*a*=HQk@`+8uFwA|b)q5z@)NbA2h9Q9A(N0Rpdk=?-DtmpIGGmNrmtgBg?q8~)2(geN`sCtF%T zy#@5CmWuYOO@lt)f3z&cmeQ$iSE@zqyuPkAfYf*lijP5?O7XU*Nopktr&p1uqyc7t z*3OQ&BbutifDZ$M(wn&z(!MKNtRXF$XqcE%39)L?)tjwX%K0h;ABY8_2UnnDAiDL$ zU@>TGj82RJ5ZzsX?*g=a7jSlgiHL;# zE|`xHS%7DWsAK^rOGG6L?6X8v@&V5mQOO76d_WJC0>BGIBnrT&0MIMLVZaZINE`-( z!yu>$>HaQx$0icjk}+=v^=2@n<~@FQme0}T`N3pM92Tcd4JBDzHeUX0aWI*PTrDnI zs@v<@3+iVrqrrXOs+A&1br&TU!P?JkI{)CZ$%$A}U0X~W-PW|Vv^mtAQz*c%9fo0H=qVeCMGE14E%(wo zk7UxYDP}6z=L*bT+DGLc{=ui?>4Go>tFz~h#mwABCV3Okn}A8VKoDJ^&;=UQ(j|yV zU`>J%mFQ`~vt-5hAKON{6vzrh(>MwNQr0+w=l_ zfxuY;o(B9hs8NChaS>=2K?`wi0I&g|Q_d0b`uTuE#Vh;Y&M`mlkC~+HAS?)7PeDt9 z1cf!xS_62ENNUx9Qw^ZYU(%uF}Z z;+3qeCc{t*c&+e8sW|dr`$seJI`XmEc3uOV8j*st2A0;q3Tk9OBqC}cmLmM!H#VC{eLhMKC?D+e!INrn&9lt={b9tZ z=|oE?FBC1N!)At|!3#GFN9*TTp9UB~Oj3yz*1t<)5MS=Saagsq_73I^0B<+@cF z-&WK9!$3LUbSb6(VJuTL$y_M{%4p!7b zGW7^^@ekZ&w@ZE7k2nVL*CNh_xP+j^MH%>&!7`-19{lQs1eLnv2}C|*Q@aXNGw%R4!D?V2L;F&T^!5*$D-e!6IL-}P=o^8rDqwGprcQy8v?fR9> z))=iA7UIY*(Agyn3DKSfI$1*ED3*IV?%LU_q(u|VL{N`W7D$iDcXi6+>ba`#RVRbH zNclHl`UWhhm9&;=r);&Qo_M$Dg`I%!6jqkZKZE!giqSX7d0=B~CCY08CgaJfR98Fr z3y%0+mHmwrI|%qeKuhKZz#D`_bXR-w{}ONakrTtw;s{Q963*n3*`mY{0Vt4OU$xv#6a(SNlD}rGGl^P1flyuH5gY5U$CjwB1H&Fib+aQrwR#? zf|Y>ExU!<)z#}#XX>BwJUJ_pDZrunHjUY$ugoJhnNOXuiXA^mF2UMsshL9Kni6M}q zMl`f}nc}>Myq7;zK`-ZeP7oRKmg5+X(tN6k#<~x#?)s@w!9!#NR z_BH3;&tFJa4*-5Z=ovwr1pK6s$Z-u$oG5wwjYG7|!RAOKdy5@zhkl!|*RU5HbA+&i zrURP5j%tqR!=0WJDsHdPC zS(-+gAWTH-Hug63+MCWyN8batgXVUTC9?zccZifeJ3)V^2$2Cg8N%lUqK9nI$rd4U zKqp6pCtGg=xJQ6>TPyO`>e*^IqHmYv()5kaON!%drjMs@zoka5up@di$^1EC3J0xn|Mj+rt zxJ=Z^)5H}Nm6Yjf>Kd9_+Dw)XTX#3?fnws$7`ZVjV*Q3_w*~I59xk4XmU=B-vM_#A zLN;W=E}}??i-}zwxN4=znzcdvoe-Ruv^6<>TS{u$GUs{rE3E5?eZ2$@6GeYMQOy?; zGq_xj!_^O%Va2mBojE51>}<_!9A=w4<-#n>xsEjuvhD!vCtjTV3t;}{(6I14*pdT2 zzJA{2#4~aw?1fS=GBz}*Aa;&w;`FbAqr_GHIGlhpaF)2YHW0_|Dfk8cN36~!;+tCw l93wvNH4{U`B&JKt&}8N0Ra6<0xKt~2!a3so3NC@z{{fJICP4rI delta 5770 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 RfA8*H>-@6u{ly`3@qf#XrmFw| diff --git a/.cache/clangd/index/ButtonWidget.cpp.6932614AE5FC71F9.idx b/.cache/clangd/index/ButtonWidget.cpp.6932614AE5FC71F9.idx index 842133a8481f32df783ebb63707d75c3a962ac3e..5d3e3f1c6d7a6186e454f1de830819e6d1415c81 100644 GIT binary patch literal 14784 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 JY77#XzX0oH{!#z{ literal 1456 zcmY*Y3rrMO6n*oU-DP%WhuK+|{R!2D#!sOV+z>>xK^GM?_M;Ugw$xP`ts=0yDqC!t zijpWwOzIa@)K;L1si2g$22HKCkV>r@E2d)NC&n0;5RDr({@yG-G~Hz1%bauXoqO*& z^FiLUY0Wx9rY^~=C@Bsu;t3%Z_74R8%X--T8AnLPo*@fyUc?17+FIcJ;I+-Y%=Y__xPYKBlcd^QKbKb+zi~ zy2>9XoIcij^6c^2_mak4Y}%3gd1T|-c~yn=S2D*o);{Mmo_D`fw|{cnlOHa-_8#0{ z{^y45GYh(s3JMz6=A>s%Z7N= z**q+IkXSY``#HM5OiR45$)r*v9YjP&oWlWn;)3E&Rwth`D^v$MUWj*ruKYg5_lvJE zUZFf_qhPdvuDz1e(Q>|TluS+R-KwnGqX+2Lf$wgmG@Dc7DTi#mNk8=Nmn*+0^?ta0 zg+gOM+XZ_9vQv-ro$}O2N);-DHVGybbVowT`OYS;T%iJJn_wF%o^&VYY)fe3CWXd= z7Gz-xUeBx1g9yuKxE zDF?6HsEYCi-k?K%Mt)8AyN;H7GBvRBimbd5JwT`Dgn#ez9}25fk8G#n9GZN_2=X>R zW@*1d70_0}YDc!e_|w1~MnHMa7*!lSLvc=sDh(J)Ggwm?FcfC6rYvA6%W7+~0*0b2 zT2m5mq<3cBoW)(aoFwwYc{gAP%%U}60Yg{@Yk~q^f1X>-FfxLF69XV3v&!eGrSfKh|(LNf~B z*vF$s-7nhqH5=NQ=o}4ALB|*eEi?Gh5$S&mlSG5gU`FU)<>8N-Hq;(qmGmR@DOfT* z#&M$NEkqkz270pVUfyNV4yVHnxv>-0rRFz8qb)X*W--997=txy0Ve+96^p#AWxcl} zm|hu}#9=3pm>{%pURyYLsqrX>Hj`I1>`VTw{{#n11^kNxHf?Qo6{fETB9&l}m|PmQ!|e7mya`6ra4F zE0A&ZWJd1qEXSB6j&1(KeT|XjDih1q$=7(Fuv}oWy|8&7-)bfyJ>Td4ESu`|8F?-+ z9%hn0%%r(FQP7`B^ca)HF(!wpSASQ;1TgOdN?u@6zOebIa03(2JkDdAJ;hiUrNq5X ztkST1nGDg)d6-EQreU+MI4{fOY-xFRpw=r)ELS!+NY}Fg?G?DNnOW%#3y{TnVe@CT VEleEOuG$)RM4aBWdA;UQMgVUNTXX;b delta 242 zcmV1n8C6O;J~L<1NJ7?VH>8VkOz7DGbvx5;w0u{vqIK=`$ zmDT%rTu=kP4A2430wd3}-xGiW1jPag#j|4;1Oc;w7Yzgs(EgUCcOryvRHOawI>KERFfataLDxtAT|O?rCso$vgQbH4Ac zNm{xzPe({%W>SGSYr9872rm-kFKs6W-$PhHZ5Zt`F~XeC0a)p#0SC+T;y8c9vD# z_~47A(dV{u`e$qBZJ(>_$26h1e}aEsc3fyqNsQgRr1`kN@y?=5U&)G$PIvl|Lqqj) z>xa4B{cE!$WZy6!^f1-q3`w3fM&?(Qn~&~wADsJO>(Kng3$^QpA~&7SKD_GO=gy2bdQr=559A*}m^yeduZJ%ZGcT zO1_SdtGqwiR^2B=MHi2`k}LZjZ=SAo=S(o`mMv^}6&u|VUcKQcdos6Qwja7QGQVB= zwtLVL(owNLcW1&DlV;r}W1Jy4^^lT5*Nan409%iwBA% z)(C`KjC6|$qE^l-BjKAHzbg!mk4(c78BM1p}Xw9c1eU;4;I~@pJ zjMN3)3*Z7?cdv0*kbL=K!p{~G)j7X!sxgb{%&Eq>?csW#?GVI1?sRn zLhyD1b;dapu~*1pIMoKY650SZP&|ObL-_++5k0aK#$tB$?7R1_MxZ*4PQWn|f9*F_?f?J) literal 1758 zcmYk64NOy46vuBLrR{sYEw3LGu$>+47+7R13m_V(6C4H?9VILw#w--j$bdM35IP4l zn;TgMv{49zU^jxz@02 zO;1fp8J8fGoSRx!c%;NGMhI!hr?{jjZ>I>M&lrTtnnrC`4_-AeP4HNd?ziL0x)t+Yvd!_2b8LzXscdWr{J#}`?{Y6Lk?r+K}-gGlPR>yBIT=M1K zx9o3waM4xp-VV2CE_=FWAe%2)j?A!?_&!alp6-j}Y=>&?)i=EJ5&Pe5+!xuC=B^*> z_jo4HwN{NV=+W&L7u{PzLPzfUd5>ALO#0A<%)vi>IaL)^y&rjw_T{+`_C9@S=*P|< z){LWJah~puq=s-HSM`qbA9je+3=XL`1r)c zsguzbuG(ikeZx8AFPVG>owOJR+N?ob>pNBtD;hgAIk@oxPDOBtz%yyFPSx$BouIsWzN+!@B zVN;;VEEpssTP9D@m9@su7WH5o>E!mq{XEqB4RZ_4v`qIQ?p+PjoUMMje< zq*}p1afSU$*V4=N-D*Yw*+$-I0(r>coi!IO_bHK#WV4vn2nOW3U!Ij6PV*b&nE=Q( zum(NIiihbRuPoGE<(XiRb*yf4Yen6$HP2MtJ|&Wp;&N855)5Py)caTblT>?0%8)l1 z^AbKlF!avIL+%U}9XVQj@i{Ih|g!);K!@v@P(!eB8Zz`=lMG8`oth69p`n-UD}$|u9~8Meo#$;_;n zmBYPb%!xTU;El0KVba3C0C>r8lz12lU?*-$Iy3;tNnZ*#xB+hBrci?$peAk#Gq_=u zq&6iPTEZ4dG=&$U;SeO6k_*wWAQDYsg=m14xGALI21rQ}N+=ZJ+80L?8vmUWVQf~I z1L4q+MQ(-y`~Ss|n|c1sgxdl;m5PgUip}%~N6p3~haZIb{#$dUJ8XtsjGRON0nsBQ A=>Px# diff --git a/.cache/clangd/index/WidgetConfig.cpp.FD56F9F36C29A5DA.idx b/.cache/clangd/index/WidgetConfig.cpp.FD56F9F36C29A5DA.idx index 2bed32f180341a1668863fe2972a085442cbd26f..f888f8aaa1564c6d8edbbee2d49aa24ee00288e0 100644 GIT binary patch literal 16654 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 GQ1~APDCMdE delta 8560 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 diff --git a/.cache/clangd/index/WidgetConfig.hpp.CAEFE2EEEB2A6996.idx b/.cache/clangd/index/WidgetConfig.hpp.CAEFE2EEEB2A6996.idx index bf327c09eff614dc4c28f5b569b0b43b3979abea..6514f2079b8cbd95ab3fed85c0a3a014aa3afb26 100644 GIT binary patch literal 20476 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

Q=Rj(m0= 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 diff --git a/.cache/clangd/index/WidgetManager.cpp.D8CE609DC911F13E.idx b/.cache/clangd/index/WidgetManager.cpp.D8CE609DC911F13E.idx index d343169ba4d1ccfd9854eb51e5c0e7c1447926e5..4ddfceb68291e81d535cc3edb82e70c2ae09cd72 100644 GIT binary patch literal 67486 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�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 nQ$Q6`Yq2AWt@sgX#zhb%Sy5fx+*yt(index)); @@ -333,6 +334,47 @@ bool KnxWorker::getGroupObjectInfo(size_t index, KnxGroupObjectInfo& info) { #endif } +bool KnxWorker::sendSwitch(uint16_t groupAddr, bool value) { +#if !UART_DEBUG_MODE + if (!knxBau.configured()) { + ESP_LOGW(TAG, "sendSwitch: KNX not configured"); + return false; + } + + // Find the GroupObject index for this group address + size_t goCount = getGroupObjectCount(); + for (size_t i = 1; i <= goCount; i++) { + uint16_t addr = resolveGroupAddress(static_cast(i)); + if (addr == groupAddr) { + GroupObject& go = knx.getGroupObject(i); + + // Check if this GO can transmit + if (!go.transmitEnable()) { + ESP_LOGW(TAG, "sendSwitch: GO %d cannot transmit", (int)i); + return false; + } + + // Set value and trigger send + KNXValue knxVal = value; + if (go.value(knxVal, DPT_Switch)) { + ESP_LOGI(TAG, "sendSwitch: GA=%d GO=%d value=%d", groupAddr, (int)i, value); + return true; + } else { + ESP_LOGW(TAG, "sendSwitch: Failed to set value for GO %d", (int)i); + return false; + } + } + } + + ESP_LOGW(TAG, "sendSwitch: No GO found for GA=%d", groupAddr); + return false; +#else + (void)groupAddr; + (void)value; + return false; +#endif +} + void KnxWorker::formatGroupAddress(uint16_t addr, char* buf, size_t bufSize) { // Format: main/middle/sub (5/3/8 bit) uint8_t main = (addr >> 11) & 0x1F; diff --git a/main/KnxWorker.hpp b/main/KnxWorker.hpp index cc62419..4c90a74 100644 --- a/main/KnxWorker.hpp +++ b/main/KnxWorker.hpp @@ -11,7 +11,8 @@ struct KnxGroupObjectInfo { uint8_t dptSub; // DPT Subtyp bool commFlag; // Kommunikations-Flag bool readFlag; // Lese-Flag - bool writeFlag; // Schreib-Flag + bool writeFlag; // Schreib-Flag (empfangen vom Bus) + bool transmitFlag; // Sende-Flag (senden auf den Bus) }; class KnxWorker { @@ -28,6 +29,9 @@ public: size_t getGroupObjectCount(); bool getGroupObjectInfo(size_t index, KnxGroupObjectInfo& info); + // KNX Telegramm senden + bool sendSwitch(uint16_t groupAddr, bool value); + // Gruppenadresse als String formatieren (z.B. "1/2/3") static void formatGroupAddress(uint16_t addr, char* buf, size_t bufSize); diff --git a/main/WidgetConfig.cpp b/main/WidgetConfig.cpp index cf8b214..aba8c5d 100644 --- a/main/WidgetConfig.cpp +++ b/main/WidgetConfig.cpp @@ -119,10 +119,14 @@ void WidgetConfig::serialize(uint8_t* buf) const { buf[pos++] = cardStyle; for (size_t i = 0; i < MAX_SUBBUTTONS; ++i) { const SubButtonConfig& sb = subButtons[i]; - buf[pos++] = sb.iconCodepoint & 0xFF; - buf[pos++] = (sb.iconCodepoint >> 8) & 0xFF; - buf[pos++] = (sb.iconCodepoint >> 16) & 0xFF; - buf[pos++] = (sb.iconCodepoint >> 24) & 0xFF; + buf[pos++] = sb.iconCodepointOff & 0xFF; + buf[pos++] = (sb.iconCodepointOff >> 8) & 0xFF; + buf[pos++] = (sb.iconCodepointOff >> 16) & 0xFF; + buf[pos++] = (sb.iconCodepointOff >> 24) & 0xFF; + buf[pos++] = sb.iconCodepointOn & 0xFF; + buf[pos++] = (sb.iconCodepointOn >> 8) & 0xFF; + buf[pos++] = (sb.iconCodepointOn >> 16) & 0xFF; + buf[pos++] = (sb.iconCodepointOn >> 24) & 0xFF; buf[pos++] = sb.knxAddrRead & 0xFF; buf[pos++] = (sb.knxAddrRead >> 8) & 0xFF; buf[pos++] = sb.knxAddrWrite & 0xFF; @@ -303,9 +307,12 @@ void WidgetConfig::deserialize(const uint8_t* buf) { for (size_t i = 0; i < MAX_SUBBUTTONS; ++i) { SubButtonConfig& sb = subButtons[i]; - if (pos + 20 <= SERIALIZED_SIZE) { - sb.iconCodepoint = buf[pos] | (buf[pos + 1] << 8) | - (buf[pos + 2] << 16) | (buf[pos + 3] << 24); + if (pos + 24 <= SERIALIZED_SIZE) { + sb.iconCodepointOff = buf[pos] | (buf[pos + 1] << 8) | + (buf[pos + 2] << 16) | (buf[pos + 3] << 24); + pos += 4; + sb.iconCodepointOn = buf[pos] | (buf[pos + 1] << 8) | + (buf[pos + 2] << 16) | (buf[pos + 3] << 24); pos += 4; sb.knxAddrRead = buf[pos] | (buf[pos + 1] << 8); pos += 2; sb.knxAddrWrite = buf[pos] | (buf[pos + 1] << 8); pos += 2; diff --git a/main/WidgetConfig.hpp b/main/WidgetConfig.hpp index 3e5af61..de52883 100644 --- a/main/WidgetConfig.hpp +++ b/main/WidgetConfig.hpp @@ -169,9 +169,10 @@ enum class SubButtonAction : uint8_t { NAVIGATE = 1, // Navigate to screen }; -// Sub-button configuration for RoomCard (20 bytes) +// Sub-button configuration for RoomCard (24 bytes) struct SubButtonConfig { - uint32_t iconCodepoint; // 4 bytes - Icon codepoint + uint32_t iconCodepointOff; // 4 bytes - Icon codepoint when OFF + uint32_t iconCodepointOn; // 4 bytes - Icon codepoint when ON (0 = use iconCodepointOff) uint16_t knxAddrRead; // 2 bytes - KNX address to read status uint16_t knxAddrWrite; // 2 bytes - KNX address to write on click Color colorOn; // 3 bytes - Color when ON @@ -181,7 +182,7 @@ struct SubButtonConfig { uint8_t targetScreen; // 1 byte - Target screen for navigate bool enabled; // 1 byte - Is this sub-button active? uint8_t _padding[2]; // 2 bytes - Alignment padding - // Total: 20 bytes per SubButton + // Total: 24 bytes per SubButton }; // Text line configuration for RoomCard (24 bytes) @@ -296,8 +297,8 @@ struct WidgetConfig { uint8_t arcValueFontSize; // Center value font size index // Serialization size (fixed for NVS storage) - // 331 + 14 (arcMin + arcMax + arcUnit + arcShowValue + arcScaleOffset + arcScaleColor + arcValueColor + arcValueFontSize) = 345 - static constexpr size_t SERIALIZED_SIZE = 345; + // 345 + 24 (6 subbuttons * 4 bytes for iconCodepointOn) = 369 + static constexpr size_t SERIALIZED_SIZE = 369; void serialize(uint8_t* buf) const; void deserialize(const uint8_t* buf); diff --git a/main/WidgetManager.cpp b/main/WidgetManager.cpp index 210fc23..e9890c0 100644 --- a/main/WidgetManager.cpp +++ b/main/WidgetManager.cpp @@ -4,6 +4,7 @@ #include "widgets/RoomCardTileWidget.hpp" #include "HistoryStore.hpp" #include "SdCard.hpp" +#include "Gui.hpp" #include "esp_lv_adapter.h" #include "esp_log.h" #include "esp_timer.h" @@ -604,13 +605,31 @@ void WidgetManager::handleButtonAction(const WidgetConfig& cfg, lv_obj_t* target case ButtonAction::KNX: default: { if (cfg.knxAddressWrite > 0) { - bool state = false; + bool currentState = false; if (target) { - state = (lv_obj_get_state(target) & LV_STATE_CHECKED) != 0; + currentState = (lv_obj_get_state(target) & LV_STATE_CHECKED) != 0; + } + + // For toggle buttons: send the opposite of current state + // For non-toggle buttons: send ON (true) + bool sendValue = cfg.isToggle ? !currentState : true; + + ESP_LOGI(TAG, "Button %d clicked, KNX write to %d, value=%d (toggle=%d, currentState=%d)", + cfg.id, cfg.knxAddressWrite, sendValue, cfg.isToggle, currentState); + + // Send KNX telegram + if (Gui::knxWorker.sendSwitch(cfg.knxAddressWrite, sendValue)) { + // Update local UI state immediately for responsive feedback + if (cfg.isToggle && target) { + if (sendValue) { + lv_obj_add_state(target, LV_STATE_CHECKED); + } else { + lv_obj_clear_state(target, LV_STATE_CHECKED); + } + } + // Also update the cache + cacheKnxSwitch(cfg.knxAddressWrite, sendValue); } - ESP_LOGI(TAG, "Button %d clicked, KNX write to %d, state=%d", - cfg.id, cfg.knxAddressWrite, state); - // TODO: Send KNX telegram } break; } @@ -680,9 +699,12 @@ void WidgetManager::navigateBack() { void WidgetManager::sendKnxSwitch(uint16_t groupAddr, bool value) { ESP_LOGI(TAG, "sendKnxSwitch: GA=%d, value=%d", groupAddr, value); - // TODO: Send actual KNX telegram via KnxWorker - // For now, just log and update cache so UI reflects the change - cacheKnxSwitch(groupAddr, value); + + // Send actual KNX telegram via KnxWorker + if (Gui::knxWorker.sendSwitch(groupAddr, value)) { + // Update cache so UI reflects the change + cacheKnxSwitch(groupAddr, value); + } } void WidgetManager::enterStandby() { @@ -1693,7 +1715,8 @@ void WidgetManager::getConfigJson(char* buf, size_t bufSize) const { cJSON* sbJson = cJSON_CreateObject(); cJSON_AddNumberToObject(sbJson, "pos", static_cast(sb.position)); - cJSON_AddNumberToObject(sbJson, "icon", sb.iconCodepoint); + cJSON_AddNumberToObject(sbJson, "iconOff", sb.iconCodepointOff); + cJSON_AddNumberToObject(sbJson, "iconOn", sb.iconCodepointOn); cJSON_AddNumberToObject(sbJson, "knxRead", sb.knxAddrRead); cJSON_AddNumberToObject(sbJson, "knxWrite", sb.knxAddrWrite); cJSON_AddNumberToObject(sbJson, "action", static_cast(sb.action)); @@ -2035,9 +2058,10 @@ bool WidgetManager::updateConfigFromJson(const char* json) { cond.style.flags |= ConditionStyle::FLAG_USE_TEXT_COLOR; } - // Background color + // Background color (only if not empty and starts with #) cJSON* bgColor = cJSON_GetObjectItem(condItem, "bgColor"); - if (cJSON_IsString(bgColor)) { + if (cJSON_IsString(bgColor) && bgColor->valuestring && + bgColor->valuestring[0] == '#' && strlen(bgColor->valuestring) >= 4) { cond.style.bgColor = Color::fromHex(parseHexColor(bgColor->valuestring)); cond.style.flags |= ConditionStyle::FLAG_USE_BG_COLOR; } @@ -2139,9 +2163,20 @@ bool WidgetManager::updateConfigFromJson(const char* json) { sb.position = static_cast(pos->valueint); } - cJSON* icon = cJSON_GetObjectItem(sbItem, "icon"); - if (cJSON_IsNumber(icon)) { - sb.iconCodepoint = static_cast(icon->valuedouble); + cJSON* iconOff = cJSON_GetObjectItem(sbItem, "iconOff"); + if (cJSON_IsNumber(iconOff)) { + sb.iconCodepointOff = static_cast(iconOff->valuedouble); + } else { + // Backward compatibility: try old "icon" field + cJSON* icon = cJSON_GetObjectItem(sbItem, "icon"); + if (cJSON_IsNumber(icon)) { + sb.iconCodepointOff = static_cast(icon->valuedouble); + } + } + + cJSON* iconOn = cJSON_GetObjectItem(sbItem, "iconOn"); + if (cJSON_IsNumber(iconOn)) { + sb.iconCodepointOn = static_cast(iconOn->valuedouble); } cJSON* knxRead = cJSON_GetObjectItem(sbItem, "knxRead"); diff --git a/main/webserver/KnxHandlers.cpp b/main/webserver/KnxHandlers.cpp index 7a661d3..21cd121 100644 --- a/main/webserver/KnxHandlers.cpp +++ b/main/webserver/KnxHandlers.cpp @@ -24,7 +24,7 @@ esp_err_t WebServer::getKnxAddressesHandler(httpd_req_t* req) { cJSON_AddStringToObject(obj, "addrStr", addrStr); cJSON_AddBoolToObject(obj, "comm", info.commFlag); cJSON_AddBoolToObject(obj, "read", info.readFlag); - cJSON_AddBoolToObject(obj, "write", info.writeFlag); + cJSON_AddBoolToObject(obj, "write", info.transmitFlag); // transmit = kann auf Bus schreiben cJSON_AddItemToArray(arr, obj); } } diff --git a/main/widgets/ButtonWidget.cpp b/main/widgets/ButtonWidget.cpp index 2224529..3c940e6 100644 --- a/main/widgets/ButtonWidget.cpp +++ b/main/widgets/ButtonWidget.cpp @@ -235,7 +235,9 @@ void ButtonWidget::applyStyle() { lv_obj_set_style_text_color(iconLabel_, lv_color_make( config_.textColor.r, config_.textColor.g, config_.textColor.b), 0); - uint8_t sizeIdx = config_.iconSize < 6 ? config_.iconSize : config_.fontSize; + // Icon fonts support sizes 0-13 (14px to 260px) + uint8_t sizeIdx = config_.iconSize; + if (sizeIdx > 13) sizeIdx = 13; lv_obj_set_style_text_font(iconLabel_, Fonts::iconFont(sizeIdx), 0); } } @@ -336,10 +338,16 @@ bool ButtonWidget::evaluateConditions(float primaryValue, float secondaryValue, } if (bestMatch->style.flags & ConditionStyle::FLAG_USE_BG_COLOR) { - lv_obj_set_style_bg_color(obj_, lv_color_make( + lv_color_t bgColor = lv_color_make( bestMatch->style.bgColor.r, bestMatch->style.bgColor.g, - bestMatch->style.bgColor.b), 0); + bestMatch->style.bgColor.b); + // Set for default state + lv_obj_set_style_bg_color(obj_, bgColor, LV_PART_MAIN | LV_STATE_DEFAULT); + // Also set for checked state (toggle buttons) + lv_obj_set_style_bg_color(obj_, bgColor, LV_PART_MAIN | LV_STATE_CHECKED); + // And for pressed state + lv_obj_set_style_bg_color(obj_, bgColor, LV_PART_MAIN | LV_STATE_PRESSED); } if (bestMatch->style.flags & ConditionStyle::FLAG_USE_BG_OPACITY) { @@ -411,8 +419,45 @@ void ButtonWidget::applyFakeShadowStyle() { } void ButtonWidget::updateIcon(uint32_t codepoint) { - if (!iconLabel_ || codepoint == 0) return; + if (codepoint == 0) return; + + // If no icon label exists yet, we need to create it dynamically + if (!iconLabel_ && obj_ && Fonts::hasIconFont()) { + // For buttons without a content container, we need to create the icon label + if (!contentContainer_) { + // Create a simple icon label directly in the button + iconLabel_ = lv_label_create(obj_); + if (iconLabel_) { + lv_obj_clear_flag(iconLabel_, LV_OBJ_FLAG_CLICKABLE); + // Position it based on icon position setting + if (config_.iconPosition == static_cast(IconPosition::LEFT)) { + lv_obj_align(iconLabel_, LV_ALIGN_LEFT_MID, config_.iconPositionX, 0); + } else if (config_.iconPosition == static_cast(IconPosition::RIGHT)) { + lv_obj_align(iconLabel_, LV_ALIGN_RIGHT_MID, -config_.iconPositionX, 0); + } else { + lv_obj_align(iconLabel_, LV_ALIGN_CENTER, 0, 0); + } + } + } + } + + if (!iconLabel_) return; + + // Set the icon text char iconText[5]; encodeUtf8(codepoint, iconText); lv_label_set_text(iconLabel_, iconText); + + // Apply the correct font size + // If iconSize is 0 (no icon was originally configured), use fontSize instead + // Default to size 2 (22px) if both are 0 + // Icon fonts support sizes 0-13 (14px to 260px) + uint8_t sizeIdx = config_.iconSize > 0 ? config_.iconSize : config_.fontSize; + if (sizeIdx == 0) sizeIdx = 2; // Default to medium size (22px) + if (sizeIdx > 13) sizeIdx = 13; // Cap at max icon font size + lv_obj_set_style_text_font(iconLabel_, Fonts::iconFont(sizeIdx), 0); + + // Apply text color from config + lv_obj_set_style_text_color(iconLabel_, lv_color_make( + config_.textColor.r, config_.textColor.g, config_.textColor.b), 0); } diff --git a/main/widgets/RoomCardWidgetBase.cpp b/main/widgets/RoomCardWidgetBase.cpp index d8274ab..3491047 100644 --- a/main/widgets/RoomCardWidgetBase.cpp +++ b/main/widgets/RoomCardWidgetBase.cpp @@ -115,12 +115,13 @@ void RoomCardWidgetBase::createSubButtonsCommon() { int16_t absY = config_.y + relY; lv_obj_set_pos(btn, absX, absY); - // Create icon - if (cfg.iconCodepoint > 0 && Fonts::hasIconFont()) { + // Create icon (use iconCodepointOff initially, will be updated based on state) + uint32_t initialIcon = cfg.iconCodepointOff; + if (initialIcon > 0 && Fonts::hasIconFont()) { lv_obj_t* icon = lv_label_create(btn); lv_obj_clear_flag(icon, LV_OBJ_FLAG_CLICKABLE); char iconText[5]; - encodeUtf8(cfg.iconCodepoint, iconText); + encodeUtf8(initialIcon, iconText); lv_label_set_text(icon, iconText); lv_obj_center(icon); subButtonIcons_[i] = icon; @@ -158,9 +159,20 @@ void RoomCardWidgetBase::updateSubButtonColor(uint8_t index) { if (index >= MAX_SUBBUTTONS || !subButtonObjs_[index]) return; const SubButtonConfig& cfg = config_.subButtons[index]; - const Color& color = subButtonStates_[index] ? cfg.colorOn : cfg.colorOff; + bool isOn = subButtonStates_[index]; + const Color& color = isOn ? cfg.colorOn : cfg.colorOff; lv_obj_set_style_bg_color(subButtonObjs_[index], lv_color_hex(color.toLvColor()), 0); + + // Update icon based on state + if (subButtonIcons_[index]) { + uint32_t iconCodepoint = isOn && cfg.iconCodepointOn > 0 ? cfg.iconCodepointOn : cfg.iconCodepointOff; + if (iconCodepoint > 0) { + char iconText[5]; + encodeUtf8(iconCodepoint, iconText); + lv_label_set_text(subButtonIcons_[index], iconText); + } + } } void RoomCardWidgetBase::updateTemperature(float value) { diff --git a/sdkconfig b/sdkconfig index b664f67..5ccc069 100644 --- a/sdkconfig +++ b/sdkconfig @@ -2845,8 +2845,8 @@ CONFIG_LV_COLOR_DEPTH=16 # # Memory Settings # -CONFIG_LV_USE_BUILTIN_MALLOC=y -# CONFIG_LV_USE_CLIB_MALLOC is not set +# CONFIG_LV_USE_BUILTIN_MALLOC is not set +CONFIG_LV_USE_CLIB_MALLOC=y # CONFIG_LV_USE_MICROPYTHON_MALLOC is not set # CONFIG_LV_USE_RTTHREAD_MALLOC is not set # CONFIG_LV_USE_CUSTOM_MALLOC is not set @@ -2856,9 +2856,6 @@ CONFIG_LV_USE_BUILTIN_STRING=y CONFIG_LV_USE_BUILTIN_SPRINTF=y # CONFIG_LV_USE_CLIB_SPRINTF is not set # CONFIG_LV_USE_CUSTOM_SPRINTF is not set -CONFIG_LV_MEM_SIZE_KILOBYTES=128 -CONFIG_LV_MEM_POOL_EXPAND_SIZE_KILOBYTES=0 -CONFIG_LV_MEM_ADR=0x0 # end of Memory Settings # diff --git a/web-interface/src/components/SidebarRight.vue b/web-interface/src/components/SidebarRight.vue index 90b391a..628eccd 100644 --- a/web-interface/src/components/SidebarRight.vue +++ b/web-interface/src/components/SidebarRight.vue @@ -71,6 +71,7 @@ const key = computed(() => w.value ? typeKeyFor(w.value.type) : 'label'); const showIconPicker = ref(false); const conditionIconPickerIdx = ref(-1); const subButtonIconPickerIdx = ref(-1); +const subButtonIconType = ref('off'); // 'off' or 'on' const textLineIconPickerIdx = ref(-1); // Map widget types to settings components @@ -110,9 +111,10 @@ function openConditionIconPicker(idx) { showIconPicker.value = true; } -function openSubButtonIconPicker(idx) { +function openSubButtonIconPicker(idx, type = 'off') { conditionIconPickerIdx.value = -1; subButtonIconPickerIdx.value = idx; + subButtonIconType.value = type; textLineIconPickerIdx.value = -1; showIconPicker.value = true; } @@ -131,7 +133,8 @@ const activeIconCodepoint = computed({ return w.value.conditions[conditionIconPickerIdx.value].icon || 0; } if (subButtonIconPickerIdx.value >= 0 && w.value?.subButtons?.[subButtonIconPickerIdx.value]) { - return w.value.subButtons[subButtonIconPickerIdx.value].icon || 0; + const sb = w.value.subButtons[subButtonIconPickerIdx.value]; + return subButtonIconType.value === 'on' ? (sb.iconOn || 0) : (sb.iconOff || 0); } if (textLineIconPickerIdx.value >= 0 && w.value?.textLines?.[textLineIconPickerIdx.value]) { return w.value.textLines[textLineIconPickerIdx.value].icon || 0; @@ -142,7 +145,12 @@ const activeIconCodepoint = computed({ if (conditionIconPickerIdx.value >= 0 && w.value?.conditions?.[conditionIconPickerIdx.value]) { w.value.conditions[conditionIconPickerIdx.value].icon = value; } else if (subButtonIconPickerIdx.value >= 0 && w.value?.subButtons?.[subButtonIconPickerIdx.value]) { - w.value.subButtons[subButtonIconPickerIdx.value].icon = value; + const sb = w.value.subButtons[subButtonIconPickerIdx.value]; + if (subButtonIconType.value === 'on') { + sb.iconOn = value; + } else { + sb.iconOff = value; + } } else if (textLineIconPickerIdx.value >= 0 && w.value?.textLines?.[textLineIconPickerIdx.value]) { w.value.textLines[textLineIconPickerIdx.value].icon = value; } else if (w.value) { @@ -155,6 +163,7 @@ function handleIconPickerClose() { showIconPicker.value = false; conditionIconPickerIdx.value = -1; subButtonIconPickerIdx.value = -1; + subButtonIconType.value = 'off'; textLineIconPickerIdx.value = -1; } diff --git a/web-interface/src/components/widgets/settings/ButtonSettings.vue b/web-interface/src/components/widgets/settings/ButtonSettings.vue index 7948278..c8cfb18 100644 --- a/web-interface/src/components/widgets/settings/ButtonSettings.vue +++ b/web-interface/src/components/widgets/settings/ButtonSettings.vue @@ -147,10 +147,14 @@ -

- +
+
+
+ + +
@@ -190,7 +194,8 @@ const conditionCount = computed({ op: 'eq', priority: props.widget.conditions.length, icon: 0, - textColor: '#FFFFFF' + textColor: '#FFFFFF', + bgColor: '' }); } if (props.widget.conditions.length > target) { diff --git a/web-interface/src/components/widgets/settings/RoomCardSettings.vue b/web-interface/src/components/widgets/settings/RoomCardSettings.vue index 972565b..129049e 100644 --- a/web-interface/src/components/widgets/settings/RoomCardSettings.vue +++ b/web-interface/src/components/widgets/settings/RoomCardSettings.vue @@ -166,11 +166,20 @@
- - + +
+
+ + +
@@ -184,7 +193,7 @@
@@ -193,7 +202,7 @@ @@ -316,7 +325,8 @@ const subButtonCount = computed({ while (props.widget.subButtons.length < target) { props.widget.subButtons.push({ pos: props.widget.subButtons.length, - icon: 0, + iconOff: 0, + iconOn: 0, knxRead: 0, knxWrite: 0, action: 0,