Structure BDD InfluxDB

Bonjour,

Je souhaite archiver moi même (via NodeRed) quelques données dans une BDD InfluxDB. J’ai réflechi à une structure de BDD, j’aimerai donc avoir vos remarques et avis. Peut-être utilisez vous aussi une structure spécifique ?
La majorité des infos à archiver proviennent de mes sondes de température Aqara. Mis à part ça j’ai quelques infos de sondes PZEM004T. Je suis parti pour créer un measurement (table) par type de donnée archivée (Temperature, Humidité, Battery, Power, …).

Measurements correspondants à mes devices Aqara (source MQTT ou Deconz) :

	Temperature
		Tags : Source (ex : Salle de Bain)
		Fields : Value (ex : 12.5°C)

	Humidity
		Tags : Source (ex : Salle)
		Fields : Value (ex : 55°C)

	Pression
		Tags : Source (ex : Arrière cuisine)
		Fields : Value. (ex : 1005hpa)

	LinkQuality
		Tags : Source (ex : Sonde Aqara Salle de bain)
		Fields : Value. (ex : 45%)

	Battery
		Tags : Source (ex : Sonde Aqara Garage)
		Fields : Value. (ex : 65%)

	State
		Tags : Source (ex : Présence Arrière cuisine)
		Fields : Value. (ex : true)

Measurements correspondants à mes PZEM 004T (source MQTT) :

	Power
		Tags : Source (ex : Alimentation générale)
		Fields : Value (ex : 4500W)	

	Current
		Tags : Source (ex : Alimentation générale)
		Fields : Value (ex : 20.5A)	

	Voltage
		Tags : Source (ex : Chauffage)
		Fields : Value (ex : 235V)	

	EnergyDaily
		Tags : Source (ex : Chauffage)
		Fields : HCKWh, HPKwH, TotKWh, CostHP, CostHC, TotCost

	...

Measurements divers :

	Internet
		Fields : Upload, Download, Ping

Qu’en pensez-vous ?

Merci

La « beauté », enfin je trouve, de cet outil c’est que la structure en table peut parfaitement être gérée par influxdb sans s’en préoccuper. On stocke et ça marche…
J’imagine que cette méthode simple voire simpliste a probablement des conséquences en terme de performance. Mais, pour un usage à la maison, ça ne m’a jamais paru un souci.
Suis-je trop optimiste?

C’est vrai que en ce moment je laisse HA et InfluxDB travailler ensemble et ça marche très bien ! Je suis d’accord avec toi sur « on stock et ça marche ».

Cependant ce que je suis en train de faire sur mon installation domotique c’est de décentraliser HA (suite aux différentes mises à jour à problèmes entre autre). Je souhaite une installation pérenne dans le temps, c’est donc pour cela que je veux gérer moi même les enregistrements dans les tables.

Aujourd’hui, si je laisse HA archiver les données et que dans 5 ou 6 ans je souhaite passer sur un autre soft, l’archivage dans la BBD Influx devra être refaite d’une autre façon (avec une structure de BDD que je n’aurai pas choisie). Donc mon idée est de gérer moi même dès à présent les enregistrements dans les tables, via Node Red. Si dans 5 ans je dois abandonner NodeRed, je trouverai bien un autre logiciel capable de faire de simples insert dans une table InfluxDB (et ce sera plus simple car la structure de BDD sera « la mienne »).

@Jex2512,

J’ai fais pas mal de tests divers et variés pour la structure de ma base Influx, et j’ai fini par aboutir à la structure suivante:

  • measurements: correspond à un équipement,
  • fields: données associées à cet équipement,
  • tags: infos complémentaires, comme la localisation de l’équipement,

Pour mes PZEM, j’ai donc:

  • measurements: pzem@adresse modbus,
  • fields: voltage, intensity, etc
  • tags: room, etc

Du coup, avec une simple requête tu as toutes les datas associées au pzem, ce que ne sera pas ton cas.
De cette façon, c’est aussi plus simple d’utiliser le node batch sous Nodered.

Oui j’ai longtemps hésité avec cette structure également (un measurement par type de matériel). C’est vrai que c’est plus simple, ça évite les multiples tables. J’étais parti sur ce principe d’avoir un measurement par type de donnée archivée car par exemple mes températures proviennent de plusieurs sources : Module Aqara (pièces de vie), sondes DS18b20 (piscine l’été), processeur RPi. Mais ça se discute…

A propos de tes modules PZEM, est-ce que tu effectues tes calculs de conso journalières via NodeRed ? Je pense à l’énergie dépensée en HP/HC par jour et idem pour le coût. Je le fais actuellement via le module « UtilityMeter » de HA, mais j’aimerai le faire sur NR. Si c’est le cas et que tu veuilles bien expliquer comment tu l’as intégré je vais créer un nouveau post, car le sujet diffère un peu du post actuel.

Merci pour ton retour

Bonjour à tous,

Je me pose une question depuis l’installation de l’add-on INFLUXDB: est-il possible de faire une requête sur cette base de données en dehors de HA ?

Si non, y’a-t-il un moyen de faire une exportation de la BDD ?

Merci par avance. :slight_smile:
Smilorel

Peut être des infos ici : SQL - Home Assistant

Avec Grafana c’est faisable. Il faut soit l’addon qui va bien, soit l’installer à part.

golfvert,

J’ai bien l’add-on d’installé mais je ne vois pas cette fonction…
J’ai fais l’installation de Grafana à part et j’ai également les mêmes fonctions.

As-tu une piste ?

Merci… :slight_smile:

Dans grafana, il faut rajouter une source de données. Dans le menu à gauche, la roue crantée. Tu as différents types de sources de données. Choisir Influxdb et mettre l’@IP, le port et le nom de la base.
Après, les (vrais) ennuis vont (sans doute) commencer pour la syntaxe des requêtes. Je trouve que l’espèce de SQL est assez abscons.
Mais, après, ça fait des très jolis graphes. Donc, les efforts sont récompensés.

Ah ok.
Oui OK. J’arrive bien à faire cela et ça fonctionne bien.

J’aimerai juste pouvoir accéder aux infos de la BDD d’InfluxDB. Les données doivent bien être enregistrées quelque part donc je voudrais savoir comment lire ces données pour les utiliser en dehors de Grafana/Home Assistant.

Ah. Extraire les données « brutes »!
Je n’avais pas compris.
InfluxDB dispose d’une API (InfluxDB API reference | InfluxDB OSS 1.8 Documentation) que tu peux utiliser, sinon, se connecter à influxdb et utiliser le langage de requête (le pseudo SQL) (Explore data using InfluxQL | InfluxDB OSS 1.8 Documentation) ou encore avec NodeRed qui dispose d’une palette influxdb (node-red-contrib-influxdb (node) - Node-RED). Là aussi, ça passe par le langage de requête.

Exactement.

Ok. Merci pour ces orientations, je vais creuser et revenir vers toi si nécessaire! :wink:

Merci !