🔌 Branchement Électroménager : Lave-linge, Lave-vaisselle, Frigo + Monitoring Smart ESP32 (Guide Complet 2026)
📋 Table des Matières
- 1. Introduction
- 2. Normes Électriques (NF C 15-100)
- 3. Types de Prises et Sections de Câble
- 4. Branchement Lave-linge
- 5. Branchement Lave-vaisselle
- 6. Branchement Réfrigérateur
- 7. 🚀 Projet DIY : Monitoring Smart avec ESP32
- 8. Code Arduino Complet
- 9. Intégration Home Assistant
- 10. Économies d'Énergie
- 11. Dépannage Courant
- 12. FAQ
- 13. Conclusion
1. Introduction
Le branchement des appareils électroménagers (lave-linge, lave-vaisselle, réfrigérateur) est une opération courante mais qui nécessite le respect de règles strictes de sécurité. Ces appareils, souvent gourmands en énergie, doivent être raccordés à des circuits dédiés avec des protections adaptées.
Dans ce guide complet, nous allons voir :
- Les règles de base de la norme NF C 15-100
- Le branchement spécifique de chaque appareil
- Un projet DIY unique : ajouter un monitoring intelligent avec ESP32 pour suivre la consommation en temps réel
- L'intégration avec Home Assistant pour une domotique complète
2. Normes Électriques (NF C 15-100)
📌 Règles Fondamentales :
- Circuit dédié : Chaque appareil puissant doit avoir son propre circuit avec disjoncteur individuel
- Protection différentielle 30mA : Obligatoire pour toutes les prises de cuisine et salle de bain
- Mise à la terre : Indispensable pour la sécurité des personnes
- Sections de câble : Adaptées à la puissance de l'appareil
3. Types de Prises et Sections de Câble
| Appareil | Puissance Typique | Type de Prise | Section Câble | Disjoncteur |
|---|---|---|---|---|
| Lave-linge | 2000-2500W | Prise 20A (type spécialisé) | 2.5 mm² | 20A |
| Lave-vaisselle | 1800-2200W | Prise 20A | 2.5 mm² | 20A |
| Réfrigérateur | 200-400W | Prise 16A standard | 1.5 mm² | 16A |
| Four électrique | 2500-3500W | Prise 32A specialized | 6 mm² | 32A |
| Plaque induction | 3000-7000W | Prise 32A ou raccordement direct | 6 mm² | 32A |
4. Branchement Lave-linge
🔧 Étapes de Branchement :
- Coupez le courant au disjoncteur général
- Installez une prise 20A spécialisée (prise avec terre, adaptée aux fortes puissances)
- Tirez un câble 3G2.5 mm² depuis le tableau électrique
- Connectez au disjoncteur 20A dédié dans le tableau
- Respectez les codes couleur :
- Bleu = Neutre (N)
- Rouge/Marron = Phase (L)
- Vert/Jaune = Terre (⏚)
- Vérifiez la polarité avec un multimètre avant de brancher l'appareil
5. Branchement Lave-vaisselle
🔧 Étapes de Branchement :
- Même procédure que le lave-linge (prise 20A, câble 2.5 mm², disjoncteur 20A)
- Prévoyez une arrivée d'eau avec robinet d'arrêt accessible
- Installez un siphon pour l'évacuation
- Respectez les distances de sécurité :
- 60 cm minimum entre la prise et le point d'eau
- Zone de volume 2 (protection IPX4 minimum)
6. Branchement Réfrigérateur
🔧 Étapes de Branchement :
- Prise 16A standard avec terre
- Câble 3G1.5 mm² suffisant
- Disjoncteur 16A dédié (ou sur circuit prises de cuisine)
- Évitez les rallonges et les multiprises
- Laissez un espace de 10 cm derrière le frigo pour la ventilation
7. 🚀 Projet DIY : Monitoring Smart avec ESP32
Maintenant que vous maîtrisez le branchement traditionnel, passons au niveau supérieur : transformer vos appareils en objets connectés avec un système de monitoring intelligent basé sur ESP32.
🎯 Objectifs du Projet :
- Mesurer la consommation en temps réel de chaque appareil
- Détecter les cycles de fonctionnement (quand le lave-linge tourne, quand le frigo démarre)
- Envoyer des notifications quand une machine est terminée
- Calculer le coût énergétique quotidien/mensuel
- Intégrer avec Home Assistant
📦 Liste des Composants (BOM) :
- ESP32 DevKit V1 : 1x (~6€)
- PZEM-004T v3.0 : Module de mesure de puissance (1-2x selon le nombre d'appareils) (~12€)
- Capteur CT SCT-013-000 : 100A (inclus avec PZEM-004T)
- Transformateur AC-AC : 230V vers 9V (pour mesure tension) (~4€)
- Écran OLED 0.96" I2C : Affichage local (optionnel) (~4€)
- Alimentation 5V 2A : Pour l'ESP32 (~3€)
- Boîtier étanche IP65 : Pour sécuriser l'électronique (~5€)
- Câbles, borniers, connecteurs : (~5€)
💰 Coût total : ~39€ (contre 150-300€ pour des solutions commerciales type Shelly EM)
🔌 Schéma de Câblage (Monitoring Lave-linge) :
╔══════════════════════════════════════════════════════════════╗ ║ SCHÉMA DE CÂBLAGE - MONITORING SMART ║ ╠══════════════════════════════════════════════════════════════╣ ║ ║ ║ PRISE 230V ──┬──→ [PZEM-004T] ──┬──→ APPAREIL ║ ║ (Lave-linge) │ V A │ (Lave-linge) ║ ║ │ │ │ │ ║ ║ │ │ └──[CT SCT-013]──┘ ║ ║ │ │ (autour du fil L) ║ ║ │ │ ║ ║ │ └──[Transfo AC-AC] ║ ║ │ (mesure tension) ║ ║ │ ║ ║ PZEM-004T ───┴──→ ESP32 ║ ║ (UART2) GPIO 16 (RX) ← TX PZEM ║ ║ GPIO 17 (TX) → RX PZEM ║ ║ GND ←→ GND ║ ║ ║ ║ OLED (I2C) ──→ ESP32 ║ ║ GPIO 21 (SDA) ║ ║ GPIO 22 (SCL) ║ ║ ║ ╚══════════════════════════════════════════════════════════════╝
8. Code Arduino Complet
/*
* 🏠 Smart Energy Monitor for Home Appliances
* TechFix Hub - DIY Electronics & IoT Projects
*
* Mesure la consommation d'un lave-linge/lave-vaisselle/frigo
* avec ESP32 + PZEM-004T et envoie les données via MQTT
*
* Bibliothèques requises :
* - PZEM004Tv30 (by Jakub Mandula)
* - PubSubClient (pour MQTT)
* - WiFi (inclus dans ESP32 core)
* - Adafruit_SSD1306 (optionnel, pour OLED)
*/
#include
#include
#include
#include
#include
#include
// ============ CONFIGURATION ============
// WiFi
const char* WIFI_SSID = "VOTRE_WIFI";
const char* WIFI_PASSWORD = "VOTRE_MDP";
// MQTT (Home Assistant ou broker local)
const char* MQTT_SERVER = "192.168.1.100"; // IP de votre Home Assistant
const int MQTT_PORT = 1883;
const char* MQTT_USER = "votre_user";
const char* MQTT_PASSWORD = "votre_password";
const char* MQTT_DEVICE_ID = "lave_linge";
// Broches ESP32
#define PZEM_RX 16
#define PZEM_TX 17
#define OLED_SDA 21
#define OLED_SCL 22
// Seuil de détection de cycle (en Watts)
#define CYCLE_THRESHOLD 5.0 // Au-dessus de 5W = appareil en fonctionnement
// ============ OBJETS ============
PZEM004Tv30 pzem(PZEM_RX, PZEM_TX);
WiFiClient espClient;
PubSubClient mqttClient(espClient);
Adafruit_SSD1306 display(128, 64, &Wire, -1);
// ============ VARIABLES ============
float voltage = 0;
float current = 0;
float power = 0;
float energy = 0;
float frequency = 0;
float pf = 0;
bool cycleEnCours = false;
unsigned long cycleStartTime = 0;
unsigned long lastMQTTPublish = 0;
unsigned long lastDisplayUpdate = 0;
// ============ SETUP ============
void setup() {
Serial.begin(115200);
Serial.println("\n\n=====================================");
Serial.println("🏠 Smart Energy Monitor - TechFix Hub");
Serial.println("=====================================\n");
// Initialisation OLED
if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println(F("❌ Erreur OLED SSD1306"));
} else {
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(SSD1306_WHITE);
display.setCursor(0, 0);
display.println("Demarrage...");
display.display();
}
// Connexion WiFi
connectToWiFi();
// Connexion MQTT
mqttClient.setServer(MQTT_SERVER, MQTT_PORT);
mqttClient.setBufferSize(512);
connectToMQTT();
// Initialisation PZEM
Serial.println("🔌 Initialisation PZEM-004T...");
while (!pzem.setAddress(0x50)) {
Serial.println("⚠️ PZEM non detecte, nouvelle tentative...");
delay(1000);
}
Serial.println("✅ PZEM initialise avec succes!");
// Affichage initial
updateDisplay("Pret!", "", "");
delay(2000);
}
// ============ LOOP ============
void loop() {
// Vérifier connexions
if (WiFi.status() != WL_CONNECTED) {
connectToWiFi();
}
if (!mqttClient.connected()) {
connectToMQTT();
}
mqttClient.loop();
// Lecture PZEM toutes les 2 secondes
static unsigned long lastRead = 0;
if (millis() - lastRead > 2000) {
lastRead = millis();
readPZEM();
detectCycle();
}
// Publication MQTT toutes les 10 secondes
if (millis() - lastMQTTPublish > 10000) {
lastMQTTPublish = millis();
publishToMQTT();
}
// Mise à jour OLED toutes les secondes
if (millis() - lastDisplayUpdate > 1000) {
lastDisplayUpdate = millis();
updateDisplayOLED();
}
}
// ============ FONCTIONS ============
void connectToWiFi() {
Serial.print("📶 Connexion WiFi : ");
Serial.println(WIFI_SSID);
WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
int attempts = 0;
while (WiFi.status() != WL_CONNECTED && attempts < 20) {
delay(500);
Serial.print(".");
attempts++;
}
if (WiFi.status() == WL_CONNECTED) {
Serial.println("\n✅ WiFi connecte!");
Serial.print("📍 IP : ");
Serial.println(WiFi.localIP());
} else {
Serial.println("\n❌ Erreur WiFi");
}
}
void connectToMQTT() {
Serial.print("🔗 Connexion MQTT...");
String clientId = "ESP32-" + String(MQTT_DEVICE_ID);
if (mqttClient.connect(clientId.c_str(), MQTT_USER, MQTT_PASSWORD)) {
Serial.println(" OK!");
// Souscription aux commandes (optionnel)
String topic = String("home/elec/") + MQTT_DEVICE_ID + "/cmd";
mqttClient.subscribe(topic.c_str());
} else {
Serial.print(" ❌ Erreur, rc=");
Serial.println(mqttClient.state());
delay(5000);
}
}
void readPZEM() {
voltage = pzem.voltage();
current = pzem.current();
power = pzem.power();
energy = pzem.energy();
frequency = pzem.frequency();
pf = pzem.pf();
// Gestion des valeurs invalides
if (isnan(voltage)) voltage = 0;
if (isnan(current)) current = 0;
if (isnan(power)) power = 0;
if (isnan(energy)) energy = 0;
}
void detectCycle() {
bool appareilActif = (power > CYCLE_THRESHOLD);
// Détection début de cycle
if (appareilActif && !cycleEnCours) {
cycleEnCours = true;
cycleStartTime = millis();
Serial.println("\n🟢 DEBUT DE CYCLE detecte!");
Serial.print(" Puissance : ");
Serial.print(power);
Serial.println(" W");
// Notification MQTT
String topic = String("home/elec/") + MQTT_DEVICE_ID + "/cycle";
mqttClient.publish(topic.c_str(), "START");
}
// Détection fin de cycle
if (!appareilActif && cycleEnCours) {
unsigned long cycleDuration = (millis() - cycleStartTime) / 1000;
cycleEnCours = false;
Serial.println("\n🔴 FIN DE CYCLE detecte!");
Serial.print(" Duree : ");
Serial.print(cycleDuration / 60);
Serial.println(" minutes");
// Notification MQTT (pour Home Assistant)
String topic = String("home/elec/") + MQTT_DEVICE_ID + "/cycle";
String payload = "END:" + String(cycleDuration);
mqttClient.publish(topic.c_str(), payload.c_str());
}
}
void publishToMQTT() {
String baseTopic = String("home/elec/") + MQTT_DEVICE_ID;
// Publication des mesures
mqttClient.publish((baseTopic + "/voltage").c_str(), String(voltage, 1).c_str());
mqttClient.publish((baseTopic + "/current").c_str(), String(current, 2).c_str());
mqttClient.publish((baseTopic + "/power").c_str(), String(power, 1).c_str());
mqttClient.publish((baseTopic + "/energy").c_str(), String(energy, 3).c_str());
mqttClient.publish((baseTopic + "/frequency").c_str(), String(frequency, 1).c_str());
mqttClient.publish((baseTopic + "/pf").c_str(), String(pf, 2).c_str());
mqttClient.publish((baseTopic + "/cycle").c_str(), cycleEnCours ? "ON" : "OFF");
Serial.println("📤 Donnees MQTT publiees");
}
void updateDisplayOLED() {
display.clearDisplay();
display.setTextSize(1);
display.setCursor(0, 0);
display.print("U:");
display.print(voltage, 1);
display.print("V I:");
display.print(current, 2);
display.println("A");
display.print("P:");
display.print(power, 1);
display.print("W ");
display.print(pf, 2);
display.println("PF");
display.print("E:");
display.print(energy, 3);
display.println("kWh");
display.print("F:");
display.print(frequency, 1);
display.println("Hz");
// Indicateur de cycle
if (cycleEnCours) {
display.fillRect(0, 54, 128, 10, SSD1306_WHITE);
display.setTextColor(SSD1306_BLACK);
display.setCursor(20, 55);
display.print("EN COURS...");
} else {
display.setCursor(20, 55);
display.print("EN VEILLE");
}
display.display();
}
void updateDisplay(String line1, String line2, String line3) {
display.clearDisplay();
display.setTextSize(1);
display.setCursor(0, 0);
display.println(line1);
display.println(line2);
display.println(line3);
display.display();
}
📚 Bibliothèques Requises :
- PZEM004Tv30 (by Jakub Mandula) - Gestion du module PZEM
- PubSubClient (by Nick O'Leary) - Client MQTT
- Adafruit SSD1306 + Adafruit GFX - Affichage OLED
9. Intégration Home Assistant
Ajoutez ce code dans votre fichier configuration.yaml de Home Assistant :
# configuration.yaml - Home Assistant
# Déclaration du capteur MQTT
mqtt:
sensor:
# Lave-linge
- name: "Lave-linge Puissance"
state_topic: "home/elec/lave_linge/power"
unit_of_measurement: "W"
device_class: power
state_class: measurement
- name: "Lave-linge Tension"
state_topic: "home/elec/lave_linge/voltage"
unit_of_measurement: "V"
device_class: voltage
state_class: measurement
- name: "Lave-linge Courant"
state_topic: "home/elec/lave_linge/current"
unit_of_measurement: "A"
device_class: current
state_class: measurement
- name: "Lave-linge Énergie"
state_topic: "home/elec/lave_linge/energy"
unit_of_measurement: "kWh"
device_class: energy
state_class: total_increasing
- name: "Lave-linge Cycle"
state_topic: "home/elec/lave_linge/cycle"
# Automation : Notification fin de cycle
automation:
- alias: "Notification Fin Lave-linge"
trigger:
- platform: state
entity_id: sensor.lave_linge_cycle
from: "ON"
to: "OFF"
condition:
# Éviter les fausses notifications (cycle > 15 min)
- condition: template
value_template: "{{ (as_timestamp(now()) - as_timestamp(state_attr('automation.notification_fin_lave_linge', 'last_triggered') | default(0))) > 900 }}"
action:
- service: notify.mobile_app_votre_telephone
data:
title: "🧺 Lave-linge terminé!"
message: "Votre cycle de lavage est terminé."
data:
push:
sound: "default"
tag: "lave_linge"
10. Économies d'Énergie
💡 Conseils pour Réduire la Consommation :
- Lave-linge : Privilégiez les cycles à 30°C ou 40°C (économie de 40% vs 60°C)
- Lave-vaisselle : Lancez uniquement quand plein, utilisez le mode "Eco"
- Réfrigérateur : Placez-le loin des sources de chaleur, laissez 10 cm d'espace derrière
- Dégivrage : 3 mm de givre = +15% de consommation
- Heures creuses : Programmez les machines la nuit (tarif réduit)
📊 Calcul du Coût Annuel :
| Appareil | Consommation Annuelle | Coût Annuel (0.20€/kWh) |
|---|---|---|
| Lave-linge (220 cycles/an) | ~220 kWh | ~44€ |
| Lave-vaisselle (250 cycles/an) | ~250 kWh | ~50€ |
| Réfrigérateur (A++) | ~250 kWh | ~50€ |
| Total | ~720 kWh | ~144€ |
11. Dépannage Courant
| Problème | Cause Possible | Solution |
|---|---|---|
| Le disjoncteur saute | Surcharge ou court-circuit | Vérifiez la section du câble, testez l'appareil sur une autre prise |
| L'appareil ne démarre pas | Problème d'alimentation | Vérifiez la prise, le disjoncteur, le fusible de l'appareil |
| Choc électrique au contact | Défaut de mise à la terre | ⚠️ COUPEZ TOUT et appelez un électricien immédiatement |
| PZEM ne mesure rien | Capteur CT mal orienté | Vérifiez le sens du capteur (flèche vers la charge) |
| ESP32 redémarre en boucle | Alimentation insuffisante | Utilisez une alimentation 5V 2A de qualité |
| Données MQTT incohérentes | Connexion WiFi instable | Rapprochez l'ESP32 du routeur, ajoutez un condensateur 100µF |
12. FAQ
Peut-on brancher un lave-linge sur une prise standard 16A ?
Non, c'est déconseillé. Un lave-linge peut consommer jusqu'à 2500W (soit ~11A), mais avec des pics au démarrage. La norme NF C 15-100 impose une prise spécialisée 20A avec un câble de section 2.5 mm² et un disjoncteur 20A dédié.
Faut-il un différentiel 30mA pour le lave-vaisselle ?
OUI, absolument. Tous les circuits de cuisine et salle de bain doivent être protégés par un différentiel 30mA pour éviter les électrocutions en cas de fuite de courant. C'est une obligation légale (NF C 15-100).
Quelle est la différence entre PZEM-004T et Shelly EM ?
Le PZEM-004T est un module de mesure brut (nécessite un microcontrôleur comme ESP32) tandis que le Shelly EM est une solution tout-en-un prête à l'emploi. Le PZEM coûte ~12€ et offre une flexibilité maximale, le Shelly EM coûte ~60€ mais s'intègre directement à Home Assistant. Pour les makers, le PZEM+ESP32 est bien plus intéressant.
Le frigo doit-il être sur un circuit dédié ?
Idéalement oui, mais ce n'est pas obligatoire. Un frigo peut partager un circuit avec d'autres prises de cuisine, à condition que le disjoncteur soit adapté (16A) et la section de câble suffisante (1.5 mm²). Cependant, un circuit dédié évite les coupures en cas de surcharge.
Comment savoir si mon installation électrique est aux normes ?
Faites réaliser un diagnostic électrique par un professionnel certifié (coût ~100-150€). Il vérifiera la présence des différentiels 30mA, la mise à la terre, les sections de câbles, et vous remettra un rapport conforme. Obligatoire pour la vente d'un logement.
13. Conclusion
Le branchement des appareils électroménagers est une opération qui nécessite rigueur et respect des normes. En suivant ce guide, vous avez appris :
- ✅ Les règles de sécurité essentielles (NF C 15-100)
- ✅ Le branchement spécifique de chaque appareil
- ✅ Un projet DIY unique avec ESP32 pour monitorer votre consommation
- ✅ L'intégration avec Home Assistant pour une domotique complète
🎯 Prochaines Étapes :
- Réalisez le branchement électrique en respectant les normes
- Construisez le module de monitoring ESP32 + PZEM-004T
- Intégrez le tout à Home Assistant
- Créez des automatisations (notifications, économies d'énergie)
- Partagez votre réalisation dans les commentaires !
🔗 Articles Connexes :
Vous avez des questions ? Rencontrez-vous des difficultés lors du branchement ou de la programmation ? Partagez vos expériences dans les commentaires ci-dessous !
