Je souhaitais obtenir l’information Énergie (kWh) sur mon Sonoff POW R3, initialement flashé avec ESP Easy. En le reflashant avec ESPHome, j’ai pu simplifier son intégration dans Home Assistant et accéder à toutes les données énergétiques. Voici comment j’ai procédé, étape par étape.
Vérification des connecteurs
Lors d’un précédent retour d’expérience, j’avais détaillé la procédure de flashage de cet équipement avec ESP Easy :
À cette occasion, j’avais remarqué que les concepteurs du Sonoff POW R3 avaient déjà soudé les 4 connecteurs nécessaires (3.3V, Rx, Tx, GND), ce qui facilite grandement le processus de flashage.

Ces connecteurs permettent de brancher un adaptateur USB-série pour flasher le firmware.
Connexion du CP2102
Contrairement à ce qui est souvent documenté, j’ai utilisé un CP2102 plutôt qu’un FTDI232. Ce module se branche directement en USB et est très simple à utiliser.

Voici comment j’ai effectué les branchements :
- Fil rouge → 3.3V
- Fil noir → GND
- Fil blanc → TXD
- Fil marron → RXD
Remarque : Si la communication ne s’établit pas, il peut être nécessaire d’inverser les fils blanc et marron (Rx et Tx).

Connexion du Sonoff POW R3
J’ai ensuite connecté les fils du CP2102 aux connecteurs du Sonoff POW R3 :


- Fil rouge → 3.3V
- Fil noir → GND
- Fil blanc → ERX
- Fil marron → ETX
Flashage avec ESPHome Builder
Pour flasher le Sonoff POW R3 avec ESPHome, j’ai suivi ces étapes :
- Lancer ESPHome Builder.
- Cliquer sur New Device pour ajouter un nouvel équipement.
- Renseigner les informations de base (nom, type de carte, etc.).
- Brancher le CP2102 en USB tout en maintenant le bouton du Sonoff POW R3 enfoncé (voir image ci-dessous). Les LED doivent s’éteindre, ce qui indique que le mode programmation est activé.
- Lancer le flashage via l’interface d’ESPHome.

Configuration des capteurs dans ESPHome
La configuration du Sonoff POW R3 dans ESPHome repose sur un fichier YAML. Attention, il existe plusieurs modèles de Sonoff POW R3 (Elite 16A, Elite 20A, Origin 16A, etc.), et leur configuration peut varier. J’ai utilisé comme base la documentation officielle pour le Sonoff POW R2 et l’ai adaptée.
Voici le code YAML que j’ai utilisé pour mon Sonoff POW R3 :
substitutions:
update_interval: 10s
name: "esphome-chauffeau"
esphome:
name: "${name}"
friendly_name: ESPHome Chauffeau
esp8266:
board: esp01_1m
logger:
baud_rate: 0
api:
ota:
- platform: esphome
password: "b91495d666ba78dd3d0120f6a364e8b1" # Remplacez par votre mot de passe OTA
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
ap:
ssid: "Esphome-Chauffeau"
password: "coucoucou" # Remplacez par un mot de passe sécurisé
captive_portal:
uart:
rx_pin: RX
baud_rate: 4800
parity: EVEN
binary_sensor:
- platform: gpio
pin:
number: GPIO0
mode: INPUT_PULLUP
inverted: True
name: "Bouton"
on_press:
- switch.toggle: relay_template
sensor:
- platform: cse7766
current:
name: "Courant"
filters:
- multiply: 0.98 # Ajuste le courant pour réduire l'écart de 2%
- sliding_window_moving_average:
window_size: 80
send_every: 32
voltage:
name: "Tension"
filters:
- sliding_window_moving_average:
window_size: 80
send_every: 32
power:
name: "Puissance"
filters:
- sliding_window_moving_average:
window_size: 80
send_every: 32
energy:
name: "Energy Wh"
id: energy_wh
filters:
- throttle: ${update_interval}
# Capteur virtuel pour convertir les Wh en kWh
- platform: template
name: "Energy kWh"
unit_of_measurement: "kWh"
lambda: |-
return id(energy_wh).state / 1000;
update_interval: 60s
accuracy_decimals: 3
switch:
- platform: template
name: "Jus"
optimistic: true
id: relay_template
turn_on_action:
- switch.turn_on: relay
- light.turn_on: pow_blue_led
turn_off_action:
- switch.turn_off: relay
- light.turn_off: pow_blue_led
- platform: gpio
id: relay
pin: GPIO12
inverted: true
light:
- platform: status_led
name: "LED bleue"
id: pow_blue_led
pin:
number: GPIO13
inverted: True
Explications du code :
- substitutions : Définit des variables réutilisables, comme l’intervalle de mise à jour et le nom de l’équipement.
- esphome : Configure le nom et le nom convivial de l’équipement.
- esp8266 : Spécifie le type de carte utilisée (ESP01 1M).
- logger : Désactive les logs série pour éviter les conflits avec la communication UART.
- wifi : Configure la connexion Wi-Fi et un point d’accès de secours.
- uart : Définit les paramètres de communication série pour le capteur CSE7766 (mesure de courant, tension, puissance, énergie).
- binary_sensor : Configure le bouton physique du Sonoff pour basculer l’état du relais.
- sensor : Définit les capteurs de courant, tension, puissance et énergie. Un capteur virtuel convertit les Wh en kWh.
- switch : Gère le relais et la LED bleue pour indiquer l’état (allumé/éteint).
- light : Contrôle la LED bleue du Sonoff.
Remarque : Les mots de passe et identifiants Wi-Fi doivent être remplacés par vos propres valeurs.
Résultat dans Home Assistant
Une fois le flashage terminé et l’équipement redémarré, il apparaît automatiquement dans Home Assistant avec tous les capteurs configurés :

Vous pouvez maintenant surveiller en temps réel la consommation électrique, la tension, la puissance et l’énergie (en kWh) directement depuis votre tableau de bord Home Assistant.
Pages de références
(attention des bêtises dans certains forums)
- https://community.home-assistant.io/t/flashing-sonoff-pow-r3-to-esphome/475802/4
- https://devices.esphome.io/devices/Sonoff-POW-R2
