Bonjour à tous, nous reprenons maintenant le tutoriel. Aujourd’hui, je vais vous montrer comment, à partir d’un capteur d’énergie qui ne fournit que les valeurs de puissance actuelles en watts, mettre en place un système de suivi de la consommation d’énergie (kWh) via Node-RED.
Amusez-vous bien…
Comme je l’ai montré dans mon dernier tutoriel « Contrôle d’une batterie solaire via Node-RED – Gladys », il est relativement simple de créer un système de contrôle dans Node-RED. Les résultats peuvent ensuite être transmis à Galdys via Matter, MatterBridge ou MQTT.
Mais explorons d’abord une autre voie. Portons notre regard sur l’Europe : tandis que le Français, partisan du nucléaire, secoue la tête et que le « Michel » allemand fronce les sourcils, plein d’inquiétudes, que se passe-t-il donc là-bas ? Les Autrichiens, eux, escaladent les montagnes depuis des décennies et les parsèment de centrales solaires de balcon. Mais il existe également de nombreux autres produits solaires de qualité et abordables. Prenons par exemple la société MyPV, qui propose depuis longtemps un élément chauffant dans sa gamme. Il s’appelle AC ELWA et est contrôlable (ce n’est pas de la publicité, juste un exemple)…
Voyons donc ce que nous pouvons en faire…
Cette résistance chauffante peut être contrôlée via une requête HTTP ; en d’autres termes, il suffit d’envoyer des commandes à la résistance, comme on le ferait avec un navigateur, et d’observer ce qui se passe. Dans Node-RED, cela s’effectue à l’aide d’un nœud appelé « http request » :
Que se passe-t-il si nous saisissons précisément cette commande dans un navigateur et que nous l’envoyons (le radiateur nous renvoie toutes les informations sous la forme d’un document XML) :
et c’est précisément cette entrée « power » qui nous intéresse. Le nœud suivant est donc un « nœud XML » permettant de formater correctement la valeur renvoyée par la requête HTTP :
Jetzt haben wir also die Daten in Node Red und wir müssen nur noch das richtige Datum mit dem « power » Wert auslesen, dies machen wir mit einem function Node und einer kleinen Funktion:
Nous avons donc désormais, dans notre flux, dans msg.payload, la valeur actuelle de la puissance de la résistance. C’est là que la magie opère. Dans une autre fonction, nous procédons simplement comme suit :
Nous collectons systématiquement les données reçues, les convertissons en kWh, les ajoutons à la pile et, lorsque la pile interne (2 éléments) est pleine, nous passons à l’étape suivante. En d’autres termes : la pile contient deux valeurs. Le flux complet est lancé toutes les 15 minutes (nous y reviendrons dans un instant), collecte deux valeurs et renvoie toutes les 30 minutes la valeur en kWh de la résistance chauffante, c’est-à-dire sa puissance sur une période de 30 minutes.
Voici la fonction :
// ***************************************************************
// Consultation de la mesure actuelle
let watt = msg.payload;
if (watt === 2147483648) {
watt = 0;
}
// 1. Lire les deux mémoires
let messungen = flow.get(« solar_messungen ») || ;
// Récupérez le total actuel des compteurs (important pour Gladys)
let kwhGesamtzaehler = flow.get(« solar_kwh_gesamt ») || 0;
messungen.push(watt);
// 2. Vérifier si nous avons enregistré 2 mesures (30 min)
if (messungen.length >= 2) {
// Calculer les deux blocs « Wh » (watts × 0,25 heure)
let wh1 = messungen[0] * 0.25;
let wh2 = messungen[1] * 0.25;
// Consommation des 30 dernières minutes en kWh
let kwh30Min = (wh1 + wh2) / 1000;
// Additionner la consommation au compteur général
kwhGesamtzaehler += kwh30Min;
// Arrondir la valeur à 3 décimales
kwhGesamtzaehler = Math.round(kwhGesamtzaehler * 1000) / 1000;
// 3. Préparer la mémoire pour les 30 prochaines minutes
flow.set("solar_messungen", []); // 15-Min-Messungen leeren
flow.set("solar_kwh_gesamt", kwhGesamtzaehler); // Gesamtzähler dauerhaft sichern
// 4. Nachricht an Gladys senden
msg.topic = "solar-wr/kwh-total";
msg.payload = {
wr_zaehler_kwh: kwhGesamtzaehler
}; // Gladys reçoit le relevé de compteur cumulé
return msg;
} else {
// S’il s’agit de la première valeur mesurée, l’enregistrer dans la mémoire
flow.set(« solar_messungen », messungen);
return null;
}
// ***********************************************************************
Voici où s’inscrit cette fonction dans le flux:
Nous commençons par ajouter un nœud « inject » et le configurons de manière à ce qu’il lance le flux toutes les 15 minutes, dans l’exemple entre 10 h et 20 h tous les jours
Voici les sorties de débogage. Il effectue deux collectes, puis envoie les données :
Il ne nous reste plus qu’à envoyer les données au MQTT à la fin du flux à l’aide de « mqtt out », puis nous pourrons enfin continuer dans Gladys ![]()
Dans Gladys, nous avons besoin du protocole MQTT, qui doit être accessible :
Le reste est ensuite très simple. Étape 1 : Création d’un appareil MQTT virtuel:
Étape 2 : Nous ajoutons une fonction de surveillance de la consommation d’énergie :
Étape 3 : Dans les fonctions avancées du capteur d’énergie, nous attribuons les valeurs aux données du sujet MQTT.
Hier die Informationen, sie kommen also aus Node Red, letzte Funktion und gehen dann über MQTT nach Gladys:
Dans la section « Surveillance de l’énergie », vérifiez encore si le nouvel appareil de surveillance de l’énergie a bien été attribué correctement :
Il ne vous reste plus qu’à choisir un tarif d’énergie adapté, puis à indiquer la résistance de chauffage comme compteur.
C’est tout…
Ajoutez ensuite un suivi énergétique dans le tableau de bord et indiquez la résistance de chauffage comme source de données :
Le résultat :
Je remercie tous ceux qui m’ont aidé à surmonter mes difficultés de débutant. Si vous repérez une erreur, n’hésitez pas à me la signaler. Si vous voyez un moyen de simplifier les choses, faites-le-moi savoir.
Dans ce tutoriel, vous avez donc découvert une méthode pour interroger un compteur d’énergie local via une requête HTTP, puis créer un système de surveillance de la consommation d’énergie adapté dans Gladys.
Amusez-vous bien, cordialement, Thomas
















