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
zcmeAS@N?(olHy`uVBq!ia0y~yU`POA4mJh`hDS5XEf^RWI14-?iy0WWg+Z8+Vb&Z8
z1_q9;o-U3d6?5Lsz3HEPUG_MC+RVg=Gy8ZAZai3edCSUM+s*0^c;v2H5_-ieR5>&-
zT}0J)x$4ZG+y|R_7&q%PACWlbJ$Z$qr@YYC%GIAH_^Dq^5!$->PIhvScuw-;xh9*7
zwBnPc4cKm1?4JI4;=X>5XP>S2eg9MUyoiyZ(Lq6ggM|r+l5F|@&YZWV^?T*MOX|<G
zZQp;Ka!<d)tG{#g2dkY$=abhR`m7uNa9fc`-X7m~`wmX5o@R0VPE**<-*+T`rpao>
z?QxiKxc2sM;eDsfj|Bg^QZtqRQ)t|Y;I_k|ERPirPki4ay)BlzeeZ)^mv=pQ_4Gun
zy~9z9hRxpZxbEHFS2pjIJIfMz-<sD+26{$sSjAIxElhJ}e%=~2bt#8v^6d9}AL~8;
zfAsqC@Sl4+JHN|l)ul%mspm|ze53o>Z%yU3*t!~S#zemOtv{9GUv736mY+6X=HtOF
zXY$>5J<OPBdG5D8w}oHLb6NiO<zN0<CqH`rxA1`RC5Kr{`|3A6%Z(|Ju~_}-Z`$*x
zYJnefulMQMg*0q8OSpWe?faQ%>HQ2_SP#j}yL5eS?xWe;FPm&<oSpVIy0=)mnW34-
zLH(B6L(X}pzCTQSw6iPX$Zmeo{n2$ikDNCiJ{D>8{=Wy;XGU3z-7MTcyzaZ-RJ<qX
zTIW%t!E5}DpMmW&!_vs6oi<aS=Woo@yv--DKfG?$k@@pJ9(P-oSoJsd|9gfNT;UI8
z7cTm7x$bAU^F#)%LxB}>K5pMn@pbl>HJ7@a@Sju>VZWE}_3|~*UxTkbXPEjxXV*=c
z*6ZGxA1^<=;v2d5YjAdr1Lw2^z3_K?=j~EECD{JM<LAdt^{4DcnUxX7iLvWvZh5p-
zc$$Bf+8O7q!qeif`_5YJXm&7ghyDfUKUE%eZ&NHxg{Q@?lry(qDP??rh1}*nhvr<J
zo?f%znp*j7<4Z1QkLvGx_$u%Sd$L-vX<FOV#m|0+E>6o_>T-X=M5Zk#ZIgC&uAgfY
zQ)4i7@xL_(y8<t#Jw0(tRblVUeQED{?t~tjSbazGP29tM)jv(T_?IQANIVV?RbKXm
z=jSc4*y(+<f2`V=@yIvjRJ-qnoEtAv`J{vGpJd0D+&$f<w(23n$Leyk-AAJ*YuU}%
zq$sR2Swe0)pQQd0zkjCZ`}?>5*vj#d@#nFC8O?2LFFF1_t*OaSeb9E&Uf(NKK93H6
znyeGINxAvg@uNb{pLS>cpUm#DM{`$2C*w3ewjiSg_jSZxPr4jh{5)1?+L^2Kw%&am
z@}~M{bJ(AIuWOVZ9cDE+FsbgZZo^$Y509$HlNN5sz4%pq+nKMXLis)Ze;Vfb6z-Q3
z>kijHs(P>9>55kIzEjh7UVCw6Z<y+qM~m0~k~osTd`0|o?Vhd4Y2I_su3^2te?mpD
z(<9|4-Qg$a2(9mv)0(eZY<D`Yz^dQ>d)BRb{rN5*7czZ$Y3BXQcWU6%?Rq=rCF@$q
zD}Froq-+19{yv|FqHkCKK0V#?+{To1>|gR1`4q1C;qkMxOa1Bhmk&<b-R<T0dG@nj
z*y%l&yN^f*tJ%$%Y<p|1(#CCOIr7as)6RU%l;Yo;7*@W%utWddeg8kN{ynM=KlC#0
zXXuIg?khjtP0S3Ix!1hsvbp%Uzf9>1OZ4eImnWUr)AsG|>jM{$h<|&lK5q)Ye@XU#
z!HB;`$16?D43_xU^oxm=WGC7!3(b$OlPM22T))u!d(<BHnj_OT>Hm6~X8+MTiQPA-
zTw6+7;*zf1v*gqN?tEYWk2}Qj%epfu-=!A+kTt*2d}Q*;*D-Yrv!1`HcTHxltvXts
zyFB>u2k{4P+s<aM+O(zGHsa5zg^$WlzQ1(fj^9=(lXJI9GjcY}O8eMoV0CqV!?MWV
zY2VIeU)!|4+V%;XboY;hA}f=}55DxgWt5U$vn<qR@nLz>GoqPs485DT@$Nd4?REKv
zOY2ehod?S@m7cI4oh&Hm&#-JYGq3Ts{|h!Y>eW87zGC3+^2~S>w_WYkZBuGLO9h*i
zuXh*qXXEI+euBxw=k~vzV{F=)!t<4t{(Rc|z*pD!1MiHe`dO<!&zj^@vOc!`ZUVoE
zd`E-C{ZgSY`@R3-P0TJVi>pzHQ@Bwn#Ky2<_NHx@bK{D&j{1f$J=z{_FZVMc?Cpl7
zE7C4yEx)|5JaJnm|B3%XbNWABH#VJot^10|{#g^%w1WOIK4Sh9yWlZj`hWIDruI*j
zrjMsZZ?XFF?kv;Cln=)pJpPEtxLs}O4Yp1Db|HR`8E5pVh$E9fZEtA!VcRkFRN>|G
ztB+liyZGqBZuQBJPQHDnToCzp_l&3QT?T3Y*6!yh5saU3M@{S6)c0)DKNc6B<`+Ns
zCFkghlikPIURfNS{Aqo&`TMOZI`$zfot@!^d&;`)KF@mkBv*6s+A7A6>>r$r?wht8
zw0Sn+W75wJg^wfpcw08cye{Myc<|R@f!|$jn^haXCM`R1;oKC7_X;0f9<XU2v1eua
zqx#|4UZDwor`mb_4cU9eX9^vzR%QOR-iz%^-zCSx%u!|Q55;Q#Emk;k)WO4s-yl}<
zgqs)Jm-m<b_DneA{NdQ%GkbVd<z_Hfm2Hfupa1Kw_QvwBrx`;vc5TvH)?4xLo6PgC
zw?%%<XSp={=ki}A^8+_ki@KetcZ&PG(oJz$p3a^{(dXw>9Ga!9v}-$iV&`e`2kRMD
z6|E|N`f_ruRrM|Yy{#?m9H#av_D52`o<G5+`HtyFz1v@Jhtf}mZ@>G0S##r(*?K{t
zX%qe^+$iD|cyLK#KQDjdgaF2ecdH!4{gQ4yYs!23bxQeqra#^ahav;*JK|R{)Jt-F
z+|SHdXI@~}UC+#NL`&e2JTv1(zs|L3P9FKso+sZr$mH|e;OC=GcLxU^wLfZ;9=kZc
zH&W-nTr**h8rOdbj)JZ|cg?y_9G^D-)Y}-j)32kpsVdYlb96{vSokw<Sv~)&;(uv%
z^E`g@EDru`wK({*qVtlUvlNwjdiWmI^9X*_-8ol8XnV2C5g~yGu?{WvlkXJjBiacK
cTRzqI>^p6Ez|~+k0|Nttr>mdKI;Vst0L|5Yz5oCK

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
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

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
zcmeAS@N?(olHy`uVBq!ia0y~yU`POA4mJh`hDS5XEf^RWI14-?iy0WWg+Z8+Vb&Z8
z1_t4&o-U3d6?5LssSKE1UUmHHyRuo^Jgx6;GroDV?6RNv+?U%n|2^#RD97qviE-hk
zo1RJPM>ftq+9zv$aJ#Iv-J=-->TLJRdJbCbOFAyzE@;J2=*gtm=+H26Ldy<+Ma9nW
zM`~sB&V8=_x`^4+!{d<IHRI1S4V~Pce75=ZZ{By+8ArQ9mMDp?^l;S*nuuU3uIlOO
zQQus&qy9wF=gFHbEALp}vB~9Ie_+yS?HOmDa;p`8=GMKlM~T;bf5+jo`d*K?yW&p^
zaLw;AQRrZ5us^-$aHX#H^!XE~o|ZrV@EP;$c!r&oOb?!jGi_hMQPGt2fZI!9{RWm#
zU0#aw6<YozDgLWmvml~k_X3X}T6JqZjG0!PvEFlIO-$TjSwFcaAGj2zzn^eUTtxVx
z#_k0X98E%k99~BPBD$tHPP`!e=+_~ki<dlv(^jm}dAB(-C$4Z?_Yb89q9V-qU9EIw
zo{Dv!TIiyqIAvO>K+DsPE4-g}IxP(Nwc113=H&T@`{$m07${+S=E&z6ncMxXCgzEs
z>kymj?Wi)bamON|Qv#YntWWbEB>%7sbY1GJGId>t$wAB4#XI5??rf-JJ#bQ6MfknW
zyqRBuHn#YDo>DMHdo`2iQW-6+)e9G`l3EgKsxY;hL4N%z#q$$G!kS&Q{OjJFXA_w)
z^|bfy<oQ*3c4;=Urh1P~Zt-5|62mvs(&op%FteERCm7B2=lj&AZe`NS&RWP7c%|_U
zcc`g{Zb;bmrZrKFqMv46IlhbY=FUGVlfL=|_e=H%9_~2aaWGT7OZ&m^+mQvv#_XGJ
z*z7p`(3wwvzKLVl+J;%Xb}v|wKV#9ib(dJ571qcF#YX$j3W^M_p77NoOssvsPJ5?}
z<Hplhl8-$;(yg7Mvft1s;K$n>vnK_g8`L#6&F54Sn9}7C5yn``tF<EBOz54G)>h#!
zk4>~b#ax=Q+iS(j{DxJ#+NQ2KzH-x!JLxy~{86;YC|rBwZtMe_uR@ZR28Oo{w;LuI
z6<Hj3_Iz@AM}U&*O#Ri%ieqCGo7>!YHLiAug>)R_-8!wt@8$}{^QygxQbpmJYXi0Z
z&;7bXWOjIf&*|m-QEEj6lTKbaz3N1w=45S;yyTb%Paf}f(V5t^XImeKiqlmoA>H06
z*%h-(7G!2EyJ(qM@6(%6`edh;ukc-woDQ$vUX2u6zN62$?iEgtZ~F8$Qh%aha6EUB
ztL@3`9`0uj>!xUT>~QlHo_O*^ZdRV^i>O;NTW)QvzjMXO-u?C+CaGBNyCT)b8)oum
zeHFS^qj$%`qOyri$hxPd`rczRXC?PIXEV_`RdaIAWS=Q;-8;$0-i+mFW~pxQq1n;5
z7cS*}*>J6F$>e2+`92p`vsd~RM_ZfRmTrz`p56F<p4--Kb#eKwGW#Bw{yI=Px5mw`
zQ^xh~l`D@Ic7ANQd~-!^lUr}!6Ei;}-MQ25Uc1Qoc5dv2dpCJyV?Fp6UgrC2_}8+=
zFWO!Fr}Yhi9JYPlC#;$8i_Us>bj{DGJ%1MY?8$7~F4SdvV*2jW`Bx@X9C)cB{9a|=
z#J(Ww-PH?LFBjic^=rZI>C2Xfzi0YvVYhzs?&*0wdnIqU{F!xwW9_=HYT0&Tvvn)G
z;v<auUMp{Y+hKbmU5TAP{7j|V{lGqF8{4NElTW<6?3^EO|K-*1h3oG-T=*_McY*xt
z%hD%`Km5EQk|SZ(T$g^K_rlg~z2Cll`)8WHFElRkq<lf^k;79?Oh560S={)(tDUf=
z)uw|6!Tm)qI?FrUUuuNj&u^(~7UVg`Xuvb$zzfEjI|(L^`wJPqu<g?HG5(Nk*n6P7
zW!>7hqStCx|5-FC<=F*M&m}2WkL0rR$EcOPIGO%r`vhkp{_r_fJ={}FRQKICP`zuB
z(8M@d(kG33#+l}XZ53?x_6ge>E~cpQCeFH;p3m~P@5MninWVGZg{E}u2;Ql`R;Ai*
z-K-sN4QBRR?_6EeBV+Zv@KvDD%nG+XvAb>>aZGdMV$;-a+;l7Eg*l&d@okMOE7csr
zJ~MYL`MzMs8#|5``zD79`K}}17lasbJ`H`WuwItQ)pqFvk%Rh?pI5Rt6$WR{Y>CN8
z{BmKZ|N2>H8oiC;ufI`~S7u)x=kISjv!cBsYRA-$ZMWJuwk=eYFz9dCmC1A}<@<sK
zU)-JQIE&^_2=_Ux@AOWvqSYkErQy$l2O>Ul4~ia&uW{eo)tZ_%r*6-7XZL>P?}b;7
z9RA^_CtvZiHK2TZqF0^y#QXk5a>g=?+h$fo?c&XG`DMVv%kR9ukZ0BFx`w78^NW6)
zY&+Qe8k_IbqzK*cxTmt=r|@LUJtyB6e^#qITotl9L}zBgHn~0954-SB{=M@LQ;~Ml
z9iy--w~~+R$t$xL&-1aBHPw(m%FoMt_`?Sd9=<-uxkW;syq0x8`>Ab}FI4p71j`-A
z3X_{LDKeXOB!4$9KE6Kf$<2SAUsp`suqG)f>z8P0$(ILTCf~_d5>MU1c=0yh+@BKG
zDWBMVREl1#+<q&$P0ZfNh)XtBI3VCt^XiO)Ixe3jE<T=cbm2*tqT?KrIkTeQ7zVRd
zKjFQ$I7F%Qj7{yYt55dvz5DeeeeJrbYi8|uJArxoeFwhiIW_K2ZY-}$VQF)BJ9(wJ
zrt{oqJ*(TZGj_kZ?ZIcnwS9v1;sW85a;?&lhwbCeOId1(9P*Fscj{a^HOl?l<?j_Q
zUM^o>RCrzewc4|~eEFMY9}c7%&7WCwrcxwdTB>=|sm{zr#eals-)(;}`=)XM^T|a!
z`%?H0fA=_M5OZ4MQOrIb{|$2Aw5Ffjnew^tR9)Jyk4fCy<>u5`RlT@#{O`P*B{Gx!
zPm6mVyX)e=<4F7dMY5Y}yO*W%AKrS~xnSzUYXUXxcQ%N{?_Kp@`r6@`NnVvg@BRkQ
z_Fp_}&D<|vw(s=YZ(Aj^Gk>x1{3GWirg+wNpW~SRVz${K(I;)Zdctc8e(n<0i(UT7
z$moIkn)a<JML)A8?9bfm|6cVW&gS0pnX~@o{XW=z*<RH4%Qk1eI~N02tSc2hJFoSH
zPx!^_OhUP>-uI&)DjhcE(o+c6{P9hzwB_rDX#q>Cg4V5&F1D}vxQIKS`|+)lDf^Ru
z8CK<}R2AIL%$5Hf{iU?t<^Cs?ThF4um@3VBw%gI-d_k(frHS5Y-nUdgyWC3s{A6c$
zn)fZ&ZmqA2EUmvbWyZg%y!@Gy^TTugHJn$se%-#2vEt#=4*6dnj#e8~v<qGLd;TVU
z+5APv6lOo3AUos5!pP2j54^vma?eTLk<w_=BpIZCYiB~+W)|TkHQCSiaGqPjUozh^
z-^Z%<-k0;m_ZV6i{R^G`cKOcMKMqF(?f*Vulg_hSchjCr=w`?2jOTOqJzbuWe)C_~
zzDN6CZ0>oH?_0o@I$z%5;fLP2m!AtL&+#)pv@+!Ik&_|Gw>EycS3hSn+k^h!ucm0R
z-YY3STmQRt`o8&bwr9nTKQp%BsXDB&t~$;&o^$bwEs@=F3tVqo&ODXSAe{boiNu45
zu7f3idj9RT%y!xvv{NMCcE#J*&%gXxzP@TETf(0yQ+Rj!ZQZ|UeU;eUcivxI;}`kP
zbDdw@VfWPaOQDm!jP>IOFU&jS`sQ3a{4n@e@ynMV#EUPnERCA{+@ir+miNHd%a;G!
z+YV$%wP~BDiT!=M#&x!Bx7~YzzrFhxoj<2D>){8@CH)g>CM}#ke}WymeQ)r}ko`gC
zrnhBy5B!zqPdI#q@ywI@sYxg5FHV=dI8D-Z`I(g&duP9}^RR0CBE%<K{^9G#xVWk+
z-yiomqjEp*KF9mw<D~{4vs7_gi^VTO@@Kc(FS^Vm{#NJq>KBv!7R^nm@0EG2Sko%A
z)UslWG@sl{ujI3?FQablE6Q)!cc10dF-L*$fP!}G7ajeULbWym7ne7Q`hHd|nxXcw
zKwL$w{GfQd)%3F`!>-)AHnEHMg6Zpp0U1r**V7cO?rwiEd7jJi9o^sNT|U_P?xW_c
z6K<0-geF-jJ`7No`LQcG;rzmR^&Hj0AD)~)_f~vKtWl-t+tTUt0=FnCTx?(7`Hp*c
zhSF>f^-B+npJ>lI&sR2wclDns+|$y7&dttZ7Je%wf3VB1Zo;Cso4y;%<g}lE^XB&^
z*>9@b`s-&c;65+<dFJP1|1IX`z4`Qg(b35-k~fRYeWLQ~L8o2B_qmK>pLIVtak6r^
zhE=rYH=2g?PN-O;ZgA13#^U5W&oAj3x6a)=vQ6__&A|(^M2dcDYSx~g<74`*dbbr%
z-t>2$_dU9){wsTV=RfA_Oc#?@yVuRP=cxAoa$(VAXZ5Q2lV9xRySTyn;KAkW5>dOH
zs+jqW|GRWKip5>rd)dW0UoK@)f63u}llR6w^*2>K&-8opZYQm({`89*UKg`le>XNc
z{H@m4P%-<!MdQDoiGsCfzIRQ3vFFiEPmfnku1yCeXA6{j+H+sb)mv2lTk)6h6XRL3
zC+uVsZ^zx8H{pbR;h`U&4=?|^xGq+<En&Lf7iFt5xz|lMq}eL|cgdB>y=|K7ZvAkp
z%w%uoxMwrdRc}RpJ9j=^Y_IH1@6Eh7FT32>v|H0yh1bLG=67EUy(po*Z!a0Am9!u4
zyf^XA!%Gd%y;r_mBy7`N=2L2{Yt3*mdg5J^=n4K?Th8v@!s~eY_-vo{zOOwk)klBZ
zFkI9Ve!HbI$2+S$*Malt_6()!_|I=#E^p$TU6z?}*>6^_^;Kp^^9QRJ-(BDSdQs|r
z^^0fpd_U;iy8LY8*8ppsbCLzN9hPeI7nQg8Y+*C2bK3k+*fi&c<L8fk$38BQo=~yF
zT6K=N?(6g44s^R3%dgm+SQ&NR<l^nQF8QCmw_FST;-`MG?B++F+gCq){N^?*w|7I`
zY^@(`Dk|k(d%O4!x}NTCeK_&I&~={Z0^vg8y;ozuEcaVfe%9}cJ5O}zhIxtITy}TX
z@Ypr+$-K(oESvsKR93%jA)|ib8G-p1n4-(Fm;07lxU5gUvBu@4$?Pc`$|f8AaIW}&
z@Y}<JxGifeZ;DP*dvNS?{Ts%L?>XW*ckVu!ba}J*-52XKX7%!JXiIcvUelM)QOA4t
zcj|8!5B(@R?zE$q&%JWsS^c7y_rpQ9CwhscdzyFrXuIoZo^W0~m)TA~%8vi6>*;F(
z9rpydF3z6olK;v7%c_3KSDc0N7uUpvOUsrpm&s;K{C#U_v+!M!EiZmJxa4!Xlr-O8
zB>8X4yoG%C;^VJNPMTdf|4qK7y}7uq)P7g%)ANM(UX9$6b<Rcj=IfZqpNfhm`#0{a
z%|Bhea9>7b^#aMd<A#n~G`_q}Us18HrAd6JTE)vW`#&Eev~})Zd*Exb=Ff&{8<N(}
zHSPMiW5=!wf0`bwi=DN6+uLh>XR;RU&5`R~|5|>>gBK2hfge5{m5bQ6^q}IcbDvCk
zxDHjzUzwBGy2<SQrI;CIr4mQFw*R=Le1l=*-?@P{9QiUAZn^H>l(Us-+S*ly$JR~#
zr?Z6j#-`ODZ}wW7PF}bxqx1IaR@XO;?N&`Sg36l?t!|G_xcN%z(C*bTI?=Jhr@7pZ
zz7LS+ym)ot@$PB-Geq_6bl4w#ne$CTmhWC{IJfsU?T1&D*M7Jiv-r5$o_+Dm8w*VZ
zq{DqHp8H?bTvKp$Rm(T^Yx$ukoAz4qluYmAZp<jZDYv-Upmx#38=+hgbM7!1E}fDs
zBg%VdQva(5Z@;g8`1bqLJ+9p?5C5J${q^=0`}pmiH{S-9Oc2*COcZz<yG{IJ%B)zm
zTdmj2&Hb_uc|YHk@Y2ijd;ja~XV2!Jij=<pVK%>+Ny+((db|fazv)z~UHsxQd8L|8
z?8^sJozK3zeerK=<h1mN;>guzE9S+?#_Myte7ST)Eg~X;uZ~-D;e+jO7%ME-3Qx-m
zKPw~ew~1M>S10mdfNMo|rRbimPJG<OG3Q$}1h+PtUf)`|`JMjbYu8ne)rOeAIq#x>
z=KH_@A6?Fi39|0@f8BD!l*@j(6~o22l`{YD-s~&d&h{aKe^prSimIxo?WHTVuV3Z+
z-PO0j#KGtDe)BIMzP*|yx!lU&;^iaddw1@6b>a2KOYtt8?f-6ntzKZVhCOzpbcp}D
zh}99>l6>Fp6wS`oz8}5VKqr3jj0B@!y?<wIFnhRkv#jF8zt29M>NKAoKJ$K5T<Q0<
zPeW(suUm0z?~~ZdEuVY0imNdD@7()O;C10j@elTKDbYf@i?-+)DlB{FI-URT^_Uud
z!>P;mm-Z^Gp89pi)z3k%(gTySx8I&wkfay)dtuK4_CP}=t!ut5MbAzy{pQ}eqUD9s
z>oxVAN>M3yKVFbI#J?$NnS0~e>z@}NxmL5hyt{?9@&5r8Gv+!W)kRXVQu<3CMSflx
zr?dQDUE_^!&x#KntpECT53B36{oE@Ul~x~pEBm={!TsndCw5(Z`{w7vpN}TG|CeX~
zGUx4;iY+I0O?bL=(UInSb|J@$O0Q<k-m`Iq(QT#p`r}W(wp=-VQ7P-v*E<{MC7)g1
zB@}%6PS_r?oUZ3?fmY@VkJr}ce%}A!)Qf5N7jqxE;=b=u#zcWSFSYxz`)+u-a<|V<
zJG;EfFXgxYp8b#1!nQBS`5-%`Z)gAH_m2Pe&M>;YKK){X+P+sGr!npO_c`dt>UeHm
z|4F&-DR&KZKfg47QrC0imsPf1*pw5q#C{x=C_Qz5y}a(GIw9Rfb#uP9&hOYIue!`^
z)3a<{p+mwKmAph6rYvGLZT#CTc`+$VRqod23<lGD_4_*w*giBA_bY$rWl^^e_~~=B
zgZ;m*SI*vduT5j(xcAThIqj!$sL#%)^^1;P+Z>qW)yu9{+Y#htQ}Fj>O?{T*&ZpB2
zm2NMua1_<uRA#t7x!zaq-OtZiS9=hnU`e(we%0%1_>`^W6uHj8z`)??>gTe~DWM4f
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
zcmeAS@N?(olHy`uVBq!ia0y~yU`POA4mJh`hDS5XEf^RWI14-?iy0WWg+Z8+Vb&Z8
z1_llxPZ!6KiaBrRoa|Q)mu>KNaB-Q$t$3tNfLVxBT%^-E;9t9khb0f^bdNbdnVT3C
zpH32F)Jrj%yir}qWuidO0|rJ#)r%ePB+GBd-aGv}?%wIATI-)iRXuB8btmrj)4bhc
z({I0@ys!Fq_1o`t?=!0mcp4oP1UOijVAKW%h7Wr$U%ouwb5hCcFJHcJdrsQ4NW*B6
z#=NdYC%PBin4qGm+VLp8N#ReNK+ATEzTe-r)xVp|#;{M>^OE%>m7}VjO_8pVfnjqr
zdPGxLUFSWowK@Mk%|K$$hPUT88*?;$a1Iptuh{iy@#(g(r2ePJKN;9emgYP9u;53h
z0*8M7@6VB93>&%^Rk#bZxX*42lj)N^^>BHSvjoo$_vV8i9_MZUeP^5f`lSLa57lk-
zH&nHTC21E0vn&5ret9tALvqf2#s>9@dHYLuUihQ7aG||K&l~;)=E>WySKoR2wT_)3
z{@^!3hKgCwf9m(}-F^LCy{x+X+k(5V{|YnAJMxW_p(4%ViG0E7Z<%?DCd-AYHpIQ?
z%PGINElK>=+;h*jM!nU{iQgvM_xRuGT$!p3WiQUDeA%-miTy?yd&IWC@(e$W%C5dF
zzO#01TV8)kTIy}(ncu2!gf2T?cs=~><ydB?&8M9<=VqKewV})8u+!$F24}^TO`>~l
zERkI1Y0Ppp>+jq}GvhCr{MBNp;k@no<mT?{?=SyqeU~S&%a+qN-Fw=^$LGC`9W=M8
znax@&<a*IOW7a>hZQdoj_uBg=%@*0URB=mEFehKHnr-^rMGNm`aG7@Pi(MJAuQ76N
z-1_g$Wy^n`*t9Tn>V?NQy3Tf*-aHo3weIQ)b3^UJWmffbyVr{CS}RnQIDcOMUX?E@
z+oE1vV_P`&Mu2Se{H=^rqaHiUJm5T&b)s7J@HW-A3nQ~z<f3Osg{?XLZ+Fnj8s5!9
zJeU7{b)C$<w)jQc$At@H=0*jr(VR5()pCoxh51Z(lbEjY`sND!(kV+-u}l{|Q6$Q>
z^wit6tkc(jF*&`@&-hIKOR?Ykud+W<TljM7!fds+X}Wq*t4?q;>`eN}8+>@P&hNWw
zXa6)Vihh%-*1uY4*M@|7I{iA+W<4$X85w-9Ok>v1(8+lpv(I0$YF{TIxNDEimzXz_
z#hZ>^I^pz^+4*s}<g=*eWq+5otXti(Ze`0lJ#O3Hwb?I>Hz#v%TB0*wYiiF<!(frG
zLCsl{s(LG?nyU4uF7#GwJ2#hq?F`A;({;6$6}L+7I=((^X0~b9I%(TSQ_GaTXp~i5
zyK{p{rI<D7I=fBf`SoTil(k#+*2(VLQ~09C>&2BdHz#@?wNcr8Q~u>PhO1Vk&g;ET
zS1nv^E%58inG-EZd_p(h=$CZHFVLu7dhfv(nU7oA&drvvDh+(G@ukd>^q!^0-%BDJ
zinji94^Gd#)V1(=^7*#D<(q|*SFXGmVz$O|-=7mMVXvFtw(G^(RO)oj4Z3Uh>3Nd6
z-k-H`a#bm8i#DBH>0)&G${vQ+ptoCnowMgGO`Ln-rEZ(tOg1MoLsKFD&$GlAM69}F
z^5YUy7_V%!lvT0b7NKZE)`>r^6zHt1W#mdZn)_p^>U!NTseCTV&e|J~ADblXd~wM)
zT@CkX#<w|RZ)9a8&AqVMO<0)O#p$==9Nh_j*PgpH^XkIKYHfV0Tlmg-oj9hbAl;cM
z@4T5cXouCp%hD}=di=6;IrnC$@cr}Psd;$g_AGIQ$@(T|cWgNl>YN_x>>l14XCt7#
zs-<r&pKOd^RbYIC8P`9LC!%M$C!Bh^cb1-R)<V<1ik4O<{jT;!4eX0uW91$P&D>Kw
zd$UR5!zYO~8TA#FIjUQf3_rS<c^vRm_@uXt{iM&ovv+yt8rXd~(y_=~g0bKJ%x-4J
z+J6oPa{czg{;BM<W24MC=kB`Fksg*&<C>A5aLu6N*e~bz$yGw$Y44=!GCSXTy*T0X
zqO$+5qQ$pXjqS64>{`by(3=+5qh`El;`C_`RGrz)xMc5YY$*?Y5%{LlJ$={51Eps;
zI$VC)7CRsB<=$KLJ3{DIz1^3I`W8a+FQ?gZ-aFExH2=K4WS@G!*{&^Xq^*h$c5MIT
za7F#g$5j`)8YikVR#XTzu*dyh{{8)Z^Kbh4A0y7l^{9G@_g1XVYu_zyWg%V_XK(Z6
z*V7;W4;9{-Q$I(VPd$#$<*{n4zV5<q=lN?yt=4F6iMIV>$#1i7cH94F`i~Sjq7{Vf
zgZS6hPWu+6^JU?2^Y?~+vQ-7ie0NSy@LIa>6}RjCgNHBfySUI+t*vf@#IKr)e+QcP
zzc1VURn~NCjr0eB!q+M;U)G9SZK!-v{IK>(<MHq7Zm+$}8=lY6RB=nXXV1fr?si{(
z96labzvSV^_Li^C?a!R#XUhC~AR*3Yv+vqMc7EBa57q5*_iyv>{TE*L?R<zJwC>q_
z!)}#b`tImGdF2z!bNoIPha6{-sn@g5E*87LY3GUaZ_YhR-rda-IeYU9C+-A=ZM%17
zn}vVWFH8SeB2(+9{xf(B1KYzL(f{_Hbv5!ny!*+IqsQ-;q|SHeP7o*)uk<(F=Y6m4
z1pDot`lsiWc28cjHmc$I+$ZPH{+s#jmCmN!CszGp5>YkYK7X%G_Zz=Y`KxaCul~^)
zX@C6QJXgN-pG#Ba?>y7l_NH8G+28p8VfNiT@hzJfK9z+`-7l(tM{n<r_vsho61QK7
z+%o-!ZjsnqUB2!)uGPJVnbHNB8gFFgg#Ueetjprt%eTk8ZhZUr_L!E%x36!HY2En#
z^X)ON8y9b%ohE*u^<Lh#-3)$T$~K3}ym*`T+v37)UZ%#_+<*LiDV6z)RhKVhU|?YI
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