Purge de la base de donnees HA

Je suis un peu perdu sur la configuration

Je vais partir avec seulement une inclusion :

#Base de données
recorder:
  auto_purge: true
  commit_interval: 20
  purge_keep_days: 7
  include:
    entities:
      - sensor.alarm_status

  exclude:
    domains:
      - automation
      - alarm_control_panel
      - calendar
      - camera
      - climate
      - device_tracker
      - group
      - media_player
      - person
      - proximity
      - scene
      - script
      - sun
      - switch
      - timer
      - weather
      - zone
    event_types:
      - automation_triggered
      - script_started
      - service_registered
      - home_assistant_start
      - home_assistant_stop
    entities:
      - sun.sun
      - sensor.last_boot
      - sensor.date
      - sensor.time
1 « J'aime »

Bonjour,

Tout jeune dans le monde HomeAssistant, je viens de lire avec grand intérêt sur sujet.
J’ai effectivement vu le fichier HomeAssistant_V2.db et imagine que c’est là que sont sauvegardées toutes les données.

  • Moi, j’aime bien commencer par le début ; et comprendre ; HomeAssistant ne purge jamais rien dans sa config par défaut ?
    Ce qui impliquerait que recorder, soit la méthode à utiliser ? (ou bien la purger à la main)

  • Aussi je lis que l’on peut utiliser d’autre bases de données, mais est ce pour remplacer la première dans le moteur de HomeAssistant, ou bien pour se faire soi-même , et indépendamment ses petites applications qui nécessitent des BDD ?

Salut,

C’est en réalité l’inverse : au delà de 10j : tout est purgé !

Du coup : non. Le souci c’est pas tellement la purge, c’est que puisqu’il y a purge, ça ajoute TOUT. Y compris et surtout des trucs qui n’ont pas d’intérêts directs

Les 2 mon capitaine : tu peux vouloir changer le moteur BDD par défaut et/ou créer une base additionnelle
Dans le deuxième cas, ça se limitera à faire de l’alimentation des données. La restitution ne sera pas faite par HA

Merci pour vos explications,grace a vos commentaires je suis passé d’une data base de 13Go à 20Mo :sweat_smile::grin:

1 « J'aime »

Tu peux partager ton recorder?

Et voila, j’ai été bourrin mais au moins c’est efficace :

recorder:
  auto_purge: true
  commit_interval: 20
  purge_keep_days: 2
  exclude:
    entity_globs: 
      - sensor.*_uptime 
      - sensor.*_tx 
      - sensor.*_rx
      - sensor.*_uptime_2
      - sensor.*_tx_2
      - sensor.*_rx_2
      - sensor.*_motion
      - sensor.*_high
      - sensor.dalg_3070_*
      - sensor.dalg_win11_*
      - sensor.unifi_gateway_*
      - sensor.internet_time
      - sensor.dalg_cam*
    domains:
      - automation
      - alarm_control_panel
      - alarmo
      - binary_sensor
      - calendar
      - camera
      - climate
      - device_tracker
      - group
      - media_player
      - person
      - proximity
      - scene
#      - sensor
      - script
      - sun
      - switch
      - timer
      - weather
      - zone
      - zwave
    event_types:
      - automation_triggered
      - script_started
      - service_registered
      - home_assistant_start
      - home_assistant_stop
    entities:
      - sun.sun
      - sensor.last_boot
      - sensor.date
      - sensor.time
      - sensor.date_time

Pour info, sous Windows pour voir les détails du fichier .db je fais comme ça :

  • Télécharger SQLite Browser (en version portable sans installation) ICI
  • Copier/coller sur votre PC Windows la base de donnée « home-assistant_v2.db »
  • Ouvrir le programme précédemment téléchargé : DB Browser for SQLite.exe
  • Cliquer sur ouvrir une base de donnée (choisir votre base de donnée)
  • Ensuite aller dans l’onglet « Executer le SQL »
  • Copier/coller cette commande :
SELECT entity_id, COUNT(*) as count FROM states GROUP BY entity_id ORDER BY count DESC LIMIT 20;
  • Cliquer sur la touche exécuter pour lancer la commande

Vous allez pouvoir voir les entitées qui sont le plus enregistrées et ainsi les ajouter à votre recorder si besoin :

5 « J'aime »

Peux-t-on limiter/réduire le nombre d’enregistrement si je prend l’exemple de ton sensor.cbxxxxxxx_axxxxx enregistré 117 fois ? Sans exclure ?

Dans mon cas j’ai :
image

je souhaiterai conserver mais diminuer le nombre d’enregistrement:

  - platform: statistics
    name: "Stats Freebox Download Speed"
    entity_id: sensor.freebox_download_speed
    state_characteristic: mean
    max_age:
      hours: 24
    scan_interval: 300
    
  - platform: statistics
    name: "Stats Freebox Upload Speed"
    entity_id: sensor.freebox_upload_speed
    state_characteristic: mean
    max_age:
      hours: 24
    scan_interval: 300

Salut,

A ma connaissance pas moyen de définir quelque chose de particulier pour quelques sensors.
Tu peux jouer sur la durée de rétention en base (global) et la fréquence de rafraichissement des sensors, mais rien de plus

Je viens de revenir sur ce post que j’avais mis en signet.

En relisant la doc de HA, je m’aperçois que ce n’est pas très « flexible » la gestion de base de donnée.

Je souhaiterais garder un historique complet sur 7 jours par exemple, mais garder certaines entités à vie (consommation etc)

Si je comprends et résume bien ce fil de discussion, la solution est d’appliquer une purge sur le recorder HA et d’ajouter un service externe (influxDB, par exemple) pour y stocker les données a garder ? Comment choisir les données envoyées a la BDD externe ?

Merci d’avance

Salut,

C’est ça…

Comme le recoder, influxdb permet de faire une liste ou un filtre des entités

Super merci @Pulpy-Luke pour la réponse.

En cherchant voici la doc InfluxDB - Home Assistant

Bonsoir, mon installation étant toute neuve je n’ai pas encore eu l’occasion de voir l’effet que pouvait avoir une purge :slight_smile:

Cela dit, si je comprends bien, si je laisse tout par défaut et si je prends pour exemple le tableau de bord energie, je n’aurais un visuel que de 10 jours dans le tableau de bord energie.

Pour voir au dela des 10 jours, je dois me rendre dans historique et sélectionner les entitées de consommation sans plus avoir le calcul journalier automatique ? comparer les mois etc… ?

J’aurais une question, est-ce que les compteurs définis sont aussi purgés (genre compteurs sur le mois, sur l’année)
Merci

Bonjour,
Bonjour,Je me retrouve avec ma carte SD pleine à 90% , la base sqlite fait 15Go
Avant de passer à la configuration ( j’ai pas compris dans quel fichier on faisait ça et ça à l’air plutôt compliqué) y a t’il une commande manuelle ou requête sql pour faire un gros nettoyage ? Merci

Bonjour,

ça aurait mérité un sujet à part entière, celui-ci à qd même 2 ans presque :slight_smile:

Si ta base de données fait 15Go, je ne vois que 2 possibilités:

  • Soit tu as un système de taille industrielle.
  • Soit tu as explicitement réglé le recorder pour garder une nombre de jour conséquent pour le recorder.

Je parierais sur la seconde option. Et si tel est le cas, réduire le nombre de jours devrait suffire et ça se fera automatiquement pendant le nuit suivante.

Il n’y a rien de vraiment compliqué pour le régler les filtres pour la base de données.
Tout se passe dans le fichier configuration.yaml

1 « J'aime »

Bonjour
Pas de solution magique faut configurer le recorder dans le fichier configuration.yaml, ça met qq jours avant de faire totalement la purge.
Édit: grillé

1 « J'aime »

Oui, j’ai commencé à regarder. Merci

Bonjour, en effet le post est ancien. J’ai rien configuré au niveau de la base de données. J’ai l’impression que ça a explosé quand j’ai modifié la clé lixee en passant du mode historique au mode standard.
Cela explique que depuis quelques temps, ça rame un maximum.
Je vais en effet me pencher sur la configuration, merci

Quelle est la bonne pratique en terme de jours à garder? 7-10-30?

Hello.

10j c’est la valeur par défaut. Plus à mon avis ça ne sert à rien… il y a les données long terme pour ce genre de besoin