Bonjour à tous ! ![]()
Je partage avec vous Scribe (GitHub - jonathan-gtd/scribe), une intégration pour enregistrer l’historique de Home Assistant dans une base de données TimescaleDB.
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 ! ![]()
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.
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.
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-cardouhistory-explorer-cardpour les voir dans vos tableaux de bord).
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 ...
- Exemple :
- 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.
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.