Il progetto che propongo in questo articolo non è il solito circuito con vari sensori in grado di effettuare letture e registrare dati. Questo è più una sorta di "station" da tavolo che visualizza, su un LCD 20x4, le previsioni meteo lette dal canale Yahoo, l'orario e data, temperatura/umidità esterna e temperatura interna al locale. In realtà il progetto nacque per far pratica sulla board Raspberry Pi poi, invece, si rilevò anche un oggetto utile per la casa. L'articolo si concentra non tanto sulla realizzazione dell'oggetto in sé ma sulle varie funzioni del circuito e sull'approfondimento del programma scritto in Python. Alcune particolarità della station sono la visualizzazione delle previsioni meteo in Italiano, la possibilità di registrare i dati letti dal sensore DS18B20 in Google Drive, l'invio del meteo giornaliero in email e la gestione vocale, tramite un altoparlante amplificato e una scheda audio USB, per la lettura dell'orario e della temperatura.
Come detto, questo progetto nasce per fare pratica con la Raspberry Pi, per tanto ho cercato d'inserire diverse funzioni da sperimentare; tra queste troviamo:
- Visualizzazione dei dati sul lcd 20x4 :
- Data;
- Ora;
- Temperatura esterna;
- Umidità esterna;
- Temperatura interna;
- Previsioni meteo odierna di una città a scelta;
- Previsioni meteo per i successivi 4 giorni;
- Gestione vocale per la lettura della:
- Data;
- Ora;
- Temperatura;
- Umidità.
- Invio email giornaliero a orario stabilito con:
- Previsioni meteo della giornata;
- Proverbio del giorno.
- Gestione dei dati:
- Scrive periodicamente i dati letti su un file xls in Google Drive.
Le informazioni appaiono sullo schermo con data e ora nella prima riga, temperatura interna/esterna e umidità alla seconda riga, nelle restanti due le previsioni meteo alterandosi un giorno alla volta ogni cinque secondi.
Tutte queste funzioni utilizzano vari moduli e applicativi, alcune di terze parti e altre di mia realizzazione, gestite dal programma principale nominato "index.py". Nel dettaglio sono organizzati nel seguente modo:
Index.py: programma principale che gestisce moduli e applicativi come "espeak" per la sintesi vocale, "pywapi" per le previsioni meteo, "gspread" per il salvataggio dei dati in Google Drive, "HD44780_20x4.py" per la gestione del display, inoltre configura e invia l'email con le previsioni del giorno e in fine legge i valori della temperatura interna dal sensore DALLAS DS18B20 (già visto in un altro articolo).
pywapi.py: una classe che, tramite codice della propria città, ricava i dati delle previsioni meteo da un server a scelta tra "Yahoo! Weather", "Weather.com" o "NOAA"; per questo progetto ho scelto di utilizzare "Yahoo! Weather". I dati ricevuti dal server sono in Inglese ma volendo però visualizzare il testo in Italiano ho realizzato un modulo, nominato "previsioni.py", per la traduzione dei testi. Il principio di funzionamento è semplice; ho registrato in una funzione dizionario tutti i testi delle previsioni generabili dal server (circa 47) per essere poi confrontate col dato ricevuto e restituire la corrispondenza in Italiano. Raramente capita che il server meteo venga aggiornato con dei nuovi codici e testi di previsione, di conseguenza il programma (index.py) non troverà la corrispondenza per la traduzione nel suo dizionario, in tal caso provvederà a creare un file di testo, nominato "newforecast", con i testi delle mancate traduzioni. I testi tradotti possono essere inseriti manualmente nel dizionario senza pregiudicare il funzionamento del programma principale. Esempio della struttura di "previsioni.py":
diz_terms={'sunrise':'Alba','sunset':'Tramonto','Partly Cloudy':'Parz. nuvoloso','Sunny':'Soleggiato','Showers':'Pioggia leggera', 'Scattered Thunderstorms':'Temporali dispersi','PM Thunderstorms':'Temporale al PM','AM Thunderstorms':'Temporali al AM','Thunderstorms':'Temporali', ....
proverbi.py: un dizionario con 366 proverbi corrispondenti uno per ogni giorno dell'anno (29 Febbraio compreso). Il proverbio corrispondente alla data corrente verrà allegato alla email con le previsioni del giorno. In index.py è possibile inserire l'invio email a più destinatari.
HD44780_20x4.py: un modulo per la configurazione e gestione del LCD tipo HITACHI HD44780.
Schema elettrico
Lo schema elettrico è composto da un LCD 20x4 della HITACHI, un trimmer per regolare il contrasto del LCD, un sensore temperatura [...]
ATTENZIONE: quello che hai appena letto è solo un estratto, l'Articolo Tecnico completo è composto da ben 3414 parole ed è riservato agli ABBONATI. Con l'Abbonamento avrai anche accesso a tutti gli altri Articoli Tecnici che potrai leggere in formato PDF per un anno. ABBONATI ORA, è semplice e sicuro.
Interessante applicazione. Ulteriori sensori si potrebbero implementare (umidità, pressione etc) e perchè no, fare un confronto con quelli letti dal Web (se il PI è posto fuori). Il tool Wolfram potrebbe anche rappresentare i dati in un grafico, inviato successivamente via email come report ogni settimana/mese.
Ciao Maurizio, bella idea quella di utilizzare il servizio Wolfram per rappresentare i dati in un grafico. In passato ho utilizzato questo tool per creare una sorta di SIRI col RBPi ma per colpa di alcuni limiti, sia hardware che dello stesso tool (a pagamento), ho dovuto interrompere il progetto. Comunque tra non molto presenterò un nuovo articolo che implementerà altre funzioni alla desk weather 😉
Bell progetto, complimenti! Domani lo testo, anche se non ho il sensore di temperatura.
Ho trovato molto interessante il progetto, complimenti!
Ciao Ernesto, bel progetto !
Alle ottime idee di Maurizio aggiungerei la creazione di una rete di weather station sul territorio nazionale. Il servizio di tracciamento dei dati climatici (temperatura, umidità, pressione, piovosità, etc.) e i risultati dell’analisi statistica degli scostamenti dalle previsioni potrebbero tornare utili a molte categorie di cittadini (agricoltori, allevatori, turisti e operatori del turismo, ricercatori, etc.).
Ovviamente ci vorrebbe una massa critica di weather station sul territorio nazionale (per partire gli abbonati EOS ?). Che ne pensi ? Un’utopia ?
A presto
Francesco A.
Bella idea….. 😉
Sarebbe una bella stazione da esterni con i sensori oppotuni, peccato per i consumi….
grande applicazione
Bella applicazione e grande idea (quella di f.amantea)
E se voglio inviare tramite ssh tutti i dati che dovrebbero comparire sullo schermo? Come faccio?
Sono in Pi3, ci sono delle modifiche da fare?
La linea 6 from datetime import datetimeGPIO. add dà errore, cosa fare?
Tramite file manager impossibile copiare i file verso root, come fare
Grazie
Luca