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.
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.
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.
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.
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
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.