Monitoring électricité avec la téléinfo + Node Red + influxDB

Bonjour,

je viens d’adapter la configuration de @SNoof (Merci infiniment !) en regardant ce qu’avait fait @fredarro il y a deux ans (Flow node-red sur Tic standard - #2 par fredarro) pour :

  • Fonctionner avec le mode TIC standard
  • Avoir les HC / HP (mon tarif actuel)
  • Avoir les tarifs Tempo (je compte bientôt y passer, la seule différence est l’utilisation ou non des EASF03,04,05,06)
  • Découper les périodes en heures / jours / semaines / mois / années
  • Avoir des entités Home Assistant pour une intégration rapide
  • Utiliser InfluxDB et visualiser dans Grafana

Tout me semble bien fonctionner jusqu’à l’intégration dans InfluxDB, et je compte partager mes résultats. Avant cela, j’aimerai avoir des retours d’experts sur quelques points :

1. @SNoof utilise une validation de trame juste après la sortie de la TIC historique. J’ai enlevé cette étape ne sachant pas l’adapter facilement à la TIC standard. Est-ce important si on a une TIC propre a priori ? Quel intérêt ?
2. Avant d’injecter dans InfluxDB, j’ai utiliser le noeud des configurations de @SNoof et de @fredarro, à savoir le code suivant :

var INDEX_KWH = msg.payload;
msg.payload = [];
fields = {"value":INDEX_KWH};
tags = {"entity":"teleinfo_total_kwh"};
msg.payload = [fields,tags];
return msg;

J’ai le message d’erreur suivant sur le noeud : Invalid Properties (Error in Javascript Codes)
J’ai l’impression que tout fonctionne malgré tout (cf. imprim écran


J’ai un Node-RED et v.3.0.2 - est-ce un mauvais formatage ? Comment le corriger si cela est nécessaire ? (J’ai ce message sur presque toutes mes « functions », idem dans le calcul pinst pour :

old = msg.payload.old.old_state;
current = msg.payload.new.new_state;
diff_index = current - old;
diff_seconds = (msg.payload.new.new_date - msg.payload.old.old_date) / 1000;
if (diff_seconds == 0) {
conso = 0;
} else {
coeff = diff_seconds / 3600
conso = diff_index / coeff
conso = Math.round(conso*100)/100
}
msg2 = {};
msg2.payload = {};
msg2.payload.conso = conso;
msg2.payload.diff_sec = diff_seconds;
msg2.payload.old_time = msg.payload.old.old_date;
msg2.payload.new_time = msg.payload.new.new_date;
return msg2;

3. Je suis une bille et commence tout juste à utiliser InfluxDB et Grafana. J’ai vu que @SNoof mettait le même tag avant injection pour des valeurs différentes (par exemple pour Index Wh et Puissance). Quel est l’intérêt ? J’ai l’impression qu’il vaut mieux séparer chaque injection par un tag différent, mais je me dis que mon ignorance des étapes suivantes me met peut-être sur une fausse route…

Plutôt que de partager un code mal pensé, grossièrement bricolé, j’aimerai voir vos retours avant de le proposer à la communauté.

Merci encore à tous les contributeurs, ce forum est une mine d’or ! :slight_smile: