Repack DB: ridurre le dimensioni del file database

HassioHelp

Repack DB: ridurre le dimensioni del file database

Come in molti avrete visto il database, di seguito DB, di Home Assistant che si trova nella cartella /config di Hassio cresce costantemente perché contiene lo stato di tutti sensori, interruttori, luci, automazioni etc del nostro Home Assistant.
Con il passare del tempo il DB, se non si effettuano delle configurazioni ad hoc, può diventare molto ingombrante con dimensioni nell’ordine dei gigabytes e rallentare il funzionamento di Home Assistant.
Per porre rimedio a questa situazione occorre agire in due modi:

  • attraverso un “fine tuning” della configurazione del componente “recorder
  • attraverso un’automazione che effettua il “repack” del Db cioè una ottimizzazione in termini di spazio occupato

Vediamo come funziona il salvataggio dei dati su Home Assistant.
Il motore di database predefinito di HA è SQLite che non richiede alcuna configurazione. Il database è memorizzato nella directory di configurazione Home Assistant (.homeassistant o /config) ed è chiamato home-assistant_v2.db.
Per modificare i valori predefiniti per il componente “recorder” occorre aggiungere quanto segue al file configuration.yaml.

 

I principali parametri del componente recorder sono i seguenti:
db_url:  URL che punta al tuo database, normalmente nel caso di utilizzo del DB standard non è configurato.
purge_keep_days:  specifica il numero di giorni di cronologia da conservare nel database
purge_interval:  frequenza (in giorni) con la quale viene eseguita l’operazione di eliminazione.
exclude:  indica quale entità sono da escludere dalle registrazioni su DB
include:  indica quale entità sono da includere nelle registrazioni su DB

Di seguito ho inserito una configurazione del componente recorder che salva solo quattro componenti principali (sensors, binary_sensors, climate, light) e mantiene gli ultimi 3 giorni di registrazioni, in questo modo il DB non dovrebbe crescere oltre qualche centinaia di MB. Per chi volesse mantenere lo stato di altri domini questi vanno aggiunti nella sezione include/domains (ad esempio si può aggiungere il dominio automation) ed escludere quelle particolari entità che non interessano nella sezione exclude/entities.

Questa logica in pratica registra solo quello che ci interessa, ma è possibile configurare anche la logica contraria e cioè registrare tutto ad esclusione di quello che viene specificato.

 

Oltre al tuning dei dati da salvare sul DB l’altra strategia è di effettuare il “repack” del DB in modo da ottimizzare lo spazio occupato.
Il package si basa sul servizio “recorder.purge”  ed è personalizzabile con l’orario in cui effettuare il “repack” e il numero di giorni da mantenere nel DB.

Veniamo ora al package e al dettaglio delle sue componenti:

input_boolean.repack_db: se attivo parte il repack ogni giorno all’orario indicato

input_datetime.repack_time: orario in cui parte il repack del DB

input_number.day_to_keep: numero di giorni con gli stati da mantenere

input_text.repack_status: indica lo stato del repack

input_text.previous_dimension_db: indica le dimensioni del DB alla partenza dell’automazione

sensor.home_assistant_v2_db: dimensioni del DB di HA

script.repack_db: script “nudo e crudo” che effettua il repack

Ed ora alcune avvertenze:

  • alcuni componenti hanno uno stato iniziale preimpostato, se si desidera cambiarlo occorre agire di propria iniziativa sul package andando a modificare dove è di interesse o in alternativa eliminando lo stato iniziale
  • il sensore “sensor.time” è obbligatorio per poter avviare l’automazione
  • occorre cambiare a proprio piacimento il servizio di notifica telegram
  • per il sensore che monitora la grandezza del DB di HA occorre aggiungere anche nel file configuration.yaml. sotto la sezione whitelist_external_dirs la cartella /config

 

Di seguito la configurazione Lovelace:

 

 

2 risposte

  1. Avatar Alessandro ha detto:

    “Per il sensore che monitora la grandezza del DB di HA occorre aggiungere anche nel file configuration.yaml. sotto la sezione whitelist_external_dirs la cartella /config”

    Ciao,mi sono perso a questo punto?Nel configuration.yaml dove trovo la sezione whitelist?
    grazie

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *