Risoluzione problemi

Database Home Assistant troppo grande: come ridurlo e ottimizzarlo

Guida tecnica avanzata per ridurre le dimensioni del database di Home Assistant. Scopri come configurare il recorder, escludere entità inutili e pulire i dati.

Se il tuo sistema Home Assistant Green sta rallentando o lo spazio su disco si sta esurendo rapidamente, la causa principale è quasi sempre la crescita incontrollata del database SQLite predefinito. Questa guida tecnica illustra come diagnosticare il problema, intervenire sui parametri del componente recorder, escludere entità superflue, eliminare lo storico e verificare l'efficacia delle modifiche. La procedura è compatibile con le versioni recenti di Home Assistant Core e richiede permessi di amministratore, accesso ai file di configurazione (tramite File Editor o Studio Code Server) e, preferibilmente, l'installazione di strumenti come MariaDB se il volume dei dati è particolarmente elevato.

Analisi preliminare e verifica dello spazio

Prima di modificare qualsiasi parametro di configurazione, è necessario comprendere lo stato di salute del database e identificare quali componenti o entità stanno generando la maggiore quantità di dati. Un database sovradimensionato non solo occupa spazio prezioso sulla scheda SD o sul disco SSD del tuo mini PC, ma rallenta drasticamente le operazioni di scrittura e i tempi di avvio del sistema.

Come controllare le dimensioni attuali

Puoi verificare lo spazio occupato dal database direttamente dall'interfaccia utente di Home Assistant. Vai su Impostazioni, seleziona Sistema e quindi Riparazioni o Informazioni, a seconda della versione installata. In alternativa, puoi utilizzare l'integrazione nativa Recorder e la scheda di diagnostica per visualizzare le statistiche delle tabelle. Se utilizzi SQLite, il file principale home-assistant_v2.db si trova all'interno della cartella di configurazione principale.

Valutazione dei requisiti di storico

Definisci con precisione per quanto tempo hai realmente bisogno di conservare i dati storici. Per la maggior parte dei sensori di temperatura, umidità o consumo energetico, una conservazione superiore a 7 o 14 giorni è spesso superflua ai fini dell'analisi a lungo termine, poiché Home Assistant aggrega autonomamente le statistiche a lungo termine per i grafici storici. Conservare ogni singolo stato generato da sensori ad alta frequenza (come i contatori di energia istantanei che si aggiornano ogni secondo) saturerà rapidamente qualsiasi supporto di memorizzazione.

Configurazione avanzata del componente Recorder

Il cuore della gestione dei dati in Home Assistant risiede nell'integrazione recorder all'interno del file configuration.yaml. Di default, Home Assistant conserva tutti gli stati e gli eventi per 10 giorni. Ridurre questo valore o filtrare in modo aggressivo ciò che viene salvato rappresenta la soluzione più efficace e immediata.

Impostazione del periodo di conservazione (purge_keep_days)

Puoi ridurre il numero di giorni in cui i dati vengono conservati impostando il parametro purge_keep_days. Ad esempio, impostarlo a 7 o 5 giorni ridurrà drasticamente il carico sul database. Il sistema esegue automaticamente un'operazione di pulizia (purge) ogni notte per rimuovere i dati più vecchi del limite stabilito.

recorder:
  purge_keep_days: 7
  auto_purge: true

Esclusione di domini, entità ed eventi specifici

Non tutte le entità richiedono la registrazione dello storico. I sensori di stato delle automazioni, i pulsanti virtuali, i timestamp e le entità di tipo media_player che cambiano stato di continuo non devono necessariamente popolare il database. Utilizza le liste di inclusione ed esclusione per filtrare ciò che viene registrato.

Ecco un esempio di configurazione ottimizzata per escludere domini rumorosi e includere solo ciò che è strettamente necessario:

recorder:
  purge_keep_days: 7
  auto_purge: true
  exclude:
    domains:
      - automation
      - script
      - sun
      - weather
    entity_globs:
      - sensor.time*
      - sensor.date*
    entities:
      - sensor.processor_use
      - sensor.memory_use

Procedura passo dopo passo

  1. Accedi a Home Assistant con un account dotato di privilegi di amministratore.
  2. Crea un backup completo del sistema da Impostazioni > Sistema > Backup e scaricalo in locale prima di procedere.
  3. Apri l'add-on File Editor o Studio Code Server per modificare il file configuration.yaml.
  4. Aggiungi o modifica la sezione recorder definendo purge_keep_days su un valore compreso tra 5 e 10 giorni.
  5. Configura i blocchi exclude inserendo i domini e le entità superflue individuate durante l'analisi preliminare.
  6. Salva il file di configurazione ed esci dall'editor.
  7. Vai su Strumenti di sviluppo > YAML, verifica la validità della configurazione e ricarica le impostazioni del Recorder.
  8. Esegui manualmente il servizio recorder.purge impostando repack: true per compattare fisicamente il file del database SQLite e recuperare lo spazio su disco.
  9. Monitora le prestazioni del sistema e le dimensioni del file di database nei giorni successivi per confermare la riduzione dello spazio occupato.

Verifica del risultato e monitoraggio

Dopo aver applicato le modifiche e completato l'operazione di pulizia (purge con repack), è fondamentale verificare che il database abbia effettivamente ridotto le sue dimensioni e che il sistema risponda correttamente. Ricorda che l'operazione di compattazione (repack) su SQLite può richiedere tempo e risorse di CPU elevate: evita di riavviare o spegnere forzatamente il sistema durante questo processo per evitare la corruzione del database.

Puoi controllare lo spazio libero su disco tramite il sensore di sistema sensor.disk_use_percent o accedendo alla sezione delle informazioni di sistema. Se utilizzi un database esterno come MariaDB, puoi verificare le dimensioni delle singole tabelle tramite strumenti di amministrazione come phpMyAdmin o query SQL dedicate. Assicurati inoltre che i log di Home Assistant (home-assistant.log) non stiano crescendo a dismisura a causa di errori ripetuti da parte di integrazioni non configurate correttamente.

Problemi comuni e soluzioni

Problema riscontratoCausa probabileSoluzione consigliata
Il database non si riduce dopo il purgeMancanza del parametro di repack o spazio su disco insufficiente per la copia temporanea.Esegui il servizio recorder.purge specificando repack: true e keep_days ridotto.
Perdita di dati storici importantiEsclusione errata di interi domini o impostazione di purge_keep_days troppo bassa.Modifica il file di configurazione rimuovendo l'entità dal blocco exclude e riavvia.
Avvio di Home Assistant molto lentoDatabase SQLite corrotto o eccessivamente frammentato a causa di scritture intense.Valuta la migrazione da SQLite a MariaDB e verifica la qualità della scheda di memoria o del disco SSD.

Domande frequenti

Qual è la differenza tra purge e repack?

Il comando purge elimina fisicamente le righe di dati più vecchie del limite impostato dai giorni di conservazione. Tuttavia, nei database SQLite lo spazio liberato non viene restituito immediatamente al file system operativo. L'opzione repack compatta la struttura del file database, riducendo le dimensioni reali del file su disco.

Conviene passare da SQLite a MariaDB per ridurre lo spazio?

MariaDB non riduce automaticamente la quantità di dati generati, ma gestisce molto meglio i carichi di scrittura intensivi rispetto a SQLite, riducendo il rischio di corruzione del database e offrendo strumenti di manutenzione e interrogazione più efficienti, specialmente su sistemi basati su SSD o mini PC.

Perché alcune entità continuano ad apparire nello storico nonostante l'esclusione?

Assicurati di aver inserito correttamente i nomi tecnici (entity_id) e non i nomi visualizzati. Inoltre, alcune integrazioni potrebbero ignorare le direttive globali del recorder se memorizzano dati in strutture esterne o se il file di configurazione non è stato ricaricato correttamente tramite gli strumenti di sviluppo.

La pulizia del database influisce sulle automazioni?

No, la pulizia del database rimuove unicamente lo storico degli stati passati e gli eventi registrati. Le automazioni, le scene, gli script e le configurazioni attive rimangono completamente intatti e continuano a funzionare regolarmente.

Occorrente

Materiali usati

Link ai rivenditori

I collegamenti portano alle pagine dei prodotti indicati. Il prezzo Amazon, quando disponibile, proviene dall’API ufficiale ed è aggiornato con data e ora; prezzo e disponibilità finali sono quelli della pagina Amazon.