You are on page 1of 4
Raspberry Pi: Monitor meteo Python: realizzare un monitor meteo Trasformatevi in esperti delle previsioni meteorologiche e tenete sotto controllo la temperatura con la RP e Python 34 Rast tina iataomaperts [oeerrscrermtentcmdevn perauteedcazrcan ats pert Samar stare, necedowes ie? newsto peas Mmosrerano cme coun nied arpa ab tncznrcoanfranol aac ase suungutechemesirl erddlin epoca colaees acerca amber (qaunquerode con una cress ore ana those danpersiraOSIBEDD un conan ‘co do tm tel etc tnmnevoat. Satur otware eter dsOpen esther Mapper egg idameto Satta AP tea beanie tar erent tga egrpata calm etna tenon ance mse presen oda sto Pesae (DotA dowtreptro ecco suMti7 cromosthemeron/apoctere wrecks Remote dnomatangenedtwlnpocnoavetuonea teoposenae Lav perme espera te davon ou Wraps eco nate moaloPytonpyoum che cere Sraeroccre no scpsPVoncan soto re Pe fare dow oaren ayo pcg ree Toldotbreiovte Raby Recronloe ope tate sen untamabe agane cco progetto fini, Potete aimentarto usando una batteriaaggiuntiva per smartphone cost da piazzare circuit in mezzo al giardina Per proteggerto dalle intemperie Ccomene perd mettera sotto un contenitore di plastica sudo pip32 install prowm Oraavate feditor Python (IDLE), aprteuna nuova finest andando in Fle > Newe nziateilcodie importando | madull necessar, Byowm él wrapper Python per OpentWeatherMap, mentre dal modulo time dovete importare solos funzione sleep che ser via successivamente por controlare la veloc dl esecuzione del programma: ‘import pyowm, fom time import sleep Subito dopo bisogna dete una funzione che consente Vinterrogezione de servizio meteo usando un solo co invece ch una lungs sequenza distruzicn' def got_weather(n: Sinz assagrusido nome get weather als [unione, Abbiamoinseito un argomento (n) rake perentesitondk: € Uunlopzione per cambiar luogo d cui si cercano idati meteo. Ps crea una variable owm che cortiene la vostra chive: ‘ow = pyown, OWML (COPIATE QUILA VOSTRA CHIAVE) Doveto copiare la vostra chive tra plc sgl per asicurar che Python capisca che sitratta dna stringa. Nota questa linea indentata per mostrare che appartiene ala funzione appera creata. Subito dopo serve unatra variable: ‘observation = owm:weather_atplace()) (Questa vriablesi china observation e siusa come seorciatoia.al nome dfunzione che raporesenta la posizione usatanalloserpt Controllare il tempo Servoro tre due variabil da usare come scoriatoie une per recuperere idatimeteoe unaperleggerela temperatura in trad Cals: cbeervaton get weather) get temperature cass) Nelutimalinea dela furzicne use ls funzone print per stampare un messagaro per utente, quaicosa de tipo "La temporctura.atuale a. Per creare questa stringa adopererete la.concatenazione per inser posto cui avete ltt dat (eppresentato dalla variable) fondo iloateruto data variable a contenonto la tomperatura. Quest uma variable putostospecaleperché reat sitatta un dizionario Python che merexiza valor usando na copra chave-valoreInquesto caso incichereteaPython dl cercare lachiave tempi mostrare i sv0 valor: rint("The curenttempercturea’,n)isaltemp‘D Raspberry Pi: Monitor meteo Le API utilizzabili con Python In questa guida facciamo ricorso adue API (Application Program interfaces) necessari | recuperare ica un servinio Web e per creare un gratice partendo da determinati ‘Valor, Luso dalle API sono il metodo pid valoce per patensiare i prop scrigt Python avo iloro use pubessere anche divertente,Pensate, per esempo, di sostture le API Poty con quete di Meecraft Potrestececidere ch maceire i monde del gioco intase ala temperatura esterna: se dove vitrovate dovesce neveae,potreste {fare lnmodo che la stessa cosa cada Nol abbiamo usato una breadboard per creare it prototipo del nostro progetto, ma se volete dargll un _aspetto pi professionale e “definitive” potete usare una Perfboard (http://en.wikipedia.org /wiki/Perfboard) ‘odisegnare un PCB La funzione di test & terminate, quindi salvate i progetto e selezionate Run -> Run Medule dalla barra doi menu di IDLE. La shell Python prendera vita ma non accadra nulla, almeno finché non fornirete un posizione richiamando 'apposita funzione: ‘et weather(“London uk") Inaltemativapotete usare anche be ZIP code: et weather("W12 7L5") Dovteste vedere un output simte al seguente 4# The curent temperature at London ules 2206 Se tuito & andato come doveva, avete appena termineto la funzione che recupers il valor della temperatura dal servizio OpentWeatherMap.£ il momento di passare al sensore di temperatura, Prepara il sensore I sensore ai temperatura goca un rca fondamentale in questo progeta Vieneusato per leggere le temperatura det luago incu vi trovete os de potertaconfrontre on valor ffertida OperiMeatherMp. I sensee che abbiamo usato 2 1Dalas DSIBR20 che a 'aspetio dun ansistorAess0 vero calle refi quelorosso ve al pines 3.3 cella: Le API offrono un metodo rapido ed t’tficace per estendere le capacita di uno script. Sono moti i progetti Open Source ‘a metterle a disposizione della comunita Naps cei ‘nso pogo 2tbare pazaio tesco a 40nm ale ei3veqlo ‘het let omer Ouest reste, toa ul seveatendor state agalee ssasserche Siacomprscento Flr eve CColegati tutti component alimentate ta Raspberry Pi eeattendte lawio dal desktop d Raspbian. Per usare#sensore dovete configure la vostra RP. qundiaprteun terminate edattae larga seguente: sido leafpad fbootlonfigot ‘Siaperilfle d configurazione di boot. Scendete in fondo afflce aggiungeto larga soguente: lovelay=w-gpio ‘Salate @ navviaro 2 RP. Provate a vedere e tutto funziona sempreda LXTerminal dgitat= ‘Saude modprobe v-gpio ‘Sudo modprobe wl therm (Quest due comand caricano | modiul det keel necessar per actedere a sonsore:esso legerala temparaturaatuale la scriveré nun fle: poteteosservareiiconterustodi questo ‘io nol modo seguant: ‘Se /eysfoushe/devices In questa directory dovete cercare una crtalla cheinizia con 28, quind deitate Sis per vedere i contenuto del folder. Indviduta la cartela centratecicon ed Sed 25. .epo)starnpatea schermo ilcontenuto de fe wh_stave: Scatwi slave {Loutput di questo comando @ pttosto lungs. voi davete corcarola riga cho nz con t=. Nelnostrocasoilvaloraetto 12 17.125 che, dviso per 1000 id 17125%, ichedmostra che il sensor furziona corettamente, Saré quad pessibie sarle per memorizareivalon temperatura grazie al codice Python che vi mostriamo di segue, Comeal soltosiiniza importendo i moduli necessarialfurz:onamento del progetto In questo caso occorre|l modulo OS per concentra aPythen dlinteragre con sisterra operativosottostant. i modulo ‘elob serve a gestreinomi de percors alterna det flosystem, montre time viene utiizata per controlar \elocta éesecuzione de! programma Import os impat giob poet time ‘Aquesto punto si pud usare la funzione system i OS per caticare due driver del kernel, uno per il GPIO e uno por i sensor: ca.ysteny{ modprobe wi-gpic}) cssystem{ maxrobe wher’) » Raspberry Pi: Monitor meteo Subito dopo bisogna creare tre veriabil. La prima gestra ' posizione dol sensore di temperatura al interno do filesystem. La seconda usa glob per trovare la directory che contiene i dati del sensore. ultima viene usata per agglungere il nome del fle che contiene | valor reg: strats alla variable precedente: base_dir= ‘sys/bushvidevicas* device folder = glob giob(base dir +280] Aovice file = device foldr +ft_save’ (Ora arrivano due linee di codice particolan.La prima crea una variable globale chiamata temp_e che pud essere sata allinterne e llesterno di una funzione che creerete ta poco. La seconda, invece, genera una lista vuota, Le liste sono siril agl array usati in altri linguage: ein essa memorizzerete i dati di temperatura Global temp sensor=[ Serve ora la funzione che leggerd la temperatura ‘memorizzata nella variabile deviee file creata prima, Aprirete questa file in sola lettura,leggete il suo Eden ETP > Potete scaricare il codice di questa gud dall'URL t://bit!y/LXPIS7.meteo contenuto ¢ pol richiudotelo, Pill avanti stamperete {questi valor nella shel: def ead temp ral: S=open(device. le, ¥) lines = freadlinead) fciose) retum lines Lafunzione seguente gestise Ia lettura dela temperaturs dal sonsore e manipoa i fusso di dati perelminareo cosa supertiue. Come mostrato prima, bisogna diuidere per1.000 ildato registrao cos! da ottenore la corretta temperatura def read temp jbl temp_e lines = eed temp raw) ‘while ines( stip){-3] = "YES: timesleep(0.2) tines = read temp sow esquals_ pos = lines} nd ‘fequals_pos temp. string =lines{afequals_pos 2] ‘emp.c=floatemp_sting)/ 10000 return temp_c ra serve un cicloda esequie cinque vote: ogni terazione ‘stampa a tomperatura lta dal sonsore, s aggiunge questo numero ali ista sensor e pola sistampa aspettanda 3600 second (urore) prima di ripetereil processo: fori in range: ineadterp0) sensorappend{temp_«) rint{sensor) time.skop(3600) Cormpltatoilcocice,savatelo ed eseguteo usando Run > Run Module Senttew ther di cambiareintenvalo tempo dattesa tra un ciclo e Fair Impostare Plotly Orasipassa ala parte gratia del progetto. Questa gestta a Ploty. una sluziene grata hasta sulle che fonisce uriecoalete AP per Python Davete cree un acount su ittps:/ platy eottenere anche in questacaso ina chive (on questa sottomana, aprte Terminal sulavostra Raspbarry Pie insalateiimadul rehsto: sudo pi-32 instal peiy Aquesto punto doveteindfcae a Pct 1 vstonome uterte sla vostrachiave dalle API. Sempre da termieae digtate larga seguente (lunge. mad ununiceriga) Spsthon-< impor plot pltytoos set credentials Acquistare il sensore di temperatura Per quest tule abbiaro usato snore temperatura 0518620, checasta crea 5& led 2un componente standard presente ache Inaleunikit di ektvonica Adrelaventane ‘ste una versione modfiata,con ca ps lung eresistontoalfacqua. incluso nol it CamJam EduKit n2 vento ca stoMttpe// thepitut.com.Prtrorpo questosito Web non verde nelnosto paese per cucowete corre ‘al sensore standard che va comune berissima, Sul marcato eison cwarents ‘anche desenscriaternativ, come popolan DHT eDHTZ2. Quest senson, pero, uRaND uN ‘mado diferente dal DSIBB20 perinterfaciasi conlaRaspoerry Pi. DHTIL/22 utizzane math Lurautputanslogco perinvare it alla scheda UsandoloconArduire nancasarebbero problemi visto che questa pittaformaé dotata diportearalogiche, mala RP non neha. Quin sevolete sare questotino sensor cenlaRP, dete poeurars un ADS (Analog fo Distal Converter er consent al picool computer cileggere dati sul temperatura. Questoct portaa de che tsonsoredanoiusato lascoka economics eanche quel id face do ‘mettere opera, ma sl lteter cee civersarente, Raspberry Pi: Monitor meteo {il{useriame=IL VOSTRO NOME UTENTE! apLhey= [API KEY:stroam_ids=['STREAM ID:'STREAM ID] Trovee tutte quest nfoerazion alTURL https://ploty/ python/getting-started dopo ave creeto un eccount Assemblare il tutto Finer aete croato eas delprogetto adesso bi momento nie evare par, Asscuraten ck aver IDLE con pee) dh ammestratore usando I comande segue da terminate Ssuio idles odie niin cane itruzion per importarei moduli necessa per sistema operatno, nomi de flere flesysto, AP! per | dat metea la tom porizazione ei gat Import os ‘import glob Jmport pyowmn, fon time impor sleep import plotlyplotly as py from plotly.graph_objs import * Subst dopo serve un posto cartralzatoin cuimemorzare le chia dee AP OperteatherMape Paty ‘pysign_in' USERNAME’, ‘API KEY") ‘key = (API KEY’) Poibisogracaricare modu del kama perilsesore: cssystem( modprobe wi-gpo) caystem( modprobe wither) questo punto necessar create alcune vara pe rmemorzzarelaposiione del sensore nel flesysteme defile incuiessomemorzza dat, Servo ptr liste Latstax contineiperodootempo considera perl regstezone dala ernperatura per eserpio dale le Lalstay @ wuota ed euseta per memorzare dat dela temperatura che arwvano da OpeneatherMap, mente sensor anchiossa wo, ogra dat registra dal sensor ‘age dit = Joyebush/dvices? device folder = glob.glob(base_dir + 28")[0} device lo = doves der + Yr slaw bal temp _¢ = ['10:00"11:00712.00'/13:007,14:00] ‘Dopo ver preparato fo Siazio per regstrare datibisogna creare le funcienche I rlevino eli laborino.La prima furzione legge dati da OpeniteatherMlaped molto simile aquola visia nela prima parte del progetto, con ‘unica diferenza che Fultmarigac get weather(n) viene usata per aggiungere valor di temperatura ala stay creata poco fa: ‘yappena(atemp') La seconda tunzione read temp raw( renanela stessa delfesempio precedente. A questo puntos passa cadice del loop daripeterecinque vlte Esso recupera dati meteo dela localta incicata ero legge a temperatura registrata dal sensor. Entrar valonvengono seri nal rispetive liste, Usendole funzione append, Giusto come controlb.a questo punto cocice stampa a schermo valor ltto al serisore Inne si mete in pausa ciclo per 3600 second (unre) prima di passare alla successivaitrazione dl cco: foriimrangets) gc_weather Blackpool uk) read temp0) sensorappenditem <) prittemp_c) sleep( 3600) Lutte brano di codice da sonvere senveadisegnare il gratico con dati Vrranno mostrat due tracciati TaeaO viene creata om dat recuperati da OpenWeatherMap per fassey.rentre perl'asse x iusano i vlorpredefnitilegat foraclettura PorTracel fassex2 lo stesso, menive y conten valor registra del sensore. Infie simpacchetta tutto in una listae Inviano | data https://plotly. in questo modo: {uace0 = Seaterteh 4) ‘uacel = Seater(xhy-{eens01)) data = Data(traceo, tacel)) ‘unique_ url= pyplot(data, flename = Blackpool Temperature’) (rai cosice & completo: eseguitelo come indicato prima, ‘Altarmine dalfasocuzione si apirain automatico una fnostra del browser che mostra il grafco csegnato da Phot. AB > Quando eseguite il codice a questo progetto, ess0 Invia suo output alla console Python. Vedrete qui | messaggi sulla ‘temperatura attuale. Alla fine del loop verrainvece creato un grafico da Plotly che appar in una finestra del browser 37

You might also like