✍️ Scribe : Historique Longue Durée pour Home Assistant (TimescaleDB)

Bonjour à tous ! :waving_hand:

Je partage avec vous Scribe (GitHub - jonathan-gatard/scribe), une intégration pour enregistrer l’historique de Home Assistant dans une base de données TimescaleDB.

:handshake: Vos avis m’intéressent !

Je débute avec ce projet et je suis très ouvert aux conseils !

  • L’architecture vous semble-t-elle solide ?
  • Y a-t-il des fonctionnalités qui vous manquent ?
  • Des astuces pour l’optimisation ?

J’ai hâte de lire vos retours ! :chart_increasing:


:baby: Pour tout le monde (Le « Pourquoi »)

Si vous souhaitez conserver des années de données de capteurs sans ralentir Home Assistant, Scribe est fait pour vous. Il fonctionne en parallèle de votre enregistreur par défaut.

:white_check_mark: Avantages :

  • Historique Infini : Gardez vos données pendant des années sans gonfler votre base de données HA principale.
  • Performance : Votre Home Assistant reste rapide car il n’a pas à gérer des fichiers d’historique massifs.
  • Visualisation : Parfait pour créer de superbes tableaux de bord dans Grafana.

:cross_mark: Inconvénients :

  • Installation Requise : Vous avez besoin d’une instance TimescaleDB en cours d’exécution (Docker ou Add-on).
  • Visualisation Externe : Ces données sont optimisées pour des outils externes (comme Grafana), pas pour l’onglet « Historique » intégré. (Bien que vous puissiez utiliser des cartes personnalisées comme apexcharts-card ou history-explorer-card pour les voir dans vos tableaux de bord).

:nerd_face: Pour les Utilisateurs Avancés (Le « Comment »)

Scribe est conçu pour être un enregistreur haute performance « set and forget ».

  • Async-First : Construit sur asyncpg. Il écrit les données de manière asynchrone et ne bloque jamais la boucle d’événements principale.
  • Natif TimescaleDB : Gère automatiquement les Hypertables et les Politiques de Compression.
    • Compression : Économies typiques de 90-95%. (ex: 50 Go de données brutes deviennent ~2,5 Go sur le disque).
  • Contexte Riche : Il ne se contente pas de stocker des états. Il synchronise les Utilisateurs, Zones, Appareils et Intégrations vers des tables de métadonnées dédiées.
    • Exemple : SELECT * FROM states JOIN areas ON ...
  • Résilient : Dispose d’une mémoire tampon. Si la BDD est hors ligne, Scribe met les événements en file d’attente et réessaie automatiquement.

:floppy_disk: Exemples de Données

Scribe stocke les données de manière structurée pour faciliter les requêtes.

Table des États (states) :

time entity_id state value attributes
2023-10-27 10:00:00 sensor.temp 20.5 {"unit": "C"}

Tables de Données :

  • states : Enregistre tous les changements d’états.
  • events : Enregistre tous les événements (si activé).

Tables de Métadonnées :

  • users : Synchronise les utilisateurs HA (nom, admin, etc.)
  • areas : Synchronise les pièces (Salon, Cuisine…)
  • devices : Synchronise les infos appareils (Modèle, Fabricant…)
  • entities : Synchronise les infos des entités (Plateforme, Domaine, Nom…)
  • integrations : Synchronise les entrées de configuration (Domaine, Titre…)

Mots-clés : Home Assistant, TimescaleDB, PostgreSQL, PSQL, Historique, Recorder, Long Term Stockage, LTS , Grafana, Base de données, Custom Component, Intégration, Data Science, Big Data, SQL, Hypertables, Compression, Dashboard, Visualisation, Alternative InfluxDB.

3 « J'aime »