From 101cae58581c1a673e60d6c1e829aa5c48a75213 Mon Sep 17 00:00:00 2001 From: TheJoeCoder <joe@radialbog9.uk> Date: Thu, 10 Oct 2024 20:30:00 +0100 Subject: [PATCH] It was a weather balloon. --- README.md | 3 + config.py | 10 ++- icons/weather/icons8-cloud-96.png | Bin 0 -> 2307 bytes icons/weather/icons8-cloud-lightning-96.png | Bin 0 -> 2665 bytes icons/weather/icons8-clouds-96.png | Bin 0 -> 2291 bytes icons/weather/icons8-heavy-rain-96.png | Bin 0 -> 2293 bytes icons/weather/icons8-light-rain-96.png | Bin 0 -> 2273 bytes icons/weather/icons8-light-snow-96.png | Bin 0 -> 2173 bytes icons/weather/icons8-night-96.png | Bin 0 -> 4202 bytes icons/weather/icons8-night-wind-96.png | Bin 0 -> 5091 bytes icons/weather/icons8-partly-cloudy-day-96.png | Bin 0 -> 2464 bytes icons/weather/icons8-rain-96.png | Bin 0 -> 2144 bytes icons/weather/icons8-rain-cloud-96.png | Bin 0 -> 2552 bytes icons/weather/icons8-snow-96.png | Bin 0 -> 2434 bytes icons/weather/icons8-storm-96.png | Bin 0 -> 2598 bytes .../icons8-storm-with-heavy-rain-96.png | Bin 0 -> 2734 bytes icons/weather/icons8-thermometer-96.png | Bin 0 -> 1247 bytes main.py | 2 + module_defaults.json | 57 +++++++++++++ requirements.txt | 3 +- screenwidgets.py | 79 +++++++++++++++++- utils/weather.py | 40 +++++++++ 22 files changed, 190 insertions(+), 4 deletions(-) create mode 100644 icons/weather/icons8-cloud-96.png create mode 100644 icons/weather/icons8-cloud-lightning-96.png create mode 100644 icons/weather/icons8-clouds-96.png create mode 100644 icons/weather/icons8-heavy-rain-96.png create mode 100644 icons/weather/icons8-light-rain-96.png create mode 100644 icons/weather/icons8-light-snow-96.png create mode 100644 icons/weather/icons8-night-96.png create mode 100644 icons/weather/icons8-night-wind-96.png create mode 100644 icons/weather/icons8-partly-cloudy-day-96.png create mode 100644 icons/weather/icons8-rain-96.png create mode 100644 icons/weather/icons8-rain-cloud-96.png create mode 100644 icons/weather/icons8-snow-96.png create mode 100644 icons/weather/icons8-storm-96.png create mode 100644 icons/weather/icons8-storm-with-heavy-rain-96.png create mode 100644 icons/weather/icons8-thermometer-96.png create mode 100644 utils/weather.py diff --git a/README.md b/README.md index bf1bb5b..6f53ccd 100644 --- a/README.md +++ b/README.md @@ -58,3 +58,6 @@ It's designed to be: and the modules can be easily created or modified. - Easily extensible, with a simple API for creating new modules. The clock is also designed to be easily configurable, with a simple configuration file that can be edited to change the appearance of the clock. + +## Attribution +Weather Icons by [Icons8](https://icons8.com/) diff --git a/config.py b/config.py index c171108..7167164 100644 --- a/config.py +++ b/config.py @@ -15,7 +15,12 @@ default_hw_config = { "flask_port": 5000, "show_fps": False, "fps_max": 60, - "main_update_frequency": 500 + "main_update_frequency": 500, + "owm_api_key": "YOUR_API_KEY", + "weather_lat": 0.0, + "weather_long": 0.0, + "weather_update_frequency": 600, + "weather_units": "metric" } hw_config = default_hw_config.copy() @@ -49,7 +54,8 @@ PROP_AVAILABLE_WIDGETS = [ "IPShowWidget", "TestWidget", "AnalogClockWidget", - "DigitalClockWidget" + "DigitalClockWidget", + "WeatherWidget", ] PROP_AVAILABLE_PATTERNS = [ diff --git a/icons/weather/icons8-cloud-96.png b/icons/weather/icons8-cloud-96.png new file mode 100644 index 0000000000000000000000000000000000000000..41a851fb7ec77f501eb3a23e72e7a9181f592a99 GIT binary patch literal 2307 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 literal 0 HcmV?d00001 diff --git a/icons/weather/icons8-cloud-lightning-96.png b/icons/weather/icons8-cloud-lightning-96.png new file mode 100644 index 0000000000000000000000000000000000000000..11ea0efdd1c014ec8aa29d1454b3dbc4fe4c4f2a GIT binary patch literal 2665 zcmeAS@N?(olHy`uVBq!ia0y~yU`POA4mJh`hDS5XEf^RWI14-?iy0WWg+Z8+Vb&Z8 z1_mx^PZ!6KiaBrRWamVuOCG;({KD*@mP!UIt4sT-Z;TtY4Fu*pbm;qNF@<c?Z`jp) z(99}gx7kuzUDu_tx3>o0Ho2QHt1LM<+>KlIanP!+lG3E(-?MA>%f<Kg_sd$BowM}& zzMxp<{-fd?bvyO4S>N^l?px~l$2x!B_n*<e0*4Nw1IY%41LA4v>E_c<Kb?5<=1uRX zMK{lXwmJOykIwneI_E#HEZX_zVZ}eC<Avu7Wxh`iTKQ#XUH$#jRtyE%J7eyJ>rIb+ zS|lm;khOwwA6s~<@B^2KX{H-=b}x_6satk`efrIo$2+Pk=Ka?`|M~hZQQcGP4uvHq zruAJq!((r3{F&`|VfnY;UwLyF5@gSR)-RGN&)vAlHEq=yjz_Pjq%DZhiPaWMk30SR zbN27QRqR?a$NzSu?pzbJ$n~buQmdm}mqlMBZQLQa_6x%St!b(5yM)i`xtaKgcZ)9T z4#-f5*QlAGFVe?wp#7p355t{9o8G8ybroN>Jo^dvXHAE70Y9u6?(~EOF(iCF!}Gh& zGs|!KvrfH}9eR2`U#2+hn>oirt|&P8zpsjrysLKVn<-vP>!*t8?%I)XG1&Ct*%a4h z3bSW7<(Pe!W2oVXeLqugs@pFutMJB5mD#HgJmFjX+Ojn$GkCY<+;GQ|Fs~9b_L*)o z)^MCnQJkANqonQOCCN7b%RG~pNm@@mxySk98NFG{_VY2AFL)}E_+8J(|MIEMbNWst z>(q92_An@)$Ztz)5IT9qW2tdq*CPH)CVwNh%$amvJZ|O5IHij-<y^X#xIUcVb=g-% zQ)<#mlj#dyTvqX1=h!^YY2k;ZcS8Q%I?%N&)g?T&dr7tmOHinW)x-sIF3oe^T)8q+ z?Pk%UVxvXR&%R8%DYPhi(^HppF~z7UydSkrx&=9?1?j(F3|r{fZJ<3fXWgCMFWw|{ ztedn#SlE;6PqWI&{soR)ho8)Qxux;~SGV6veW|36R)G^+JX(78ufEQI!JlbvqEEB- ztf-b3mN!#cJ%kH8jyw|Rnza14TFi<sC1$^CXC?AoocZSet@w^^LEr77b0eHCGCln1 z;`xx#K|!WE!SiVP=9}l2XFk(#P2Y4kNA7y}iwibQ6C+v+Ok}%{+HF*M|2Dv6v$b#f z4c7OUWL?xJ8=lzrS2W>V{c`P#OQaShUs^Of#auvu!(F>&(ejX~^64|aYR)qIre&pA zyl7>o;EB0zN^6%}-BjA`SrX$_61#2DqURsNIXPWeBK%EO`6VyYc=b(WYM;i|M-zo+ zyFWWytx(R@St2AG>vXX(?4r^>Eyu<U9p(a7D|Y;;m=igF!HXrcwBru_lY7z@*n3bk zcH-Myl>k+icMckhUPxCQI@7;=g`sNs%N0jD{pSB?Oz~eJ_12|bT*qo##zi~Hi}T$6 zh~80hEcpHRyXH5BN1m@11TA%a=i*+gmf*Lp=}lqC;?-vtzhCtHL+A_<&I3#C?++II zsn`|et`@AS8ouY6ux$I2{o9?sRbFYC^WuR}*S8X(*rU=6;mm&P->*^PR}k}`7f?N& zuibfqWF+?)!z)J~bmUFDt8we;*XspUuPkipvd@2NHJ_>UF(q*7C83qhah8l{idVGm zdZA~=&v{es=10MtiMBUChIn_cd%)b@u)FW>Tkr3G7@RI1`P(hJcfwiazn|_Nka5&4 z(Y|%t{i5ie1o0Vbl8Y;E&Xaer@Zwt?6Qz)1!9Vk`hmfg@f7P7{b+6+*=Kc+fzUb$9 zai7@5MLB}}H)2ZH_?5rsR}fJ&&6+;#NA&&XGn+jo<++p>E1Grj^~$X_%~f^j-n81{ zuBi@R`FmvzfzF>I+3iA$55K?Q`0Ik!0)8dWDnZ@yMJunrUuBwWdGT9oN8S;`$ipe~ z-~1K&)~<9pD^G6X{=ZT$>=h!dI?HqmN-DP0XJ*~v7R;S0n45P*?*Y@~hO;++OTFTE zwb<&_ef%-ws~1rVzAHzHX-EBXscy8{y>Vq`x!BujVsA49Y~^Qj_n4_mtU0%Eo_vG8 zgxBiOC?@fK$6w!9=x#lGSa)-!Pg$knE}I1N_}t7}L64oiw(RVE@l#?A6Q9AYocOmt z87r6^WBr%9=9N_Z6_DR2ed%|=d6jwldDTpx&vI{H{ne#i@6V>Cnc9j~c2(WXU((zo zCYnFC+4n&H>W!tgv&t3rifgh}zOuW?9XKI-<IM)Ut;?2XmMh=Nm^w|jOKjuy83G2k z6Az_WH%#fcEnXAQdr7FWQaPY{LXu1Sel<g@SH-uAKTb%w{4TPDcXr3Q9OktbPi6V2 zrPeuKcv`f!tn$xMzeRInw>dMmdor)IHD~(Dvru9l_wU<%eNX1Un~-yBuFLD&9oJ?` zZEV`sb+JfDQ*!z3?~{Vw1}GFf^IT9S+%@sWe@}x*olT1m+x=RWb2)BDMs)Lwv}3(u z66O&ay~q9)y2>{kez^PW!*3tGriy*Kz~=E*N#t;KTJ-IUf^~1}ZZ5m)w`JYj7hP|p zl8ZCGEc5l~y`jFheQHMgp&T{-oQ5lYPJ%-FV|m^F?)Wmt?DoMGd+%(^+}_8}dGT1- z#bmZ()>_uy11*&jE2kzHRBXQbR4zIsGc%{XOx!|mFV~ZQUnfW@RUP|&%K5Y2kv8Gn zZH?dG9=~OlYkBeUTbJ$`T0S!#ylUaRcU|)S-kP7AcI~fRS#EWG=G@5_{gxhGaz!t< z(4oj$@%*{j2Mo$Qzd2oz<e6Z#X<6>&cRIK3sO*wdj=3ty`cwQ%)!$2hp2w^%{p2_K zuxRL(EfG(`_dL1WqO<R^{S-;rsljh|6f8)-JWXirMDe?aR$Mb!^Xue%`L%cdX-+<C zs;0l|du)_>`7GgR&dhCh8QM-iztz|G;-j@l=B<s3r4t@Kn*XrtT0nY?f9%CqS9ccd z?mYf@=gEY^H<zPjFMD-dI~mi~xtzn3>G;08WhD~&`_^S#=9B+l6l!C=>gxO}878OJ z&D#6N<c03HiJaZFyTmU>%@o!DsO=>5*gihj+NwssF8ty$S*tQ}>s6*Q7cxY$c6c4n z+kStM@ol*aQn~sWz1IroUYvGGN;hWvqT|okR}`yT{ZqN<RPcZATJfaAF>>;M`yctv zzEynqaE7YdzSf4HN9H-?{(t0|W&Y7xb#_^nxZ|O?66L7QPJ2fO;eKJg8{N0|ot=Hh zb;p#PTPyD`kj+@yRx_u;EvbLu*}4CGi#iH4uWp&_d_=^!#jY(Z>qNZ31&1^HR({s- z;8~cjRxS{yI;*URy|DJbY^R@My`RI>8;dingDi4qe=BS9&3B*grfs=#zMz6YZOe>L z_N)GAWL)1e*<V<H;naCIlvz4#d~8-9dp<q;*2lF+*gxjJ=+0QGzH6q3o4Ii72j^Ek zOgop&t?05?e(ZX58RtKdyHdXmcg3zfuYY|@aP$T9E5Bx0@J`IS^-=f8)MNbzB{wYV tz5E=3H}}jk^P4{#1@mDAuj>EtxA|B&MB2suVqjok@O1TaS?83{1OPbB2h;!n literal 0 HcmV?d00001 diff --git a/icons/weather/icons8-clouds-96.png b/icons/weather/icons8-clouds-96.png new file mode 100644 index 0000000000000000000000000000000000000000..3f5d4d4f83f350f50164835cf7eeb2ed07b0dbde GIT binary patch literal 2291 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 literal 0 HcmV?d00001 diff --git a/icons/weather/icons8-heavy-rain-96.png b/icons/weather/icons8-heavy-rain-96.png new file mode 100644 index 0000000000000000000000000000000000000000..1f8ad3e629d228e6be393ab15230490b6a1b5a13 GIT binary patch literal 2293 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 BVh{iT literal 0 HcmV?d00001 diff --git a/icons/weather/icons8-light-rain-96.png b/icons/weather/icons8-light-rain-96.png new file mode 100644 index 0000000000000000000000000000000000000000..80b3971a63afab9bc569f19c7b68ac9c9b697215 GIT binary patch literal 2273 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 literal 0 HcmV?d00001 diff --git a/icons/weather/icons8-light-snow-96.png b/icons/weather/icons8-light-snow-96.png new file mode 100644 index 0000000000000000000000000000000000000000..14a792fbf2515f1d9c965921480bd6090778f2c0 GIT binary patch literal 2173 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 X-&~i{a@G|L3=9mOu6{1-oD!M<w!ZwR literal 0 HcmV?d00001 diff --git a/icons/weather/icons8-night-96.png b/icons/weather/icons8-night-96.png new file mode 100644 index 0000000000000000000000000000000000000000..91793582810fe14fbdef162e84094953e6b9e1f6 GIT binary patch literal 4202 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 RgMop8!PC{xWt~$(6996vAmRW3 literal 0 HcmV?d00001 diff --git a/icons/weather/icons8-night-wind-96.png b/icons/weather/icons8-night-wind-96.png new file mode 100644 index 0000000000000000000000000000000000000000..7e80a387879545bdb4b1a320727ea27780467562 GIT binary patch literal 5091 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 Dd1v={ literal 0 HcmV?d00001 diff --git a/icons/weather/icons8-partly-cloudy-day-96.png b/icons/weather/icons8-partly-cloudy-day-96.png new file mode 100644 index 0000000000000000000000000000000000000000..7207cab9fba18be0a8b6b8573f5b3f75062fbce0 GIT binary patch literal 2464 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 N22WQ%mvv4FO#n=}rW^nO literal 0 HcmV?d00001 diff --git a/icons/weather/icons8-rain-96.png b/icons/weather/icons8-rain-96.png new file mode 100644 index 0000000000000000000000000000000000000000..1c2bd69874e13d2e8eb29d388f14cf5c1e128dc0 GIT binary patch literal 2144 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 MboFyt=akR{0It^(P5=M^ literal 0 HcmV?d00001 diff --git a/icons/weather/icons8-rain-cloud-96.png b/icons/weather/icons8-rain-cloud-96.png new file mode 100644 index 0000000000000000000000000000000000000000..74e3556e6f45cbbd7b3832b50aecaec0397d6b36 GIT binary patch literal 2552 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 Y?=QSNRsT#s0|Nttr>mdKI;Vst0AW4hwg3PC literal 0 HcmV?d00001 diff --git a/icons/weather/icons8-snow-96.png b/icons/weather/icons8-snow-96.png new file mode 100644 index 0000000000000000000000000000000000000000..9e94bbaec4740238ebec3208ba6239697e11ad3b GIT binary patch literal 2434 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 literal 0 HcmV?d00001 diff --git a/icons/weather/icons8-storm-96.png b/icons/weather/icons8-storm-96.png new file mode 100644 index 0000000000000000000000000000000000000000..5ac2f7b64c2522c20371f37f2be91107b8cb6cac GIT binary patch literal 2598 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 P0|SGntDnm{r-UW|SQ!4D literal 0 HcmV?d00001 diff --git a/icons/weather/icons8-storm-with-heavy-rain-96.png b/icons/weather/icons8-storm-with-heavy-rain-96.png new file mode 100644 index 0000000000000000000000000000000000000000..7fe09cfa179312fe6d3ac88f6e1815bd38403d61 GIT binary patch literal 2734 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 literal 0 HcmV?d00001 diff --git a/icons/weather/icons8-thermometer-96.png b/icons/weather/icons8-thermometer-96.png new file mode 100644 index 0000000000000000000000000000000000000000..fb19b5bcc1f98682363f5ca52927749c4aed575f GIT binary patch literal 1247 zcmeAS@N?(olHy`uVBq!ia0y~yU`POA4mJh`hDS5XEf^RWI14-?iy0WWg+Z8+Vb&Z8 z1_qXio-U3d6?5Lsip_{|6*=B6w*Q`s$R>`U)fZlMpE|e3Q0b^i)1ut@i*ma{<g+I2 z`>ApxC(7l6qjG0c#-$n8_&2oHaj14_SWougnYD^vOmy{x*xJCt^G^=;x2L5vajNYs zHov)dc6IyD{|O2z-rvssw|{<Sj`4Iu1_(GI!MarbSy!Ey*X*x6>q=U^{|4MT|K2v{ z<*BNp@lrw4FW1$*7yR1w|GvlXpL^X8Fh~fPFbPiZWzLh))t6p(erwN}u&8@09+*s- z#<+9hrcB9sM>9FtT4pu1rJvSSe#(A%p8Ezi0|w?jZVF5Z4i`ACFxE*=aFzuLEa3Za zn}IE%;W~#40}qGP!;Xf{(eI+n3gjmQG8e62PH?!PnIZ9=ai!D&2A&U6jT{Y(j>-Y- zKXM)TO2GnF2lAOE8W`i01sDw!GFV<Q?B_kPkPjpPQpLb*a3GsSNx`+}=9LYM$8x-i zx$aF04|&jKmwkm{;g{*GmgVucK7VZc)3dY5`)}6-6M5xVRXhgY>I+?+ztu0d-S1QU z{Ky?%r;90TW_*>{V3J`JKWn$$+sd>_)?Qb$cV02h7Ty%cyyam~{aq{9>q~9#`xL(3 zvD3?A);iU=<1^)b^6$@(yz%vl7W13;Ro%zWp4&V<YxaVSSKso_OwBxRZOq}?T-daA z{_d1t^EGA}M}J=35^wn?J?=%#t&%za_D$nt&OC1|+|l{!+z#II|EHgyJ(-(p+8S@^ zmzQt+oBepQdD`#0J*{=;rvGa4UgF&DetpZU$BPzje}DGIUxgP|js6$z?U;JM<HvvV zg>EV~r<`0hVvC;ssk-DBW0ht9eX%x|U7BK1`O00c9=l{zPhC7d-`D5Q(ZVMV7eyJT zf1X@_=ZKTD#;ZbE)5#vTfh$kAg)QM+`pQvED&|te6p6CSK2d*;UJSN*=;2(_)5;e9 zYqf?UTUn|3*#`0NU#u=o*muCm+2fb0SI@;m%D%=AZrE1KxXxU+;lhKie_cY#Coi90 zb@{?Jvv96olUv&+d^ztX{o!8jcdJ*7zh<|xg@36|;mW$Z_o1eT$FHfaZqv*X^}h0O z^RD}{d*bm6k3KGwyiof@H=Je9S*K=iD-qSUx6jQN3s~=+YR$cI&!Rjrsh|EY#KNV2 zy=dHbgjd7v=KH9>pSS5Aa%$0@Rb=*f+jiBeUpxQ*ogbsVz*9`iDJXo4#;rHCUl$*_ zburdi-r@-V9@)E<r*gz5?JMp~{_WHof1=0o=<`W>x6%_7Cr|&<P+WSed*;E9yDm-i zwf@~^SF*llsjp+`?aTA()gE~9ALrcq_|F>4nh!r)C!dK5`&%4){>YO*OaGnE2F3Um zznR%PF2x_=+_uB=_OwslyQ{@kMcv-E;qbql?ltrN3BQ~7|I;4(y^B-U`BmS$S*`82 z>wEJPw%YFPk01F2{QA7CQ$O=o-SK03y8M?XPWbh8$<ghW@|o$fAB0M8lw92KVUpgX zEy3z@m!El7)A^0lbN;oe*jm?BGq;QCg@1{-pdY8|=@^>7&DU7(tMxa&@`rW@<6h~+ syt$CSZE4Q`G<)Hke0E5AaG>TveC920pVfyy?Er~*y85}Sb4q9e0A5*B+W-In literal 0 HcmV?d00001 diff --git a/main.py b/main.py index dd13857..0e605cb 100644 --- a/main.py +++ b/main.py @@ -436,6 +436,8 @@ if __name__ == "__main__": try: message = mainthread_queue.get_nowait() parts = message.split(":") + print("Main Message Received") + print(message) if message == "EXIT": display_queue.put("EXIT") led_queue.put("EXIT") diff --git a/module_defaults.json b/module_defaults.json index c25c3ba..14c9c1c 100644 --- a/module_defaults.json +++ b/module_defaults.json @@ -274,6 +274,63 @@ "type": "string" } }, + "WeatherWidget": { + "scalable_font_size": { + "name": "Font size", + "description": "The font size of the clock.", + "default": 15, + "type": "integer" + }, + "font_color": { + "name": "Font colour", + "description": "The colour of the font.", + "default": "#ffffff", + "type": "color" + }, + "font_name": { + "name": "Font name", + "description": "The name of the font to use.", + "default": null, + "type": "font" + }, + "font_bold": { + "name": "Font bold", + "description": "Whether the font should be bold.", + "default": false, + "type": "boolean" + }, + "font_italic": { + "name": "Font italic", + "description": "Whether the font should be italic.", + "default": false, + "type": "boolean" + }, + "draw_background": { + "name": "Draw background", + "description": "Draw the background of the widget.", + "default": true, + "type": "boolean" + }, + "background_type": { + "name": "Background type", + "description": "The type of background to use (`color` or `image`).", + "default": "color", + "type": "enum", + "allowed_values": ["color", "image"] + }, + "background_color": { + "name": "Background colour", + "description": "The colour of the background.", + "default": "#000000", + "type": "color" + }, + "background_image": { + "name": "Background image", + "description": "The image to use as the background.", + "default": "", + "type": "filepath" + } + }, "SolidColorPattern": { "tick_rate": { "name": "Tick rate", diff --git a/requirements.txt b/requirements.txt index e041ca2..bec2c92 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,2 +1,3 @@ pygame~=2.6.0 -flask~=3.0.3 \ No newline at end of file +flask~=3.0.3 +requests~=2.32.3 \ No newline at end of file diff --git a/screenwidgets.py b/screenwidgets.py index 12884e0..a74da57 100644 --- a/screenwidgets.py +++ b/screenwidgets.py @@ -1,10 +1,12 @@ import math +import time from datetime import datetime -from config import PROP_WINDOW_SCALE, PROP_SCREEN_WIDTH, PROP_SCREEN_HEIGHT +from config import PROP_WINDOW_SCALE, PROP_SCREEN_WIDTH, PROP_SCREEN_HEIGHT, hw_config from utils.num import get_screen_centre from utils.net import get_ip from utils.fonts import get_font_path_or_default +from utils.weather import Weather class IWidgetMeta(type): @@ -241,3 +243,78 @@ class IPShowWidget(IWidget): screen.blit(text_surface, text_rect) screen.blit(text_surface_2, text_rect_2) +class WeatherWidget(IWidget): + def __init__(self, config: dict): + super().__init__(config) + self.pygame = config['pygame'] + + # Get the font path + self.font_path = get_font_path_or_default(self.pygame, config.get("font_name", None), + config.get("font_bold", False), config.get("font_italic", False)) + + # Load the font + self.font = self.pygame.font.Font(self.font_path, config.get("font_size", 15 * PROP_WINDOW_SCALE)) + self.font.bold = config.get("font_bold", False) + self.font.italic = config.get("font_italic", False) + + # Set the colours + self.color = config.get("font_color", "white") + self.background_color = config.get("background_color", "black") + + # Set background options + self.draw_background = config.get("draw_background", False) + self.background_type = config.get("background_type", "color") + if self.background_type == "image" and config.get("background_image", "") != "": + self.bg_image = self.pygame.image.load(config.get("background_image", "")) + self.bg_image = self.pygame.transform.scale(self.bg_image, ( + PROP_SCREEN_WIDTH * PROP_WINDOW_SCALE, PROP_SCREEN_HEIGHT * PROP_WINDOW_SCALE)) + + # Set the weather object + self.weather = Weather(hw_config["owm_api_key"], hw_config["weather_lat"], hw_config["weather_long"], hw_config["weather_units"]) + self.last_updated = 0 + self.place_name = "No Data" + self.weather_description = "" + self.weather_icon = "" + self.temperature = 0 + + self.update_frequency = hw_config["weather_update_frequency"] + + def draw(self, screen): + if time.time() - self.last_updated > self.update_frequency: + self.last_updated = time.time() + print("Updating weather") + # Update the weather + weather = self.weather.get_weather() + if weather is not None: + self.place_name = weather["name"] + self.weather_description = weather["description"] + self.weather_icon = weather["icon"] + self.temperature = weather["temp"] + else: + self.place_name = "No Data" + self.weather_description = "" + self.weather_icon = "" + self.temperature = 0 + + + # Fill the background + if self.draw_background: + if self.background_type == "color": + screen.fill(self.background_color) + elif self.background_type == "image": + screen.blit(self.bg_image, (0, 0)) + + # Render the text + if self.weather_icon != "": + wicon = self.pygame.image.load(self.weather_icon) + wicon = self.pygame.transform.scale(wicon, (65 * PROP_WINDOW_SCALE, 65 * PROP_WINDOW_SCALE)) + + screen.blit(wicon, (get_screen_centre()[0] - 50 * PROP_WINDOW_SCALE, get_screen_centre()[1] - 50 * PROP_WINDOW_SCALE)) + + text_surface = self.font.render(f"{self.place_name}", True, self.color) + text_surface_2 = self.font.render(f"{self.weather_description}", True, self.color) + text_surface_3 = self.font.render(f"{self.temperature}", True, self.color) + + screen.blit(text_surface, (get_screen_centre()[0] - 50 * PROP_WINDOW_SCALE, get_screen_centre()[1] + 50 * PROP_WINDOW_SCALE)) + screen.blit(text_surface_2, (get_screen_centre()[0] - 50 * PROP_WINDOW_SCALE, get_screen_centre()[1] + 70 * PROP_WINDOW_SCALE)) + screen.blit(text_surface_3, (get_screen_centre()[0] - 50 * PROP_WINDOW_SCALE, get_screen_centre()[1] + 90 * PROP_WINDOW_SCALE)) \ No newline at end of file diff --git a/utils/weather.py b/utils/weather.py new file mode 100644 index 0000000..876b1c7 --- /dev/null +++ b/utils/weather.py @@ -0,0 +1,40 @@ +import os.path + +import requests + +# weather['name'] +# weather['weather'][0]['description'] +# weather['weather'][0]['icon'] +# weather['main']['temp'] +# weather['main']['feels_like'] + +class Weather: + def __init__(self, api_key, latitude, longitude, weather_units): + self.api_key = api_key + self.lat = latitude + self.long = longitude + self.weather_units = weather_units + def get_weather(self): + r = requests.get(f"https://api.openweathermap.org/data/2.5/weather?lat={self.lat}&lon={self.long}&appid={self.api_key}&units={self.weather_units}") + + if r.status_code != 200: + return None + jsn = r.json() + + if "weather" not in jsn or len(jsn.get("weather", [])) == 0: + return None + + # Get icon path + icon = jsn['weather'][0]['icon'] + icon_path = f"icons/weather/{icon}@2x.png" + + if not os.path.exists(icon_path): + icon_path = "" + + return { + "name": jsn['name'], + "description": jsn['weather'][0]['description'], + "icon": icon_path, + "temp": jsn['main']['temp'], + "feels_like": jsn['main']['feels_like'] + } -- GitLab