Un jumeau numérique énergétique montre en temps réel où part chaque kilowatt sur un site, et permet de tester des scénarios « et si » avant d'investir dans des projets d'efficacité. Ce guide explique comment modéliser les flux d'énergie, comment diffuser les données de comptage via MQTT et comment utiliser le jumeau pour repérer le gaspillage et évaluer des modifications.
Ce que modélise un jumeau numérique énergétique
Les factures mensuelles vous disent combien vous avez dépensé ; elles ne vous disent pas pourquoi. Un jumeau énergétique modélise le site comme un réseau de flux :
- Sources : alimentation réseau, solaire sur site, groupes électrogènes, alimentation en gaz
- Équipements de conversion : transformateurs, compresseurs (électricité en air comprimé), chaudières (gaz en chaleur), groupes froids (électricité en froid)
- Distribution : tableaux électriques, tableaux divisionnaires, collecteurs d'air et de vapeur
- Consommateurs : lignes de production, zones CVC, circuits d'éclairage, grosses machines individuelles
Chaque nœud dispose de mesures en direct (puissance, énergie, débit, pression, température) et chaque lien transporte une quantité d'un nœud à l'autre. Lorsque le flux entrant mesuré d'un nœud ne correspond pas à la somme de ses flux sortants, l'écart est soit une charge non comptée, soit une perte, soit une fuite. Ce simple contrôle de bilan est l'une des fonctions les plus utiles d'un jumeau énergétique.
Pour le concept plus large de jumeau, le guide de la technologie du jumeau numérique est le point de départ.
Pourquoi modéliser l'énergie sous forme de jumeau plutôt que de tableau de bord
Un tableau de bord trace des valeurs de compteurs. Un jumeau ajoute de la structure et du contexte :
| Question | Tableau de bord | Jumeau numérique énergétique |
|---|---|---|
| Combien la ligne 2 a-t-elle consommé hier ? | Oui | Oui |
| Quelle part de l'arrivée principale n'est pas expliquée ? | Difficile, calcul manuel | Calculée en continu à partir du modèle de flux |
| Que consomme la ligne 2 à l'arrêt ? | Seulement si quelqu'un fait la corrélation à la main | Oui, car l'état de production est dans le jumeau |
| Et si on baissait la pression des compresseurs de 0,5 bar ? | Non | Oui, avec un modèle de compresseur |
| Quels équipements dominent la charge de base la nuit ? | En partie | Oui, classés par nœud |
Les différences essentielles sont la topologie (qui alimente quoi) et le lien avec l'état de fonctionnement. L'énergie par unité produite, la consommation à l'arrêt et la charge de base n'ont de sens que si les données d'énergie et de production partagent la même colonne vertébrale.
Diffuser les données de comptage via MQTT
Compteurs et passerelles
La plupart des compteurs industriels et tertiaires exposent Modbus TCP ou Modbus RTU. Une passerelle lit les registres selon un planning et publie les valeurs sur MQTT. Options courantes :
- Node-RED avec des nœuds Modbus sur un PC industriel ou un Raspberry Pi
- Telegraf avec ses plugins d'entrée Modbus et de sortie MQTT
- Des compteurs ou enregistreurs de données qui publient nativement en MQTT
Publiez à la fois la puissance instantanée (kW) et les index d'énergie cumulés (kWh). Les index sont plus robustes : si quelques messages sont perdus, la valeur d'index suivante donne quand même le bon total pour la période.
Conception des topics
Suivez la hiérarchie du site pour que la topologie du jumeau corresponde naturellement aux topics :
connectmq/<site>/<area>/<asset>/energy
connectmq/site1/utilities/main-feeder/energy
connectmq/site1/utilities/compressor1/energy
connectmq/site1/production/line2/energy
connectmq/site1/production/line2/state
connectmq/site1/building/hvac-ahu1/energy
Un payload comme celui-ci rend les unités explicites :
{
"powerKw": 42.7,
"energyKwh": 183245.6,
"voltageV": 400.2,
"powerFactor": 0.93,
"ts": 1792152000
}
Un broker MQTT managé offre aux passerelles de comptage de plusieurs bâtiments ou sites un point d'accès sécurisé unique, et les services du jumeau s'abonnent avec des jokers comme connectmq/site1/+/+/energy.
Pratique : un bilan énergétique en direct
Cet exemple tourne sur le serveur MQTT public gratuit broker.connectmq.com avec des compteurs simulés. Ce serveur est réservé aux tests et aux prototypes : n'y publiez pas de données réelles de site, car il est lisible par tous.
Le script ci-dessous simule une arrivée principale et trois sous-compteurs, et une seconde partie du même programme joue le rôle du service de bilan du jumeau, en publiant la part non expliquée :
import json
import random
import threading
import time
import uuid
import paho.mqtt.client as mqtt
RUN = "energy-5c21" # remplacez par votre propre identifiant unique
BASE = f"connectmq/demo/{RUN}/site1"
SUBMETERS = ["production/line2", "utilities/compressor1", "building/hvac-ahu1"]
latest = {}
def simulate(pub):
while True:
loads = {
"production/line2": random.uniform(30, 45),
"utilities/compressor1": random.uniform(18, 25),
"building/hvac-ahu1": random.uniform(8, 12),
}
unmetered = random.uniform(6, 9) # le gaspillage que le jumeau doit trouver
main = sum(loads.values()) + unmetered
pub.publish(f"{BASE}/utilities/main-feeder/energy", json.dumps({"powerKw": round(main, 2)}))
for path, kw in loads.items():
pub.publish(f"{BASE}/{path}/energy", json.dumps({"powerKw": round(kw, 2)}))
time.sleep(5)
def on_connect(client, userdata, flags, reason_code, properties):
client.subscribe(f"{BASE}/+/+/energy")
def on_message(client, userdata, msg):
node = msg.topic[len(BASE) + 1 : -len("/energy")]
latest[node] = json.loads(msg.payload)["powerKw"]
if "utilities/main-feeder" in latest and all(s in latest for s in SUBMETERS):
main = latest["utilities/main-feeder"]
gap = main - sum(latest[s] for s in SUBMETERS)
result = {"mainKw": main, "unaccountedKw": round(gap, 2), "unaccountedPct": round(100 * gap / main, 1)}
client.publish(f"{BASE}/twin/balance", json.dumps(result), qos=1, retain=True)
print(result)
twin = mqtt.Client(mqtt.CallbackAPIVersion.VERSION2, client_id=f"energy-twin-{uuid.uuid4().hex[:6]}")
twin.on_connect = on_connect
twin.on_message = on_message
twin.connect("broker.connectmq.com", 1883, keepalive=30)
sim = mqtt.Client(mqtt.CallbackAPIVersion.VERSION2, client_id=f"meter-sim-{uuid.uuid4().hex[:6]}")
sim.connect("broker.connectmq.com", 1883, keepalive=30)
sim.loop_start()
threading.Thread(target=simulate, args=(sim,), daemon=True).start()
twin.loop_forever()
Le service de bilan signalera une part non expliquée stable. Sur un site réel, ce chiffre vous oriente vers un sous-compteur manquant, une charge inconnue ou des pertes qui méritent une enquête.
Tester des scénarios d'efficacité
Une fois que le jumeau reflète la réalité, vous pouvez poser des questions « et si » à l'aide de modèles simples associés aux nœuds :
- Réduction de la pression d'air comprimé : modélisez la puissance du compresseur en fonction de la pression de refoulement et de la demande. Une règle empirique répandue veut qu'une pression réseau plus basse réduise l'énergie consommée par les compresseurs ; le jumeau permet d'estimer l'effet à partir de votre propre profil de charge mesuré plutôt que de chiffres génériques.
- Réparation des fuites : mesurez la puissance des compresseurs en dehors des heures de production, lorsque la demande d'air devrait être quasi nulle. Cette charge de base donne une approximation des fuites ; le jumeau montre l'énergie qu'une campagne de réparation pourrait récupérer.
- Report de charge : rejouez une semaine de données de comptage en déplaçant les charges flexibles vers les heures creuses pour voir l'effet sur la pointe de puissance.
- Politiques d'arrêt à vide : combinez l'état de la ligne et son énergie pour voir ce qui est consommé à l'arrêt, et simulez une mise en veille automatique après un temps d'inactivité donné.
Gardez les calculs de scénarios dans vos propres services ou notebooks, en lisant l'historique depuis une base de séries temporelles. Le rôle du broker est de livrer les données en direct de manière fiable ; il ne stocke pas l'historique et n'exécute pas de modèles.
Checklist de mise en œuvre
- Dessinez le schéma unifilaire du site et la topologie des flux d'énergie avant d'acheter des compteurs.
- Identifiez les plus gros consommateurs et équipez-les en premier ; la longue traîne peut être estimée.
- Choisissez un intervalle de relevé adapté à la question : 1 à 15 secondes pour la corrélation avec le procédé, une minute pour les charges du bâtiment.
- Publiez les index cumulés en plus de la puissance.
- Publiez l'état de production sur le même broker pour pouvoir calculer l'énergie par unité et la consommation à l'arrêt.
- Persistez les données avec un abonné (Telegraf vers InfluxDB, ou un script Python vers TimescaleDB).
- Ajoutez un contrôle de bilan par nœud de distribution et examinez les écarts chaque semaine.
- Utilisez les règles d'alerte à seuil de ConnectMQ pour des limites simples, comme une charge de base nocturne inattendue.
Pièges courants
- Unités et facteurs d'échelle mélangés. Les registres Modbus nécessitent souvent une mise à l'échelle. Validez les lectures de la passerelle par rapport à l'afficheur du compteur.
- Échantillonnage non synchronisé. Comparer un compteur principal lu à la seconde 0 avec des sous-compteurs lus à la seconde 40 crée de faux écarts. Faites des moyennes sur des fenêtres alignées.
- Ne compter que l'électricité. Le gaz, la vapeur et l'air comprimé cachent souvent les plus grosses économies.
- Absence de responsable. Un jumeau énergétique a besoin de quelqu'un qui l'examine régulièrement et transforme les constats en actions.
La modélisation énergétique se combine bien avec un jumeau numérique de bâtiment pour les charges CVC et un jumeau numérique d'usine pour les lignes de production.
Diffusez vos données énergétiques avec ConnectMQ
ConnectMQ offre un broker MQTT managé et sécurisé pour les passerelles de comptage et les services du jumeau, avec TLS sur le port 8883 et un accès WebSocket pour les tableaux de bord dans le navigateur. Inscrivez-vous gratuitement sur app.connectmq.com, sans carte bancaire, créez un broker Serverless et connectez votre première passerelle de comptage en quelques minutes.
Questions fréquentes
Qu'est-ce qu'un jumeau numérique énergétique ?
C'est un modèle vivant des sources d'énergie, des équipements de conversion, de la distribution et des consommateurs d'un site, alimenté par les données des compteurs, qui montre où va l'énergie et permet de tester des améliorations d'efficacité.
À quelle fréquence les compteurs d'énergie doivent-ils publier ?
Cela dépend de la question. Quelques secondes conviennent pour corréler avec les événements du procédé, tandis qu'un intervalle d'une minute suffit généralement pour les charges du bâtiment et l'analyse de facturation.
Peut-on connecter des compteurs d'énergie Modbus à MQTT ?
Oui. Une passerelle comme Node-RED ou Telegraf lit les registres Modbus et publie les valeurs sur des topics MQTT auxquels le jumeau s'abonne.
Le broker MQTT stocke-t-il mon historique énergétique ?
Non. Le broker livre les messages en direct. Utilisez un abonné distinct pour écrire les données dans une base de séries temporelles à des fins d'historique et d'analyse de scénarios.



