### Navigazione

- indice
- moduli |
- successivo |
- precedente |
- pywws 13.12.dev1118 documentazione »
- Programmi Python e moduli »

# pywws.DataStore

DataStore.py - memorizza le letture in file di facile accesso

## Introduzione

Questo modulo è il cuore del mio software per la stazione meteo. Esso memorizza i dati su disco, ma senza il sovraccarico di un complesso database. L’ho progettato per funzionare su una macchina con poca memoria come il mio router Asus. Per ridurre al minimo l’utilizzo della memoria, carica solo l’equivalente di un giorno di dati alla volta in memoria.

Da un punto di vista “user”, i dati vengono eseguiti come un incrocio tra un elenco e un dizionario. Ogni record di dati è indicizzato da un oggetto `datetime.datetime` (comportamento di dizionario), ma i record vengono archiviati in ordine ed è possibile accedervi come fogli (comportamento di elenco).

Ad esempio, per accedere ai dati orari per il giorno di Natale 2009, uno potrebbe effettuare le seguenti operazioni:

    from datetime import datetime
    from pywws import DataStore
    hourly = DataStore.hourly_store('weather_data')
    for data in hourly[datetime(2009, 12, 25):datetime(2009, 12, 26)]:
        print data['idx'], data['temp_out']

Alcuni esempi di accesso dati:

    # get value nearest 9:30 on Christmas day 2008
    data[data.nearest(datetime(2008, 12, 25, 9, 30))]
    # get entire array, equivalent to data[:]
    data[datetime.min:datetime.max]
    # get last 12 hours worth of data
    data[datetime.utcnow() - timedelta(hours=12):]

Si noti che l’indice `datetime.datetime` è in formato UTC. Potrebbe essere necessario applicare un offset per convertire in ora locale.

Il modulo fornisce cinque classi per archiviare dati diversi. `data_store` prende i dati “raw” dalla stazione meteo; `calib_store`, `hourly_store`, `daily_store` e `monthly_store` memorizza i dati elaborati (vedi `pywws.Process`).Tutti e tre sono derivati dallo stessa classe `core_store`, differiscono solo per le chiavi e i tipi di dati memorizzati in ogni record.

## Dettagli API

Funzioni

`safestrptime`(date_string[, format]) |

Classi

`ParamStore`(root_dir, file_name) |
`RawConfigParser`([defaults, dict_type, ...]) |
`calib_store`(root_dir) | Memorizza i dati ‘calibrati’ della Stazione Meteo.
`core_store`(root_dir) |
`daily_store`(root_dir) | Memorizza i dati giornalieri di riepilogo della Stazione Meteo.
`data_store`(root_dir) | Memorizza i dati grezzi Stazione Meteo.
`date` | date(year, month, day) –> date object
`datetime` | datetime(year, month, day[, hour[, minute[, second[, microsecond[,tzinfo]]]]])
`hourly_store`(root_dir) | Memorizza i dati orari di riepilogo della Stazione Meteo.
`monthly_store`(root_dir) | Memorizza i dati mensili di riepilogo della Stazione Meteo.
`params`(root_dir) | I parametri sono memorizzati in un file “weather.ini” in root_dir.
`status`(root_dir) | Lo stato viene memorizzato in un file “status.ini” in root_dir.
`timedelta` | Differenza tra due valori datetime.

`pywws.DataStore.``safestrptime`(date_string, format=None)

class `pywws.DataStore.``ParamStore`(root_dir, file_name)
  `flush`()
  `get`(section, option, default=None)

    Ottiene un dato di parametro e restituisce una stringa.

    Se si specifica default e la sezione o l’opzione non sono definite nel file, sono creati e impostati su default, che è poi il valore restituito.

  `get_datetime`(section, option, default=None)
  `set`(section, option, value)

    Impostare l’opzione nella sezione valore stringa.

  `unset`(section, option)

    Rimuovere l’opzione dalla sezione.

class `pywws.DataStore.``params`(root_dir)

  I parametri sono memorizzati in un file “weather.ini” in root_dir.

class `pywws.DataStore.``status`(root_dir)

  Lo stato viene memorizzato in un file “status.ini” in root_dir.

class `pywws.DataStore.``core_store`(root_dir)
  `before`(idx)

    Ritorno data ora dell’ultimo record di dati esistenti cui data ora è < idx.

    Potrebbe anche non essere nello stesso anno! Se non esiste nessun record, restituisce None.

  `after`(idx)

    Restuisce data ora del record di dati esistente più antico cui data ora è >= idx.

    Potrebbe anche non essere nello stesso anno! Se non esiste nessun record, restituisce None.

  `nearest`(idx)

    Restuisce data ora del record cui data ora è più vicina di idx.

  `flush`()

class `pywws.DataStore.``data_store`(root_dir)

  Memorizza i dati grezzi Stazione Meteo.

  `key_list` = ['idx', 'delay', 'hum_in', 'temp_in', 'hum_out', 'temp_out', 'abs_pressure', 'wind_ave', 'wind_gust', 'wind_dir', 'rain', 'status', 'illuminance', 'uv']
  `conv` = {'status': <type 'int'>, 'wind_ave': <type 'float'>, 'rain': <type 'float'>, 'hum_in': <type 'int'>, 'temp_out': <type 'float'>, 'wind_dir': <type 'int'>, 'hum_out': <type 'int'>, 'illuminance': <type 'float'>, 'wind_gust': <type 'float'>, 'idx': <function safestrptime at 0x31ffe60>, 'uv': <type 'int'>, 'temp_in': <type 'float'>, 'delay': <type 'int'>, 'abs_pressure': <type 'float'>}

class `pywws.DataStore.``calib_store`(root_dir)

  Memorizza i dati ‘calibrati’ della Stazione Meteo.

  `key_list` = ['idx', 'delay', 'hum_in', 'temp_in', 'hum_out', 'temp_out', 'abs_pressure', 'rel_pressure', 'wind_ave', 'wind_gust', 'wind_dir', 'rain', 'status', 'illuminance', 'uv']
  `conv` = {'status': <type 'int'>, 'wind_ave': <type 'float'>, 'rain': <type 'float'>, 'rel_pressure': <type 'float'>, 'hum_in': <type 'int'>, 'temp_out': <type 'float'>, 'wind_dir': <type 'int'>, 'hum_out': <type 'int'>, 'illuminance': <type 'float'>, 'wind_gust': <type 'float'>, 'idx': <function safestrptime at 0x31ffe60>, 'uv': <type 'int'>, 'temp_in': <type 'float'>, 'delay': <type 'int'>, 'abs_pressure': <type 'float'>}

class `pywws.DataStore.``hourly_store`(root_dir)

  Memorizza i dati orari di riepilogo della Stazione Meteo.

  `key_list` = ['idx', 'hum_in', 'temp_in', 'hum_out', 'temp_out', 'abs_pressure', 'rel_pressure', 'pressure_trend', 'wind_ave', 'wind_gust', 'wind_dir', 'rain', 'illuminance', 'uv']
  `conv` = {'pressure_trend': <type 'float'>, 'wind_ave': <type 'float'>, 'rain': <type 'float'>, 'rel_pressure': <type 'float'>, 'hum_in': <type 'int'>, 'temp_out': <type 'float'>, 'wind_dir': <type 'int'>, 'hum_out': <type 'int'>, 'wind_gust': <type 'float'>, 'idx': <function safestrptime at 0x31ffe60>, 'uv': <type 'int'>, 'temp_in': <type 'float'>, 'illuminance': <type 'float'>, 'abs_pressure': <type 'float'>}

class `pywws.DataStore.``daily_store`(root_dir)

  Memorizza i dati giornalieri di riepilogo della Stazione Meteo.

  `key_list` = ['idx', 'start', 'hum_out_ave', 'hum_out_min', 'hum_out_min_t', 'hum_out_max', 'hum_out_max_t', 'temp_out_ave', 'temp_out_min', 'temp_out_min_t', 'temp_out_max', 'temp_out_max_t', 'hum_in_ave', 'hum_in_min', 'hum_in_min_t', 'hum_in_max', 'hum_in_max_t', 'temp_in_ave', 'temp_in_min', 'temp_in_min_t', 'temp_in_max', 'temp_in_max_t', 'abs_pressure_ave', 'abs_pressure_min', 'abs_pressure_min_t', 'abs_pressure_max', 'abs_pressure_max_t', 'rel_pressure_ave', 'rel_pressure_min', 'rel_pressure_min_t', 'rel_pressure_max', 'rel_pressure_max_t', 'wind_ave', 'wind_gust', 'wind_gust_t', 'wind_dir', 'rain', 'illuminance_ave', 'illuminance_max', 'illuminance_max_t', 'uv_ave', 'uv_max', 'uv_max_t']
  `conv` = {'temp_in_min': <type 'float'>, 'temp_in_max': <type 'float'>, 'uv_ave': <type 'float'>, 'temp_out_max': <type 'float'>, 'temp_out_min': <type 'float'>, 'abs_pressure_max': <type 'float'>, 'start': <function safestrptime at 0x31ffe60>, 'hum_in_max_t': <function safestrptime at 0x31ffe60>, 'uv_max_t': <function safestrptime at 0x31ffe60>, 'temp_in_max_t': <function safestrptime at 0x31ffe60>, 'abs_pressure_min_t': <function safestrptime at 0x31ffe60>, 'illuminance_ave': <type 'float'>, 'rel_pressure_ave': <type 'float'>, 'rain': <type 'float'>, 'rel_pressure_min_t': <function safestrptime at 0x31ffe60>, 'wind_gust': <type 'float'>, 'temp_out_min_t': <function safestrptime at 0x31ffe60>, 'wind_gust_t': <function safestrptime at 0x31ffe60>, 'hum_out_ave': <type 'float'>, 'rel_pressure_min': <type 'float'>, 'hum_out_min_t': <function safestrptime at 0x31ffe60>, 'temp_out_max_t': <function safestrptime at 0x31ffe60>, 'uv_max': <type 'int'>, 'illuminance_max_t': <function safestrptime at 0x31ffe60>, 'rel_pressure_max': <type 'float'>, 'temp_in_ave': <type 'float'>, 'hum_in_min_t': <function safestrptime at 0x31ffe60>, 'hum_out_max': <type 'int'>, 'illuminance_max': <type 'float'>, 'wind_ave': <type 'float'>, 'abs_pressure_max_t': <function safestrptime at 0x31ffe60>, 'temp_in_min_t': <function safestrptime at 0x31ffe60>, 'hum_out_max_t': <function safestrptime at 0x31ffe60>, 'hum_out_min': <type 'int'>, 'rel_pressure_max_t': <function safestrptime at 0x31ffe60>, 'wind_dir': <type 'int'>, 'temp_out_ave': <type 'float'>, 'abs_pressure_ave': <type 'float'>, 'idx': <function safestrptime at 0x31ffe60>, 'hum_in_max': <type 'int'>, 'abs_pressure_min': <type 'float'>, 'hum_in_ave': <type 'float'>, 'hum_in_min': <type 'int'>}

class `pywws.DataStore.``monthly_store`(root_dir)

  Memorizza i dati mensili di riepilogo della Stazione Meteo.

  `key_list` = ['idx', 'start', 'hum_out_ave', 'hum_out_min', 'hum_out_min_t', 'hum_out_max', 'hum_out_max_t', 'temp_out_ave', 'temp_out_min_lo', 'temp_out_min_lo_t', 'temp_out_min_hi', 'temp_out_min_hi_t', 'temp_out_min_ave', 'temp_out_max_lo', 'temp_out_max_lo_t', 'temp_out_max_hi', 'temp_out_max_hi_t', 'temp_out_max_ave', 'hum_in_ave', 'hum_in_min', 'hum_in_min_t', 'hum_in_max', 'hum_in_max_t', 'temp_in_ave', 'temp_in_min_lo', 'temp_in_min_lo_t', 'temp_in_min_hi', 'temp_in_min_hi_t', 'temp_in_min_ave', 'temp_in_max_lo', 'temp_in_max_lo_t', 'temp_in_max_hi', 'temp_in_max_hi_t', 'temp_in_max_ave', 'abs_pressure_ave', 'abs_pressure_min', 'abs_pressure_min_t', 'abs_pressure_max', 'abs_pressure_max_t', 'rel_pressure_ave', 'rel_pressure_min', 'rel_pressure_min_t', 'rel_pressure_max', 'rel_pressure_max_t', 'wind_ave', 'wind_gust', 'wind_gust_t', 'wind_dir', 'rain', 'rain_days', 'illuminance_ave', 'illuminance_max_lo', 'illuminance_max_lo_t', 'illuminance_max_hi', 'illuminance_max_hi_t', 'illuminance_max_ave', 'uv_ave', 'uv_max_lo', 'uv_max_lo_t', 'uv_max_hi', 'uv_max_hi_t', 'uv_max_ave']
  `conv` = {'uv_ave': <type 'float'>, 'illuminance_max_hi_t': <function safestrptime at 0x31ffe60>, 'uv_max_lo_t': <function safestrptime at 0x31ffe60>, 'temp_out_max_hi_t': <function safestrptime at 0x31ffe60>, 'temp_out_max_lo': <type 'float'>, 'abs_pressure_max': <type 'float'>, 'rel_pressure_min_t': <function safestrptime at 0x31ffe60>, 'temp_in_min_hi': <type 'float'>, 'temp_in_min_lo': <type 'float'>, 'start': <function safestrptime at 0x31ffe60>, 'hum_in_max_t': <function safestrptime at 0x31ffe60>, 'rain_days': <type 'int'>, 'abs_pressure_min_t': <function safestrptime at 0x31ffe60>, 'temp_out_max_hi': <type 'float'>, 'illuminance_ave': <type 'float'>, 'temp_out_min_lo': <type 'float'>, 'illuminance_max_ave': <type 'float'>, 'uv_max_hi': <type 'int'>, 'rel_pressure_ave': <type 'float'>, 'rain': <type 'float'>, 'temp_out_min_hi': <type 'float'>, 'wind_gust': <type 'float'>, 'temp_in_max_hi_t': <function safestrptime at 0x31ffe60>, 'temp_in_max_lo': <type 'float'>, 'temp_in_min_ave': <type 'float'>, 'wind_gust_t': <function safestrptime at 0x31ffe60>, 'hum_out_ave': <type 'float'>, 'rel_pressure_min': <type 'float'>, 'hum_out_min_t': <function safestrptime at 0x31ffe60>, 'illuminance_max_lo': <type 'float'>, 'temp_in_min_lo_t': <function safestrptime at 0x31ffe60>, 'illuminance_max_hi': <type 'float'>, 'temp_out_max_lo_t': <function safestrptime at 0x31ffe60>, 'temp_in_max_hi': <type 'float'>, 'rel_pressure_max': <type 'float'>, 'uv_max_hi_t': <function safestrptime at 0x31ffe60>, 'temp_in_ave': <type 'float'>, 'uv_max_ave': <type 'float'>, 'temp_in_max_ave': <type 'float'>, 'hum_in_min_t': <function safestrptime at 0x31ffe60>, 'hum_out_max': <type 'int'>, 'temp_in_min_hi_t': <function safestrptime at 0x31ffe60>, 'temp_out_min_ave': <type 'float'>, 'temp_out_min_hi_t': <function safestrptime at 0x31ffe60>, 'wind_ave': <type 'float'>, 'abs_pressure_max_t': <function safestrptime at 0x31ffe60>, 'hum_out_max_t': <function safestrptime at 0x31ffe60>, 'hum_out_min': <type 'int'>, 'rel_pressure_max_t': <function safestrptime at 0x31ffe60>, 'uv_max_lo': <type 'int'>, 'wind_dir': <type 'int'>, 'temp_out_ave': <type 'float'>, 'abs_pressure_ave': <type 'float'>, 'idx': <function safestrptime at 0x31ffe60>, 'temp_out_min_lo_t': <function safestrptime at 0x31ffe60>, 'illuminance_max_lo_t': <function safestrptime at 0x31ffe60>, 'hum_in_max': <type 'int'>, 'abs_pressure_min': <type 'float'>, 'temp_in_max_lo_t': <function safestrptime at 0x31ffe60>, 'hum_in_ave': <type 'float'>, 'temp_out_max_ave': <type 'float'>, 'hum_in_min': <type 'int'>}

### Navigazione

- indice
- moduli |
- successivo |
- precedente |
- pywws 13.12.dev1118 documentazione »
- Programmi Python e moduli »