From cbdbccc699b62df771cb87b80a5790902ca590e3 Mon Sep 17 00:00:00 2001 From: Nico Melone Date: Thu, 13 Mar 2025 15:59:53 -0500 Subject: [PATCH] updated excel spreadsheet --- .../.aws-sam/build.toml | 2 +- .../ACW Daily Report Template.xlsx | Bin 160229 -> 160387 bytes .../test_thunderbirdfsreport.py | 31 ++++++++++++ .../thunderbirdfsreport.py | 44 +++++++++++------- .../ACW Daily Report Template.xlsx | Bin 160229 -> 160387 bytes .../thunderbirdfsreport.py | 6 +-- 6 files changed, 61 insertions(+), 22 deletions(-) create mode 100644 EKKO Reports/thunderbirdfs-daily-report/.aws-sam/cache/67ab70ce-dfbc-432e-90ee-b104415061ba/test_thunderbirdfsreport.py diff --git a/EKKO Reports/thunderbirdfs-daily-report/.aws-sam/build.toml b/EKKO Reports/thunderbirdfs-daily-report/.aws-sam/build.toml index 35b1ec3..a93d82b 100644 --- a/EKKO Reports/thunderbirdfs-daily-report/.aws-sam/build.toml +++ b/EKKO Reports/thunderbirdfs-daily-report/.aws-sam/build.toml @@ -5,7 +5,7 @@ codeuri = "/Users/nico/Documents/GitHub/ThingsBoard/EKKO Reports/thunderbirdfs-d runtime = "python3.9" architecture = "x86_64" handler = "thunderbirdfsreport.lambda_handler" -source_hash = "93b500c168f513a7a25cab048f85e186f10d9e9cd5e16384ba4c71c272648df0" +source_hash = "88b16cd7e5de563582281a46aab2ae8c8f286034857022c8856d0366eb522475" manifest_hash = "" packagetype = "Zip" functions = ["ThunderbirdFSReport"] diff --git a/EKKO Reports/thunderbirdfs-daily-report/.aws-sam/cache/67ab70ce-dfbc-432e-90ee-b104415061ba/ACW Daily Report Template.xlsx b/EKKO Reports/thunderbirdfs-daily-report/.aws-sam/cache/67ab70ce-dfbc-432e-90ee-b104415061ba/ACW Daily Report Template.xlsx index 9e65f8d71f29f4ce1d85abe28ad8f9a59dc376a0..27400eef16901e2a76a897f55d7649e08ff03515 100644 GIT binary patch delta 18742 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 L6=0p_5s<$CH`sXm delta 18641 zcmZs?Q;t2E8PjVdZ{M8O;Syi%Rkcpj-iNhmBOLck0Pp9bI zyT%v7qEe2P>!E5g#cw`-y1O)`pV-pxCxC$pNmH;@!muvLOu$zx8cjjS0I(G>)`k@X z4Gic-6|-2ZVsScoYXjg%Aa+Q?ZZKiGbe@BwEEO;m(-5K!IXFxP7TwG6+KD+J8j4S< zsrDq%C`8A+C+2#=BxRC=Qxe4JxhH$iQDC#u18txJ`vddV_8bKYLstJhtPo(IkDK66ke|`)_L#E*%zF;t7I-gut2J_=0+yF@HtpgRg$3B zhxu$I*M5uqD(@x_fcRCobv1&T{#tx7vQxfd^Cr-by#kFYMVoBbVN^(Z2#Ophs?upq zHVjLf*PC&-z2&dV(}#nzfp}4W737ga{{$O-xu~`6k~nD=vgtn$T(>&23GeORQ$6y+ z%dQmy0s`N#@zMWk0>RPNY1ak)WNa5bA1HSaE641s%Y(NL2ziOASXY+*&r1t_IZ2eaSpG7s6jR>-4R8d%nOF4vlE{>WP9>C%qLvje;p58NV~Qact)0l=)PnBk5H!PoOPFWR+) z$?H#2b1vb4p|~4}gLeF!PL1S^AwS>BdqZwKMENzsKY!r9 z^W}OuH1-T2&_rqrVc9dsX7ba%6@Y+%ettlK6lFk@qoHA&_~9{N0ENDI%41MKK#__- zK=A(_@U&%garLq_b7Anbv%S={i!Ty~`_`}c0WS2nEHU?jCL@z}-n?X3lv-0M*^*A} z{1OC_vh<1!xFpwj>RV$K#1e)Ag`22Vl`kU)zO=B7zq;d;<-gPm_h|{5f9|1X+>Ye6 z@RHeW?s-c2xzf4;Sn*EXLpuTtPd}MaF zaT0s#@p-rnwRuk%#t7H)2(e%x3$DpWG@X5{kjDS;OJ?o?9AJHQeXw5(`=YJ`YWM2Y zpBHHc@u5ivG|f{2oLQxlXd;~LFFy*1$;F_mHE=89^X0m8tGblN>A!L@<-Fcr(J>9) zEQ8`8Vdh4(y>8`-l{xjjYd;oQXE5!Xu)D4~;k<~+(|y!u1U|+P`Segn1mrmN{r&&y za_YCg;w^{)R71d4Y#Z-;;Bwf&ghJno(aKr1-wV{WS zNEf%dE+=z+KoWyV9rv4XWCcAL_I>`&NuDs?z1 z`DOT)zt~F_o&$^x$Ym~oiL;<@#UFF2Jhk;tIs4{@i@q+&hG}(#f zVaTrxF{y5)yB_OsAn+&g<)Xk7Hf+E@!7?I8AEA9U=LobVYXngUN7Qxx_FWeiyd!do zI@|jI&|K?7jtV8Iy+aD`Hpqn-e+iC`Pe)*yVS<6Mgq&e%f_J0Xzkog>2J-(+(=!~u zy8E^&wy|h8!^CpVzBt{*w%-89_%nW+2($1kYvUla2*HIrS&T(>IUW{mn?m|L%%g=J z8zuscFJiY$DY1zkfSeD6bhC_%=V!;3Ady7|puyqzz7_+ju%!#iCO)-*Vj}}pQrW|j zK3ANaDYM{BSuJC~nMZs{0G3YT7!cuse);C?5qBF+e)fM=7#rS_9j zx@{~W%9v`)7Yozl38@Vw%&1>hNDudGUXSX_mcz3_4~&Mse1iCj{iJt3_D37=_T*p& z*qL1Ugazj)zJtAyEkhOHF&!1b)14@&+lWF5$~yB><%6<=t< zaNWO?^bKP1FsHthWq*oRI?$jQ+fMC&%@*MdR@iY#lG!NS)A~g;D(i0tgunAq2QjBF<<_6`J%5f;TGfDCtGHRP5I`8aA8j)@Ta536Y zs%UQMLi)Rv*J^(+!|v<79jATQnAVc9i&9B3(2u%4HOjGTQeSI`Zb7q=7s7ik z_XNos;nH)($|T%D8j>e08*hSX!Kdpk%C5*3DuBQ9xUZFY;!|4^JJLrp*0t9 z@5W&uNtUDzkqceOu~dR#MqvI0Ocuom%s8!Zc6r~d+sw7>Lz<(Keno7KllVk>yQev> zMBy4e)6x_Unag$+3g>Hct8&g*3VkRRH3V^`T16OwcWLG}g1n!VL(plC;Lxw^jUrw; z7{W+~bIOf$#igr4l`97*?+hDGm4M=sB2%b~uj9W?V?+!<>>}(J%P~F!yo*y@fVtGnu zKeMyN5&Spy6)YZMs{T^b}9!2BzT)8yv;2TFASiOI024d`4Te?s?# zDjuk1tKCg#WeeO7VNgr(I|f4vNF>C~ZdWwqrWJp|7|=O68GxF6*j_n3Ra<8z{N*yB zJ1Zs9pgUO((y^|bDK&aKjjkZPa2C^@HfDVfsx7x|^L^a5NTHK35ZrP;cCYinU~T*J z;9AGGnpd`()T*=!5Y*uIe`vYVSp}|NtlEbLJ92G-EYpAwPnq&ljpDpU)a^*8u0F;5oM1TZ8kqK8tM*r_vF2{r5jKra$dQ+ACEy8=yj1H^i`cmI zs)B-Un=t*A-IE6$(xI1b%&)3EYS$>vPj9uN7jm3{q0Vdta1jr!Z{&b%-u~k%w;*e| zJg*Irbp7i_rg5`0wbcA54)SaL zu^}XLTK$%;vYru)s-Hk}CSPK(K02ti7uOQJ=SF_orTYq^oLT0}%p{f^{_&AB>veI+ zj?`}<*0nq@fNk^Pe0E&vr^T|vArh-)Llge%$XDj7Y=PBvlexmDdKy$u1AJQ`K}UdG z=IZ1+*TTcye#+b|V4#m0tSsZtQ`OhGM8@#HD*}c2O=FBI0XSD>NdA5ZfDS!Fg*QOn z@zBCSGQ$g-Q|(hqZ^^Ux`Da5J4dTO?gdf@D{!kxaV{0b`!y$I4t|K^3SPDBFp<9PR z5+Xa`C&};EQ6wU>@1I48dZ|lNFQT2Qr1hnb-^(fxVXI3Jel2BHNuQjG#|o9TDC;X> z4(X`iQc=4q;r&$ylh&&qlwI3#`G6PMahM|% zv2E_H{l6KTMYlR7i=`K1w@1Ejeti;;HRcX)H0$9d@p7U_#fIfLgt6wo9+#;l>f|#Y zV3YH0@i^JRCWn+_XTDrsOw6BcVqiuTQSuZ{TF1fE z7E`UcZ&Le~PJ6r$c_zzzo?hJ1*$uC%vmB4CVDoh=@EXo<7upOyu9P<&{XcPOWFO7L z4zUtnf3pP2crJh83jm(8<#(U-EY=aY{}wC}GzaY|fWpsf8C7I~XY{vE){ap%Q!J#7 zWu#4-)YeiexMN3JcosRArb8Wipp4(>2f`tvK0o>d@^VJ=m0i5^e}Va`adC6M_qkFTNKqN|2m{`PsC;Id3Uc&iU25+O zz_wi|DYcH`Rz-pri5eb^%$-~3%`UcTGnE!Flqd;L<|e_1QK{a_92Bs^klim~h| zrl+-S`?N3H+T3a!R9|-!X-damZ!9>xraj)|CC%>q?IHI zEKrNZEdc+}N&8*K9Ux@lLNN9LN%`+5~!swVkh8ca- zUa7-UX@EbH#})Ez{TD348-BSU1VLo>CI}#*FCo_1syQfyNgT?>@ulg#xy)JNu?uhF zqY0Op$1|mDdhr<}<)<6+TSyr7n`SK20l-~?x-m$gs~b(^kPNkZ7HKMbn~r&)s5!ux zbX$R3g_qHG+bk13cM3AYOhhSU^VQ7O_Qt?3lK|iTe5XPz(U##7vNgD86Hx*N-;0g?FCdU}9~5B|D2B;r+5EO7iHE^}vFQKb(B|+9s^|JXE9EUB zxrTFFLJKOCGK-?X;y!W{Xy5kHvcWw66F^u_84|X0vmWMDt@I4&fI-r5UEz1tbyr=X zzJG|9QK5hImD1hk*}pUMD&;d!oVteht$o@RfEDLI zxfzd_{gAK*Jn)5<{%#DydROZA9~1IVLg->G(#nHgRe$rO-KKASCWJYbgR#2pRfxKHrBg{MAdu~dNwFV3*{scY+{LB{;rhCxiuG3MA?b@0SOr@37rg-S!@_rEl zHSsck{y?J)uEoXwlOA;GLd?MU06mwjRusP**&ooU>`Z=F%R~|@shn~A%p`4voORSG zyPMo@K{B!i3TTKBW9r=Rmurv$SwGDN+%DGMR6;ZqpmbP6C-)AEhxakDG@N`YM$|M9 zxs!1Y_$&!J`FpFiZUXq4R;!etLuM&0`L5%nwBvZnUH=DenBUlc_bZ8z0qla3`VdNM zInYXAvEtY>mg1A7>hpN-6fqW}{q*@9#`5+;o@pFet$u$Jgk|XiKH-6}rS8wYz7tM1 zOp`>L=YD&MyA(F>v5|wQ7vzwOX-P%rnC$#X${-ThF_TEY@4%z+KNs0{B+qSla6uREWn?la?e*J=Gemmupk;#~{N zA27*o-34e$$odH#hDD;q z%?c_smbyA)R8-0o-Z>~OkTM*Y&ODP5P@20)S6YBKTx zEehTSGLv_2Wct;1zYds>Z0L;x5BPI)dUyz9Viul0mYTjdPW$R`*CYC@1+{d81W}4R zoM6M7OgRUk9O4+=XnxAGDay)F z@-bkGP)@Nj>ygmw)p6pz2y_nzD zpJQ*|T^c`XpvDPAoqzIf9Q zhX*-%XQ)r%fSMn=K74n&xd-{0xHY&MqbWDuEr*Yx)jb6}oPwt25^Icl@b_}tJS?jk zB}E?Q&Ju2B%(Ws3LhR;$AADZfA8`@?;IPkQ!|{NOy`>vw(-$jvt@m1XkyZLs;$TV( zMJ|zX0GMn#;Yo;0L6}Pdz;|_aU1QcZJ-vbuo0G?5k1#)e zNts*fDqFpiD!!ox5Bk(pm~^=ADVPdlvMW}ryZdmIUSh12oqe$hPZ+uFYJKlMqYtf(&tPm#Y_e>*>U>>%Bg;n!$c0dd_bG ziHFxDfFpQ_WpdWo*Spl3wseY)VI>uFj%($EU z4Nv_&%2Z5R22R#LEpcM5?hhjbg@97Tg48>B`VGGjUSmz^@;#yIy_q<9q0hPY-~J0t z{4F=SFhtgm)1SqHdROdEF+q@cvJ!b7efY5kUJA^sF^#|J)|r` zVHa7H-u3yG983%h@% zOceYDo_?X6>7!xllc5lxBi5c$=eH3?1F-DSu8jZw-K{OZ<V)Z%A-4GKY?JH z#qnxtDD9JU+oOTO3yk)F_AnAdnb4lP0!8DKP5!3SsCY9SVV=gf>#!k_D?ira_g03g z%%sUj4r%#bL&29;{i>~hW1x=XDCbEZ1+Q4j4}8 zoGU98TBKf1tY*3OIkjqVG)?2rwQ$fHS^DUwp`pOZVx&MVvFfrGC+H&SAeZVH1qfuV zq)m?=>jttBm=7wl(@KhnEKJE0;J}!y<1Jn$u=Eu&0cKRq!N}s0P9b0+R<)dol#@Qc z<$)1bHiGb!w@6#%7poWOHPLT<0oeJHAzD_QT3L%S9w{h-I3u@sdPCh zO9Y?6HSlE8hrvH(l_8>q$TQOfp%Gg_FZy3CT!OVKn?%Dpp~36Loj(GGH}hrLCgjs22>fMUVf4`@Lz(oq`gJi#<~uPt&6~+;gK20Nc2K`E5z- z8>xQ{Hx{5$t(<2Gn0BN}lfYzfH7*E6a{DQDEFh<%$V%R-nPR2Mr}D)bMU>I5hoBH# zR<%>o9lQ}9ZN8eVQKPq|SbI(-VetyW*VaB18+XM4<)SUMgY5VqwLd?H6W4>hz*N2j zTX_Sia4u>_h1$#c#odu*0scZOs#X^p^f~UJP1IOvWD@Uh71KfwPjoG?tJ515LZ>iK z7>Es5demB1ViAc*pI6hmt65(I0jjUK1izBsw?UUpuKx7Fo!b;X?1p$($Eg;w>DH_` zPin(xtx(r-fNox~8l(oVOsch>YZN4zcw`>BI~~@Jg9{xXHGn;F0=`GY=nO5+CR^wC z{iPXsxtWRuza!(OW+3MwQt#@MxG?-mjVR! zzhMUiK4J0Cow{A*uwKhWsL##GVf8r}Rr}lT?ychw0nVInu*rg$XwY&W#Y9&BScT|6 ztb&nF#0?AyuyZ(QNB-6?_z_Y=Y)1?=o=P*;(L6Dny1V*4LB4KUC)i+M8QHobS)5k< z>zUwvmq$c7?lY-v>oDLk2eDC9d5DLG{<_R8k;kAS0o%fFO~ASn!3+I7Oy zO+#k`GC?N06*Ni}Z^31(a9joqxnx`7)x=QXoyEXGm6$DHnp+>#c&$cZN$fF7AkWj7 z#--9MtV_bLtT*m*hI}~*&(g&x$}hVj3IE6m-Tr~LbjR5ipQ@#WTSX+PQ0Hm^wQhBk zgvUxg)2L#i@Zu+)fS;ACx$8XBDH#~s!f9N6_ELt(wY&I z9ube!HtwpUB=qOv>2cp_tKDJ0MXoEAPD>|>66JESH_~~|BDS3lN%7ODM_Y{*O*+v6 zaL?ZB3hen8IobOVOM!_0jxB3gX+%?wjmW`uYevFDiEMuRyJ%RZjanpvQuvh-IHAV; z7YNgG5^hhB(X40SUIXNv3|R+_@C@yylu`g;AHW580eo&D1`}!{>wXg5Iu&;kXpe$5 zui3H74)c~!(!PFNqK{ZG$_em1c&VZR5>wu5y2OckRheyZ%`~{69)$xgc^Zy|Y(U#m zgQ_6W@e6+!QBrU6T66Rn)JWrNIo4ioYG(hIaieI_8q94%(%Su^w{Pp3;Y8?mboD(4 zpV7aBSJN$k30BTHN4y)!dQO3acVZ)NC*Eid|7mm`#5>>1)M$sf(kC+ z$7<3r-NlXC_~M2Zpu8niq)FyG-dBnONV=q2U!q!9$tthVb(F7CqZQWX*6B(=1nQvs zBvAbUOh*0Ew+Am7^*@ai)n6-N&|689Ap<@SAqKO+EyS~q{7jBY3PS$F7Nf|Q`M~q{ zQ$bMh3-u?B4y(Z7qk&fsj8F6c(2qxi=cOhoh8B}%eXE-2JM^x}#0dE^Hlf4KKM~ee zpPM0NRWg77z_?net5E**6Mb5Gd{J=nln_>*pgv_u^@P=%&JthCq%hex;0b~;&ARrH zv3yx7(4@MbZf>M%8bc;8o=Fs``bAYKJBGL7o1Kv(gKctS^*wF7U542Ks&B-FkRAs@ z^qg^rsCf=t{C&hNh>r4ITae)-%Yi+bkt+>o3&BuoV5pMt1IHXy&hO#t9fG zl5_NHQCkE%tnh4xBE*mk#DHV!eCUtXhINPr;2mIIFpG zZ#U%22-w1qXZz#4DT+4$7wW6x?}BjqIjF4xnY|=pnJSUQk)u-Wt%UGW{-sFi$)Cs; zyZ(VtrW$g%37hQGKLyPnjBnEL-G&hYZooq zh2Kq(%Jb{pCAgaV|9E6Y_I0#@Nvk%#j8cv9=kLBnVu_@i1Ku+(Oebcm@RXneu?C2J zG)ria4~GkW(j1Y8sUOG>5OYmhFMr7#<_K3^`y0}$=nz0inNj>C6$5k$p96|`KyCLaj(!NPNsr(Z7{!Yy-{5v~brQ=E<{Ssjju zivI?Gj3-qAU3$wYI54C(=Si7sZ8kE47W=6Epn&0@%27I7?vVwC4u;qLs{QnC_{+l*QPJo7he$FBl^8d#r zWdG$70Na1-MRe>O{v}Pm{rkTlb8GwkIXV9&O&Eo9LrKTB4Ijcdw@2{bL(?pEFe6o| zI~%&zfBad=j>Z|ClIhsVF%6U(h+uG2?9h!q|mham_0Gyf(@z&wTKGdGBcjS}7oMw_NzVY= zv04)o>2=j#is~Pni?Km-TK`N6EW}n}m)_;%?}B`38mtHyuH^ruO)jNq^N^i>&Dj*# zBP8QdT9Kq%Z?-1k&vI6WyNL+Qp$bLk;dkr|p?J>e0hQ_9EaRFR7&X>nqB&qTmS^O~IUWBJfl44k99Gq&sM zh^WxCNrc6FIeNXk|9o7<$Wcov8BQcJTjgsvU%MONA_XM9*bW%4 z^Pr&d%IzB^m7YWR#f4RPp+=H0p_vIj#U^%89R{GW)+C_>Es+GW2>l`OtymPjKmxZE z@pc|z!F36MW3zxrC}?fsHoSuc_WK<$(}c@CP&ILf_;sssk$;W&EP6 zd^a+c6!c+N7ZMvc@$L@kQvkHkeW*qsD6HCIm})7aomYel5%H%Jx5u&ZTzOfu3O)yG z`V}5C~SE+kV@pW|`OzEr7Is+i`;H2oT_Jr&NwoMihunH61Z@q@vUjZX>J zlO~r_&Uz$+w6A= zXYV_JxBfCJQ+wbpT)Gzl%zG&K|0)IMrq!Xb0M;?YGg~r9X%QD1F_4uxW7HsYSTL%c z_4kWvDj*-~O2Pd?mwN@xx(yG822~fP0}O|3r?VTOH?7L9H>Xg*A?HYZdP9`McZ9i( z63Oz7WFY5bOVk4(1Ob@&C!$ml5CW3DSwxo?M6I;Fs(KK9U;0 zzeuQEHK#ukz~NAz^ifV<$|bcW(U;Zgry53NDN2)ZYgFALrvU0u;pTW|ckIYuquLom zPnT-nVJ5Pd;z9|p13`K&$zxJY`>g%|`7)v-i%wk`D45eg$L6#eLmkOO@`>r*R4s_+ z`117)e>w25FZvD2|G1Q*RA^PvTosVB2`*Dk@eMzrljfseTYk5ht4!5i$!P``2%Yvd z+m@b%YfqoE0O)@IH?F<+IRx&N;RQrT@YdxeYB{t^C|X+5?c`uh%#azQ5(%;?6>UT5 z`{YR}fA6(VbLsm)VSD*S2e6N0SW}`c>#UGN1(kdHW761k@P|_OEopvZZ35tjDlT8o zZi1{a=n2l^@AsnrElx;>fM<9Ac@yLLj?V{Uz^qQl!|~K$M;rJ_X-UY#7B;~^q!Y=$ zhWvDiBoROsv4YDV1W)-v#5!&)*nxw+Pl&FM%kZt&1>@!)tK=A|D!VK-!v13w#&{HD z`~uzF|HCRDpl(=foB?nAOfP+i(}W1g`R+v8Ts6Kcph}!~`W50Bmq|hGG&~zay8Pyy$0R~6x1NR-<4J>5hSN@k?QbW;{0B@0FN9_{Lq@Ts3I%%PbbDANH@QTjfhLAQZW$^cqAHWvZy`6 zhY{!18lp;j)Yl#6)%%_ZsA3&x=uxWfs95jO%NR!hp|`(}Cna5RgSalr9>91K3hhm9 z<%jj-{E;c&K`cE3mK`W*0D~RM`o=?*ViQ4}SFQeS(D&B?kaft>T*Xa{@*i_@c=z-K zzDjEp35~{7VIVhr?onG=!THaeRQ@w3ssA-6=l{$}^yq)g$;uxCxO3Wy2f}~mBzn2x zKjy@-QX58XrlOVub<-}NacY3(h(_m$R&k=COVGKC&ROF)sK9AlGsv3Y=a>bfzRA^0 z#}eSwM>c{kBlpMz4ah-zgH8e7M)ysBlUkX8|ffleHTBE{PA#AaO zMe%xKB>TB#bUhurtF;>Xhbs%eXtiz|z2Iw6M`P2|eTu(bhVFin1EJ9YSBw=Z8UJcI zDv5!B(Ee9ttBIwNv#Sf^e-G^c1r}|k{{V}>fZY-*Ks~cGF~z zGXlp`So#GHMzo3~Rb!8Zf51{~Iu(~)y5%0okOZlLGV#}u^TDat$l$Yay2C>z)m%B| z^OWe3k471g$;?dn=1`{)EV8>477^n}eL8NSboJx>xFn!oJme~r(m^9B&4)zt$b|m} zYZ7HtRk8#=6Um2SvSS@?RA(0YnhJDJ33eC~>D}!;?a7th zkRorYeXNRA7Wz8}t3E)#UU+SBvAk^ah3uG4O?e8C$t7vF<2-mS7FbVZU!&m$CO#Qa zxIlF2-4+u6Iq&dSLVoyBO4$(eFI8xyR7oSji%I>r zBDy?OHx&%va-DvXvKZE;#;NC;OH<+jf*suVUel=a#C-AXSm;gz>wx-QZrheBzt9o! z?LrO!t$Y=DsGY7d?CRlh3r!BnY#CXP&=wnaU6=i)(_SsJV~QK8FHuS2+O#8gVGd3f z`(*|KEW?bZ(*Cm{xr|AhNZD|JAL^q;Rgh2LX8BBJ!HJ=G^JzA4zrX0gc)%j;EQO!^aFyu<~UT#P%M zydyOa4=Ls7yJ!VT`So1Pcj~b(pX6&BFoh{1(}t|pV?@3Fk@T(Y^-5Uy5gp`Iw}y~( za81NX@Hk{R4~+lYpO-80AU@S5V0IO-cCJ>Sqt@GeFo1t@1CQ96pxSkIg$$G=dvp}! zgfM@mmxAPd%)Aq`Lw`seBf=}F&_=^|xr0sGftINv-GqozFt5+HD-3Fy{t6$ zqR#NzdO_7RT@?BB;%_0_{Td|7a|IAI_<$4yL|4knfGJHhIY8Uy%#uOSK|S|ZvFONr*bb5 z@-W*L`T#?P>uB#%4WDDc$ONsXQrdVEdqk~5-8KP3bcUMpKuOgHpy3sIiw8bBNPiyo zdILKi_Y_FY9y5SE&W?F<($XL$f3MZTEM~A-8E>Q@`#NQ^CmdbqH;dYW&!xKDf|&m8 zvHr`{+e9W_fErdDh&Uf$qD+Gxd^x{ruN#%Y>Lj0LKbxb<+l@Q+b!*6khjN7Xn6-8rC#Ac)U#9YZ(ABFCMQ9S=hq!^p#Ir+)s%Yk&tBN+!~VKy z#?EN8Ymg_O8Ak+ot6>9G>lK&5wZ6t!2BRU;$A#*<01L1(3}7ugyF-90d?GB1S0a8R z_}M8d&GnE$lvix?-*$yJVJHBAvPmCujqjF%S)f0yi`L;eqY^ZpCteDYLRT!xp+ppZ zQ-`6rw*=mXDlKgFA?J?SfvpCHTBw8P3K{tv{?K9qx7h+PPX#ut3WmjGD?MC;Y4`#hA7Z@8)_)pH6K42)lwg}N=>Y^$n&DliKoO)av)bakUr*KDWU(lOh+HbwGKtc!9pzD*-fOa^b z&zL$tSiWnIQbw>k-U{gg*3xK`^6lMIC$;OmWMh@w{5^KaQs4e4oDol?o?e!k8=SWF zfh^8;p{0&0WzZtaQWF4c7^qWC29w6JAPQ%juDys6BdYvgkOUeZE!_kzeek)=d5#Lc zQ_!xVs;}VQ8zE!cpHNer?@)+ec)Q&E31lhz`m2qGjg5}b>$8VX1RFobPLFMgD!`o| z2w*BL!?K7#KvMtyQNaRA|FH!@Pj_?#0SDwHZ^dmgA%)%0KH<~thUZAaARDy^F4cz6 zsJd_29LPq9p_H|9*{yioaMIPI{IV<&jT&R!{bbF==EFOWx)ih`&Q5vfi$}3+pB8J9 zKbvwnhND^tW9OvL|h=l|hiSoqW7? zAAUV=_9@(1^TQCc>w$h5@)f9|dJABd@^>`?*U)?w()117aIY|>y-)eheGE4GWPi?O znuL)5iT*j2ZHzn_*5}9;Pi`laJpj1!o*$bQjuxfW7(pMG=us&{JS&P4M>^iH=59_MYe(ks z3=ToAUCU42XOd>&HK=U-djhk2G1r+oXkMKWR#ELA{U?Qkotz8JRwuK{X&yHu5c3`Q z*sJT4`ej$BS|*s-@(O};A|AjxkM|2^!)he~+5Oh8)q|#NN(){*v#1KA}>E)qeQR0hA0N3H7Kbyo#rom{x z+vnq?%cZ*CYgy0*^&hsWt#UGYEmyI+qc z59O$$0lT zTz@X6zTTpj3=DcXdkXVx8auG^R)DMmu{_hj_X9lT<%5lbZH1_bw<5T+g>q+Kom(dM zEfp;ltre{lZRRZj^VWuJ^*EgHyrBCp4(XrYv+dD^#GGtYY*g&!Y~}2hY?kayIGXS| z5P86NA49m#pRXRH=~eS9NXr&1rHBjr`)5Q-$P;h&L}p}KBT+bfCSSEHT_|#Sc}E`L zlCZ--4T5+`3fGSaFg4FI&F3*C>bNCp&78YoYZu|^3i{}P-TY4@zx((1A;vXfNOI2Vn;!%?22SYrDE^l_h`;Y{g_j6R?(sGAd|IsCX!JHwF+n!ghPTI2ENOILS{^hSjUz@_K+U7WTrLd zBPVGwBM}D-ijqNQLzmDO(6nOz@05|Ov)~7?32GBTMErO9Ll7>S$b}zQ)2kkk zvWI?Gp-hN08dcc~)5$|M2oevX1B91}tdX%rF%m@%!IOl~Qv5l7>5ZYiORbeCwnIdzE>Jw2{FmMy#g{D-VXkFJ+3>PIJ#S51U zmFFhV;XqFSwXDw*HAdi(FeaqfDqS_Kj`Rad0vCfR16Kt8Uo%mR6-^WDHXZ8~W2qb< z2VD%J{Ga6k{LlJGGGmy%USu3NGqX|mm;OH*vpl&?t94*yp&6=xR0J&l-z%mZBZmFL zO;N22CkInc9jGd3O$48S5dmx*$VrrkN<3<=w7RVm{$43v!`$)1qYEug}q zGY=>SUIbwlq(g!nb|G2OO0jk@7N1&K`0qpD#Sn}C*-8KFWlJ0D&eGH8P-R%6hKGY43O%#pIn{dkgW}S|mJ;HcQl4tthXVCb#-Z(pTs)@I1RN|hb zK}wCF5oP~PQOGp70qOR+U|w_>{J+xC_7C78xUPm@e;rO-OIeUyTP?y` zR8H849Gh&rQup`Fzl-<8YeN_{y22K$I*Wk(^`zTn&$YERW#8ODe$mg2(CeX_aRFU? zL;{XrC5(I|hf;ag$>kV_T6?t|^$n^gJ=FcWb@iw1Vsqbq_j5kmCM5!<`)oukqI8^D zcuiI=LqN*9=6-P^I(-J5rt4xs0K|D?;I@Ad9_t7%2UAm5MOUtL>y%%_*NTMa>N!xHPr1m7DK z&%3F=kb+MpBrK1hX#oi*f{rA8Uf0rB03B!96L6@vbB^+txKPOF@iY8}m<^%`569K- zsCS-fNHQf_nADw4ScFIQsgJk1d@jtop2F3knq#2QT*)#)goJHbd5I$Y9?b|zOO&Co zWBzr^)KW3_7mH0yE{!X$x&)a3wcW-jiqtfYPfIU;qY?rBx zi_S$Rd>|RVxu@7g#WqfijAOlGl`O)`7UnL+7Ono@ey9HR>&JtF)9LFwUM+M&ZY;E5 zQLr^Y6%K))`Uexo4J*=H$#OXEDCoDm7mc%I$Y>%$=3asp8qQ$?6g+!f>jW_Yjz||C zPJpg8CngRc3l6^WM?%=-63r5DR*gJmk!f?PvU_EiA`%=Iat#~XW<<8b00Zx>K3;S` zq5uWYG8taL{^ofTbkEKC_@9w1uEZ?M)5}WAAd7Nr;I5o4ft)M;>RM(@%op^;C(h67 zz#?X{?>`4oZMt{buOoqx8su5QrvqMAQsd=_;P(>^7*W&=y=mLaY_S=&8m#(KG zUgOs%vD68+w)+*`{IU~1Aa$@ya&MXrD|=2w7)MW zR4G8M?8e%E@@jweZaG>{{CSnj!CK)1z$dt$!5O9DH5Bc zXP;}!j47PnZ1sKAiwLyq%GG^5ybvdUh09s+c>P3A%AIY~Ep4*CU#JPUe5F5DtuN^t7>vZCU}L`s2%y4el0YpR*g~A^Kasy|LlslUMSlbzhMv&tKQe27gQ3 zt$bDNaQN12(`k76WA*Dz^?N_5fudxKHx_NSSUFl;57{a04%&vX;du~Ux0}qA`{LT+ z{VmZt*P27uHH)+S>?l1wxw^p!WQ6@U!bebd?X7 zDYw-hmSmp|uC?^Q+Ma;Fyo4)Crt3>zNOW1?XRk{!DKpdiNC9SxkxT4XPW7z}4w1hm zdU~6Lf38|fq${LP8aSFQqUD;ZGXqn4VdyOi{DagmndTOo`$Jm!RS~F|bSH1l?IQ_? zT!h?qj^+2E1a7oyZNgm8+i-?eKz8cVggT+XwN>j#`*kt44dOvHILEf@xv_Gwn0-=tnJAVmApRuORVu0LoCS_ ze-cnkN>d}Mdge4H3xL6%U@hi1Rh(@o&C(#W2OY z$#>f@ti8iu-|4%f@7>Yx!Lc;#g!r6kw~tWK?hO9r(W2h1TUSzvsu(Gk5rfOJmkVVy zWiq6EFxVba>;R?i!t7$wlR9fw{3=~(Wg^-oBQdq}z(-H@>*!T+mY#x8GE>q%z3POd z9{K4}had9SF>SG6vA2okyDPvEi>#w(ygd#3rPgFN@!h+LJU`vGLIGmiN@QA~IDR#L ze^yt}`%+BXxg(V=bY-)25A}BFJQu|*v~)A#{a75J8Cv7etg>sA*{EV?D!i!Q9JVsl zN7m++3Xd##B#_0=XWqo0->lO9=Xu(GE}vTsIqN{kn^!ig#|yVH=kk|5V+ zW{!)UP~rO$%2R*JdwT7%7{40`y!yk`V#o2g*ueex&Rix^S@;Nv;;6Cap6psAH=+0q zGOOJ29eaZg7`b3ebr0)okGJVfkx0tY+}8g2!_~7uDQx4!9I!kBaEF?Jk_g}!)DLtZ z1AArH&+PyyWIzLY3``*dhoOhSMlxUv2>0CFhWr9VL;|Who8_zq8z~U!0{PRW2RcUr zwopAVEfTN+*o2$C1PvqnaVTIc&6TVb#zG)pLN?1}%>HS<6;z@CU+HY_P5l?36U40n zHaCg<3lIiot^xj;r1|`P5Qrw&M*(bMBks`e$bdR%7zJn`{yz}(KP&{o!~yFtX;{bv zDhK9A0eC67chUytOWJruqyi?es$c*lp9T!T2UNfipoM_LR6q~DKB%R&!8`y0+5Y!# YA^cDfP6Mo=9-t2m*du2iE=5580>W4}w*UYD diff --git a/EKKO Reports/thunderbirdfs-daily-report/.aws-sam/cache/67ab70ce-dfbc-432e-90ee-b104415061ba/test_thunderbirdfsreport.py b/EKKO Reports/thunderbirdfs-daily-report/.aws-sam/cache/67ab70ce-dfbc-432e-90ee-b104415061ba/test_thunderbirdfsreport.py new file mode 100644 index 0000000..af2e8b2 --- /dev/null +++ b/EKKO Reports/thunderbirdfs-daily-report/.aws-sam/cache/67ab70ce-dfbc-432e-90ee-b104415061ba/test_thunderbirdfsreport.py @@ -0,0 +1,31 @@ +# thunderbirdfsreport/tests/test_thunderbirdfsreport.py (24-30) + +import unittest +from unittest.mock import MagicMock +from thunderbirdfsreport import getDevices +from tb_rest_client.rest_client_ce import Customer, CustomerId, PageDataCustomer, PageDataDevice +class TestGetDevices(unittest.TestCase): + + def setUp(self): + self.rest_client = MagicMock() + customer1Id = CustomerId(id="cid1",entity_type="CUSTOMER") + customer2Id = CustomerId(id="cid2",entity_type="CUSTOMER") + self.customer1 = Customer(id=customer1Id, name='customer1', title="customer1") + self.target_customer = Customer(id=customer2Id, name='target_customer', title="customer2") + self.customers = PageDataCustomer(data=[self.customer1, self.target_customer]) + + def test_get_devices_found_customer(self): + self.rest_client.get_customer_devices.return_value = {'devices': []} + devices = getDevices(self.rest_client, self.customers, 'target_customer') + self.assertEqual(devices, {"devices": []}) + self.rest_client.get_customer_devices.assert_called_once_with(customer_id='cid2', page_size=500, page=0) + + def test_get_devices_not_found_customer(self): + self.rest_client.get_customer_devices.return_value = {'devices': []} + devices = getDevices(self.rest_client, self.customers, 'non_target_customer') + self.assertEqual(devices, PageDataDevice()) + self.assertFalse(self.rest_client.get_customer_devices.called) + + +if __name__ == '__main__': + unittest.main() \ No newline at end of file diff --git a/EKKO Reports/thunderbirdfs-daily-report/.aws-sam/cache/67ab70ce-dfbc-432e-90ee-b104415061ba/thunderbirdfsreport.py b/EKKO Reports/thunderbirdfs-daily-report/.aws-sam/cache/67ab70ce-dfbc-432e-90ee-b104415061ba/thunderbirdfsreport.py index ce5b8b6..dabc3fc 100644 --- a/EKKO Reports/thunderbirdfs-daily-report/.aws-sam/cache/67ab70ce-dfbc-432e-90ee-b104415061ba/thunderbirdfsreport.py +++ b/EKKO Reports/thunderbirdfs-daily-report/.aws-sam/cache/67ab70ce-dfbc-432e-90ee-b104415061ba/thunderbirdfsreport.py @@ -1,4 +1,3 @@ -import json import logging, boto3, pytz, os, shutil from openpyxl.utils.datetime import to_excel import pandas as pd @@ -23,11 +22,18 @@ url = "https://www.enxlekkocloud.com" #"https://hp.henrypump.cloud" def getDevices(rest_client, customers,target_customer, page=0, pageSize=500): - for c in customers.data: - if c.name == target_customer: - cid = c.id.id - devices = rest_client.get_customer_devices(customer_id=cid, page_size=pageSize, page=page) - return devices #.to_dict() + try: + cid = "" + for c in customers.data: + if c.name == target_customer: + cid = c.id.id + devices = rest_client.get_customer_devices(customer_id=cid, page_size=pageSize, page=page) + return devices #.to_dict() + return PageDataDevice() + except Exception as e: + logging.error(f"Error occured in getDevices: {e}") + return PageDataDevice() + def getDeviceKeys(rest_client, devices,target_device): @@ -94,15 +100,17 @@ def getThingsBoardData(url, username, password, targetCustomer, timeRequest): customers = rest_client.get_customers(page_size="500", page="0") devices = getDevices(rest_client=rest_client, customers=customers, target_customer=targetCustomer) telemetry = {} - for d in devices.data: - #print(d.name) - device, keys, err = getDeviceKeys(rest_client=rest_client, devices=devices, target_device=d.name) - start_ts, end_ts = getTime(timeRequest) - #print(keys) - telemetry[d.name] = getTelemetry(rest_client=rest_client, device=device, keys=','.join(keys), start_ts=start_ts, end_ts=end_ts, limit=25000) - latest = getLatestTelemetry(rest_client=rest_client, device=device, keys="manual_well,manual_tfs_lead,manual_copa_lead,manual_job_name") - telemetry[d.name].update(latest) - return telemetry + if devices.data: + for d in devices.data: + #print(d.name) + device, keys, err = getDeviceKeys(rest_client=rest_client, devices=devices, target_device=d.name) + start_ts, end_ts = getTime(timeRequest) + #print(keys) + telemetry[d.name] = getTelemetry(rest_client=rest_client, device=device, keys=','.join(keys), start_ts=start_ts, end_ts=end_ts, limit=25000) + latest = getLatestTelemetry(rest_client=rest_client, device=device, keys="manual_well,manual_tfs_lead,manual_copa_lead,manual_job_name") + telemetry[d.name].update(latest) + return telemetry + return {} except ApiException as e: logging.error(e) return False @@ -119,7 +127,7 @@ def getMaxWidth(): "Inlet Ph Temp": "INLET PH TEMP", "Ait 102b H2s": "INLET H₂S", "At 109b H2s": "OUTLET H₂S", - "At 109c Oil In Water": "OUTLET OIL IN WATER", + "Coriolis Density": "OUTLET OIL IN WATER", "Ait 102a Turbitity": "INLET TURBIDITY", "At 109a Turbidity": "OUTLET TURBIDITY", "At 109e Orp": "OUTLET ORP" @@ -149,7 +157,7 @@ def formatColumnName(telemetryName): "Ait 102a Turbitity": "INLET TURBIDITY", "At 109a Turbidity": "OUTLET TURBIDITY", "At 109e Orp": "OUTLET ORP", - "Ait 102d Oil In Water": "INLET DENSITY", + "Coriolis Density": "INLET DENSITY", "Fit 106b Flow Rate": "SKIM FLOW RATE", "Manual Sample Time": "manual_sample_time", "Outlet Ph": "Outlet Ph" @@ -309,7 +317,7 @@ def lambda_handler(event, context): ) reportsheet = writer.book.worksheets[0] - keys = ['ait_102a_turbitity','ait_102b_h2s', 'at_109a_turbidity', 'at_109b_h2s', 'at_109c_oil_in_water', 'at_109e_orp', 'fit_100_flow_rate', 'fit_109b_flow_rate', 'lit_116b_level', 'lit_116a_level', 'outlet_turbidity_temp', 'outlet_orp_temp', 'inlet_turbidity_temp', 'inlet_ph_temp', 'ait_102d_oil_in_water','outlet_ph','fit_106b_flow_rate'] + keys = ['ait_102a_turbitity','ait_102b_h2s', 'at_109a_turbidity', 'at_109b_h2s', 'at_109c_oil_in_water', 'at_109e_orp', 'fit_100_flow_rate', 'fit_109b_flow_rate', 'lit_116b_level', 'lit_116a_level', 'outlet_turbidity_temp', 'outlet_orp_temp', 'inlet_turbidity_temp', 'inlet_ph_temp', 'coriolis_density','outlet_ph','fit_106b_flow_rate'] manual_keys = ['manual_bag_filter_changes', 'manual_cartridge_filter_changes', 'manual_clean_water_sold_per_job', 'manual_coagulant_on_hand', 'manual_diverted_water_time', 'manual_equipment_description', 'manual_equipment_time', 'manual_h202_on_hand', 'manual_issues_concerns', 'manual_next_pigging_scheduled', 'manual_skim_oil_discharged_per_job', 'manual_standby_time', 'manual_unit_uptime', 'manual_upright_tank_issues', 'manual_vac_truck_batches', 'manual_water_events', 'manual_water_events_time', 'manual_water_to_tanks_time',"manual_well", "manual_tfs_lead", "manual_copa_lead", "manual_job_name", "manual_summary", "manual_hse_spills", "manual_quality_issues"] sample_keys = ['manual_sample_datapoint', 'manual_sample_lab', 'manual_sample_location', 'manual_sample_time', 'manual_sample_value'] #Create a Sheet for each Device diff --git a/EKKO Reports/thunderbirdfs-daily-report/thunderbirdfsreport/ACW Daily Report Template.xlsx b/EKKO Reports/thunderbirdfs-daily-report/thunderbirdfsreport/ACW Daily Report Template.xlsx index 9e65f8d71f29f4ce1d85abe28ad8f9a59dc376a0..27400eef16901e2a76a897f55d7649e08ff03515 100644 GIT binary patch delta 18742 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 L6=0p_5s<$CH`sXm delta 18641 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 YA^cDfP6Mo=9-t2m*du2iE=5580>W4}w*UYD diff --git a/EKKO Reports/thunderbirdfs-daily-report/thunderbirdfsreport/thunderbirdfsreport.py b/EKKO Reports/thunderbirdfs-daily-report/thunderbirdfsreport/thunderbirdfsreport.py index d396156..dabc3fc 100644 --- a/EKKO Reports/thunderbirdfs-daily-report/thunderbirdfsreport/thunderbirdfsreport.py +++ b/EKKO Reports/thunderbirdfs-daily-report/thunderbirdfsreport/thunderbirdfsreport.py @@ -127,7 +127,7 @@ def getMaxWidth(): "Inlet Ph Temp": "INLET PH TEMP", "Ait 102b H2s": "INLET H₂S", "At 109b H2s": "OUTLET H₂S", - "At 109c Oil In Water": "OUTLET OIL IN WATER", + "Coriolis Density": "OUTLET OIL IN WATER", "Ait 102a Turbitity": "INLET TURBIDITY", "At 109a Turbidity": "OUTLET TURBIDITY", "At 109e Orp": "OUTLET ORP" @@ -157,7 +157,7 @@ def formatColumnName(telemetryName): "Ait 102a Turbitity": "INLET TURBIDITY", "At 109a Turbidity": "OUTLET TURBIDITY", "At 109e Orp": "OUTLET ORP", - "Ait 102d Oil In Water": "INLET DENSITY", + "Coriolis Density": "INLET DENSITY", "Fit 106b Flow Rate": "SKIM FLOW RATE", "Manual Sample Time": "manual_sample_time", "Outlet Ph": "Outlet Ph" @@ -317,7 +317,7 @@ def lambda_handler(event, context): ) reportsheet = writer.book.worksheets[0] - keys = ['ait_102a_turbitity','ait_102b_h2s', 'at_109a_turbidity', 'at_109b_h2s', 'at_109c_oil_in_water', 'at_109e_orp', 'fit_100_flow_rate', 'fit_109b_flow_rate', 'lit_116b_level', 'lit_116a_level', 'outlet_turbidity_temp', 'outlet_orp_temp', 'inlet_turbidity_temp', 'inlet_ph_temp', 'ait_102d_oil_in_water','outlet_ph','fit_106b_flow_rate'] + keys = ['ait_102a_turbitity','ait_102b_h2s', 'at_109a_turbidity', 'at_109b_h2s', 'at_109c_oil_in_water', 'at_109e_orp', 'fit_100_flow_rate', 'fit_109b_flow_rate', 'lit_116b_level', 'lit_116a_level', 'outlet_turbidity_temp', 'outlet_orp_temp', 'inlet_turbidity_temp', 'inlet_ph_temp', 'coriolis_density','outlet_ph','fit_106b_flow_rate'] manual_keys = ['manual_bag_filter_changes', 'manual_cartridge_filter_changes', 'manual_clean_water_sold_per_job', 'manual_coagulant_on_hand', 'manual_diverted_water_time', 'manual_equipment_description', 'manual_equipment_time', 'manual_h202_on_hand', 'manual_issues_concerns', 'manual_next_pigging_scheduled', 'manual_skim_oil_discharged_per_job', 'manual_standby_time', 'manual_unit_uptime', 'manual_upright_tank_issues', 'manual_vac_truck_batches', 'manual_water_events', 'manual_water_events_time', 'manual_water_to_tanks_time',"manual_well", "manual_tfs_lead", "manual_copa_lead", "manual_job_name", "manual_summary", "manual_hse_spills", "manual_quality_issues"] sample_keys = ['manual_sample_datapoint', 'manual_sample_lab', 'manual_sample_location', 'manual_sample_time', 'manual_sample_value'] #Create a Sheet for each Device