Bumuo ng Iyong Sariling Raspberry Pi Weather Station

Build Your Own Raspberry Pi Weather Station



Ang Raspberry Pi Sense Hat ay isang add-on board na maaaring magamit sa mga computer na solong-board na Raspberry Pi. Ang Raspberry Pi Sense Hat ay may 8 × 8 LED display at isang 5-button na joystick, at nilagyan ito ng mga sumusunod na sensor:

  1. Gyroscope
  2. Accelerometer
  3. Magnetnet
  4. Temperatura
  5. Presyon ng Barometric
  6. Humidity

Sa artikulong ito, ipapakita ko sa iyo kung paano lumikha ng isang web application na istasyon ng lagay sa panahon ng Python API sa pamamagitan ng paggamit ng temperatura , presyon ng barometric , at halumigmig sensor ng Raspberry Pi Sense Hat. Upang sundin kasama ang artikulong ito, kakailanganin mo ang sumusunod:







  1. Isang Raspberry Pi 3 o Raspberry Pi 4 na may koneksyon sa network.
  2. Isang module ng Raspberry Pi Sense Hat.
  3. Isang micro-USB (Raspberry Pi 3) o USB Type-C (Raspberry Pi 4) power adapter.
  4. Isang 16 GB o 32 GB microSD card na may Raspberry Pi OS.
  5. Isang laptop o isang desktop computer para sa VNC remote desktop access o SSH access sa Raspberry Pi.

TANDAAN: Sa artikulong ito, makakonekta kami sa Raspberry Pi mula sa malayo sa pamamagitan ng VNC o SSH gamit ang walang ulo na pag-setup ng Raspberry Pi. Kung hindi mo nais na mai-access ang iyong Raspberry Pi nang malayuan sa pamamagitan ng SSH o VNC, kakailanganin mong ikonekta ang isang monitor, isang keyboard, at isang mouse sa iyong Raspberry Pi.



Upang malaman kung paano i-flash ang imahe ng Raspberry Pi OS sa isang microSD card, mangyaring mag-refer Paano Mag-install at Gumamit ng Raspberry Pi Imager. Kung kailangan mo ng tulong sa pag-install ng Raspberry Pi OS sa iyong Raspberry Pi, basahin Paano Mag-install ng Raspberry Pi OS sa Raspberry Pi 4 . Kung kailangan mo ng tulong sa walang ulo na pag-setup ng Raspberry Pi, suriin Paano Mag-install at I-configure ang Raspberry Pi OS sa Raspberry Pi 4 Nang walang Panlabas na Monitor.



Pagkonekta sa Raspberry Pi Sense Hat sa Raspberry Pi

Ang kit ng Raspberry Pi Sense Hat ay mayroong kasamang add-on board na Raspberry Pi Sense Hat, isang 40-pin male-to-female header, at ilang mga turnilyo at spacer.





Bago mo mailakip ang board ng Sense Hat sa Raspberry Pi, kailangan mong ikonekta ang 40-pin header sa Sense Hat. Ikonekta ang mga lalaking pin ng 40-pin male-female header sa Sense Hat tulad ng ipinakita sa mga imahe sa ibaba.



Ang mga computer ng solong board na Raspberry Pi ay mayroong 4 na butas na maaaring magamit upang maglakip ng mga add-on board o isang kaso. Upang ikabit ang add-on board, magsingit ng mga turnilyo mula sa likuran ng Raspberry Pi, tulad ng ipinakita sa mga imahe sa ibaba.

Pagkatapos, ikonekta ang isang spacer sa tornilyo.

Kapag naidagdag mo na ang lahat ng apat na mga turnilyo at spacer, ang iyong Raspberry Pi ay dapat magmukhang ipinakita sa imahe sa ibaba.

Ikonekta ang Raspberry Pi Sense Hat sa 40-pin GPIO male header ng Raspberry Pi, tulad ng ipinakita sa mga imahe sa ibaba.

TANDAAN: Mag-ingat habang ididiskonekta ang Raspberry Pi Sense Hat mula sa header ng Raspberry Pi 40-pin GPIO upang maiwasan ang baluktot ang mga pin ng Raspberry Pi GPIO.

Sa apat na natitirang mga turnilyo, i-fasten ang Raspberry Pi Sense Hat, tulad ng ipinakita sa mga imahe sa ibaba.

Nagpapatakbo sa Raspberry Pi

Ngayon na ang Raspberry Pi Sense Hat ay konektado sa Raspberry Pi, ipasok ang microSD card na may Raspberry Pi OS sa slot ng microSD card ng Raspberry Pi, ikonekta ang power cable sa Raspberry Pi, at i-on ito.

Pag-install ng Raspberry Pi Sense Hat Python Library

Upang magamit ang Raspberry Pi Sense Hat sa Raspberry Pi, ang sense-hat Ang Python library ay dapat na mai-install sa Raspberry Pi OS. Ang sense-hat magagamit ang silid-aklatan sa opisyal na imbakan ng package ng Raspberry Pi OS.

Upang mai-install ang Raspberry Pi sense-hat Python library sa Raspberry Pi OS, unang i-update ang APT package repository cache gamit ang sumusunod na utos:

$ sudo apt update

Pagkatapos, patakbuhin ang sumusunod na utos:

$ sudo apt install ng sense-hat -y

Pag-install ng Flask Micro Web Framework Python Library

Gagamitin namin ang balangkas ng Flask Python upang likhain ang aming aplikasyon sa panahon. Maaari mong i-install ang Flask mula sa opisyal na imbakan ng package ng Raspberry Pi OS gamit ang sumusunod na utos:

$ sudo apt i-install ang python3-flask -y

Lumilikha ng isang Direktoryo ng Proyekto

Magandang ideya na lumikha ng isang direktoryo ng proyekto upang ayusin ang iyong mga file ng proyekto. Upang lumikha ng isang direktoryo ng proyekto ~ / trabaho , gamitin ang sumusunod na utos:

$ mkdir ~ / trabaho

Kapag nilikha ang direktoryo ng proyekto, mag-navigate sa direktoryo ng proyekto tulad ng sumusunod:

$ cd ~ / trabaho

Pagsubok sa Raspberry Pi Sense Hat

Upang masubukan kung gumagana ang Raspberry Pi Sense Hat, maaari kaming magsulat ng isang simpleng script ng Python na pagsubok. Maaari kang lumikha ng isang bagong script ng Python na tinatawag pagsubok.py kasama ang nano text editor tulad ng sumusunod:

$ nano test.py

Ipasok ang sumusunod na code sa pagsubok.py file Pag-import ng linya 1 SenseHat galing sa sense_hat module, linya 3 lumilikha a SenseHat bagay at nag-iimbak ng sanggunian sa may katuturan variable, at mga linya na 5-6 itinakda ang kulay ng lahat ng 8 × 8 LEDs sa pula. Kapag tapos ka na, pindutin ang + X sinundan ng AT at .

Maaari mong patakbuhin ang pagsubok.py Python script na may sumusunod na utos:

$ python3 test.py

Ang 8 × 8 LED matrix ay dapat na mamula sa pulang kulay tulad ng ipinakita sa imahe sa ibaba.

Upang patayin ang mga LED ng Sense Hat, patakbuhin ang malinaw () paraan nang walang anumang halaga ng kulay sa pagsubok.py Python script, tulad ng ipinakita sa screenshot sa ibaba, at patakbuhin ang pagsubok.py Python script ulit.

Ang mga LED ng Sense Hat ay dapat na patayin ngayon, tulad ng ipinakita sa imahe sa ibaba.

Kung ang Sense Hat ay gumagana nang maayos, pagkatapos ay magpatuloy sa susunod na seksyon.

Pagkuha ng Data ng Panahon mula sa Sense Hat

Maaari kang makakuha ng data ng sensor mula sa Sense Hat nang napakadali sa pamamagitan ng paggamit ng sense-hat Aklatan ng Python. Upang makuha ang data ng sensor mula sa Sense Hat, maaari kang lumikha ng isang bagong script ng Python read_sensor_data.py tulad ng sumusunod:

$ nano read_sensor_data.py

Ipasok ang sumusunod na code sa read_sensor_data.py Python file.

mula sasense_hatangkatSenseHat
mula sa oras angkatmatulog
may katuturan=SenseHat()
may katuturanmalinaw()
habang Totoo:
tempC=may katuturanget_temperature()
tempF=tempC *(9/5)+32
presyon=may katuturanget_pressure()
halumigmig=may katuturanmakakuha ng_humidity()

mag-print('Temperatura:% .2f ° C /%. 2f ° F. n'%(tempC,tempF))
mag-print('Presyon:% .2f mb n'%(presyon))
mag-print('Humidity:% .2f %% n n'%(halumigmig))
matulog(5)

Kapag tapos ka na, pindutin ang + X sinundan ng AT at .

Sa code sa itaas, ang mga linya 1 at 2 ay nag-import ng lahat ng kinakailangang mga aklatan, ang linya 4 ay lumilikha ng a SenseHat object, at linya 5 pinapatay ang lahat ng mga LED ng Sense Hat gamit ang malinaw () pamamaraan Ang habang loop sa linya 7 ay isang walang katapusan na loop na tatakbo ang code sa mga linya 8-16 magpakailanman.

Sa linya 8, ang get_temperature () ginagamit ang pamamaraan upang mabasa ang data ng temperatura (sa degree Celsius) mula sa sensor ng halumigmig ng Sense Hat. Sa linya 9, ang data ng temperatura ay nabago mula degree Celsius hanggang degree Fahrenheit. Sa linya 10, ang get_pressure () ginagamit ang pamamaraan upang mabasa ang data ng presyon ng hangin (sa millibars) mula sa sensor ng presyon ng Sense Hat. Sa linya 11, ang get_humidity () ginagamit ang pamamaraan upang mabasa ang data ng kahalumigmigan (sa%) mula sa sensor ng halumigmig ng Sense Hat.

Ginagamit ang mga linya 13-15 upang mai-print ang data ng sensor sa console, at ang linya 16 ay ginagamit upang maghintay ng 5 segundo bago basahin muli ang data ng sensor.

Maaari mong patakbuhin ang read_sensor_data.py Ang script ng Python tulad ng sumusunod:

$ python3 read_sensor_data.py

Kapag naipatakbo ang script, ang data ng sensor ay mai-print sa console.

Ngayon na nababasa na natin ang data ng sensor mula sa Sense Hat, pindutin + C upang ihinto ang programa.

Lumilikha ng isang Weather Station Web App

Sa seksyong ito, ipapakita namin sa iyo kung paano gamitin ang balangkas ng web ng Python Flask upang lumikha ng isang API ng panahon at isang application ng panahon. Maa-access ng application ng panahon ang data ng API API at ipapakita ang data ng panahon sa real time. Ang lahat ng code na tinalakay sa seksyong ito ay magagamit sa GitHub sa shovon8 / raspberry-pi-sense-hat-panahon-app .

Una, lumikha ng a server.py Python script sa direktoryo ng proyekto tulad ng sumusunod:

$ nano server.py

Ipasok ang sumusunod na code sa server.py Python file.

mula saprasongangkatPrasko
mula saprasongangkatjsonify
mula saprasongangkatrender_template
mula saprasongangkaturl_para
mula sasense_hatangkatSenseHat
app=Prasko(__name__)
appconfig['SEND_emium_MAX_AGE_DEFAULT'] = 0
may katuturan=SenseHat()
may katuturanmalinaw()
kasama siapptest_request_context():
url_para('static',filename='style.css')
url_para('static',filename='app.js')
@appruta('/apoy')
defapoy():
tempC=may katuturanget_temperature()
tempF=tempC *(9/5)+32
presyon=may katuturanget_pressure()
presyonPsi=presyon *0.0145038
presyonP=presyon *100
halumigmig=may katuturanmakakuha ng_humidity()

bumalik kajsonify({
'temperatura':{ 'C': tempC, 'F': tempF},
'pressure':{ 'mb': presyon, 'hPa': presyon,
'psi': pressurePsi, 'P': presyonP},
'kahalumigmigan': kahalumigmigan
})
@appruta('/')
defbahay():
bumalik karender_template('./home.html')

Pagkatapos, pindutin ang + X sinundan ng AT at upang mai-save ang server.py Python script.

Sa code sa itaas, ang mga linya sa 1-5 ay nag-i-import ng lahat ng kinakailangang mga aklatan, ang linya 7 ay lumilikha ng isang Flask app, ang linya 11 ay lumilikha ng isang bagay na SenseHat, at ang linya 12 ay pinapatay ang lahat ng mga LED ng Sense Hat. Hindi pinagana ng Line 8 ang web caching para sa Flask app. Dahil ang app na ito ay magaan, hindi na kailangan para sa pag-cache. Kung nais mong baguhin ang app, kung gayon ang pagkakaroon ng hindi paganahin ang pag-cache sa web ay magiging mas madali ang pagsubok.

Mga linya 18-31 basahin ang data ng sensor mula sa Sense Hat at ibalik ang data ng API sa format na JSON sa kahilingan sa HTTP GET sa /apoy endpoint ng web server. Ang mga linya 37–39 ay bumalik ang homepage ng web app ng panahon sa / endpoint ng web server. Ang homepage ay nai-render mula sa bahay.html file, na dapat ay nasa mga template / direktoryo ng direktoryo ng proyekto.

Ginagamit ang mga linya 14-16 upang pahintulutan ang pag-access sa style.css at app.js static na mga file. Ang mga file na ito ay dapat nasa static / direktoryo ng direktoryo ng proyekto. Ang style.css ginamit ang file upang i-istilo ang bahay.html homepage, at ang app.js ginamit ang file upang humiling ng data ng API mula sa /apoy endpoint at i-update ang data ng panahon sa bahay.html pahina bawat 5 segundo.

Lumikha ng static / at mga template / direktoryo sa direktoryo ng proyekto tulad ng sumusunod:

$ mkdir -v {static, template}

Gumawa ng bahay.html file sa mga template / direktoryo tulad ng sumusunod:

Mga template ng $ nano / home.html

Ipasok ang sumusunod na code sa bahay.html file


< html >
< ulo >
< meta pangalan='viewport' nilalaman='lapad = lapad ng aparato, paunang iskala = 1.0'>
< pamagat >Station ng Panahon ng Raspberry Pi</ pamagat >
< link rel='styleheet' uri='text / css'
href='{{url_for (' static ', filename =' style.css ')}}'/>
</ ulo >
< katawan >
< div id='nilalaman'>
< h1 >Station ng Panahon ng Raspberry Pi</ h1 >

< div klase='data-content'>
< h2 >Temperatura</ h2 >
< div klase='row-data'>
< div klase='data-cell' id='tempC'>
...
</ div >
< div klase='data-cell' id='tempF'>
...
</ div >
</ div >
</ div >

< div klase='data-content'>
< h2 >Presyon</ h2 >
< div klase='row-data'>
< div klase='data-cell' id='pressureMb'>
...
</ div >
< div klase='data-cell' id='pressurePsi'>
...
</ div >
</ div >
< div klase='row-data'>
< div klase='data-cell' id='pressureHpa'>
...
</ div >
< div klase='data-cell' id='pressureP'>
...
</ div >
</ div >
</ div >

< div klase='data-content'>
< h2 >Humidity</ h2 >
< div klase='row-data'>
< div klase='data-cell' id='kahalumigmigan'>
...
</ div >
</ div >
</ div >
</ div >

< iskrip uri='text / javascript' src='{{url_for (' static ', filename =' app.js ')}}'></ iskrip >
</ katawan >
</ html >

Pagkatapos, pindutin ang + X sinundan ng AT at upang mai-save ang bahay.html file

Gumawa ng style.css file sa static / direktoryo tulad ng sumusunod:

$ nano static / style.css

Ipasok ang mga sumusunod na code sa style.css file

@angkat url('https://fonts.googleapis.com/css2?family=Roboto&display=swap');
* {
padding: 0;
margin: 0;
font-pamilya: 'Robot', sans-serif;
}
katawan{
background: # 737373;
}
h1{
ipakita: harangan;
kulay: # 79DC7B;
text-align: gitna;
font-bigat: 400;
background: # 000;
padding: 0.5em 0;
}
h2{
ipakita: harangan;
background: # 000;
kulay: #fff;
text-align: gitna;
font-bigat: 400;
laki ng font: 1em;
}
.data-nilalaman {
margin: 10px;
hangganan: 2px matibay itim;
border-radius: 5px;
kulay ng background: # 79DC7B;
}
.data-row {
ipakita:baluktot;
baluktot-direksyon:hilera;
}
.data-cell {
lapad: 100%;
taas: 80px;
ipakita:baluktot;
align-item: gitna;
katwiran-nilalaman: gitna;
font-bigat: matapang;
laki ng font: 1.5em;
kulay: # 006902;
}
.data-cell:magpasadya {
background: # FFE891;
kulay: # AA8600;
sumpa: pointer;
}

Pagkatapos, pindutin ang + X sinundan ng AT at upang mai-save ang style.css file

Lumikha ng isang app.js file sa static / direktoryo tulad ng sumusunod:

$ nano static / app.js

Ipasok ang sumusunod na code sa app.js file

bintanaaddEventListener('load',pangunahing);
pagpapaandarpangunahing() {
pagpapaandargetAPIData() {
kung saanhttp= bagoXMLHttpRequest();

http.onreadystatechange = pagpapaandar() {
kung(ito.handa na Estado === 4 && ito.katayuan === 200) {
pag-update(Si JSON.parse(ito.tugonTeksto));
}
}

http.buksan('GET', '/apoy', totoo);
http.magpadala();
}


pagpapaandarpag-update(apiData) {
kung saantempC=dokumentogetElementById('tempC');
kung saantempF=dokumentogetElementById('tempF');
kung saanpressureMb=dokumentogetElementById('pressureMb');
kung saanpresyonPsi=dokumentogetElementById('pressurePsi');
kung saanpressureHpa=dokumentogetElementById('pressureHpa');
kung saanpresyonP=dokumentogetElementById('pressureP');
kung saanhalumigmig=dokumentogetElementById('kahalumigmigan');

tempC.panloobHTML =parseFloat(apiData.temperatura.C).toFixed(2) + '° C';
tempF.panloobHTML =parseFloat(apiData.temperatura.F).toFixed(2) + '° F';

pressureMb.panloobHTML =parseFloat(apiData.presyon.mb).toFixed(2) + 'mb';
presyonPsipanloobHTML =parseFloat(apiData.presyon.psi).toFixed(2) + 'psi';
pressureHpapanloobHTML =parseFloat(apiData.presyon.hPa).toFixed(2) + 'hPa';
presyonP.panloobHTML =parseFloat(apiData.presyon.P).toFixed(2) + 'P';

halumigmigpanloobHTML =parseFloat(apiData.halumigmig).toFixed(2) + '%';
}


pagpapaandarapp() {
bintanasetInterval(pagpapaandar() {
getAPIData();
}, 5000);
}

app();
}

Pagkatapos, pindutin ang + X sinundan ng AT at upang mai-save ang app.js file

Dito, tumatakbo ang linya 1 sa pangunahing () gumana kapag natapos ang paglo-load ng web page. Nasa pangunahing () pagpapaandar, ang getAPIData () Kinukuha ng function ang data ng panahon API gamit ang AJAX at tinawag ang update () pagpapaandar (sa linya 10) sa sandaling ang data ay matagumpay na nakuha. Ang update () ina-update ng pagpapaandar ang elemento ng web page gamit ang data ng API.

Sa linya 20, ang document.getElementById () ginagamit ang pamamaraan upang makuha ang sanggunian ng elemento ng web page kasama ang id tempC . Ginagamit ang linya 28 upang palitan ang nilalaman ng elemento ng web page na mayroong id tempC na may temperatura (sa Celsius) mula sa API. Sa parehong paraan, ang mga nilalaman ng lahat ng mga elemento ng web (mga linya 21-26) ay pinalitan ng kani-kanilang data ng API.

Nasa app () pagpapaandar, ang getAPIData () ay tinatawag na bawat 5 segundo (5000 milliseconds) upang panatilihing napapanahon ang data ng panahon sa app ng panahon. Panghuli, sa linya 46, ang app () ang pagpapaandar ay naisakatuparan.

Upang subukan ang web app, ipasok ang sumusunod na utos:

$ FLASK_APP = server.py flask run --host = 0.0.0.0

Dapat patakbuhin ang app ng panahon sa port 5000 (bilang default).

Upang masubukan kung gumagana ang Weather API, patakbuhin ang sumusunod na utos:

$ curl -s http: // localhost: 5000 / api | json_pp

Tulad ng nakikita mo, ang data ng Weather API ay naka-print sa console. Samakatuwid, gumagana ang API.

Upang subukan ang Weather app, bisitahin http: // localhost: 5000 mula sa isang web browser ng Chromium. Ang Weather app ay dapat na mai-load sa web browser, ngunit walang dapat ipakita ang data ng panahon sa una.

Pagkatapos ng ilang segundo, dapat tapusin ng app ng panahon ang pagkuha ng data ng panahon mula sa API at ipakita ito.

Sa anumang punto, maaari mong pindutin + C upang ihinto ang web server.

Lumilikha ng Serbisyo ng Systemd para sa Weather Web App

Sa seksyong ito, ipapakita namin sa iyo kung paano lumikha ng isang systemd na file ng serbisyo para sa app ng panahon upang awtomatiko itong magsimula sa pag-boot.

Una, lumikha ng a istasyon ng panahon.serbisyo file sa iyong direktoryo ng proyekto tulad ng sumusunod:

$ nano taya ng panahon-serbisyo.serbisyo

Ipasok ang mga sumusunod na linya ng code sa istasyon ng panahon.serbisyo file

[Yunit]
Paglalarawan = Raspberry Pi Weather Station Web App Paggamit ng Raspberry Pi Sense Hat
Pagkatapos = network.target

[Serbisyo]
WorkingDirectory = / bahay / pi / trabaho
Kapaligiran = FLASK_APP = server.py
Kapaligiran = FLASK_ENV = paggawa
ExecStart = / usr / bin / flask run --host = 0.0.0.0
StandardOutput = mana
StandardError = magmamana
I-restart = palagi
Gumagamit = pi

[I-install]
WantedBy = multi-user.target

Pagkatapos, pindutin ang + X sinundan ng AT at upang mai-save ang istasyon ng panahon.serbisyo file

Kopyahin ang istasyon ng panahon.serbisyo file sa / etc / systemd / system / direktoryo na may sumusunod na utos:

$ sudo cp -v weather-station.service / etc / systemd / system /

I-reload ang mga systemd daemons para magkabisa ang mga pagbabago tulad ng sumusunod:

$ sudo systemctl daemon-reload

Ang istasyon ng panahon Ang serbisyo ng systemd ay dapat na hindi aktibo sa sandaling ito, tulad ng ipinakita sa screenshot sa ibaba.

$ sudo systemctl katayuan ng panahon-istasyon.service

Simulan ang istasyon ng panahon serbisyo na may sumusunod na utos:

$ sudo systemctl simulan ang weather-station.service

Tulad ng nakikita mo, ang istasyon ng panahon tumatakbo na ang serbisyo.

$ sudo systemctl katayuan ng panahon-istasyon.service

Ngayon na ang istasyon ng panahon gumagana ang serbisyo, maaari mong idagdag ito sa startup ng system ng Raspberry Pi OS na may sumusunod na utos:

$ sudo systemctl paganahin ang panahon-istasyon.service

I-reboot ang iyong Raspberry Pi gamit ang sumusunod na utos:

$ sudo reboot

Kapag ang iyong mga botas na Raspberry Pi, ang istasyon ng panahon ang serbisyo ay dapat na tumatakbo, tulad ng ipinakita sa screenshot sa ibaba.

$ sudo systemctl katayuan ng panahon-istasyon.service

Pag-access sa Weather App mula sa Iba Pang Mga Device

Upang ma-access ang app ng panahon mula sa iba pang mga aparato sa iyong home network, kailangan mong malaman ang IP address ng iyong Raspberry Pi. Maaari mong mahanap ang IP address ng iyong Raspberry Pi 4 mula sa interface ng pamamahala ng web ng iyong router sa bahay. Sa aming kaso, ang IP address ay 192.168.0.103, ngunit ang address na ito ay naiiba para sa iyo, kaya tiyaking palitan ang address na ito sa iyo sa lahat ng mga kasunod na hakbang.

Kung mayroon kang access sa Raspberry Pi console, maaari mong patakbuhin ang sumusunod na utos upang hanapin din ang IP address.

$ hostname -ako

Kapag nalaman mo ang IP address ng iyong Raspberry Pi, maaari mo itong ma-access mula sa anumang aparato sa iyong home network. Tulad ng ipinakita sa screenshot sa ibaba, na-access namin ang app ng panahon mula sa isang Android smartphone.

Konklusyon

Sa artikulong ito, ipinakita namin sa iyo kung paano gamitin ang Raspberry Pi Sense Hat upang bumuo ng isang istasyon ng panahon ng Raspberry Pi. Ginamit namin ang sense-hat Python library upang kumuha ng data ng panahon mula sa Raspberry Pi Sense Hat. Pagkatapos, ginamit namin ang Flask Python micro web framework upang lumikha ng isang API ng panahon at isang web application. Nakukuha ng web app ang data ng lagay ng panahon mula sa panahon API bawat 5 segundo upang panatilihing napapanahon ang web app sa pinakabagong data ng panahon.