I denne artikkelen skal jeg vise deg hvordan du oppretter en Python API -basert værstasjons webapplikasjon ved å bruke temperatur, barometrisk trykk, og luftfuktighet Sensorer av Raspberry Pi Sense Hat. For å følge med denne artikkelen, trenger du følgende:
MERK: I denne artikkelen vil vi koble til Raspberry Pi eksternt via VNC eller SSH ved å bruke det hodeløse oppsettet av Raspberry Pi. Hvis du ikke vil få tilgang til bringebærpi -en din via SSH eller VNC, må du koble til en skjerm, et tastatur og en mus til Raspberry Pi.
For å lære å blinke Raspberry Pi OS -bildet på et microSD -kort, vennligst referer hvordan du installerer og bruker Raspberry Pi Image. Hvis du trenger hjelp til å installere Raspberry Pi OS på Raspberry Pi, kan du lese hvordan du installerer Raspberry Pi OS på Raspberry Pi 4. Hvis du trenger hjelp med det hodeløse oppsettet av Raspberry Pi, kan du sjekke ut hvordan du installerer og konfigurerer Raspberry Pi OS på Raspberry Pi 4 uten ekstern skjerm.
Koble Raspberry Pi Sense Hat til Raspberry Pi
Raspberry Pi Sense Hat Kit lever.
Før du kan knytte sansehattbrettet til Raspberry Pi, må du koble 40-pinners overskriften til Sense Hat. Koble de mannlige pinnene til den 40 pinners hann-kvinnelige overskriften til sansehatten som vist på bildene nedenfor.
Raspberry Pi-datamaskiner har 4 hull som kan brukes til å feste tilleggsbrett eller en sak. For å feste tilleggskortet, sett inn skruer fra baksiden av Raspberry Pi, som vist på bildene nedenfor.
Koble deretter en avstand til skruen.
Når du har lagt til alle fire skruene og avstandsstykkene, skal Raspberry Pi se ut som det som vises på bildet nedenfor.
Koble Raspberry Pi Sense Hat til 40-pinners GPIO mannlige overskrift på Raspberry Pi, som vist på bildene nedenfor.
MERK: Vær forsiktig mens du kobler fra Raspberry Pi Sense Hat fra Raspberry Pi 40-pinners GPIO-header for å unngå å bøye pinnene til Raspberry Pi GPIO.
Med de fire gjenværende skruene, fest Raspberry Pi Sense Hat, som vist på bildene nedenfor.
Kraft på Raspberry Pi
Nå som Raspberry Pi Sense Hat er koblet til Raspberry Pi, sett inn microSD -kortet med Raspberry Pi OS i MicroSD -kortsporet til Raspberry Pi, koble strømkabelen til Raspberry Pi og slå den på.
Installere Raspberry Pi Sense Hat Python Library
For å bruke Raspberry Pi Sense Hat på Raspberry Pi, Sense-hat Python -biblioteket må installeres på Raspberry Pi OS. De Sense-hat Bibliotek er tilgjengelig i det offisielle pakkelagde av Raspberry Pi OS.
For å installere Raspberry Pi Sense-hat Python -biblioteket på Raspberry Pi OS, oppdater først APT Package Repository Cache med følgende kommando:
$ sudo apt oppdateringKjør deretter følgende kommando:
$ sudo apt install sense -hat -yInstallere Flask Micro Web Framework Python Library
Vi vil bruke Flask Python Framework for å lage vår værprogram. Du kan installere kolben fra det offisielle pakkelagde av Raspberry Pi OS med følgende kommando:
$ sudo apt install python3 -kolbe -yOpprette en prosjektkatalog
Det er lurt å lage en prosjektkatalog for å organisere prosjektfilene dine. For å lage en prosjektkatalog ~/arbeid, Bruk følgende kommando:
$ mkdir ~/arbeidNår prosjektkatalogen er opprettet, navigerer du til prosjektkatalogen som følger:
$ cd ~/arbeidTesting av Raspberry Pi Sense Hat
For å teste om Raspberry Pi Sense Hat fungerer, kan vi skrive et enkelt test Python -skript. Du kan lage et nytt Python -skript som heter test.py med Nano Text Editor som følger:
$ nano test.pySkriv inn følgende kode i test.py fil. Linje 1 importerer Sensehat fra Sense_hat modul, linje 3 skaper en Sensehat objekt og lagrer en referanse i føle variabel, og linjer 5-6 setter fargen på alle 8 × 8 lysdioder til rødt. Når du er ferdig, trykk + X etterfulgt av Y og .
Du kan kjøre test.py Python -skript med følgende kommando:
$ python3 -test.py8 × 8 LED -matrisen skal gløde i rød farge som vist på bildet nedenfor.
For å slå av lysdiodene til sansehatten, kjører du klar() metode uten noen fargeverdi i test.py Python -skriptet, som vist på skjermbildet nedenfor, og kjører test.py Python -manus igjen.
Ledene til sansehatten skal nå slås av, som vist på bildet nedenfor.
Hvis sansehatten fungerer som den skal, kan du gå videre til neste avsnitt.
Få værdata fra Sense Hat
Du kan skaffe sensordata fra sansehatten veldig enkelt ved å bruke Sense-hat Python Library. For å hente sensordata fra sansehatten, kan du opprette et nytt Python -skript read_sensor_data.py følgende:
$ nano read_sensor_data.pySkriv inn følgende kode i read_sensor_data.py Python -fil.
fra Sense_hat import sansehatNår du er ferdig, trykk + X etterfulgt av Y og .
I koden over importerer linjer 1 og 2 alle nødvendige biblioteker, Line 4 oppretter en Sensehat objekt, og linje 5 slår av alle lysdiodene i sansehatten ved å bruke klar() metode. Mens sløyfe i linje 7 er en uendelig sløyfe som kjører koden i linjer 8-16 for alltid.
På linje 8, den get_temperature () Metoden brukes til å lese temperaturdataene (i grader Celsius) fra fuktighetssensoren til sansehatten. På linje 9 konverteres temperaturdataene fra grader Celsius til grader Fahrenheit. I linje 10, den get_pressure () Metoden brukes til å lese lufttrykksdataene (i Millibars) fra trykktesensoren til sansehatten. I linje 11, den get_humidity () Metoden brukes til å lese fuktighetsdataene (i %) fra fuktighetssensoren til sansehatten.
Linjer 13-15 brukes til å skrive ut sensordataene til konsollen, og linje 16 brukes til å vente i 5 sekunder før du leser sensordataene igjen.
Du kan kjøre read_sensor_data.py Python -manus som følger:
$ python3 read_sensor_data.pyNår skriptet er kjørt, vil sensordata bli skrevet ut til konsollen.
Nå som vi kan lese sensordataene fra sansehatten, trykk + C For å stoppe programmet.
Opprette en Weather Station Web App
I denne delen vil vi vise deg hvordan du bruker Python Flask Web Framework for å lage et vær -API og en værprogram. Værprogrammet får tilgang til værdata -API og viser værdataene i sanntid. All koden som er omtalt i denne delen er tilgjengelig på GitHub på Shovon8/Raspberry-Pi-Sense-Hat-Weather-App.
Først må du lage en server.py Python -skript i prosjektkatalogen som følger:
$ Nano Server.pySkriv inn følgende kode i server.py Python -fil.
Fra kolbeimportkolbeTrykk deretter + X etterfulgt av Y og For å redde server.py Python -manus.
I koden over, linjer 1-5 importerer alle nødvendige biblioteker, Line 7 oppretter en kolbe-app, Line 11 oppretter et Sensehat-objekt, og linje 12 slår av alle lysdioder i sansehatten. Linje 8 deaktiverer nettbufring for Flask -appen. Fordi denne appen er lett, er det ikke behov for hurtigbufring. Hvis du vil endre appen, vil det å ha netthåndverk gjøre tester mye enklere å ha nettbufring.
Linjer 18-31 Les sensordataene fra Sense Hat og returner API-dataene i JSON-format på HTTP Få forespørsel i /api endepunkt på webserveren. Linjer 37-39 Returner hjemmesiden til været på / endepunkt på webserveren. Hjemmesiden er gjengitt fra hjem.html fil, som skal være i Maler/ Katalog for prosjektkatalogen.
Linjer 14-16 brukes til å gi tilgang til stil.CSS og app.JS statiske filer. Disse filene skal være i statisk/ Katalog for prosjektkatalogen. De stil.CSS fil brukes til å style hjem.html hjemmeside, og app.JS fil brukes til å be om API -dataene fra /api endepunkt og oppdatere værdataene på hjem.html Side hvert 5. sekund.
Opprett statisk/ og Maler/ Katalog i prosjektkatalogen som følger:
$ mkdir -v statisk, malerLage en hjem.html fil i Maler/ Katalog som følger:
$ nano maler/hjemme.htmlSkriv inn følgende kode i hjem.html fil.
Temperatur
Press
Luftfuktighet
Trykk deretter + X etterfulgt av Y og For å redde hjem.html fil.
Lage en stil.CSS fil i statisk/ Katalog som følger:
$ nano statisk/stil.CSSSkriv inn følgende koder i stil.CSS fil.
@import url ('https: // skrifter.Googleapis.com/css2?familie = roboto & display = bytte ');Trykk deretter + X etterfulgt av Y og For å redde stil.CSS fil.
Lage en app.JS fil i statisk/ Katalog som følger:
$ nano statisk/app.JSSkriv inn følgende kode i app.JS fil.
vindu.AddEventListener ('Last', hoved);Trykk deretter + X etterfulgt av Y og For å redde app.JS fil.
Her kjører linje 1 hoved() funksjon når websiden er ferdig med lasting. I hoved() funksjon, getapidata () Funksjonen henter Weather API -dataene ved hjelp av Ajax og kaller Oppdater() Funksjon (i linje 10) Når dataene har blitt hentet med hell. De Oppdater() Funksjon oppdaterer websidenelementet ved hjelp av API -dataene.
I linje 20, den dokument.getElementById () Metoden brukes til å få referansen til websideelementet med IDen tempc. Linje 28 brukes til å erstatte innholdet i websideelementet som har ID tempc med temperaturen (i Celsius) fra API. På samme måte erstattes innholdet i alle nettelementer (linjer 21-26) med sine respektive API-data.
I app () funksjon, getapidata () kalles hvert 5. sekund (5000 millisekunder) for å holde værdataene oppdatert i værappen. Til slutt, i linje 46, app () funksjon utføres.
For å teste webappen, skriv inn følgende kommando:
$ Flask_app = server.py kolbe run -host = 0.0.0.0Værappen skal kjøre på port 5000 (som standard).
For å teste om vær -API fungerer, kjør følgende kommando:
$ Curl -S http: // localhost: 5000/api | JSON_PPSom du kan se, skrives Weather API -dataene på konsollen. Derfor fungerer API.
For å teste værappen, besøk http: // localhost: 5000 fra en kromnettleser. Værappen skal lastes på nettleseren, men ingen værdata skal vises med det første.
Etter noen sekunder skal værappen fullføre å hente værdataene fra API og vise den.
Når som helst kan du trykke på + C å stoppe webserveren.
Opprette SystemD -tjeneste for Weather Web App
I denne delen vil vi vise deg hvordan du oppretter en SystemD -tjenestefil for værappen slik at den automatisk starter ved oppstart.
Først må du lage en værstasjon.service fil i prosjektkatalogen din som følger:
$ Nano værstasjon.serviceSkriv inn følgende kodelinjer i værstasjon.service fil.
[Enhet]Trykk deretter + X etterfulgt av Y og For å redde værstasjon.service fil.
Kopier værstasjon.service fil til /etc/systemd/system/ Katalog med følgende kommando:
$ sudo cp -v værstasjon.service/etc/systemd/system/Last inn Systemd -demonene på nytt for at endringene skal tre i kraft som følger:
$ sudo SystemCTL Daemon-ReloadDe værstasjon SystemD -tjenesten skal være inaktiv for øyeblikket, som vist på skjermdumpen nedenfor.
$ sudo systemctl status værstasjon.serviceStart værstasjon Tjeneste med følgende kommando:
$ sudo systemctl start værstasjon.serviceSom du kan se, værstasjon Tjenesten kjører nå.
$ sudo systemctl status værstasjon.serviceNå som værstasjon Tjenesten fungerer, du kan legge den til systemstart av Raspberry Pi OS med følgende kommando:
$ SUDO SystemCTL Aktiver værstasjon.serviceStart Raspberry Pi på nytt med følgende kommando:
$ sudo omstartNår Raspberry Pi -støvlene værstasjon Tjenesten skal kjøres, som vist på skjermdumpen nedenfor.
$ sudo systemctl status værstasjon.serviceFå tilgang til værappen fra andre enheter
For å få tilgang til værappen fra andre enheter i hjemmenettverket ditt, må du kjenne IP -adressen til Raspberry Pi. Du kan finne IP -adressen til Raspberry Pi 4 fra webadministrasjonsgrensesnittet til hjemmeruteren din. I vårt tilfelle er IP -adressen 192.168.0.103, men denne adressen vil være annerledes for deg, så sørg for å erstatte denne adressen med din i alle påfølgende trinn.
Hvis du har tilgang til Raspberry Pi -konsollen, kan du også kjøre følgende kommando for å finne IP -adressen.
$ hostname -iNår du kjenner IP -adressen til Raspberry Pi, kan du få tilgang til den fra hvilken som helst enhet i hjemmenettverket. Som vist på skjermbildet nedenfor, har vi fått tilgang til værappen fra en Android -smarttelefon.
Konklusjon
I denne artikkelen viste vi deg hvordan du bruker Raspberry Pi Sense Hat for å bygge en Raspberry Pi Weather Station. Vi brukte Sense-hat Python -biblioteket for å hente ut værdata fra Raspberry Pi Sense Hat. Deretter brukte vi Flask Python Micro Web Framework for å lage et vær -API og en webapplikasjon. Nettappen får værdataene fra Weather API hvert 5. sekund for å holde webappen oppdatert med de nyeste værdataene.