Stazione Meteo

Stazione meteoUn dispositivo, come il Raspberry Pi, e il software Linux consentono numerose soluzioni per il mondo hobbistico (e non).
I costi da affrontare sono limitati (poche decine di euro per il Raspberry) e il software disponibile gratuitamente è ampio.
Il mio primo approccio con il Pi è dovuto alla curiosità: l’ho comperato e ho giocato realizzando un progettino trovato su una rivista. L’idea era, ed è, quella di usarlo in alcuni progetti che negli ultimi tempi mi stanno interessando.

Recentemente un amico ha avuto la necessità di far funzionare una stazione meteo collegandola ad internet.

L’uso di un PC è stato escluso: troppo ingombrante ed oneroso in termini di energia elettica ed ingombro. La prima idea è stata quella di utilizzare un thin client comperato su un tavolo di un mercatino a pochi euro. Sul thin client girava Windows CE, ma dopo alcuni problemi ho pensato di migrare a Linux. Il thin client in essere ha poche risorse hardware e tante USB (Disco su flash, processore VIA). Unica cosa possibile e a basso investimento una chiavetta USB come memoria di massa, anche se con un po’ di lavoro sarebbe potuto  adattare un disco ATA o SATA. Sistema operativo Puppy-Slacko. Difficile fare girare altro. Dopo un po’ di prove mi sono orientato su altre soluzioni: Raspberry Pi, appunto. Anche per giustificare l'aver tirato l’amico ad un seminario di presentazione del Raspberry in tedesco (in Germania) e dire che nessuno dei due sa nulla di tedesco. Ci siamo accontentati delle figure proiettate.

Sazione meteo con Raspberry PiQuindi Raspberry.
La scelta iniziale del software si è orientata verso wview, ma ho avuto problemi con l’interfacciamento della stazione meteo, una Watson W-8681. Questa stazione in realtà una Fine Offset WH1080 con il marchio Watson
La seconda scelta è stata il software weewx che fin dalle prime prove non ha mostrato particolari difficoltà per l’acquisizione dei dati dalla stazione meteo.

Weewx
Questo software, come wview ed altri, non fornisce semplicemente in display, ma acquisisce i dati dai sensori, memorizzandoli su un DB SQL (SQL lite, nel mio caso), con la possibilità di renderli disponibili o a un motore HTML (anche remoto), sotto forma di grafici o e tabelle, o ad altri servizi attraverso meccanismi FTP, RSync. In questo modo è possibile creare una rete capillare e diffusa di stazioni meteo.

Weewx è scritto interamente in Python (l’autore, dell’Oregon, scrive che durante l’inverno 2008-2009 non aveva di meglio da fare ed ha scritto il programma), ed è disponibile in diverse forme, in pacchetti ad hoc per le distribuzioni Debian, RedHat e SUSE, oppure per una installazione manuale che bene si presta a tutte le situazioni. Per l’installazione ho scelto quest’ultima opzione, anche perché, provata l’installazione del package per Debian, ho incontrato alcune difficoltà.
La documentazione ufficiale è buona. Oltre a questa ho seguito un post ad hoc per Raspberry.

I prerequisiti per Raspberry sono due: il client FTP (apt-get install ftp) e il deamon NTP ( apt-get install ntp) funzionante (Pi non ha un clock proprio, quando data ed orario di Pi e della stazione sono non allineati, possono crearsi problemi nella gestione corretta dei dati da qui la necessità di un NTP). A questi due io aggiungo Apache per la gestione della parte WEB.

Altri prerequisiti sono chiaramente indicati nella documentazione e di seguito velocemente riportati nella parte inerente la mia installazione:

Dopo l’accesso all’utenza pi:

sudo apt-get install python-configobj         # Usato per la gestione dei file di configurazione
sudo apt-get install python-cheetah           # Usato per la gestione dei template di generazione del codice HTML
sudo apt-get install python-imaging
sudo apt-get install python-usb                 # Gestione usb
sudo apt-get install ftp                              # Richiesto su Raspberry

# Alcuni moduli opzionali (servono per la elaborazione dell'almanacco):
sudo apt-get install python-dev
sudo apt-get install python-pip                  # Installer per pacchetti Python
sudo pip install pyephem                           # Calcoli astronomici, direi usato per indicare le fasi lunari.

Le procedure (e la sicurezza) suggeriscono l’installazione con una utenza diversa da root, che può essere l’utenza pi o, meglio una utenza dedicata: weewx. La procedura di installazione manuale, di default, installa il software nella home directory dell’utenza utilizzata. Nel mio caso ho preferito usare una sub directory della home si nome system26 (la versione installata è la 2.6.4).

Il codice si scarica dal relativo progetto di source forge: http://sourceforge.net/projects/weewx/

Creiamo l’utenza weewx e il gruppo weewx

sudo su
adduser weewx
usermod -a -G sudo weewx

Verificare il corretto funzionamento di NTP.

Nalla directory /home dovrebbe essere peresente la cartella weewx (creata con la creazione dell'utente) dove verra installat il software. Si scarica il software e si espande l’archivio nella directory weewx-2-6-4

cd /home/weewx
wget http://www.weewx.com/downloads/weewx-3.2.1.tar.gz

L'URL per il download può cambiare, come cambia l'ultima versione disponibile

tar xvzf weewx-3.2.1.tar.gz

mkdir system26

cd weewx-2.6.4

In questa cartella c’è il codice e le procedure di installazione.

Prima di procedere occorre modificare il file setup.cfg per indicare la cartella di installazione:

NOTA: la modifica di setup.cfg non è necessaria se si decide di installare il software nella cartella /home/weewx e non usare la sottocartella systemxx.

Nota: ho l’abitudine, prima di modificare un file, di copiare l’originale con l’estensione .ori, questo in molti casi mi ha salvato da misfatti dandomi la possibilità di ritornare alla situazione originale.

vi setup.cfg

e modificare la riga

home = /home/weewx in home = /home/weewx/system26  (modificare, all’occorrenza anche /home/weewx in /home/directory nel caso non si voglia installare nella home directory dello user weewx)

Per preparare l'installazione:

./setup.py build

Per eseguire l'installazione:

sudo ./setup.py install

Il programma di installazione richiede alcune informazioni, come la latitudine e la longitudine della stazione meteo, il modello della tazione meteo ecc.
Questi dati potranno essere modificati in seguito editando il file weewx.conf

La procedura installa weewx in system26 e crea alcune cartelle fra cui /home/weewx/system26/util con alcuni file comodi per la configurazione del deamon weewx e apache (ma che devono essere corretti per la cartella di installazione).

I file con il codice HTML, vengono creati nella cartella /home/weewx/system26/public_html che però, almeno nel mio caso, la procedura di installazioen non ha creato. Quindi va creata a mano con i relativi permessi.

mkdir /home/weewx/system26/public_html
chown weewx:weewx /home/weewx/system26/public_html
chmod 775 /home/weewx/system26/public_html

Il file /home/weewx/system26/weewx.conf va modificato in alcune parti ed in particolare per definire il i dati della stazione, ed il tipo di stazione.

Nel mio caso sono:

# almeno nelle fasi iniziali porre debug a 1
debug = 1

# Directory di installazione di weewx
WEEWX_ROOT = /home/weewx/system26/

[Station]
    # This section is for information about your station
    # Description of the station location.
    location = San Michele Tiorre. Parma, Italy
    # Latitude, longitude in decimal degrees
    latitude = 44.683
    longitude = 10.267

    # Altitude of the station, with unit it is in. This is downloaded from
    # from the station if the hardware supports it.
    altitude = 70, meter    # Choose 'foot' or 'meter' for unit

    # The start of the rain year (1=January; 10=October, etc.). This is
    # downloaded from the station if the hardware supports it.
    rain_year_start = 1

    # Start of week (0=Monday, 6=Sunday)
    week_start = 0

 

[FineOffsetUSB]
    # Tipo di stazione
    # This section is for the Fine Offset series of weather stations.
    # The station model, e.g., WH1080, WS1090, WS2080, WH3081
    model = WH1080

# Di default le unità di misura sono quelle anglosassoni: togliere il commento alla sezione [[[Units]]] come indicato di seguito

    [[[Units]]]
        [[[[Groups]]]]
            group_altitude     = meter
            group_degree_day   = degree_C_day
            group_pressure     = mbar
            group_radiation    = watt_per_meter_squared
            group_rain         = mm
            group_rainrate     = mm_per_hour
            group_speed        = meter_per_second
            group_speed2       = meter_per_second2
            group_temperature  = degree_C

Nota: La stazione Fine Offset di default ha un intervallo di archiviazione (read_period) di 30 minuti (1800 secondi). Per cambiare questo valore usare il seguente comando:

wee_device --set-interval=5

Prima di lanciare manualmente il software, conviene aprire una nuova finestra terminale per monitorare il file syslog, dove vengono riportati i messaggi di funzionamento e di errore più importanti:

tail -f /var/log/syslog

e lanciare weewx da riga comando :

sudo /home/weewx/system26/bin/weewxd /home/weewx/system26/weewx.conf:

Per configurare il deamon occorre preventivamente modificare il file /home/weewx/system26/util/init.d/weewx.debian

Le righe:

# PATH should only include /usr/* if it runs after the mountnfs.sh script
PATH=/sbin:/usr/sbin:/bin:/usr/bin
WEEWX_BIN=/home/weewxbin/weewxd
WEEWX_CFG=/home/weewx/weewx.conf

Devono essere modificate in:

# PATH should only include /usr/* if it runs after the mountnfs.sh script
PATH=/sbin:/usr/sbin:/bin:/usr/bin
WEEWX_BIN=/home/weewx/system26/bin/weewxd
WEEWX_CFG=/home/weewx/system26/weewx.conf

Poi, (quasi) come da documentazione ufficiale, occorre inserire il lanio del deamon nelle script di inizializzazione di Pi:

cd /home/weewx/system26
sudo cp util/init.d/weewx.debian /etc/init.d/weewx
sudo chmod +x /etc/init.d/weewx
sudo update-rc.d weewx defaults 98
sudo /etc/init.d/weewx start

In modo analogo per la configurazione di apache:

 modificare:/home/weewx/system26/util/apache/conf.d/weewx.conf

nel seguente modo:

Alias /weewx /home/weewx/system26/public_html
<Directory /home/weewx/system26/public_html>
  Options FollowSymlinks
  AllowOverride None
  Order allow,deny
  Allow from all
</Directory>

E di seguito:

sudo cp util/apache/conf.d/weewx.conf /etc/apache2/conf.d
sudo /etc/init.d/apache2 restart

Se tutto è funzionante, dopo alcuni minuti di acquisizione dei dati, è possibile visualizzarli via browser:

http://localhost/weewx

Il risultato fonale, la stazione meteo, è disponibile qui: http://www.villaaltair.eu/weewx/Bootstrap/

Stazione meteo

Categoria: 

Tags: 

Mi piace: 

0
No votes yet

Commenti

Trasferimento via FTP

Se si vuole visualizzare i dati della stazione meteo su un sito web e non usare il motore apache di Raspberry e la conseguente pubblicazione del servizio web su internet, si possono trasferire le pagine html, generate da weewx, via FTP verso il sito web.

Occorre modificare il file weewx.conf, la sezione FTP e modificare le voci relative, come in esempio:

        user = utente_ftp
        password = pasword_ftp
        server = IP o noome del server FTP
        path = directory di destinazione
        
        # If you wish to upload files from something other than what HTML_ROOT
        # is set to above, then reset it here:
        # la cartella dove si trovano i files html
        HTML_ROOT = /home/weewx/system26/public_html
       

Una operazione simile si può fare via Rsync.

Mi piace: 

0
No votes yet

Problemi SD

Ritratto di i4nkf

La scheda di memoria SD di Raspberry tende a corrompersi, specialmente se ci cono problemi di alimentazione che cade.

Alcune soluzioni sono:

  1. Adottare una sorta di UPS, una batteria in tampone con un regolatore a 5V può andare.
  2. Ridurre al minimo le scritture su SD.
  3. Lasciare solo la partizione di boot sulla SD e spostere la altre partizioni su una chiavetta USB o su un HD esterno. Qui come spostare il fa root su chiavetta USB.

Per ridurre le scritture si può operare come descritto in questo articolo.

Come solito, commenti e suggerimenti sono graditi.

Mi piace: 

0
No votes yet

I4NKF, Fabrizio

Ci risiamo...

Ritratto di i4nkf

Anzi non ci siamo. La SD si è di nuovo corrotta. Sembra che alcune marche siano meglio di altre. Io non ho lemosinato sulla SD: classe 10 e di marca buona, ma non è bastato.

La nuova soluzione è quella di spostare il file system su una chiavetta USB, che forse è più affidabile, almeno così dicono i vari post.

Trasferire la root su USB è facile e basta cercare in rete, ma se interessa a qualcuno qui descrivo l'operazione. Per ora siamo tornati on-line, vediamo quanto dura.

 

Mi piace: 

0
No votes yet

I4NKF, Fabrizio

Installazione weewx

sto installado weewx su raspberry, ma sto incontrado dei problemi dalla procedura sopra descritta... forse e una male interpretazione da parte mia su i vari passaggi da eseguire..

Domani ci riprovo e posto eventuali immagini della mia installazione.

Mi piace: 

0
No votes yet

Io l'ho usata alcune volte,

Io l'ho usata alcune volte, ma ha sempre funzionato. Unica variante è che nelle installazioni successive non ho utilizzato la subdirectory (/home/weewx/system26/....) ma ho installatto direttamente in weewx.

 

Mi piace: 

0
No votes yet

Operando con l'editor vi su

Operando con l'editor vi su raspberry ci sono alcuni problemi nella gestione dei tasti di direzione.

Il problema si risolve mettendo set nocp nel file di configurazione .vimrc dell'utente

Mi piace: 

0
No votes yet

Intervallo acquisizione dati

La stazione FineOfset tipicamante acquisisce i dati dai senzori ogni 30 minuti. In questo modo con un buffer di 4080 posizioni, può mantenre la storia di 85 giorni.

Per cambiare questo intervallo, ad esempio a 5 minuti, usare il comando:

wee_device --set-interval=5

 

Mi piace: 

0
No votes yet

upload su internet

salve a tutti. ho seguito la guida per configurare correttamente, spero, il raspberry. Il problema che i dati me li agggiorna sul sito solo ogni ora. Ho provato a cambiare l'intervallo a 5 come suggerito ma la cosa non cambia. Il traferimento lo faccio con ftp. Cosa posso fare per sistemare la cosa?

Grazie

Mi piace: 

0
No votes yet

Nel file weewx.conf c'è un

Ritratto di i4nkf

Nel file weewx.conf c'è un parametro  polling_interval con il quale si può settare l'intervallo di acquisiszione dei dati.

Questo parametro, però è anche legato alla stazione meteo che stai usando. Io sto usando FineOffsetUSB

I dati scaricati vengono elaborati e inviati via ftp. Non mi sembra ci siano intervalli di invio dati ftp.

 

Mi piace: 

0
No votes yet

I4NKF, Fabrizio

Pagine