Home Assistant- Optimisation de la base de données

Home Assistant utilise SQLAlchemy , qui est un Object Relational Mapper (ORM). Cela signifie que vous pouvez utiliser n’importe quel backend SQL pour l’enregistreur pris en charge par SQLAlchemy, comme MySQL , MariaDB , PostgreSQL ou MS SQL Server .

Le moteur de base de données par défaut est SQLite qui ne nécessite aucune configuration. La base de données est stockée dans votre répertoire de configuration de Home Assistant (‘/ config /’) et est nommée home-assistant_v2.db.

Afin de simplifier la gestion de la BD et d’améliorer les performances , j’ai choisi d’utiliser MariaDB qui est un système de gestion de base de données édité sous licence GPL et phpmyadmin comme gestionnaire de cette BD.

Mariadb et phpmyadmin sont deux Add-on disponibles sur HA.

Les principaux avantages de cette configuration sont:

  • dans les sauvegardes ou la restitution de « snapshot », vous pouvez traiter séparément la BD diminuant ainsi la taille des sauvegardes
  • les manipulations de la BD sont facilitées par phpmyadmin
  • En profiter pour optimiser la taille de la BD

Avertissements:
Dans cet article je ne traite que de la création et non de la migration de la bd, cette méthode vous permet de relancer votre HA avec une BD vierge.

Comment procéder?

La procédure se décompose en trois étapes:

  • installer l’Add-on mariadb
  • installer l’Add-on phpmyadmin
  • Configurer HA pour qu’il pointe vers cette BD.

1-Installation de l’Add-on mariadb

Tres simple, depuis la boutique des modules supplémentaires (nouvelle appellation de l’Add-on store), choisissez mariadb, puis install.

Une fois installé, cliquez sur configuration et modifier comme-suit:

databases:
  - homeassistant
logins:
  - username: votreusername
    password: votremotdepasse
rights:
  - username: homeassistant
    database: homeassistant

choisissez un mot de passe fort mélangeant minuscules, majuscules, un ou deux chiffres et caractères spéciaux

Je vous conseille de conserver le nom de la db et les droits proposés par défaut.

Cliquer sur start, vérifier votre log, il ne doit pas y avoir d’erreur

Si tout se déroule correctement, vous devriez arriver à ce résultat.

2-Installation de l’Add-on phpmyadmin

Tres simple, depuis la boutique des modules supplémentaires (nouvelle appellation de l’Add-on store), choisissez phpmyadmin, puis install.

L’installation terminée, cocher « Afficher dans la barre latérale », puis cliquez sur Démarrer, aucune configuration requise.

Si tout se déroule correctement, vous devriez arriver à ce résultat.

Sur le panneau latéral, vous pouvez accéder au tableau de bord de phpmyadmin. Vous constaterez sur le panneau gauche, que la base homeassistant a été créé.

Il reste à attribuer les privilèges globaux à votre nom d’utilisateur:

  • sur l’interface phphmyadmin, cliquez sur « comptes utilisateurs », sur « editer les privilèges » de votre nom d’utilisateur, cocher « privileges globaux tout cocher »
Puis cliquer « exécuter » en bas à droite

3-Configuration de HA

Dans le fichier « configuration.yaml », ajouter les commandes suivantes:

recorder:
  db_url: !secret db_mysql
  auto_purge: true
  commit_interval: 15
  include:
    domains:
      - binary_sensor
      - input_boolean
      - input_datetime
      - input_number
      - input_select
      - sensor
      - switch
      - person
      - device_tracker
      - light
  exclude:
    domains:
      - camera
      - zone
      - automation
      - sun
      - weather
      - cover
      - group
      - script
      - pool_pump

Dans votre fichier secrets.yaml, définissez db_url

# Base de données mariadb
db_mysql: mysql://votreusername:votremotdepasse@core-mariadb/homeassistant?charset=utf8mb4

Avec le votreusername et votremotdepasse tel que défini dans la configuration de mariadb.

Les trois options suivantes sont de mon point de vue, elles permettent de limiter la taille de la BD. En effet si vous ne prenez pas de disposition, celle ci va s’accroître indéfiniment et altérer les performances du système.

  • auto_purge: Purge automatiquement la base tous les matins à 04h12 ( heure locale ).
  • purge_keep_days: Indication du nombre de jours d’historique à conserver dans la BD avant la purge ( par défaut 10 ).
  • EXCLUDE et INCLUDE permettent de sélectionner les domaines à exclure ou inclure dans la bd.

La liste des domaines étant propres à chaque installation, vous pouvez en copiant/collant les lignes de code ci-dessous dans « outils de développement/modèles » lister les domaines de votre système et faire votre choix.

{%- set unique_domains = states | map(attribute='domain') |list | unique | list -%}
{%- for domain in unique_domains -%}
- {{domain + "\n"}}
{%- endfor -%}
En exemple la liste de mes domaines

D’autres options sont disponibles, se reporter à la documentation HA.

Une fois ces modifications apportées, vérifier votre configuration et redémarrer HA.

Une notification vous informera d’un problème.

Connecter vous à PHMmyAdmin, visualiser votre BD « home_assistant », HA a automatiquement ajouter les tables et commencent à ajouter des enregistrements.

Conclusion

Cette modification qui est de mon point de vue, indispensable, vous apportera une souplesse d’utilisation dans la gestion de votre bd. Vous pouvez aussi vous intéresser à phpMyAdmin et ses nombreuses possibilités dans la manipulation des bases de données.