- Mk2PVRouter + ESPHome + Home Assistant
- Table des Matières
- Introduction
- Remarques
- Vue Home Assistant
- Vue du serveur Web
- Configuration des Capteurs
- Configuration des Composants
- Personnalisation des Capteurs et Contrôles
- Utilisation avec Home Assistant
- Serveur Web Intégré
- Remarques
- Liste des Tags Disponibles
- Exemple de Modification
- Module mk2Wifi pour Mk2PVRouter
- Connexion manuelle (sans module mk2Wifi)
- Configuration du programme
Ce projet utilise un ESP32-C3 pour surveiller et contrôler un système de routage d’énergie (Mk2PVRouter) avec intégration dans Home Assistant. Il permet de suivre et d’optimiser la consommation énergétique grâce à des capteurs configurables et un serveur web intégré. Le projet prend en charge deux configurations : monophasée et triphasée, avec des capteurs communs et spécifiques à chaque version.
Les fonctionnalités principales incluent :
- Une intégration complète avec Home Assistant pour une gestion centralisée.
- Un serveur web intégré pour visualiser les données et contrôler les interrupteurs.
- Une personnalisation avancée des capteurs, des contrôles et des icônes.
- Une compatibilité avec les microcontrôleurs ESP32-C3 (et partiellement ESP8266 avec des limitations).
Ce projet offre une solution flexible et évolutive pour la gestion énergétique domestique.
- Attention : Ne laissez pas actifs les capteurs des deux versions (monophasée et triphasée) en même temps. Cela pourrait entraîner des erreurs ou des données incohérentes.
- Mise à jour : Si vous modifiez la configuration YAML, téléversez-la à nouveau sur l'ESP32-C3 via ESPHome.
- Compatibilité matérielle : Ce projet est conçu pour un ESP32-C3. Si vous souhaitez utiliser un ESP8266, vous devrez probablement désactiver certaines fonctionnalités, comme le serveur web, en raison des limitations de puissance et de mémoire de l’ESP8266.
Les capteurs suivants sont disponibles quelle que soit la version utilisée (monophasée ou triphasée) :
- Température Chauffe-eau : Mesure la température via un capteur DS18B20.
- Puissance instantanée : Affiche la puissance instantanée au point de raccordement. Une puissance négative indique une injection.
- Puissance moyenne relais : Puissance moyenne utilisée pour les sorties relais tout-ou-rien.
- Absence routage : Temps écoulé sans routage d’énergie.
- Signal WiFi : Indique la puissance du signal WiFi.
- Uptime : Temps écoulé depuis le dernier redémarrage.
Ces capteurs doivent être activés uniquement si vous utilisez une configuration monophasée :
- Puissance instantanée routée : Mesure la puissance routée vers une charge.
- Énergie routée : Total de l’énergie routée (en Wh).
- Tension : Mesure la tension du réseau.
Pour activer ces capteurs, assurez-vous que les blocs correspondants dans le fichier mk2pvrouter.yaml ne sont pas commentés.
Ces capteurs doivent être activés uniquement si vous utilisez une configuration triphasée :
- Puissance instantanée P1, P2, P3 : Mesure la puissance sur chaque phase.
- Tension V1, V2, V3 : Mesure la tension sur chaque phase.
Pour activer ces capteurs, assurez-vous que les blocs correspondants dans le fichier mk2pvrouter.yaml ne sont pas commentés.
Le fichier YAML contient la configuration complète pour ESPHome. Voici les étapes pour adapter la configuration à votre installation :
-
Choisissez votre version (monophasée ou triphasée) :
- Commentez ou dé-commentez les blocs de capteurs spécifiques à votre version.
- Les capteurs communs peuvent rester actifs.
-
Configurer le WiFi :
- Remplissez les champs
wifi.ssidetwifi.passwordavec vos informations réseau.
- Remplissez les champs
-
Configurer les identifiants :
- Remplissez les champs
!secretdans un fichiersecrets.yamlpour sécuriser vos mots de passe et clés.
- Remplissez les champs
-
Activer/Désactiver le mode Debug :
- Utilisez l’interrupteur "Debug Mode" dans Home Assistant pour activer ou désactiver les logs détaillés.
L’utilisateur a la possibilité de personnaliser la configuration selon ses besoins. Voici quelques options disponibles :
-
Désactivation de certains capteurs ou contrôles :
- Si certains capteurs ou contrôles ne sont pas nécessaires, vous pouvez les désactiver en commentant les blocs correspondants dans le fichier
mk2pvrouter.yaml. Bien entendu, vous pouvez aussi effacer le bloc. - Par exemple, pour désactiver un capteur spécifique, ajoutez un
#devant le bloc concerné :# - platform: mk2pvrouter # tag_name: "D" # name: "Puissance instantanée routée" # id: p_diverted
- Si certains capteurs ou contrôles ne sont pas nécessaires, vous pouvez les désactiver en commentant les blocs correspondants dans le fichier
-
Modification des icônes :
- Les icônes associées aux capteurs et contrôles peuvent être modifiées pour mieux correspondre à vos préférences ou à votre interface Home Assistant.
- Pour changer une icône, modifiez la propriété
icondans le bloc correspondant. Par exemple :Vous pouvez remplacer- platform: mk2pvrouter tag_name: "P" name: "Puissance instantanée" id: p_grid icon: "mdi:flash" # Icône actuelle
"mdi:flash"par une autre icône disponible.
-
Personnalisation des noms :
- Les noms des capteurs et contrôles peuvent également être modifiés pour mieux refléter leur rôle ou leur emplacement. Par exemple :
- platform: mk2pvrouter tag_name: "E" name: "Énergie injectée" id: e_diverted
- Les noms des capteurs et contrôles peuvent également être modifiés pour mieux refléter leur rôle ou leur emplacement. Par exemple :
Ces options permettent une grande flexibilité pour adapter le projet à vos besoins spécifiques.
Une fois le fichier YAML configuré et téléversé sur l’ESP32-C3 :
- Ajoutez l’intégration ESPHome dans Home Assistant.
- Les capteurs et interrupteurs configurés apparaîtront automatiquement.
- Vous pouvez visualiser les données dans l’interface Home Assistant ou via le serveur Web intégré.
Le serveur Web intégré permet de visualiser les capteurs et de contrôler les interrupteurs directement depuis un navigateur. Accédez-y via l’adresse IP de l’ESP32-C3.
- Attention : Ne laissez pas actifs les capteurs des deux versions (monophasée et triphasée) en même temps. Cela pourrait entraîner des erreurs ou des données incohérentes.
- Mise à jour : Si vous modifiez la configuration YAML, téléversez-la à nouveau sur l'ESP32-C3 via ESPHome.
Voici une liste exhaustive des tags utilisés dans la configuration mk2pvrouter.yaml. Ces tags permettent de configurer les capteurs et contrôles dans le projet.
- P : Puissance instantanée (au point de raccordement).
- R : Puissance moyenne utilisée pour les relais (selon la configuration matérielle du routeur).
- R
n: État du relaisn(ncompris entre 1 et 9 selon la configuration matérielle du routeur). Ce capteur est binaire. - N : Absence de routage en secondes.
- T
n: Capteur de températuren(ncompris entre 1 et 9 selon la configuration matérielle du routeur).
- D : Puissance instantanée routée.
- E : Énergie routée (en Wh).
- V : Tension réseau.
- P
n: Puissance instantanée sur la phase Ln (n= 1, 2, 3). - V
n: Tension sur la phase Ln (n= 1, 2, 3). - D
n: Taux de routage pour la sortienen %.
- WiFi : Informations sur le signal WiFi (SSID, adresse IP, etc.).
- Uptime : Temps écoulé depuis le dernier redémarrage.
Ces tags sont utilisés pour identifier les capteurs et contrôles dans le fichier YAML. Assurez-vous de les activer ou désactiver en fonction de votre configuration (monophasée ou triphasée).
Pour activer uniquement les capteurs monophasés, commentez les blocs triphasés comme suit :
# - platform: mk2pvrouter
# tag_name: "P1"
# name: "Puissance instantanée L1"
# id: p1_gridEt laissez les capteurs monophasés actifs :
#-------------------------
# VERSION MONOPHASÉE
#-------------------------
- platform: mk2pvrouter
tag_name: "D"
name: "Puissance instantanée routée"
id: p_divertedLe module mk2Wifi offre une solution de connexion complète et simplifiée entre un ESP32-C3-MINI-1 (RISC-V, WiFi + BLE) et le Mk2PVRouter. Ce module remplace l’ancienne carte d’extension ESP32 et permet d’éviter entièrement le câblage manuel complexe tout en réduisant considérablement les risques d’erreurs de connexion. En plus des correspondances GPIO spécifiques, le module prend en charge toutes les connexions essentielles comme l’alimentation, la masse et la liaison série, garantissant une intégration plug-and-play parfaite entre les deux dispositifs.
Le module mk2Wifi dispose d’un connecteur USB-C destiné principalement à la première programmation du firmware ESPHome. Par la suite, les mises à jour se font en OTA (Over-The-Air) via le WiFi. Les E/S numériques bénéficient d’une protection avec des résistances série de 1 kΩ.
Le module se connecte à la carte mère du Mk2PVRouter via les connecteurs UART_EXT et TRIG_EXT.
Important
Le Mk2PVRouter doit fonctionner à 3.3 V. L’ESP32-C3 ne supporte pas les niveaux logiques de 5 V et pourrait être endommagé, notamment via les signaux UART qui ne sont pas protégés par des résistances série.
- Alimentation : Le module gère la distribution d’alimentation entre l’ESP32-C3 et le Mk2PVRouter
- Masse commune : Les plans de masse sont correctement reliés pour éviter tout problème de référence
- Liaison série : Les connexions TX/RX entre l’ESP32-C3 et le routeur sont pré-câblées
| ESP32-C3 | Mk2PVRouter | Fonction |
|---|---|---|
| GPIO4 | D5 | Entrée/Sortie numérique (via 1 kΩ) |
| GPIO10 | D6 | Entrée/Sortie numérique (via 1 kΩ) |
| GPIO9 | D7 | Entrée/Sortie numérique (via 1 kΩ) |
| GPIO8 | D8 | Entrée/Sortie numérique (via 1 kΩ) |
| GPIO7 | D9 | Entrée/Sortie numérique (via 1 kΩ) |
| GPIO3 | DS18B20 | Bus 1-Wire pour sondes de température |
Le module mk2Wifi expose également un bus I²C utilisant les broches suivantes de l’ESP32-C3 :
- GPIO5 : Ligne de données SDA
- GPIO6 : Ligne d’horloge SCL
Ce bus I²C est prévu pour connecter un écran OLED via le connecteur OLED de la carte mère, permettant d’afficher des informations système directement sur l’appareil sans nécessiter de connexion à Home Assistant. Cette fonctionnalité supplémentaire est entièrement indépendante du Mk2PVRouter et peut être utilisée pour diverses applications comme l’affichage de données de production, de consommation, ou d’autres métriques pertinentes.
Le module mk2Wifi se connecte à la carte mère du Mk2PVRouter via les connecteurs suivants :
| Broche | Signal | Description |
|---|---|---|
| 1 | GND | Masse |
| 2 | DS18B20 | Bus 1-Wire |
| 3 | +5V | Alimentation 5V |
| 4 | RX | Réception |
| 5 | TX | Transmission |
| 6 | DTR | Data Terminal Ready |
Note
Attention, le brochage du PCB violet est différent
| Broche | Signal | Description |
|---|---|---|
| 1 | GND | Masse |
| 2 | +3.3V | Alimentation 3.3V |
| 3 | N/C | Non connecté |
| 4 | AVR_RX | Réception routeur (TX ESP32) |
| 5 | AVR_TX | Transmission routeur (RX ESP32) |
| 6 | N/C | Non connecté |
| Broche | Signal | Description |
|---|---|---|
| 1 | AGND | Masse analogique |
| 2 | AVCC | Alimentation 3.3V |
| 3 | SCL | Horloge I²C (GPIO6) |
| 4 | SDA | Données I²C (GPIO5) |
| Broche | Signal | Description |
|---|---|---|
| 1 | GND | Masse |
| 2 | D8 | E/S numérique (GPIO8, via 1 kΩ) |
| 3 | D7 | E/S numérique (GPIO9, via 1 kΩ) |
| 4 | D6 | E/S numérique (GPIO10, via 1 kΩ) |
| 5 | D5 | E/S numérique (GPIO4, via 1 kΩ) |
| 6 | D9 | E/S numérique (GPIO7, via 1 kΩ) |
Note
Attention, le brochage du PCB violet (ancien SPI_EXT) est différent
| Broche | Signal | Description |
|---|---|---|
| 1 | DS18B20 | Bus 1-Wire (GPIO5) |
| 2 | GND | Masse |
| 3 | D10 | E/S numérique (GPIO27) |
| 4 | D13 | E/S numérique (GPIO14) |
| 5 | D12 | E/S numérique (GPIO12) |
| 6 | D11 | E/S numérique (GPIO13) |
Note
Le connecteur OLED utilise un connecteur Molex SL (réf. 171971-0004). Les autres connecteurs utilisent des barrettes de broches au pas de 2.54mm standard.
La broche GPIO3 est spécialement dédiée à la gestion du bus 1-Wire pour les sondes de température DS18B20.
Cette configuration permet de :
- Lire les températures des ballons d’eau chaude
- Surveiller les températures du système
- Gérer plusieurs sondes sur le même bus
- Installation plug-and-play sans risque d’erreur de câblage
- Compatibilité totale avec le firmware ESPHome du Mk2PVRouter
- Connexions robustes et fiables
- Simplification de la mise en service du système
- Possibilité d’ajouter un écran via l’interface I²C
- Protection des E/S numériques par résistances série de 1 kΩ
- Connecteur USB-C pour la première programmation du firmware
Lors de la configuration de votre système dans ESPHome, assurez-vous d’utiliser ces correspondances de broches pour que la communication fonctionne correctement. Pour les sondes de température, configurez le bus 1-Wire sur la GPIO3 pour permettre la détection automatique des capteurs DS18B20. Si vous souhaitez utiliser un écran OLED, configurez l’I²C sur GPIO5 (SDA) et GPIO6 (SCL).
Cette section s'adresse aux utilisateurs qui ne disposent pas du module mk2Wifi et souhaitent réaliser le câblage manuellement.
Elle explique comment connecter un Mk2PVRouter (Atmega328P) fonctionnant à 3.3 V avec un ESP32-C3. Les connexions nécessaires incluent la communication série (TX/RX) et une liaison entre une broche numérique du routeur et une GPIO de l'ESP32-C3. Assurez-vous également de connecter les masses des deux dispositifs.
- Mk2PVRouter fonctionnant à 3.3 V
- ESP32-C3
- Fils de connexion
- Résistances de pull-up ou pull-down (si nécessaire)
- TX du routeur → U0RXD de l’ESP32-C3 (GPIO20)
- RX du routeur → U0TXD de l’ESP32-C3 (GPIO21) (optionnel)
- GND du routeur → GND de l’ESP32-C3
Pour connecter une broche numérique du routeur sérigraphiée D5-D9 à une GPIO de l’ESP32-C3 :
- Broche numérique du routeur → GPIO de l’ESP32-C3
- GND du routeur → GND de l’ESP32-C3
Important
Assurez-vous que le routeur fonctionne à 3.3 V. L’ESP32-C3 ne supporte pas les niveaux logiques de 5 V.
Warning
ESP32-C3 : L’UART0 (GPIO20/GPIO21) est partagé avec le port USB-C. Lors du débogage via USB, la communication série avec le routeur peut être perturbée. Assurez-vous de ne pas utiliser le moniteur série USB en même temps que la communication avec le routeur.
| Routeur | ESP32-C3 |
|---|---|
| TX | U0RXD (GPIO20) |
| RX | U0TXD (GPIO21) |
| GND | GND |
Le connecteur série côté routeur est câblé comme suit :
| Broche | Fonction |
|---|---|
| 1 | GND |
| 2 | DS18B20 |
| 3 | +5V |
| 4 | RX |
| 5 | TX |
| 6 | DTR |
| Routeur | ESP32-C3 |
|---|---|
| D5 | GPIO4 |
| GND | GND |
Avec ce câblage, vous pouvez établir une communication série entre les deux dispositifs et utiliser des broches numériques pour échanger des signaux.
Pour que le Mk2PVRouter communique correctement avec l’ESP32-C3, il est nécessaire d’adapter son firmware. Voici les étapes recommandées :
- Accès au code source du Mk2PVRouter (par exemple via l’IDE Arduino)
- Sauvegarde préalable des paramètres d’étalonnage si besoin
Vous pouvez accéder au code source du Mk2PVRouter via les dépôts suivants :
- Version monophasée : GitHub Mk2PVRouter Monophasé
- Version triphasée : GitHub Mk2PVRouter Triphasé
Ces dépôts contiennent le code source complet ainsi que la documentation nécessaire pour adapter le firmware à l’intégration avec l'ESP32-C3.
Dans le fichier config.h du firmware du routeur, définissez le type de sortie série adapté à l’intégration IoT :
inline constexpr SerialOutputType SERIAL_OUTPUT_TYPE = SerialOutputType::IoT;Pour que le routeur soit capable de lire l’état des sorties numériques de l’ESP32-C3, vous devrez également activer telle ou telle fonctionnalité, par exemple marche forcée, routage ON/OFF, etc.
Recompilez le firmware puis téléversez-le sur le routeur via votre programmateur habituel.
Tip
Testez la communication série avec un moniteur série avant de connecter l’ESP32-C3 pour vérifier que les données sont bien envoyées et reçues.

