Purge de la base de donnees HA

Bonjour a tous,

J’aurais besoin de vos conseils sur la base de données V2 homeassistant qui devient trop volumineuse.

Quelle config utilisez vous pour la purges ? et qu’est que le repack ?

Merci pour vos conseils

1 « J'aime »

Avant de commencer à parler de purger la base de donnée, il faut déjà commencer par parler du remplissage…

As tu configurer le recorder ? (documentation)

Celui-ci te permet de définir les domaines/entités/évènements que tu souhaites sauvegarder et donc avoir un historique. Tu peux également utiliser la logique inverse et indiquer quels domaines/entités tu ne souhaites pas sauvegarder. Et enfin tu peux conjuguer les deux.

Ensuite, lorsque tu auras indiqué quels sont les domaines/entités que tu souhaites historiser, tu peux définir le nombre de jour que tu souhaites historiser (par défaut 10 jours).

Par exemple, ma configuration actuelle est celle-ci :

Cliquez pour afficher ma configuration de l'intégration Recorder
#Base de données
recorder:
  purge_keep_days: 60
  include:
    domains:
      - sensor
      - input_boolean
      - input_datetime
      - input_number
      - input_select
      - input_text
      - binary_sensor
      - light
      - cover
  exclude:
    domains:
      - automation
      - alarm_control_panel
      - calendar
      - camera
      - climate
      - device_tracker
      - group
      - media_player
      - person
      - proximity
      - scene
      - script
      - sun
      - switch
      - timer
      - vacuum
      - weather
      - zone
      - zwave
    event_types:
      - automation_triggered
      - script_started
      - service_registered
      - home_assistant_start
      - home_assistant_stop
      - home_assistant_stop
    entities:
      - sun.sun
      - sensor.last_boot
      - sensor.date
      - sensor.time

Ensuite, rien ne t’empêches de faire une automatisation sur la taille de la base de donnée afin de lancer une purge (après avoir créé un capteur pour la taille de la base de donnée) :

Cliquez pour afficher la configuration de la récupération de la taille de la base de donnée
homeassistant:
  whitelist_external_dirs:
    - /config/

sensor:
  - platform: filesize
    file_paths:
      - /config/home-assistant_v2.db
Cliquez pour afficher l'automatisation de purge si supérieure à 1Go
- id: 'purge_automatique_si_base_trop_volumineuse'
  alias: 'Purge de la base de donnée'
  description: 'Purge la base de donnée lorque celle-ci dépasse 1Go'
  trigger:
  - platform: numeric_state
    entity_id: sensor.home_assistant_v2_db
    above: '1000'
  condition: []
  action:
  - service: recorder.purge
    data:
      keep_days: 30
      repack: true
  mode: single
4 « J'aime »

Clemalex, grand merci pour la precision du post qui est complet. je vais pouvoir cloturer mon soucis rapidement.

Encore une fois tu me depannes et tu me fais progresser sur HA.

A bientôt

1 « J'aime »

Bonsoir,
Si je puis me permettre, whitelist est déprécié depuis la 0.113, c’est plutot « allowlist » maintenant :wink:

3 « J'aime »

C’est pas comme si c’était marqué en gros et dans une autre couleur dans la documentation

:grin:

1 « J'aime »

merci pou ce complement d’info

Pour ceux qui comme moi n’arrivent pas à faire fonctionner platform: filesize
il y a une possibilité de contournement sans utiliser allowlist.

  - platform: sql
    queries:
      - name: DB Size
        query: 'SELECT ROUND(page_count * page_size / 1024 / 1024, 1) as size FROM pragma_page_count(), pragma_page_size();'
        column: 'size'
        unit_of_measurement: 'MiB'

Source : SQL - Home Assistant

2 « J'aime »

Tu veux pas ouvrir un sujet ?

As tu vu ce post Purge de la base de donnees HA - #2 par Clemalex ?

c’est juste une astuce pour permettre à ceux qui ont suivi ce fil et qui seraient bloqués, d’aller au bout.
ce n’est, à mon sens, pas un sujet en soit.

Non je parlais de ton problème et de pourquoi tu ne peux pas… :innocent:

Pas de l’astuce :+1:

Bonjour @Clemalex ,
Ce sujet commence réellement à m’intéresser car mon fichier home-assistant_v2.db pèse quand même 2.5 GO … mais avant de faire n’importe quoi j’ai qq interrogations.

  1. quelle est la différence entre cette base de donnée et influxdb? J’utilise en fait influxdb pour générer des graphs sous grafana.
    si home-assistant_v2.db est différent de influx db cela veut il dire que je fais tourner deux bases simultanément? si oui peut on supprimer si home-assistant_v2.db ?

  2. si je purge home-assistant_v2.db cela va t il influencer les résultats dans influxdb? et dans les cartes enedis affichant la consommation sur plusieurs mois ?

  3. je détiens 3 fichiers , home-assistant_v2.db; home-assistant_v2.db-wal et home-assistant_v2.db-shm. Peut-on supprimer les deux derniers? sinon, à quoi servent ils?

d’avance merci pour ton éclairage.

1 « J'aime »

Grafana et SQLite sont 2 trucs différents… Et ils ne se remplacent pas l’un l’autre…
SQLite, sert au core pour gérer ses historiques, Grafana est un complément que l’on devrait destiner aux données à long termes et/ou à l’agrégation de données complémentaires (hors HA)
Les deux proposant de faire des graphiques (pas forcement avec les même capacités cependant)…
Donc techniquement tu as la copie dans valeurs dans les 2 bases… avec des données/formats différents et des retentions différentes
Si tu supprimes les fichiers de SQLite (la base core de HA en .db, les logs en .wal et les index en .db-shm), tu perds l’ensemble des infos qui se sont pas répliquées dans Grafana (donc potentiellement tous le reste sauf les graphs de ta conso), et HA va se précipiter pour recréer tout ça proprement.

L’idée en principe, si tu veux gagner en place c’est de :

  • sélectionner les données à enregistrer aux données significatives : enregistrer l’évolution de l’heure, toutes les minutes, c’est pas pertinent
  • réduire la plage de rétention : savoir qu’il y a 217j à 17h03, l’humidité de la serre était de 45% n’a pas forcement besoin d’être aussi précis

En complément des infos de ce sujet, j’ai partagé ma config pour limiter le contenu de la base
https://forum.hacf.fr/t/historique-fige-dans-ha/6477/9
Il y a un add-on slqlite pour visualiser facilement les infos que la base contient

Pour bien faire les mêmes approches doivent se faire sur Grafana…On récupère quoi de HA ? On conserver quoi ? Extraire le min/max par jour de la température par jour, c’est peut-être suffisant plutôt que la valeur toutes les minutes

1 « J'aime »

tu inclus group et tu exclues group aussi… :thinking: pas sur de comprendre

Sur le principe c’est normal :
Par exemple j’inclus tous les sensors sans distinction… Mais j’exclue ceux qui contient angle etc…
Au final ça donne un ensemble fini à mémoriser…

Question stupide pour éviter une surcharge de la base de données de HA :

Est il possible de la délocaliser ?

Effectivement, j’ai vu des truc où il était possible de modifier le nom de la base dans le fichier de configuration

Mais, par exemple, j’ai un serveur MySQL qui tourne sur une autre VM
Serai il possible de créer une database sur ce serveur et de configurer HA pour l’utiliser
Comme ça, il n’y a plus de fichier de DB en local

Du coup, plutôt que rationaliser la taille de la base, tu va cumuler à la fois les effets négatifs de ‹ beaucoup de données › et ajouter la latence réseau…

effectivement, vu comme ça
c’etait une question ouverte

ça n’a donc aucun intérêt

Salut !
J’ai recement ajouté de quoi monitorer la taille de ma base de donnée sur HA et stupeur : elle est énooorme ! :astonished: 9Gb !!!
J’avais pourtant configuré Recorder il y a bien longtemps. Mais j’imagine que les ajout d’entité au fur et à mesure ont fait que… bref.
J’ai reconfiguré Recorder :

recorder:
  # gere les donnees sauvegardees en DB
  auto_purge: true
  purge_keep_days: 7 # durée de conservation des données
  exclude: # permet d'exclure tous les éléments listé ci-dessous de votre base de données
    domains: # filtrage par domaine
      - automation
      #- binary_sensor
      - camera
      - device_tracker
      - group
      - input_datetime
      - light
      - person
      - script
      #- sensor
      - sun
      #- switch
      - vacuum
      - weather
      - zone
    entities: # filtrage par entités spécifiques
      #- binary_sensor.phone_1_en_charge
      #- binary_sensor.phone_2_en_charge
      - binary_sensor.updater
      - sensor.666_weather_alert
      #- sensor.aqaratemphum1_battery_level
      #- sensor.aqaratemphum2_battery_level
      #- sensor.aqaratemphum3_battery_level
      #- sensor.aqaratemphum4_battery_level
      - sensor.daylight
      - sensor.hacs
      - sensor.last_boot
      - sensor.samba_backup
      - sensor.water_sensor_battery_level
      - sensor.date
      - switch.fluxer_cuisine
    entity_globs:
      - binary_sensor.phone_*_en_charge
      - sensor.aqaratemphum*_battery_level
      - sensor.ma_ville_*
      - sensor.phone_*
      - sensor.prixcarburant_*
      - sensor.robot_aspirateur_*
    event_types: # filtrage par evenements
      - call_service 

J’ai ensuite voulu jouer avec recorder.purge en y précisant 4 jours puis 1 jour. Alors visiblement, ca à l’air de supprimer les vieilles données.
Mais la taille de ma base de donnée de diminue pas et reste à 9Gb ! J’ai pourtant passé repack à True…

Des idées ?

1 « J'aime »

Salut,

Tu activé l’option repack qui justement retaille le fichier ?

Oui mais rien n’y fait: la DB reste à 9Gb