Raspberry Pi ci apre una finestra sul meteo

In questo articolo vedremo come, utilizzando Scratch e OpenWeatherMap, sia possibile reperire le informazioni meteorologiche relative a qualunque città del nostro pianeta. Questi dati verranno poi utilizzati per creare una visualizzazione grafica delle condizioni meteo presenti in quella città.

Cosa imparerete

Realizzando questa applicazione per Raspberry Pi avrete la possibilità di imparare:

  • come collegare lo strumento di sviluppo Scratch alle API di gestione delle informazioni meteo;
  • come utilizzare i sensori in Scratch, acquisendone il relativo stato;
  • come visualizzare graficamente le condizioni meteo.

Cosa occorre

Per quanto riguarda l'hardware, non occorre nient'altro che un Raspberry Pi e le solite periferiche. Per quanto riguarda invece il software, occorrerà anzitutto disporre di una schedina di memoria SD con un'immagine aggiornata. Come riferimento, potete seguire le indicazioni contenute in questa guida sull'aggiornamento di Raspbian. Occorrerà inoltre aver installato i seguenti software addizionali:

  • Python 3 pyowm
  • Python 3 scratch

Le istruzioni relative all'installazione di queste librerie sono contenute nella pagina di installazione software.

Come acquisire le informazioni meteo

La prima cosa da fare è quella di accedere alle API meteo. Come molti di voi sapranno, il termine API non è altro che l'acronimo di "Application Programming Interface". Sembra un termine complicato, ma in realtà non è altro che un insieme di regole che permettono al vostro programma di colloquiare con altri tipi di software.

  1. Il servizio meteo che utilizzerete in questa applicazione è chiamato OpenWeatherMap. Si tratta di un servizio completamente gratuito, ed è caratterizzato da un'API molto semplice da utilizzare. Avrete tuttavia bisogno di crearvi un account, quindi cliccate sul link precedente e procedete con la registrazione direttamente sul sito.
  2. Cliccando su Sign Up comparirà l'immagine di figura 1.
  3. Scegliete una username, inserite il vostro indirizzo email e fornite poi una password (figura 2).
  4. Una volta eseguito il login in, dovreste vedere una pagina con la vostra chiave segreta per le API. Questa è molto importante, per cui provvedete a copiarla subito nella clipboard (Figura 3).

 

 

Fonte: www.raspberrypi.org

Figura 1: Finestra di sign up [Fonte: www.raspberrypi.org]

 

Fonte: www.raspberrypi.org

Figura 2: Finestra di New account [Fonte: www.raspberrypi.org]

 

Fonte: www.raspberrypi.org

Finestra 3: Chiave segreta [Fonte: www.raspberrypi.org]

Un piccolo aiuto da Python

Scratch 1.4 non è di per sè in grado di comunicare su internet, per cui occorrerà un piccolo script Python che permetta a Scratch di comunicare con le API di OpenWeatherMap.

  1. Aprite il programma Scratch.
  2. Cliccate sul tasto 'Sensing' (figura 4).
    Fonte: www.raspberrypi.org

    Figura 4: tasto sensing [Fonte: www.raspberrypi.org]

  3. Cliccando poi con il tasto destro sul blocco slider sensor value, potete selezionare enable remote sensor connections dal menu contestuale che apparirà.
  4. E' probabilmente una buona idea salvare ora il file. Chiamiamolo magic-window.
  5. Una volta predisposto Scratch, potete scaricare questo script.
  6. Per eseguire lo script occorre aprire una finestra terminale e digitare:
    python3 weather.py, oppure potete aprire il file con IDLE e premere F5 per eseguirlo.
  7. Dovete accertarvi che lo script stia effettivamente girando, altrimenti l'applicazione Scratch non funzionerà. Ogni volta che vorrete utilizzare il vostro programma Scratch, dovrete prima eseguire questo script.

Una camera con vista

A questo punto occorre selezionare una view da associare alla window.

  1. Cliccare sull'oggetto Stage (Figura 5):
    Fonte: www.raspberrypi.org

    Figura 5: Oggetto stage [Fonte: www.raspberrypi-org]

  2. Potete ora cambiare lo sfondo dello stage. Cliccate sul tasto Import e scegliete un'immagine di vostro gradimento. Potete anche scegliere un'immagine direttamente online, navigando sul web (figura 6).
    Fonte: www.raspberrypi-org

    Figura 6: Scelta dell'immagine [Fonte: www.raspberrypi-org]

Le variabili

Affinchè l'applicazione funzioni correttamente, occorre a questo punto definire alcune variabili.

  1. Cliccate su Make a variable e assegnate il nome key alla vostra prima variabile. Create poi una seconda variabile, a cui darete il nome location. E' ovviamente importante digitare correttamente i nomi delle variabili, assicurandosi che siano introdotte con soli caratteri minuscoli (Figura 7).
    Fonte: www.raspberrypi.org

    Figura 7: Key & Location [Fonte: www.raspberrypi.org]

  2. Ora dovrete utilizzare la vostra chiave segreta per le API, come indicato nell'immagine di figura 8.
    Fonte: www.raspberrypi.org

    Figura 8: Utilizzo della chiave segreta [Fonte: www.raspberrypi.org]

  3. Questa chiave verrà inviata allo script Python, che a sua volta la trasmetterà al servizio OpenWeatherMap. Per ottenere le informazioni relative al meteo, OpenWeatherMap necessita anche di conoscere la città di cui si vogliono avere le informazioni meteo. Potete continuare a chiedere questa informazione all'interno di un ciclo forever, in modo tale che l'utente possa cambiare la destinazione geografica di interesse (Figura 9).
    Fonte: www.raspberrypi.org

    Figura 9: Scelta della località geografica [Fonte: www.raspberrypi.org]

Test delle API

  1. Cliccate sulla bandierina verde ("green flag"), poi inserite il nome di una città e il relativo country code nella finestra di dialogo che apparirà. I nomi delle città dovrebbe terminare con un carattere virgola (Figura 10).
    Fonte: www.raspberrypi.org

    Figura 10: Scelta città [Fonte: www.raspberrypi.org]

    I country code dovrebbero essere composti di due lettere, sempre con caratteri minuscoli. Ecco alcuni esempi:London,uk
    Nassau,bs
    Sofia,bg
    Berlin,de
    Pyongyang,kp
    Lusaka,ze
  2. Dopo aver inserito il nome della città, il country code, e aver premuto il tasto Enter l'applicazione Scratch invierà i dati allo script Python, che a sua volta interrogherà il servizio OpenWeatherMap. Potete vedere alcuni dei dati meteo cliccando sulla piccola freccia vicino alla parola slider. Dovreste essere in grado di vedere le parole clouds, rainfall, temperature, wind_direction e wind_speed (Figura 11).
    Fonte: www.raspberrypi.org

    Figura 11: Parametri da inserire [Fonte: www.raspberrypi.org]

  3. Se le informazioni non compaiono, assicuratevi che lo script Python stia funzionando correttamente.

Portami il sole

  1. Un buon modo per indicare la temperatura potrebbe essere quello di dimensionare l'immagine del sole visualizzata all'esterno della finestra.
  2. Anzitutto, dovrete procurarvi una bella immagine del sole. Potete sceglierne una per conto vostro, oppure utilizzare la figura 12.
    Fonte: www.raspberrypi.org

    Figura 12: Semplice immagine di un sole [Fonte: www.raspberrypi.org]

  3. Cliccate sul tasto per importare una nuova Sprite (Figura 13).
    Fonte: www.raspberrypi.org

    Figura 13: New sprite [Fonte: www.raspberrypi.org]

  4. Importate ora la vostra immagine del sole, e posizionatela vicino all'estremo superiore del vostro schermo.
  5. Ora dovrete utilizzare il valore di temperatura per dimensionare opportunamente l'immagine del sole. Potete fare qualche esperimento con diversi valori, a seconda delle dimensioni originali dell'immagine che avete scelto. Nell'esempio di figura 14, il sole è dimensionato al valore di temperatura +60. Il tutto è collocato all'interno di un forever loop in modo tale che ogni volta che si cambia la città, la temperatura viene aggiornata.
    Fonte: www.raspberrypi.org

    Figura 14: Parametro temperature [Fonte: www.raspberrypi.org]

Piccole soffici nuvole

  1. La percentuale di nuvolosità è memorizzata nella variabile clouds, e può essere visualizzata facilmente tramite la trasparenza dell'immagine di una nuvola.
  2. Anche in questo caso potete utilizzare un'immagine di nuvola di vostro piacimento, oppure utilizzare la figura 15.
    Fonte: www.raspberrypi.org

    Figura 15: Esempio di immagine di nuvola [Fonte: www.raspberrypi.org]

  3. L'immagine può essere modificata in modo tale da scurirla secondo vostro piacimento (Figura 16).
    Fonte: www.raspberrypi.org

    Figura 16: Immagine della nuvola scurita [Fonte: www.raspberrypi.org]

  4. All'interno di un forever loop, dovrete impostare l'effetto ghost a 100 - clouds. Così, se c'è una percentuale di cielo coperto pari al 20% (100 - 20 = 80), l'effetto ghost dovrebbe essere impostato a 80 (Figura 17).
    Fonte: www.raspberrypi.org

    Figura 17: Effetto ghost [Fonte: www.raspberrypi.org]

Soffiando nel vento

  1. Quando c'è vento, le nuvole si muovono più velocemente, così potete utilizzare la velocità del vento per modificare la velocità di spostamento della nuvola (Figura 18).
    Fonte: www.raspberrypi.org

    Figura 18: parametro wind_speed [Fonte: www.raspberrypi.org]

  2. La nuvola rimbalza quando colpisce il bordo dello schermo, e poi inverte il movimento verso il basso. Per impedire questo comportamento, occorre impostare la sprite a do not rotate, cliccando sul piccolo quadrato nero come mostrato nella figura 19.
    Fonte: www.raspberrypi.org

    Figura 19: Parametro do not rotate [Fonte: www.raspberrypi.org]

Vento del cambiamento

Il vento può cambiare direzione, per cui sarebbe bello se lo script potesse mostrare all'utente in quale direzione sta soffiando.

  1. Per questa funzionalità occorre utilizzare una sprite a forma di freccia. Una sprite di questo tipo è disponibile nella libreria Scratch, oppure potete sceglierne una voi sul web.
  2. Aggiungete questo script al vostro sprite freccia, in modo tale che punti nella direzione corrente del vento (Figura 20).
    Fonte: www.raspberrypi.org

    Figura 20: Parametro wind_direction [Fonte: www.raspberrypi.org]

Fate piovere

  1. L'ultima informazione meteo da visualizzare è la pioggia. Scaricate questo file zip. Potete poi estrarre le immagini contenute al suo interno digitando il seguente comando sul terminale:
    unzip rain.zip
  2. Create ora una nuova sprite importando la prima immagine della pioggia.
  3. Nel tab costumes, importate le altre immagini della pioggia, una per una (Figura 21).
    Fonte: www.raspberrypi.org

    Figura 21: Importazione delle immagini [Fonte: www.raspberrypi.org]

  4. Se la piovosità è 0, la sprite deve essere nascosta. Se invece la piovosità è maggiore (>) di 0, la sprite deve essere visibile e il costume dovrebbe continuamente cambiare. Il tempo tra ogni cambio di costume può dipendere dalla piovosità, per cui più è alta, più velocemente il costume cambierà (Figura 22).
    Fonte: www.raspberrypi.org

    Figura 22: Piovosità [Fonte: www.raspberrypi.org]

Da una finestra

Per completare il vostro programma potete aggiungere una nuova sprite, che rispecchia la forma di una finestra di casa (Figura 23).

Fonte: www.raspberrypi.org

Figura 23: Nuova sprite [Fonte: www.raspberrypi.org]

Prossimi passi

C'è molto che si potrebbe fare con questo progetto, per esempio si potrebbe aggiungere un po' di hardware come dei LED per indicare se piove o meno. Inoltre, si potrebbe cambiare lo scenario in Scratch in modo che corrisponda al paese richiesto. Infine, si potrebbe indagare nel codice Python per scoprire quali altri dati meteo siano disponibili.

Link

Articolo orginale:

https://www.raspberrypi.org/learning/window-on-the-weather/

Iscriviti e ricevi GRATIS
Speciale Pi

Fai subito il DOWNLOAD (valore 15€) GRATIS

STAMPA     Tags:, ,

Una risposta

  1. Maurizio Di Paolo Emilio Maurizio 12 giugno 2016

Scrivi un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Iscriviti e ricevi GRATIS
Speciale Pi

Fai subito il DOWNLOAD (valore 15€) GRATIS