Risultati da 1 a 8 di 8
  1. #1
    Calma di vento
    Data Registrazione
    18/10/09
    Località
    Friuli
    Età
    37
    Messaggi
    4
    Menzionato
    0 Post(s)

    sereno Progetto: programma per Davis su Linux

    Salve a tutti!
    Mi sono imbattuto nel problema di gestire la mia Vantage Pro 2 su Linux e devo dire che ho trovato difficoltà. In particolare ho provato con wview, che sarà sicuramente uno strumento molto potente ma decisamente "impegnativo" per uno alle prime esperienza.
    Per questo e per un po' di pazzia (credo) ho deciso di tentare personalmente la scrittura di un programma, il linguaggio che conosco è Python.
    Nella speranza di trovare qualcuno interessato a condividere il lavoro, posto questo messaggio descrivendo il primo step a cui sono arrivato. Il piccolo programma che presento qui non fa molto: scarica i dati dal datalogger e li archivia. Sicuramente non sarà esente da bug, ma almeno è funzionante.
    Non lo so fin dove lo porterò avanti, ma per adesso mi diverto e questo è quello che conta!

    Programma dei lavori:
    1 comunicazione con la stazione e archiviazione file
    2 creazione interfaccia grafica per visualizzazione
    3 salvataggio in formato .wlk
    4 configurazione stazione
    5 trasmissione dati su sito

    Lo scopo di questo messaggio è quello di chiedere tutto l'aiuto possibile a chi si intende di programmazione, a chi si intende della stazione e delle sue funzionalità e infine a tutti coloro che vogliano dare suggerimenti!

    Step 1 comunicazione con la stazione e archiviazione file


    Nota: gran parte delle informazioni di questo paragrafo derivano dalla nota tecnica "Vantage Pro Serial Support" scaricabile dal sito di Weaterlink o disponibile sul web a questo indirizzo. Oltre che ad una buona dose di tentativi ed insuccessi!

    La stazione comunica con il pc a mezzo di una porta usb, il modulo "serial" di python, permette al nostro programma di "parlare" con la stazione.
    Il dialogo consiste in messaggi che noi scriviamo alla stazione e nelle sue risposte.
    Ad esempio:
    scrittura: '\n' (tasto invio)
    lettura: '\n\r'
    scrittura: 'TEST'
    lettura: 'TEST\n'
    eccetera...

    Trovata una lingua comune per parlarci, ho dovuto capire cosa dire!
    Mi sono concentrato sul comando 'DMPAFT' che conoscendo la data dell'ultimo record memorizzato in archivio, scarica i dati mancanti dal datalogger (Se volete maggiori dettagli leggete il link sopracitato).

    La stazione memorizza i dati in 513 pagine (per questo a datalogger pieno weaterlink ci fa scaricare 513 pagine!). Ogni pagina è composta da una serie di 266 byte, il primo identifica un numero progressivo di pagina, poi ci sono 5 records di 52 byte ciascuno (ogni record per una seire completa di dati) ed in coda altri 6 byte.

    In ogni record sono contenute i dati provenienti dai sensori: data, ora, temperatura, temperature massima e minima nell'intervallo ecc..

    Il programma di questo progetto prende tutti questi dati e li salva in un file binario, poi, traduce i dati binari in un formato numerico. Produce quindi due file: dati_binari.dat e dati_numerici.

    Questo è un esempio di una riga contenuta in quest'ultimo file:
    Codice:
    4944 38 384 384 384 0 0 30312 32767 23 581 50 83 0 0 255 255 255 0 32767 255 9 255 255 255 255 255 255 255 255 0 255 255 166 255 255 255 255 255 255
    4944 => data => (anno-2000) * 512 + mese * 32 + giorno (9*512 + 10*32 + 16) 16 ott 2009
    38 => ora => ore *100 + minuti (00*100 + 38) 00:38
    384 => temp => °F/10 => 38,4 °F
    384 => temp max => °F/10 => 38,4 °F
    384 => temp min => °F/10 => 38,4 °F
    0 => pioggia => numero di clic (non so quanto valga un clic)
    0 => tasso pioggia massimo => clic / ora (come sopra)
    30312 => pressione => pollici di mercurio/1000 (30,312 "Hg)
    32767 => media radiazione solare => non installato sulla mia davis
    23 => numero di campioni di vento => non installato sulla mia davis
    581 => temp interna => °F/10 => 58,1 °F
    50 => umidità interna => 50 %
    83 => umidità asterna => 83 %
    0 => media veocità vento in miglia orarie => non installato sulla mia davis
    0 => massimo veocità vento in miglia orarie => non installato sulla mia davis
    255 => direzione vento 0 = N; 1 = NNE; 2 = NE ... 14 = NW; 15 = NNW; 255 = dashed => non installato sulla mia davis
    255 => direzione vento prevalente 0 = N; 1 = NNE; 2 = NE ... 14 = NW; 15 = NNW; 255 = dashed => non installato sulla mia davis
    255 => media indice UV (indice UV / 10) => non installato sulla mia davis
    0 => ET (in / 1000) => non installato sulla mia davis
    32767 => radiazione solare massima (W/m²) => non installato sulla mia davis
    255 => indice UV massima (W/m²) => non installato sulla mia davis
    9 => previsione tempo (devo approfondire)
    255 => temperatura fogliare (°F 90) => non installato sulla mia davis
    255 => temperatura fogliare (°F 90) => non installato sulla mia davis
    255 => bagnatura fogliare (0 - 15) => non installato sulla mia davis
    255 => bagnatura fogliare (0 - 15) => non installato sulla mia davis
    255 => temperatura suolo (°F 90) => non installato sulla mia davis
    255 => temperatura suolo (°F 90) => non installato sulla mia davis
    255 => temperatura suolo (°F 90) => non installato sulla mia davis
    255 => temperatura suolo (°F 90) => non installato sulla mia davis
    0 => tipo struttura di questi dati (0 = firmwere dopo 24 apr 2002; 255 = prima)
    255 => valore umidità extra => non installato sulla mia davis
    255 => valore umidità extra => non installato sulla mia davis
    166 => temperatura extra (°F 90) => non installato sulla mia davis
    255 => temperatura extra (°F 90) => non installato sulla mia davis
    255 => temperatura extra (°F 90) => non installato sulla mia davis
    255 => umidità del suolo (cb) => non installato sulla mia davis
    255 => umidità del suolo (cb) => non installato sulla mia davis
    255 => umidità del suolo (cb) => non installato sulla mia davis
    255 => umidità del suolo (cb) => non installato sulla mia davis

    Il programma è scritto seguendo questa struttura dati che è quella dei firmwere datato dopo il 24 apr 2002. Molte carateristiche non le ho verificate in quanto non presenti nella mia stazione, chi volesse dare informazioni più precise lo faccia pure!

    La creazione del file dati_numerici.txt produce questi dati grezzi, ma serviva per avere un risultato concreto, era inutile effettuare convesioni con il rischio di perdere precisione negi arrottondamenti, questi dati sono facilmente trattabili in un foglio di calcolo.

    Programma dei lavori:
    1 comunicazione con la stazione e archiviazione file più o meno fatto

    2 creazione interfaccia grafica per visualizzazione fattibile
    Accetto tutte le proposte possibili su come organizzare i dati, su quali visualissare e ini che modalità grafica, sicuramente avete un'opinione più precisa di me su quale potrebe essere la grafica ottimale. Sicuramente con pythin si ottengono risultati molto migliori dell' orribile WeaterLink.

    3 salvataggio in formato .wlk mmm
    Questo punto non è esenziale al funzionamento del programma, ma avere i dati in un formato omogeneo con gli altri programmi è senza dubbio molto utile! Esiste una documentazione in merito (questa), per ora non ci ho capito molto, ma mai dire mai!

    4 configurazione stazione mmm
    Tecnicamente non è difficile, ma ho bisogno di molte delucidazioni su quali siano i parametri da immettere in una configurazione normale.

    5 trasmissione dati su sito mmm
    Di qesto so veramente poco, ma se arrivo a questo punto potre essere così felice da inventarmi qualcosa!!!

    Piccole istruzioni

    Salvare il file allegato in una cartella.
    Collegare la davis ad una porta USB.
    Avviare il programma da terminale. Spostarsi sulla cartella che lo contiene e digitare il comando:
    Codice:
    python Meteo.py
    Il programma dice quante pagine deve scaricare e poi crea i file dati_binari.dat e dati_numerici.txt.

    Il programmino allegato l'ho scritto e testato su Ubuntu Linux. Naturalmente è una versione rudimentale, la prima funzionante. Non preoccupatevi di perdere dati in quanto la memoria del datalogger non viene cancellata con la lettura, quindi potete fare tutti i test che volete.

    Per avviare il programma è necessaria la libreria "python-serial" non presente di default in Python, si può scaricarla dai repository (da Sinaptic in Ubuntu).

    Buoni test!
    File Allegati File Allegati
    Ultima modifica di Fab86; 18/10/2009 alle 11:22

  2. #2
    Vento moderato L'avatar di sassetto
    Data Registrazione
    24/01/05
    Località
    Chioggia
    Età
    56
    Messaggi
    1,266
    Menzionato
    0 Post(s)

    Predefinito Re: Progetto: programma per Davis su Linux

    Molto molto molto interessante!!!

    Io uso il WL solo per avere due files: il downld02.txt che contiene tutti i dati rilevati ogni 5 minuti (con gli estremi per temp, vento, UV e RadiazSolare) e poi un template che legge i dati dalla stazione ogni minuto (di meno non si può) e crea un file html.
    In questo modo prendo il primo file e lo metto su un db MySql e ho lo storico, col secondo file ho i dati aggiornati ogni minuto senza aspettare il primo file.
    Secondo te: senza sovraccaricare il processore, ogni quanto si può fare una lettura pc-->stazione? Tieni conto che il parametro più aggiornato è il vento che ha un refresh di 2,5 secondi.
    Nell'avatar: io, come mi vede Francesco.

  3. #3
    Calma di vento
    Data Registrazione
    18/10/09
    Località
    Friuli
    Età
    37
    Messaggi
    4
    Menzionato
    0 Post(s)

    Predefinito Re: Progetto: programma per Davis su Linux

    Non ho ancora lavorato sui dati in tempo reale (tra poco però ho pronto il programma che fa direttamente i .wlk), quello che chiedi lo farò al prossimo passo.

    Ad ogni modo, al pc gli fa un baffo l'operazione di lettura, il limite è dato dal tempo di risposta della stazione, credo comunque che ogni 2-3 secondi sia fattibilissimo! Unico inconveniente è che la console è sempre attiva e quindi consuma più velocemente le pile!

    Comunque i lavori procedono velocemente, è molto più semplice di quello che credessi.
    Un programma che fa solo quello che chiedi è molto semplice!

    A presto aggiornamenti!

    P.S.: Ci ho meesso un po' ad inquadrare il lampione!

    P.P.S. : Ho controllato la lettura dei dati istantanea si fa con il comando "LOOP n" che trasmette una serie di dati ogni 2,5 secondi per n volte. Quindi 2,5 s è il limite minimo, per tempi maggiori credo bisogna utilizzare il comando "LOOP 1" alla distanza voluta. Inoltre c'è il comando HILOW che trasmette i valori massimi e minimi, che però credo varino lentamente nel tempo. Quindi la soluzione potrebbe essere diciamo 10 LOOP e un HILOW distaziati da un tempo voluto. Forse 2,5 s è anchw troppo poco!
    Ultima modifica di Fab86; 22/10/2009 alle 00:35

  4. #4
    Vento moderato L'avatar di sassetto
    Data Registrazione
    24/01/05
    Località
    Chioggia
    Età
    56
    Messaggi
    1,266
    Menzionato
    0 Post(s)

    Predefinito Re: Progetto: programma per Davis su Linux

    Beh, la consolle va a corrente quindi non ci sono problemi con le pile!
    I files WLK servono solo al WL per fare i report NOAA senza dover interrogare la stazione con pesanti richieste, sono scritti in binario proprio perc occupare poco spazio.
    Nell'avatar: io, come mi vede Francesco.

  5. #5
    Calma di vento
    Data Registrazione
    18/10/09
    Località
    Friuli
    Età
    37
    Messaggi
    4
    Menzionato
    0 Post(s)

    Predefinito Re: Progetto: programma per Davis su Linux

    Già, già... però mi sembra utile poter esportare in un formato comune... ad ogni modo è un formato complicato da gestire per l'elaborazioen quindi pensavo di utilizzare qualcos'altro mantenndo la possibilità di esportare in .wlk.
    Iinvece... hai qualche suggerimento su quale sia il possibile formato migliore di salvataggio (anche inventato, cioè quale sarebbe il migliore secondo te!)?? Il file formato testo del primo messaggio è circa 3 volte più grosso del corrispettivo binario, quale potrebbe essere secondo te il formato migliore per l'archiviazione?
    Lo stesso report NOAA per esempio?

    Fammi sapere...

  6. #6
    Vento moderato L'avatar di sassetto
    Data Registrazione
    24/01/05
    Località
    Chioggia
    Età
    56
    Messaggi
    1,266
    Menzionato
    0 Post(s)

    Predefinito Re: Progetto: programma per Davis su Linux

    Ma il file txt lo riempi completamente? Cioè se un campo è lungo 5 char ma contiene solo la stringa "BU" il tuo dato sul file sarà "BU..." ?
    Puoi provare a fare un CSV trimmando tutti gli spazi iniziali e finali e usando come separatore il ";" oppure il tab ? Sarebbe leggibile benissimo da Excel.
    Ultima modifica di sassetto; 22/10/2009 alle 09:17
    Nell'avatar: io, come mi vede Francesco.

  7. #7
    Calma di vento
    Data Registrazione
    18/10/09
    Località
    Friuli
    Età
    37
    Messaggi
    4
    Menzionato
    0 Post(s)

    Predefinito Re: Progetto: programma per Davis su Linux

    Il file prodotto nel primo post è solo un il primissimo risultato che ho prodotto, quei dati te li posso stampare nell'ordine, nell'unità di minura, nella precisione che vuoi... una volta estratti i dati, se vuoi ci metto anche i fiorellini tra i numeri!!
    Ad esempio se nel listato del programma sostiuisci i vari
    b.write(str(ord(a.read(1))) + ' ')
    con
    b.write(str(ord(a.read(1))) + '\t')
    aggiunge i tab come chiedi.

    Già questo potrebbe essere un formato utile?
    Magari potendo scegliere quali campi includere e con quale unità di misura esportarli... che dici?

    A me servirebbe che qualcuno più impratichito di me mi dicesse quale sia il formato più utile e usabile possibile!

  8. #8
    Vento moderato L'avatar di sassetto
    Data Registrazione
    24/01/05
    Località
    Chioggia
    Età
    56
    Messaggi
    1,266
    Menzionato
    0 Post(s)

    Predefinito Re: Progetto: programma per Davis su Linux

    Dire quali campi servono è un po' un problema perchè alcuni hanno i sensori UV e RadSol, altri hanno extra sensori di temperatura, etc.
    Potresti fare la personalizzazione del file tramite GUI.
    Nell'avatar: io, come mi vede Francesco.

Segnalibri

Permessi di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •