Figure 1 : Système complet de monitoring énergétique connecté via MQTT vers Home Assistant.
Bienvenue sur TechFix Hub ! En 2026, avec la hausse continue des prix de l'électricité et la prise de conscience écologique, savoir exactement combien consomme chaque appareil de votre maison n'est plus un luxe, mais une nécessité.
Les solutions commerciales (Shelly EM, Emporia Vue) coûtent entre 80€ et 200€ et vous enferment dans des écosystèmes propriétaires. Dans ce guide complet, nous allons construire notre propre système de monitoring énergétique open-source pour moins de 25€, en utilisant :
- 🧠 Un microcontrôleur ESP32 (le cerveau WiFi)
- 📊 Un capteur PZEM-004T V3 (précision professionnelle)
- 🏠 La plateforme Home Assistant (le centre de commande)
- 📡 Le protocole MQTT (communication ultra-rapide)
À la fin de ce tutoriel, vous aurez un tableau de bord temps réel de toute votre consommation, des alertes en cas de dépassement, et des graphiques historiques dignes des solutions à 500€.
💡 1. Pourquoi Ce Projet Est Indispensable en 2026
💰 Économies Réelles
Identifiez les appareils énergivores et réduisez votre facture de 15 à 30% dès le premier mois.
🔒 100% Privé
Vos données restent chez vous, pas dans le cloud d'un fabricant chinois.
🚀 Évolutif
Ajoutez des capteurs, des automatisations, et même du solaire plus tard.
🛠️ 2. Liste du Matériel (BOM Complète)
Voici exactement ce dont vous avez besoin, avec des liens vers les composants recommandés :
🔌 3. Schéma de Câblage Complet
⚠️ DANGER DE MORT - LISEZ CECI AVANT TOUT
- Coupez TOUJOURS le disjoncteur général avant toute intervention
- Ne travaillez JAMAIS seul sur une installation 230V
- Utilisez un vérificateur d'absence de tension (VAT) avant de toucher quoi que ce soit
- Le PZEM-004T V3 possède un optocoupleur, mais respectez quand même les distances d'isolement
📍 Câblage Côté ESP32 (Basse Tension - 3.3V)
⚡ Câblage Côté 230V (Haute Tension)
Le PZEM-004T V3 se place en série sur la phase entre le disjoncteur et votre installation :
- La phase entrante (venant du disjoncteur) → borne IN du PZEM
- La phase sortante (vers l'installation) → borne OUT du PZEM
- Le neutre passe directement (le PZEM a une borne N dédiée pour sa propre alimentation)
- La terre n'est PAS connectée au PZEM (sécurité)
💻 4. Le Code ESP32 Complet (Arduino IDE)
Avant de téléverser, installez ces bibliothèques via le Gestionnaire de Bibliothèques :
PZEM004Tv30par Jakub VanekPubSubClientpar Nick O'Leary (pour MQTT)WiFi(inclus avec ESP32)
#include <WiFi.h>
#include <PubSubClient.h>
#include <PZEM004Tv30.h>
// ============ CONFIGURATION WIFI ============
const char* ssid = "VOTRE_WIFI";
const char* password = "VOTRE_MOT_DE_PASSE";
// ============ CONFIGURATION MQTT ============
const char* mqtt_server = "192.168.1.100"; // IP de votre Home Assistant
const int mqtt_port = 1883;
const char* mqtt_user = "votre_user_mqtt";
const char* mqtt_password = "votre_password_mqtt";
const char* mqtt_topic_prefix = "homeassistant/sensor/energy_meter/";
// ============ CONFIGURATION PZEM ============
PZEM004Tv30 pzem(Serial2, 16, 17); // RX=16, TX=17
WiFiClient espClient;
PubSubClient client(espClient);
unsigned long lastPublish = 0;
const unsigned long publishInterval = 10000; // Publication toutes les 10s
void setup_wifi() {
delay(10);
Serial.println("Connexion WiFi en cours...");
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("\nWiFi connecté ! IP: " + WiFi.localIP().toString());
}
void reconnect_mqtt() {
while (!client.connected()) {
Serial.print("Connexion MQTT...");
String clientId = "ESP32-EnergyMeter-" + String(random(0xffff), HEX);
if (client.connect(clientId.c_str(), mqtt_user, mqtt_password)) {
Serial.println("connecté !");
} else {
Serial.print("échec, rc=");
Serial.print(client.state());
Serial.println(" réessai dans 5s");
delay(5000);
}
}
}
void publish_value(const char* suffix, float value) {
char topic[100];
char payload[20];
snprintf(topic, sizeof(topic), "%s%s", mqtt_topic_prefix, suffix);
snprintf(payload, sizeof(payload), "%.2f", value);
client.publish(topic, payload, true); // retain = true
}
void setup() {
Serial.begin(115200);
Serial.println("\n=== Moniteur Énergie ESP32 ===");
setup_wifi();
client.setServer(mqtt_server, mqtt_port);
// Configuration Home Assistant Auto-Discovery
publish_ha_config();
}
void publish_ha_config() {
// Configuration pour l'intégration automatique dans Home Assistant
String config_topic = "homeassistant/sensor/energy_meter/power/config";
String payload = "{"
"\"name\": \"Consommation Maison\","
"\"unit_of_measurement\": \"W\","
"\"device_class\": \"power\","
"\"state_topic\": \"homeassistant/sensor/energy_meter/power\","
"\"unique_id\": \"esp32_energy_power\","
"\"state_class\": \"measurement\""
"}";
client.publish(config_topic.c_str(), payload.c_str(), true);
}
void loop() {
if (!client.connected()) reconnect_mqtt();
client.loop();
unsigned long now = millis();
if (now - lastPublish > publishInterval) {
lastPublish = now;
float voltage = pzem.voltage();
float current = pzem.current();
float power = pzem.power();
float energy = pzem.energy();
float frequency = pzem.pf(); // Power Factor
if (!isnan(voltage)) publish_value("voltage", voltage);
if (!isnan(current)) publish_value("current", current);
if (!isnan(power)) publish_value("power", power);
if (!isnan(energy)) publish_value("energy", energy);
if (!isnan(frequency)) publish_value("power_factor", frequency);
Serial.printf("V: %.1fV | I: %.2fA | P: %.1fW | E: %.2fkWh\n",
voltage, current, power, energy);
}
}
La fonction
publish_ha_config() envoie une configuration MQTT spéciale qui permet à Home Assistant de détecter automatiquement votre capteur et de créer les entités sans aucune configuration YAML manuelle. Magique !
🏠 5. Intégration dans Home Assistant
Étape 1 : Installer le Broker MQTT
Dans Home Assistant, allez dans Paramètres → Modules Complémentaires → Boutique de Modules et installez Mosquitto Broker.
Étape 2 : Créer un Utilisateur MQTT
Allez dans Paramètres → Personnes → Utilisateurs et créez un utilisateur dédié "mqtt_esp32" avec un mot de passe fort. Notez ces identifiants pour le code ESP32.
Étape 3 : Créer un Dashboard Puissant
Voici un exemple de carte Lovelace pour visualiser vos données :
type: vertical-stack
cards:
- type: entities
title: Consommation Instantanée
entities:
- entity: sensor.consommation_maison
name: Puissance Actuelle
- entity: sensor.tension_reseau
name: Tension
- entity: sensor.courant_total
name: Courant
- type: history-graph
title: Consommation 24h
entities:
- sensor.consommation_maison
hours_to_show: 24
- type: energy-distribution
# Carte officielle Énergie de HA
🤖 6. Automatisations Puissantes
Voici 3 automatisations qui transforment votre moniteur en véritable assistant énergétique :
🚨 Alerte Dépassement de Puissance
Scénario : Si la consommation dépasse 6 kW (risque de disjonction), envoyer une notification et couper le chauffe-eau temporairement.
🌙 Mode Nuit Automatique
Scénario : Entre 22h et 6h, si la consommation dépasse 500W (hors chauffage), envoyer une alerte "appareil oublié allumé".
💰 Rapport Hebdomadaire
Scénario : Tous les dimanches à 20h, envoyer un résumé Telegram avec la consommation de la semaine et l'estimation de la facture.
🚀 7. Améliorations Futures (Niveau Avancé)
- 🔋 Monitoring Solaire : Ajoutez un 2ème PZEM sur l'entrée de vos panneaux photovoltaïques pour calculer votre autoconsommation en temps réel.
- 📊 Écran Local : Ajoutez un écran OLED 0.96" I2C pour afficher les données sans ouvrir Home Assistant.
- ⚡ Détection d'Appareils (NILM) : Utilisez l'IA pour reconnaître la signature électrique de chaque appareil (frigo, TV, machine à laver) sans capteur supplémentaire.
- 🔔 Notification Telegram : Envoyez des alertes sur votre téléphone en cas de consommation anormale.
- 📈 Export InfluxDB : Pour des graphiques encore plus poussés sur plusieurs années.
🔗 Pour Aller Plus Loin sur TechFix Hub
Ce projet s'inscrit dans une série d'articles sur l'IoT et la domotique. Découvrez nos autres guides :
✅ Conclusion
Avec moins de 30€ de composants et quelques heures de travail, vous disposez maintenant d'un système de monitoring énergétique plus puissant que les solutions commerciales à 200€. Vous avez le contrôle total sur vos données, la liberté d'ajouter des automatisations, et la satisfaction du fait-maison.
Dans un prochain article, nous verrons comment ajouter la reconnaissance automatique d'appareils par IA (NILM) pour identifier quel appareil consomme quoi, sans capteur supplémentaire. Restez connectés !
🛠️ Prêt à construire votre moniteur ?
Vous avez des questions sur le câblage, la configuration MQTT, ou les automatisations Home Assistant ? Posez votre question dans les commentaires ci-dessous, la communauté TechFix Hub se fera un plaisir de vous aider !