Bonjour @ruegerth,
Merci pour ce retour détaillé, ça va nous permettre d’y voir clair 
Je pense que le calcul n’est pas faux, mais que la donnée envoyée n’est pas celle
que Gladys attend. Il y a deux notions à bien distinguer :
- kW = une puissance instantanée (ce que tu consommes à l’instant T)
- kWh = une énergie (une puissance pendant une durée)
Ton compteur affiche 0,345 kW : c’est une puissance, pas une consommation.
Comment Gladys calcule la consommation
Le suivi énergétique de Gladys se base uniquement sur des fonctionnalités de type
« Index » (l’index cumulé de ton compteur, en kWh, celui qui ne fait qu’augmenter).
Toutes les 30 minutes, Gladys fait la différence entre les relevés successifs de
l’index pour en déduire la consommation de la tranche, puis applique ton tarif.
Les fonctionnalités de type « Puissance » ne sont jamais utilisées pour ce calcul,
elles servent uniquement à afficher une courbe.
Du coup, si la puissance instantanée est envoyée dans une fonctionnalité de type
« Index » (ou « Énergie »), Gladys fait la différence entre deux puissances et
additionne toutes les variations positives. Exemple sur une journée :
0,3 → 1,2 → 0,4 → 2,1 → 0,5 …
Gladys compte +0,9, +1,7, etc. (les baisses sont ignorées, elles sont interprétées
comme une remise à zéro du compteur). On obtient très vite un total 3 à 5 fois trop
grand — ce qui colle bien avec ton 15,69 au lieu de 3,75.
Deuxième détail : l’unité kW n’est pas une unité d’énergie pour Gladys (seules Wh,
kWh et MWh sont converties). Une fonctionnalité déclarée en kW est donc prise telle
quelle comme des kWh au moment du calcul du coût, ce qui fausse aussi le tarif.
Peux-tu confirmer ?
Dans ton appareil, quel est le type exact de la fonctionnalité alimentée par
Node-RED (« Index », « Énergie » ou « Puissance ») et quelle unité est
sélectionnée ? Une capture de l’appareil dans Gladys aiderait à valider mon
hypothèse.
Comment corriger
Solution idéale : envoyer à Gladys l’index cumulé de ton compteur en kWh (le
total qui ne fait qu’augmenter, pas la puissance), dans une fonctionnalité de type
« Index » avec l’unité kWh. Là, un envoi toutes les 15 minutes est
parfaitement suffisant, et le calcul sera exact.
Si ton relevé ne te donne que la puissance instantanée : il faut construire l’index
toi-même dans Node-RED en intégrant la puissance dans le temps. Un nœud function
avant l’envoi vers Gladys :
const now = Date.now();
const powerKw = Number(msg.payload); // puissance instantanée en kW
const last = context.get('last');
if (!last) {
context.set('last', { t: now, power: powerKw, index: 0 });
return null; // on attend le 2e relevé
}
const deltaHours = (now - last.t) / 3600000;
const index = last.index + last.power * deltaHours; // kWh cumulés
context.set('last', { t: now, power: powerKw, index });
msg.payload = Number(index.toFixed(4));
return msg;
Deux précautions :
- utilise un contexte persistant (stockage
file dans Node-RED), sinon l’index
repart à zéro à chaque redémarrage ;
- avec un relevé toutes les 15 minutes, on suppose que la puissance est restée
constante pendant tout l’intervalle : c’est très approximatif. Si tu passes par
cette méthode, échantillonne plutôt toutes les minutes (voire 10-30 s), la
précision sera bien meilleure. C’est aussi pour ça que l’index du compteur reste
la meilleure source.
Une fois la correction faite
- Supprime l’historique erroné de la fonctionnalité concernée (ou recrée une
fonctionnalité propre) ;
- Va dans Suivi de l’énergie → Paramètres et lance « Recalculer la
consommation », puis « Calculer le coût depuis le début ». Tu peux suivre
l’avancement dans les tâches en arrière-plan.
Dis-moi ce que donnent le type et l’unité de ta fonctionnalité, on affinera si besoin !