community italiana di domotica personale
 
Profondità storica, sensori e statistiche di lungo periodo sulla domotica Home Assistant

Profondità storica, sensori e statistiche di lungo periodo sulla domotica Home Assistant

Home Assistant Logo

Uno degli aspetti più qualificanti di un HUB per domotica personale sta nella possibilità di interrogarlo per consultare le statistiche relative a tutti gli elementi in esso integrati, in primis i sensori. Temperature, umidità, pressioni ma anche indicatori di mille altri tipi, censiti direttamente così come “calcolati”: andamenti medi, durata di stati specifici e molto altro ancora.

Home Assistant, principe nobile degli HUB personali, dispone di varie tecniche e modalità allo scopo di raccogliere, mantenere ed offrire tali dati, una varietà che spesso porta l’utente non ancora svezzato a perdersi nei suoi meandri.

Allo scopo di maggior chiarezza, questa scheda illustra possibilità e differenze tra le varie funzionalità offerte.

Storici recenti

Tramite la propria dashboard web, Home Assisatant offre – di default – lo storico di ogni sensore, attuatore e genericamente qualsiasi “entità” in esso integrati. Questo significa che, cliccando sull’entità rappresentata sull’interfaccia dell’HUB, sarà possibile consultarne lo storico recente.

Prendiamo l’esempio di questa luce integrata sull’HUB. Cliccando sulla sua rappresentazione, si apre la maschera relativa allo stato attuale:

Home Assistant - Esempio storico - 1

mentre cliccando in alto a destra si apre lo storico recente:

Home Assistant - Esempio storico - 2

nel quale è possibile appurare chi abbia provveduto ai vari, eventuali cambi di stato (utente o servizio che sia, magari trami automazione), quando essi siano occorsi eccetera.

Queste sono tutte statistiche recenti, ovvero quegli stati mantenuti “per un po’” nel database dell’HUB, dopodiché vengono cancellati. Questo per evitare l’ingigantirsi del database: la storicizzazione del dato avviene per un dato lasso di tempo definito nella configurazione del componente “Recoder.

Se l’impostazione (campo “purge_keep_days“) è impostata, diciamo, a 7 giorni, si può star sicuri che in questo tipo di interrogazioni non si troveranno mai dati storici più profondi di una settimana. Semplicemente, i dati precedenti spariscono man mano che il tempo passa.

Sensori statistici

Al netto delle statistiche proposte direttamente dall’interfaccia dell’HUB relative alle entità disponibili, storicizzate come spiegato sopra, per alcuni utenti potrebbe esser utile definire delle entità sensore che riportino delle informazioni specificamente calcolate.

Mettiamo per esempio di aver integrato in Home Assistant la lettura della temperatura del frigorifero e si voglia vedere l’andamento medio di tale temperatura, nel tempo, piuttosto che l’andamento puntuale del sensore.

La piattaforma “Statistics” (da non confondersi con quanto sopra e sopratutto con quanto seguirà dopo) consente proprio questo. Un sensore definito in configurazione YAML come segue:

sensor:
  - platform: statistics
    name: "temperatura media frigo"
    entity_id: sensor.temperatura_frigo
    precision: 1
    sampling_size: 60
    state_characteristic: average_linear 

permette di definire il sensore sensor.temperatura_media_frigo il quale riporta, per l’appunto, l’andamento medio di tale temperatura.

Home Assistant - Esempio sensore Statistics

Naturalmente anche tale sensore sottostà alle impostazioni “Recorder”, come nel caso di tutte le altre entità e come spiegato sopra: va da sé, quindi, che anche i suoi dati avranno una profondità storica recente relativa alle impostazioni di tale componente.

Home Assistant - Ore di spegnimento frigo
un esempio dal progetto di gestione frigo.

Altri esempi e parametri di configurazione sono disponibili qui.

Statistiche storiche

Un’altra tipologia di entità di cui ci si può dotare è di tipo “History Stats“. Essa fornisce statistiche rapide su un’altra o più piattaforme, utilizzando i dati dell’integrazione della cronologia.

Può per esempo tenere traccia di quanto tempo un’entità è rimasta in uno dato stato in un dato lasso di tempo personalizzato.

Esempi di ciò che puoi monitorare:

  • Quanto tempo sei stato a casa questa settimana;
  • Per quanto tempo le luci sono rimaste accese ieri;
  • Per quanto tempo hai guardato la TV oggi.

eccetera.

La configurazione YAML è piuttosto semplice. Ecco un esempio:

sensor:
  - platform: history_stats
    name: Quanto accesa una luce oggi
    entity_id: light.punto_luce
    state: "on"
    type: time
    start: "{{ now().replace(hour=0, minute=0, second=0) }}"
    end: "{{ now() }}" 

tale configurazione genera un’entità sensore che prende in analisi l’entità light.punto_luce, riportando nel proprio stato la quantità di tempo, nell’arco delle ultime 24 ore (differenza tra i campi end e start), in cui essa è stata accesa.

Altri esempi e parametri di configurazione sono disponibili qui.

Statistiche di lungo periodo

Per i bisognosi di statistiche ben più profonde di quelle garantite dalla configurazione di “Recorder”, Home Assistant offre un servizio chiamato “Long Term Statistics“, ovvero statistiche di lungo periodo.

In pratica, una volta all’ora l’HUB provvede a creare un’istantanea delle entità supportate. Attualmente si distinguono due tipologie:

  • entità di tipo sensore che presentino delle misurazioni, come per esempio le temperature. La funzionalità memorizza il valore minimo, massimo e medio di tali entità;
  • entità di tipo sensore “meter”, come il consumo energetico giornaliero (vedi approfondimento). In questo caso, trattandosi di sensori “a crescere”, viene memorizzata la crescita che avviene man mano.

Le statistiche a lungo termine sono diverse dagli altri oggetti nel database, che vengono archiviati esattamente come sono e vengono automaticamente eliminati dopo un periodo, come spiegato sopra, tramite il componente “Recorder”. Le statistiche di lungo periodo invece non vengono mai eliminate. Dato che vengono calcolate ogni ora, creano solo 24 voci al giorno, occupando così uno spazio sul database assolutamente trascurabile.

Queste informazioni possono essere visualizzate sulla dashboard utilizzando la cardGrafico statistico“.
Ecco un esempio:

Home Assistant - Esempio Grafico statistico di lungo periodo

Tali dati, a differenza delle comuni entità, non possono essere utilizzati direttamente in automazioni e script (o altro): per accedere programmaticamente a tali dati è necessario accedere direttamente al database. Qui è disponibile la documentazione ufficiale.

Alternative

In taluni casi, potrebbe essere necessario storicizzare anche informazioni di altro tipo (banalmente, provenienti da entità non-sensore, quindi non oggetto della storicizzazione di lungo periodo sopra descritta).

Allo scopo è necessario canalizzare le informazioni all’esterno dell’HUB, per esempio su InfluxDB. A tal proposito abbiamo deficato una guida ad hoc:

Integrare i dati della domotica personale Home Assistant verso InfluxDB (e viceversa)