Come impostare ‘hourly’ per la registrazione oraria con pywws

Introduzione

Ci sono due abbastanza differenti modalità di funzionamento con pywws. Tradizionalmente con Hourly viene eseguito a intervalli regolari (di solito un’ora) da cron. Questo è adatto per siti Web abbastanza statici, ma aggiornamenti più frequenti possono essere utili per i siti come Weather Underground (http://www.wunderground.com/). Il più recente programma LiveLog gira continuamente e può i caricare dati ogni 48 secondi.

Nota che sebbene questo documento (e il nome del programma) si riferisce alla registrazione ‘hourly’(‘oraria’), è possibile eseguire Hourly come più frequente o meno come ti piace, ma non cercare di eseguirlo più frequente per raddoppiare l’intervallo di registrazione. Ad esempio, se l’intervallo di registrazione è di 10 minuti, non eseguire Hourly più frequente che ogni 20 minuti.

Guida introduttiva

Prima di tutto, è necessario installare pywws e assicurarsi che si possono ottenere i dati dalla tua stazione meteo. Vedere Come iniziare con pywws per i dettagli.

Esecuzione una prova con Hourly dalla riga di comando, con un alto livello di verbosità in modo da poter vedere ciò che sta accadendo:

python -m pywws.Hourly -vvv ~/weather/data

Entro cinque minuti (supponendo di aver impostato un intervallo di registrazione di 5 minuti) si dovrebbe vedere un messaggio ‘live_data new ptr’, seguita dal recupero di eventuali nuovi dati dalla stazione meteo ed elaborarli.

Percorsi dei file di configurazione

Aprire il file weather.ini con un editor di testo. Si dovrebbe avere una sezione di [paths] simile al seguente (dove xxx è il tuo nome utente):

[paths]
work = /tmp/weather
templates = /home/xxx/weather/templates/
graph_templates = /home/xxx/weather/graph_templates/
local_files = /home/xxx/weather/results/

Modificare queste per soddisfare le vostre preferenze di installazione. work è una directory temporanea utilizzata per archiviare i file intermedi, templates è la directory per i tuoi file modello di testo e graph_templates è la directory per i tuoi file grafici di modello e local_files è una directory dove viene messo l’output del modello che non è stato caricato in un sito web. Non usare le directory di esempio pywws per questi, perchè saranno sovrascritti quando si aggiorna pywws.

Copiare i modelli di testo e grafico nelle directory appropriate. Si possono trovare alcuni esempi forniti con pywws utili per iniziare. Se hai installato pywws con pip gli esempi dovrebbero essere in /usr/share/pywws o /usr/local/share/pywws o simili.

Configurazione dell’esecuzione periodica

In weather.ini si dovrebbe avere le sezioni [logged], [hourly], [12 hourly] e [daily] simili ai seguenti:

[logged]
services = []
plot = []
text = []

[hourly]
...

Questo specifica cosa Hourly dovrebbe fare quando viene eseguito. Attività nella sezione [logged] vengono eseguite ogni volta che ci nuovi dati registrati, le attività nella sezione [hourly] vengono effettuate ogni ora, le attività nella sezione [12 hourly] vengono eseguite due volte al giorno e le attività nella sezione [daily] vengono eseguite una volta al giorno.

La voce services è un elenco di servizi meteo online per inviare i dati meteo. Le voci plot e text sono elenchi di file di modello grafico e file di testo per essere elaborati e, opzionalmente, caricati su un sito web. Aggiungere i nomi dei file di modello e servizi meteo alle voci appropriate, ad esempio:

[logged]
services = ['underground', 'metoffice']
plot = []
text = []

[hourly]
services = []
plot = ['7days.png.xml', '24hrs.png.xml', 'rose_24hrs.png.xml']
text = [('tweet.txt', 'T'), '24hrs.txt', '6hrs.txt', '7days.txt']

[12 hourly]
services = []
plot = []
text = []

[daily]
services = []
plot = ['28days.png.xml']
text = [('forecast.txt', 'T'), 'allmonths.txt']

Si noti l’uso del flag 'T' – questo dice a pywws si inviare il risultato a Twitter invece di caricarlo sul proprio sito ftp.

È possibile verificare che tutti questi stiano lavorando rimuovendo tutte le linee last update da status.ini, quindi eseguire nuovamente Hourly:

python -m pywws.Hourly -v ~/weather/data

Cambiato nella versione 13.06_r1015: Aggiunto il flag 'T'. Precedentemente i modelli Twitter sono stati indicati separatamente in voci twitter in [hourly] e di altre sezioni. La sintassi precedente funziona ancora, ma è obsoleta.

Cambiato nella versione 13.05_r1009: L’ultimo aggiornamento delle informazioni è era memorizzato in precedenza in weather.ini, con ultimo aggiornamento le voci sono in sezioni diverse.

Utilizzare gli script di utilità

L’installazione di pywws include un breve script pywws-hourly.py che viene installato nel /usr/bin o /usr/local/bin o simili. Si dovrebbe essere in grado di utilizzare questo script per eseguire Hourly:

pywws-hourly.py -v ~/weather/data

Eseguire con cron job

La maggior parte dei sistemi UNIX/Linux hanno un demone ‘cron’ che può eseguire programmi in certi momenti, anche se non si è connessi al computer. Si modifica un file ‘crontab’ per specificare cosa eseguire e quando per farlo funzionare. Ad esempio, per eseguire Hourly a zero minuti di ogni ora:

0 * * * *       pywws-hourly.py /home/jim/weather/data

Questo potrebbe funzionare, ma probabilmente non sarà possibile ottenere eventuali messaggi di errore per dirvi che cosa è andato storto. È molto meglio eseguire uno script che esegue Hourly e poi invia tramite e-mail qualsiasi output prodotto. Ecco lo script che uso:

#!/bin/sh
#
# weather station logger calling script

if [ ! -d /data/weather/ ]; then
  exit
  fi

log=/var/log/log-weather

pywws-hourly.py -v /data/weather >$log 2>&1

# mail the log file
/home/jim/scripts/email-log.sh $log "weather log"

Sarà necessario modificare questo file un bel pò per soddisfare i vostri percorsi di file e così via, ma dà un’idea di cosa fare.


Commenti o domande? Si prega di iscriversi per al mailing list pywws http://groups.google.com/group/pywws e facci sapere.