From 7b255e3acb21e830a517d1cf94da17b509dd282b Mon Sep 17 00:00:00 2001 From: Robert Strouse Date: Sat, 9 Sep 2023 12:39:03 -0700 Subject: [PATCH] Added ui for controlling drapery directions --- SomfyController.ino.esp32.bin | Bin 1102736 -> 1102736 bytes SomfyController.littlefs.bin | Bin 1441792 -> 1441792 bytes data/icons.css | 83 +++++++++++++++++++++++++++++++--- data/index.html | 13 +++--- data/index.js | 16 ++++++- 5 files changed, 97 insertions(+), 15 deletions(-) diff --git a/SomfyController.ino.esp32.bin b/SomfyController.ino.esp32.bin index 39984f8d13dcae53fccae248c1e36482a3ac7435..061212a7eb57892a75d2deb147f0654e48d2ed34 100644 GIT binary patch delta 148 zcmbQR+<5{JZBU3?&6oUt=SClmtdFLN+ZEeq{N5^Owf1VV^mCT0oM|(5On#^w(5%4N zuD}SwOhC*G#4JF}3dC$c%nrmHK+FlmTtLhX#5_RE3&eat%)ecMQNaI_;-$%dF7Irb hs=a4%9m^t-sF`dvZ!f&r`SVB(kL0!KNAJy_0|1ZwHf8_- delta 148 zcmbQR+<5{JZBV$hCh(xsEXDS1Y|Lttj-A@owVI1p=grlnvznhDJXK$OYw|8^b%o!opV6hK2dYoOIsyV$HMjXS-9;wC>UYTPVp4#3R89S_PXQ#ZG27 z5zW<(CnZly9%!hD|GAdX#rV-;{uXaH;HI(mLD0B^^s}UglIO;7Og;mP$#Uf6d8#s? z^DrrpH^B81&L~CXy-Rjkfo~=@aJ3UEhIEkEBhs%pfZ6UE_iWGA+He1oWQ5wiW1PJo z41R&c+6!vEl@(=1j_*!m!5tNKo>9P#kzvVMj=bI27*7?Bh18dSbza}agE3DeN|tlo zwX&MNtt2j^;G)3y0p@ML@+eUi>0;l0GBOG_Z6?{kKO#19eUKOt+IzU4+!GdW#59Wz zkqCJ2GqOlT9wXmq@WwGxBNq0OBUW_}lEm~g{nV0}36gYqLGoo=zF7ar!lbAfc*tFRnX5aj`fEzD+3@RvHO|H2XN{-At39 zH;)c&T1a(h(dR8Xe^Buw+yB)=~_jNr|f-G&|wNrpeosiYw434!Ms1y0nlrw z3E&z)HE1rRbHpnyI*DniRrBgTFhh%Es3V4|+J0P1AN1L2JhYY4I5_?U{he4jlRj;Y zFfUyO!G0xP&385)9(n~$nIFBJf+*?i^*2!}AjM7SXZSD1`|MBEYEgYRK;lj~Z zA(`8J&&sYSY?{snix210d&AYg%j{g`Y!KY#rT4>=<;;NdEi@H+`_nXN7)(cn3iUrn z3n5TLt)kCI=j!}JjFYjlI33A9greB>CxBrv5|j;2VZ$>r(2wteXvO z>+mpL5AlKUplVMJ9fgrWb@6BeeM{Fq!Z*_z{PQ~kKOSrpqE_AM<2D}G&_}Oc8Dn_-@!HgV0ilmvs#an0#_@1Xu z@MYsgiQYoTiN*lksjCM~r9HI8GOh}?w$od{w-wvrABJk{Y%U|=mzl9JP|rZ>oMYVgKlTa386I0&`&Y!gbWu^ZMtGr3}M@-e`Qloq7T+= z(&I({fPR!kox-*BEfQLXewL~D@q(}29z93o2K8Mm_B5`gPjX}`K{QzXKFO6DpNNmv%^g5L!aqiF+|UWhE>ceT%2uT*3S{B6{^9`G4ciemg^Al zMtuNGUad#M@@$-hNe=chQ@=zMHgx0V;&FUP(`cS6s$6U(vwekt1l`rpxe}i$7c%*9 z@yjB%gxq+QiIY#s?+5NGq#ukWC=Z}=;8mtVa0ZJIJ;kiuqMnf{9h|`&&|Sg?3UwxH zWBe>SB_LBWt4V5PSuk@E)1lYPI5a=TB4NrOm=(tSo-Ksv1uP9_euDRPi;sP!t6xja zSL@lY;q;r_3LSnnQsntrJ=4BHB!n(U)IWl0;Cl|W+GepNI8@4#MNtDQW9q-8!s136 z3p-XbC#-&o4S+Fgm<>wSvXs!TU^-L9Z<<*NBj=DUBTVJKMji`u*RwGqrj4y(*7FG1 zpy6>A3p=;4eAu{|4HF{*>;V@2EkY9ZmU*Cl4~vK0d)Re&b=XTx{SN)$J;6pa5w1f0 zF_sIh(@>+~Wqlw7&oHNO^swO;(b~l#Y2pQB%Lu6^vye>-qQTZj_5PRXqZDALSTZa> z#RiCmJ~mWW!|-brHZbl4$1QpkOrF9Rtcu|=8=)pBjoU?&gSQe@#XymR z|JJB-+HJxyj>kl6R`i<4_(^<|1s*BliNYx2LuhmaBGtw$Po;MO^v>d`qH;Q4Wr5&} zJV~U?epm`)qhZ#ZK zrpU*?AgYGJV*K5>xvkc4mz8EaY|G~l zbKL^2m-r6R(ZFkoYLldSi}Zn_k(6@#0q<{A;4=$gHUJq(Vn2ix<-m@@FhU4e~KG zmLVchsU@>Bo9UiG)5IO8_+KpW{Bb@Vyr1(3nA3;voCkaPM%ydb_Yb$U*bSv0zS8U$ zm==S9{m@{;yChyDJM3LdiN*I9Vk8dzv6u0^Bp!OF+LOffMfSH+l!W^gpB=3qS_~Qn J`Qk3r{~K}9??nIr delta 2650 zcmZuyTXa;_8P1uUNoJD0_rE8Z83LGO5%<_?Rlo_i{UFK^uobx_AU0Hx0Robi%Ww+;3iRI-ANtUTf30)A z+y3`Hd+!qp%?^cTN8iepM^jQ#uGXZa1WPU#&tKYj zPov@St#S5Y^SzgSo4j3x8f)}BC(9oxA?2!0xK!+)>Z#~UAa(d@op8zL9rsyrGQrh{ z&G%mNy|;Av<-P>hWC=z}$_{%fC3F?{!bE#t0;#>pgf8EPz`cfKg1Zl!@9pxX%2U7U zOK?w?k`lgPx`%l2vih6{eF^UU(nUnW^O`tSyx~;#raq$Ie%X(Ra}G^(7O%IAy`zcc zv78mL9D~Y2l}cq&S*g;f(y44zcB%}jOcl#v58qW;pR%hQZ?v*Jd?LzzVgHtv;{erD zXzXC680cnc>hma@33zxPn`Is(3JdnLsj4}~s!SYzgjHhm5jFg_lyw3~-@kYf+?;=I2yoBFYv6{cZ`I>1mbt5@3+?5@pr zghWYU{tpq8Eq=ZQ-w~ z)j|HL)hNTFC47cDy@dO$c>K?hg>z~lOTF<1e=8MNE`eM;{wDtoz8T_Ao8RkzcmzDS zKv9ZZ$ICEY%H8PO!izBKqt?R>JSdu0@_h7$`P=dzdHnn+ zpQJ{2@B;#Oo#I*Oj`KBXr${oX77I>Fw~EENA22+fT8Jj(BII9dFVeA}XXEjcR9jiqS`X`E)P>i9c zx=~`JI^Y+h!8oss0Lg7#Bs;IAbF0NKapDQ-R4%k;n@_i_Rz>5;wv4 zNf}{nzC`#>+U#hALQHHDcHGr0YBB1PgPNv@epK1&YD8p#(XEUqS?vEJdAGJHdrTNs z3|b*gIldOxGOQW@)=~2g3zr(uE-r$7>16^msO)iZ2drbSXhEb`_|&L`I0)`Vbho8w zP>XaUdeXzOqDwf@|4a|5mZS;16o02(2q;ueXtZ~Rr2#=Y!$*clFhyqr(z;N{Z9`a-lftt|C$qtvj1MlFkSHNHl-sYyt zY=GMW%`lXjcSwRA7la$9uZDrDAq>j^=Y2v0Wkq0;t(WMe#HfcU_`zbxR2w7k5*>rB z&>wT7Fv7g66R!Ut2Vl5UW?+Ekj?rE4^J`)Zn3%XGP4!t6<^Z65b(K}P^$e{+K^#Wd{zE#gRkPx- z8PI>5*5%+m7>M2k6qpY*6G-UAkvY_FUN_w*;U1Bl^N<+LYOn4>uTt`S7}wwll}Nw< z1A|u}4?nij#Adi@Vj@@OV&D-JDE~uPXQ6kBauGS_2orO=>DmtdNjQ`zDw{2)J(;mhXVh(!JJsHpv{_gN zp_)mKaG*_&=6LeBbSPK5+-xy3lb&PR6PqRS@mm+2X5UO0hL7ShO)ZSe7cDkMA}vJY zqI^!-&dXkA*1T3#h#xMaTRSfyTP!9|2Hns>S!I0i&M}U47N;Ok6WXlDPwt=&i{qJ0 z{qHw7NQcL8(3S3>Yc`8`2NllT!zk46I0r^H-QUF7orGs=UfIhXck&JQ3M1s8%A(4q Paw;R_dbF%XdgOlr=RHm9 diff --git a/data/icons.css b/data/icons.css index 36727d4..4d4d89d 100644 --- a/data/icons.css +++ b/data/icons.css @@ -296,7 +296,12 @@ i.icss-anim:after { [class*="-hover"].icss-reverse:hover { animation-direction: reverse; } - +.icss-panel-left { + display:none; +} +.icss-panel-right { + display: none; +} /* Stack icons */ .icss-stack { position: relative; @@ -632,14 +637,16 @@ i.icss-ldrapery { i.icss-ldrapery:after { width: var(--shade-position, 0%); height: calc(100% - .05em); - left: 0em; + right: calc(100% - var(--shade-position)); + left:0em; top: 0.025em; border-bottom: solid 0.025em gray; - border-right:solid 0.025em gray; - background-image: repeating-conic-gradient(var(--shade-color, currentColor) 0% 25%, rgba(71, 212, 255, 0) 0% 50%); + border-right: solid 0.025em gray; + background-image: repeating-linear-gradient(to left, var(--shade-color, currentColor), var(--shade-color, currentColor) 75%, rgba(255,255,255,0) 100%); background-position: 0 0, 100% 100%; - background-size: 0.05em 0.05em; + background-size: 0.1em 0.1em; background-color: rgba(71, 212, 255, 0); + transform:rotate(180deg); } i.icss-rdrapery { width: 1.1em; @@ -667,11 +674,62 @@ i.icss-rdrapery { top: 0.025em; border-bottom: solid 0.025em gray; border-left: solid 0.025em gray; - background-image: repeating-conic-gradient(var(--shade-color, currentColor) 0% 25%, rgba(71, 212, 255, 0) 0% 50%); + background-image: repeating-linear-gradient(to left, var(--shade-color, currentColor), var(--shade-color, currentColor) 75%, rgba(255,255,255,0) 100%); background-position: 0 0, 100% 100%; - background-size: 0.05em 0.05em; + background-size: 0.1em 0.1em; background-color: rgba(71, 212, 255, 0); } +i.icss-cdrapery { + width: 1.1em; + height: .9em; + background-color: transparent; + border: .05em solid transparent; + border-width: 0 .1em; + box-shadow: inset 0 0 0 .01em, inset 0 .01em 0 .07em, 0 .07em 0; + margin: .1em 0 .07em; +} + + i.icss-cdrapery:before { + width: 1.1em; + height: .2em; + border-bottom: .1em solid transparent; + box-shadow: inset 0 1em, 0 0em 0 -.1em; + top: -.05em; + left: -.09em; + } + + i.icss-cdrapery:after { + } + i.icss-cdrapery > span.icss-panel-left { + width: calc(var(--shade-position, 0%) * .5); + height: calc(100% - .05em); + display:inline-block; + position:absolute; + right: calc(50% - (var(--shade-position, 0%) *.5)); + left: 0em; + top: 0.025em; + border-bottom: solid 0.025em gray; + border-right: solid 0.025em gray; + background-image: repeating-linear-gradient(to left, var(--shade-color, currentColor), var(--shade-color, currentColor) 75%, rgba(255,255,255,0) 100%); + background-position: 0 0, 100% 100%; + background-size: 0.1em 0.1em; + background-color: rgba(71, 212, 255, 0); + transform: rotate(180deg); + } + i.icss-cdrapery > span.icss-panel-right { + width: calc(var(--shade-position, 0%) * .5); + height: calc(100% - .05em); + display: inline-block; + position: absolute; + left: calc(100% - ((var(--shade-position, 0%) *.5)) - .015em); + top: 0.025em; + border-bottom: solid 0.025em gray; + background-image: repeating-linear-gradient(to left, var(--shade-color, currentColor), var(--shade-color, currentColor) 75%, rgba(255,255,255,0) 100%); + background-position: 0 0, 100% 100%; + background-size: 0.1em 0.1em; + background-color: rgba(71, 212, 255, 0); + } + i.icss-shutter { width: 1.1em; @@ -777,6 +835,17 @@ i.icss-garage { background-color: rgba(71, 212, 255, 0); background-position:left bottom; } + i.icss-garage > span.icss-panel-left { + position: absolute; + display:inline-block; + border-radius:50%; + border:solid 1px white; + width: .1em; + height:.05em; + top: calc(var(--shade-position, 0%) - .32em); + background: white; + left: calc(50% - .05em); + } i.icss-lightbulb-o { width: .35em; height: .1em; diff --git a/data/index.html b/data/index.html index 1a8cd7f..ed27df2 100644 --- a/data/index.html +++ b/data/index.html @@ -3,11 +3,11 @@ - - - + + + - +
@@ -313,7 +313,8 @@ - + + @@ -327,7 +328,7 @@
-
+
my
diff --git a/data/index.js b/data/index.js index f4f9b28..26a312e 100644 --- a/data/index.js +++ b/data/index.js @@ -1196,7 +1196,7 @@ class Security { var security = new Security(); class General { - initialized = false; + initialized = false; appVersion = 'v2.1.5'; reloadApp = false; init() { @@ -1982,7 +1982,7 @@ class Somfy { divCtl += ' icss-window-shade'; break; } - divCtl += `" data-shadeid="${shade.shadeId}" style="--shade-position:${shade.flipPosition ? 100 - shade.position : shade.position}%;vertical-align: top;">`; + divCtl += `" data-shadeid="${shade.shadeId}" style="--shade-position:${shade.flipPosition ? 100 - shade.position : shade.position}%;vertical-align: top;">`; divCtl += shade.tiltType !== 0 ? `
` : ''; divCtl += `
`; divCtl += `
`; @@ -2718,10 +2718,22 @@ class Somfy { document.getElementById('divSunSensor').style.display = ''; break; case 5: + case 6: ico.classList.remove('icss-window-shade'); ico.classList.add('icss-garage'); document.getElementById('divSunSensor').style.display = 'none'; break; + case 7: + ico.classList.remove('icss-window-shade'); + ico.classList.add('icss-rdrapery'); + document.getElementById('divSunSensor').style.display = ''; + break; + case 8: + ico.classList.remove('icss-window-shade'); + ico.classList.add('icss-cdrapery'); + document.getElementById('divSunSensor').style.display = ''; + break; + } let tilt = ico.parentElement.querySelector('i.icss-window-tilt');