database principali nei quali vengono registrati i dati meteo sono due: l'archivio principale (wview-archive.sdb) e il registro degli estremi (wview-hilow.sdb)

wview-archive.sdb

E' assolutamente il più importante, in esso wview registra i dati runtime ed è essenziale per il funzionamento del software. In una nuova installazione, dove i dati vengono registrati per la prima volta, tale file non viene autogenerato, bensì si deve partire da un template (ovvero da un contenitore pronto ad accogliere i nuovi dati). Il file wview-archive.sdb è di primaria importanza, e va preservato ad ogni costo (tramite backup), pena la perdita di tutto lo storico della stazione meteo.

I dati vengono registrati ogni 10 minuti nel database (tale intervallo è modificabile parametro Archive Interval). Il db wview-archive contiene una sola tabella, chiamata archive, avente come chiave primaria dateTime. Per verificare che i dati sono aggiornati e registrati ogni X minuti è sufficiente fare una select sql per estrapolare gli ultimi 5 records; a questo punto basta controllare il campo dateTime il quale sarà incrementato del valore specificato dal parametro Archive Interval.

select datetime(datetime, 'unixepoch', 'localtime'),barometer from archive order by datetime desc limit 5;
2018-03-01 20:30:00|29.775
2018-03-01 20:20:00|29.775999
2018-03-01 20:10:00|29.778
2018-03-01 20:00:00|29.777
2018-03-01 19:50:00|29.781

 

wview-hilow.sdb

Contiene i valori minimi e massimi di ogni ora e i relativi timestamps, ovvero l'indicazione temporale di quando essi si sono verificati. I dati contenuti in esso possono provenire da due diverse fonti.

Prima fonte

In condizioni di funzionamento normale, i dati (LOOP data) arrivano dalla stazione, con cadenza ogni 30 secondi.
Dopodiché i valori misurati vengono confrontati con quelli registrati nel file; solo se i nuovi dati  eccedono i valori registrati, essi vengono registrati. I dati hanno quindi una maggiore granularità nel rappresentare i valori meteo.

 Seconda fonte

Se il file venisse cancellato, al successivo riavvio wview provvederebbe alla rigenerazione del file, estrapolando i dati dal database di archivio (back-filled). Tale operazione comporta però una  minore risoluzione del dato, questo perché si attingerebbe al database con risoluzione di 10 minuti piuttosto che 30 secondi (6 campionamenti orari vs 120).

 Terza fonte

Tramite utility hilowcreate

 

Struttura del database HILOW

Per ogni sensore (es. temperatura, umidità) esiste una tabella, per ogni tabella ci sono le seguenti colonne

            dateTime         - timestamp dell'ora
            low              - valore minimo nell'ora
            timeLow          - timestamp del valore minimo
            high             - valore massimo nell'ora
            timeHigh         - timestamp del valore massimo
            whenHigh         - additional value at the time of the high
                              (usato solamente per la direzione del vento when high wind occured)
            cumulative       - somma di tutti i valori del record
            samples          - numero di campioni registrati

Ogni tabella contiene quindi un'insieme di righe (record), ogni riga contiene i dati meteo nell'intervallo di tempo di un'ora. Il parametro di configurazione Sensor Polling Interval è settato a 30 secondi, significa che ogni 30 secondi il record viene aggiornato con i dati rilevati. Nell'arco di un'ora ci saranno quindi 120 aggiornamenti, un bella granularità!

Di 120 rilevamenti nell'arco orario, si registrano gli estremi minimi e massimi, quando essi si sono verificati, la somma dei valori e il numero dei campioni (da cui si ottiene poi la media oraria).

Ecco un dump del database degli ultimi 10 record memorizzati (a titolo di esempio)

sqlite> select datetime(datetime, 'unixepoch', 'localtime'), * from outTemp order by datetime DESC limit 10;

2018-02-02 16:00:00|1517583600|46.7|1517585700|46.9|1517583600|0.0|3562.699463|76
2018-02-02 15:00:00|1517580000|46.9|1517582580|47.2|1517580000|0.0|5931.896484|126
2018-02-02 14:00:00|1517576400|47.2|1517579550|47.9|1517576400|0.0|5940.198242|125
2018-02-02 13:00:00|1517572800|47.4|1517573190|48.3|1517574030|0.0|6048.70166|126
2018-02-02 12:00:00|1517569200|47.3|1517569230|49.0|1517571750|0.0|6067.898438|126
2018-02-02 11:00:00|1517565600|45.2|1517565600|47.8|1517569021|0.0|5849.29834|126
2018-02-02 10:00:00|1517562000|42.9|1517562000|45.2|1517565450|0.0|5574.402344|126
2018-02-02 09:00:00|1517558400|41.3|1517558401|43.0|1517561910|0.0|5264.001465|126
2018-02-02 08:00:00|1517554800|41.1|1517555790|41.5|1517554801|0.0|5195.496094|126
2018-02-02 07:00:00|1517551200|41.5|1517554500|41.9|1517552550|0.0|5260.703613|126