Je flashe un ESP Sonoff POW R3 avec ESPHome

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.

Connecteurs du Sonoff POW R3

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.

Module CP2102

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).

Branchement du CP2102

Connexion du Sonoff POW R3

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

Branchement du Sonoff POW R3
Détail des 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 :

  1. Lancer ESPHome Builder.
  2. Cliquer sur New Device pour ajouter un nouvel équipement.
  3. Renseigner les informations de base (nom, type de carte, etc.).
  4. 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é.
  5. Lancer le flashage via l’interface d’ESPHome.
Bouton pour activer le mode programmation

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 :

Intégration dans Home Assistant

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)

 

Je domotise mon portail avec un QS-Zigbee-S10-C03

 

Bouton de contrôle du portail

Mes objectifs

  • Disposer d’un bouton sur le dashboard pour actionner le portail (ordre = On + pause + Off).
  • Obtenir le retour d’état réel du portail (ouvert/fermé).
  • Lier Home Assistant et Alexa pour commander vocalement : « Alexa, ouvre le portail ».

Dans cet article, je détaille comment j’ai domotisé mon portail battant Came à l’aide d’une carte ZL180 et d’un module Zigbee. Je partage mon expérience, les équipements utilisés, le câblage, la configuration dans Home Assistant et l’intégration avec Alexa.

Contexte

Mon portail est un modèle battant de la marque Came, équipé d’une carte de commande ZL180. Voici la notice technique pour référence :

Notice technique de la carte ZL180

Carte de commande ZL180 Came

Présentation de la carte de commande

Toutes les manipulations se font au niveau des borniers de la carte de commande, situés en bas à droite. Voici l’identification des bornes :

Identification des borniers de la carte ZL180

Comment ouvrir ou fermer le portail ?

L’ouverture ou la fermeture du portail s’effectue via un contact sec entre les bornes 2 et 7, selon la séquence suivante :

  • ON sur Borne 2 – Borne 7
  • Pause de 500 ms
  • OFF sur Borne 2 – Borne 7

Cette séquence est documentée à la page 8 de la notice :

Schéma de commande du portail

Comment savoir si le portail est ouvert ou fermé ?

La carte ZL180 ne propose pas de contact sec dédié pour connaître l’état du portail. J’ai donc utilisé un dispositif de signalisation « portail ouvert » qui fonctionne sous un potentiel de 24V entre les bornes 5 et 10, comme indiqué page 6 de la notice :

Dispositif de signalisation portail ouvert

Pour travailler avec des contacts secs (circuit ouvert ou fermé), j’ai transformé cette information 0/24V en on/off à l’aide d’un relais 24V. Voici le schéma du montage :

Schéma de transformation 0/24V en contact sec

J’ai utilisé un relais IEC255, que j’ai placé dans le boîtier platine du Came. Voici le câblage avec son support :

Câblage du relais dans le boîtier Came
Relais IEC255 utilisé pour le montage

Quel équipement domotique choisir ?

J’avais initialement utilisé un ESP WiFi pour ce projet, mais j’ai finalement opté pour une solution Zigbee. Voici les équipements que j’ai considérés :

Finalement, j’ai opté pour un QS-Zigbee-S10-C03 trouvé sur AliExpress pour moins de 10€. Voici ses caractéristiques :

Module QS-Zigbee-S10-C03
Brochage du module QS-Zigbee-S10-C03

Le brochage est simple :

  • Un connecteur N pour le neutre et un connecteur L pour la phase.
  • Entre S1 et S2 : contact sec pour détecter l’état du portail.
  • Entre L1 et L2 : envoi de l’impulsion d’ouverture/fermeture.
Schéma de raccordement du module

Schéma de câblage complet

Schéma de câblage complet

Appairage du module avec Zigbee2MQTT

L’appairage s’effectue facilement à la première mise sous tension. Un bouton d’appairage est présent sur le dessus du module.

Bouton d'appairage du module

Dès que Zigbee2MQTT est en mode appairage, je mets le module sous tension. La lumière verte clignote et l’appareil apparaît dans l’interface :

Appairage réussi dans Zigbee2MQTT

Le module est identifié comme un TS0603. Je le renomme en « Came » pour plus de clarté.

Renommage du module dans Zigbee2MQTT

Je teste les commandes :

Test des commandes dans Zigbee2MQTT

Quand je bascule l’état sur Vrai, le relais se ferme pendant une demi-seconde, puis s’ouvre. Le module envoie donc une impulsion fermée à chaque changement d’état. Une temporisation est prévue entre deux appuis, ce qui est très pratique.

Avec un câble, je court-circuite les entrées S1 et S2 : le capteur binary_sensor.came_garage_door_contact passe à Vrai, ce qui signifie que le portail est fermé.

Grâce à ce module, je récupère deux capteurs :

  • binary_sensor.came_garage_door_contact : état du portail (off = ouvert, on = fermé).
  • switch.came_state : permet d’envoyer la commande toggle, chaque toggle envoie une impulsion.
Capteurs récupérés dans Zigbee2MQTT

Configuration du Cover Portail dans Home Assistant

Pour simplifier la gestion, je crée un capteur unique dans Home Assistant qui permet de :

  • Remonter l’état du portail via binary_sensor.came_garage_door_contact.
  • Gérer la commande d’ouverture/fermeture via switch.came_state.

Un Cover dans Home Assistant est une entité qui représente un élément pouvant être ouvert ou fermé, comme un volet, une porte ou un portail. Cela permet de centraliser les commandes et les états, et facilite l’intégration avec les assistants vocaux.

Voici le code à placer dans le fichier covers.yaml :

platform: template
covers:
  portail:
    device_class: window
    friendly_name: "Portail"
    unique_id: cover.portail
    value_template: "{{ is_state('binary_sensor.came_garage_door_contact', 'off') }}"
    open_cover:
      service: switch.toggle
      target:
        entity_id: switch.came_state
    close_cover:
      service: switch.toggle
      target:
        entity_id: switch.came_state
    icon_template: >-
      {% if is_state('binary_sensor.came_garage_door_contact', 'off') %}
        mdi:gate-open
      {% else %}
        mdi:gate
      {% endif %}

J’ai utilisé device_class: window car c’est la classe la plus proche d’un portail. Les autres classes imposent un code à 4 chiffres pour la commande vocale, ce que je ne souhaite pas.

Création du bouton pour le portail

Bouton de contrôle du portail

Première version, très simple

Première version du bouton
type: custom:button-card
show_name: false
tap_action:
  action: toggle
entity: cover.portail
state:
  - value: close
    color: gray
  - value: open
    color: red

Seconde version, intégrée dans un picture-elements

Seconde version du bouton
Animation du bouton
- type: custom:button-card
  color_type: card
  entity: cover.portail
  show_name: false
  tap_action:
    action: toggle
  state:
    - value: open
      color: "#4f010a"
      icon: mdi:gate-open
      styles:
        card:
          - animation: blink 2s ease infinite
    - operator: default
      color: "#49556c"
      icon: mdi:gate
  styles:
    card:
      - height: 110px
      - width: 110px
  style:
    top: 93%
    left: 5%

Lier Home Assistant et Alexa pour la commande vocale

Pour commander le portail à la voix, il suffit de lier Home Assistant à Alexa. Voici comment procéder :

  1. Aller dans Paramètres > Assistants vocaux.
  2. Cliquer sur x entité(s) exposée(s) en bas à gauche.
  3. Sélectionner cover.portail.
Menu Assistants vocaux
Exposition des entités
Sélection de l'entité cover.portail

C’est tout ! Vous pouvez maintenant dire « Alexa, ouvre le portail ».

Questions, remarques ou compléments ?

Pour échanger sur ce retour d’expérience, utilisez cette discussion sur le forum :

https://forum.hacf.fr/t/retex-je-domotise-mon-portail/

 

Je teste le capteur ouverture Porte/Fenêtre Sonoff SNZB-04P

Test et avis : Capteur d’ouverture Zigbee Sonoff SNZB-04P

Voici mon retour d’expérience complet sur le capteur d’ouverture Zigbee Sonoff SNZB-04P. Ce test couvre le déballage, l’installation, l’intégration avec Zigbee2MQTT et Home Assistant, ainsi que des astuces pour optimiser son utilisation. Un équipement simple, efficace et économique pour surveiller vos portes, fenêtres ou volets.

🔍 Déballage et première impression

Le capteur est livré dans un emballage orange typique de la gamme Zigbee de Sonoff. Le modèle SNZB-04P est clairement indiqué sur la boîte. Voici ce que j’ai découvert à l’ouverture :

Points forts dès la première prise en main :

  • Un gros bouton sur le dessus, bien plus pratique que les petits trous nécessitant un trombone ou une pique.
  • Un bouton anti-arrachement pour éviter les manipulations indésirables.
  • Une pile CR2477 3V déjà intégrée, avec une languette à retirer pour activer le capteur.
  • Des adhésifs double-face pré-collés pour une installation immédiate.
  • Une qualité de fabrication soignée, typique de la marque Sonoff.
Emballage du capteur Sonoff SNZB-04P

Voici quelques détails en images :

Bouton anti-arrachement du capteur Sonoff SNZB-04P
Pile intégrée avec languette de sécurité
Adhésifs double-face pré-collés
Pile CR2477 3V du capteur Sonoff SNZB-04P

La pile fournie est une CR2477, connue pour sa longue durée de vie. Seul le temps nous dira combien de temps elle tiendra, mais c’est un bon point de départ.

🛒 Où acheter ce capteur Zigbee ?

Voici quelques revendeurs fiables où vous pouvez vous procurer ce capteur :

  • Domadoo – 14,99 € (modèle testé, livré de France, en promo à 13,49 € au moment de la rédaction).
  • AliExpress – 14,49 € (attention aux contrefaçons, lisez bien les avis des vendeurs).
  • Amazon – 19,06 € (en promo à 15,58 € au moment de la rédaction).

🏡 Installation du capteur sur un volet

Pour mon test, j’ai installé le capteur sur un volet. J’avais déjà un support, donc j’ai placé l’aimant en dessous plutôt que devant. Voici quelques photos de l’installation :

Installation du capteur sur le volet
Positionnement de l'aimant
Capteur et aimant en place

Conseils pour une installation réussie

Pour garantir une détection fiable et éviter les fausses alertes :

  • Placez le capteur sur la partie fixe (châssis) et l’aimant sur la partie mobile (porte ou fenêtre).
  • Respectez la distance maximale de 1 cm entre le capteur et l’aimant.
  • Nettoyez bien la surface avant de coller les adhésifs double-face pour une fixation durable.
  • Testez plusieurs ouvertures/fermetures avant de finaliser l’installation.

Astuce : Évitez les zones métalliques qui pourraient perturber le signal Zigbee.

🔗 Intégration dans Zigbee2MQTT

Pour intégrer le capteur, lancez Zigbee2MQTT en mode appairage, puis retirez la languette de la pile. Si la LED rouge ne clignote pas, maintenez le bouton du dessus enfoncé pendant quelques secondes pour forcer l’appairage.

Le capteur est reconnu instantanément. Voici ce que j’ai observé :

  • La détection d’ouverture/fermeture fonctionne sans latence.
  • Un détecteur d’arrachement est présent et fonctionnel (état « Altéré » ou « Normal »).
  • La batterie n’est pas détectée immédiatement (c’est normal, il faut souvent attendre 24h).
Intégration du capteur dans Zigbee2MQTT
Détection d'arrachement dans Zigbee2MQTT

Pensez à renommer le capteur dans votre interface pour le retrouver facilement.

🏠 Intégration dans Home Assistant

Le capteur apparaît automatiquement dans Home Assistant. Voici ce qui est détecté :

  • L’état ouvert/fermé s’affiche clairement.
  • La batterie est remontée (à surveiller, certains modèles surévaluent ce niveau).
  • La détection de manipulation (anti-sabotage) est fonctionnelle.
Affichage du capteur dans Home Assistant

Dans mon cas, la détection d’arrachement n’était pas activée à cause de l’épaisseur du double-face. Je l’ai donc désactivée dans Home Assistant.

⚙️ Exemples d’automatisations utiles

Avec ce capteur, vous pouvez facilement créer des automatisations dans Home Assistant :

  • Alerte porte ouverte : Recevez une notification si une porte reste ouverte plus de 10 minutes.
  • Déclenchement d’alarme : Activez une sirène si le capteur détecte une ouverture alors que l’alarme est activée.
  • Statistiques : Suivez le nombre d’ouvertures par jour, semaine ou mois.

Toutes ces actions sont configurables sans aucune ligne de code.

💡 Astuces et dépannage

Quelques conseils pour résoudre les problèmes courants :

  • Batterie toujours à 100 % ? C’est normal sur certains modèles. Laissez passer quelques jours avant de vérifier à nouveau.
  • Appairage difficile ? Retirez la pile, attendez 30 secondes, puis réessayez.
  • Détection lente ou aléatoire ? Vérifiez la distance entre le capteur et l’aimant (moins de 1 cm) et évitez les interférences métalliques.

💬 Mon avis après la mise en service

Pour moins de 15 €, ce capteur Sonoff remplit parfaitement son rôle : détection fiable, intégration facile et pile incluse. La finition est soignée et la fonction « détection de manipulation » est un vrai plus. Je recommande de renommer chaque capteur pour une gestion plus simple, surtout si vous en installez plusieurs.

📑 Archive : Mode d’emploi

Voici un manuel d’utilisation plus complet que celui fourni avec le capteur.

📅 Installation et suivi des piles

Un capteur a été installé sur le volet de la cuisine le 31/08/2025 avec la pile d’origine. Aucun changement de pile n’a été nécessaire pour le moment.

✅ Conclusion

Le Sonoff SNZB-04P est un excellent choix pour surveiller vos ouvertures à moindre coût. Installation rapide, détection fiable et intégration parfaite avec Zigbee2MQTT et Home Assistant. Le suivi de la batterie reste à confirmer sur le long terme, mais pour le prix, c’est un investissement judicieux pour équiper plusieurs accès sans se ruiner.

 

Suivre un appareil électroménager (Lave-vaisselle, Lave-linge, Sèche-linge…)

Suivi de la consommation et des cycles du lave-vaisselle

Pour suivre précisément l’état, la durée, la consommation et le coût des cycles de mon lave-vaisselle, j’ai mis en place une série de capteurs et d’automatisations dans Home Assistant. Voici comment j’ai procédé, étape par étape.

1. Capteur d’état du lave-vaisselle

J’ai créé un capteur nommé sensor.etat_lave_vaisselle qui me permet de connaître l’état actuel de l’appareil : Éteint, Veille ou En marche. Cet état est déterminé en fonction de la puissance consommée, mesurée par sensor.lave_vaisselle_power, qui provient d’une prise connectée.

De manière empirique, j’ai défini les seuils suivants :

  • Éteint : moins de 1 W
  • Veille : entre 1 W et 20 W
  • En marche : plus de 20 W
Lave-vaisselle éteint

Éteint

Lave-vaisselle en veille

Veille

Lave-vaisselle en marche

En marche

Voici le template que j’ai ajouté dans mon fichier templates.yaml pour créer ce capteur :

- name: "État Lave-vaisselle"
  unique_id: sensor.etat_lave_vaisselle
  state: >
    {% set power = states('sensor.lave_vaisselle_power') | float(0) %}
    {% if power < 1 %}
      Éteint
    {% elif power < 20 %}
      Veille
    {% else %}
      En marche
    {% endif %}
  icon: >
    {% if is_state('sensor.etat_lave_vaisselle', 'Éteint') %}
      mdi:power-plug-off
    {% elif is_state('sensor.etat_lave_vaisselle', 'Veille') %}
      mdi:sleep
    {% elif is_state('sensor.etat_lave_vaisselle', 'En marche') %}
      mdi:dishwasher
    {% else %}
      mdi:help-circle
    {% endif %}

2. Capteurs de début et fin de cycle

Pour enregistrer les horaires de début et de fin du dernier cycle, j’ai créé deux capteurs de type input_datetime via Paramètres/Appareils et services/Entrées :

  • input_datetime.dernier_cycle_lave_vaisselle_debut
  • input_datetime.dernier_cycle_lave_vaisselle_fin

Ces capteurs sont configurés au format Date et heure.

3. Capteurs de consommation au début et à la fin du cycle

Pour calculer la consommation d’énergie pendant un cycle, j’ai créé deux capteurs de type input_number :

  • input_number.dernier_cycle_lave_vaisselle_conso_au_debut : enregistre la consommation en kWh au début du cycle.
  • input_number.dernier_cycle_lave_vaisselle_conso_a_la_fin : enregistre la consommation en kWh à la fin du cycle.

J’ai mis 1000000 en valeur maximale (on verra bien).

4. Capteur de durée du cycle

Ce capteur calcule la durée du cycle en heures et minutes, en se basant sur les horaires de début et de fin enregistrés. Voici le template utilisé dans templates.yaml :

- name: "Durée Cycle Lave-Vaisselle"
  unique_id: sensor.duree_cycle_lave_vaisselle
  state: >
    {% set start = states('input_datetime.dernier_cycle_lave_vaisselle_debut') %}
    {% set end = states('input_datetime.dernier_cycle_lave_vaisselle_fin') %}

    {% if start not in ['unknown', 'unavailable', 'none', 'None']
          and end not in ['unknown', 'unavailable', 'none', 'None'] %}
      {% set start_t = as_timestamp(strptime(start, '%Y-%m-%d %H:%M:%S')) %}
      {% set end_t = as_timestamp(strptime(end, '%Y-%m-%d %H:%M:%S')) %}

      {% if end_t < start_t %}
        Cycle en cours
      {% else %}
        {% set total_seconds = end_t - start_t %}
        {% set hours = (total_seconds // 3600) | int %}
        {% set minutes = ((total_seconds % 3600) // 60) | int %}
        {{ "%dh%02d" | format(hours, minutes) }}
      {% endif %}
    {% endif %}
  icon: mdi:clock-outline

5. Capteur de consommation du cycle

Ce capteur calcule la consommation totale du cycle en kWh, en soustrayant la consommation au début de celle à la fin. Il prend également en compte les cas où le compteur aurait été réinitialisé.

- name: "Consommation Cycle Lave-Vaisselle"
  unique_id: sensor.consommation_cycle_lave_vaisselle
  unit_of_measurement: "kWh"
  device_class: energy
  state_class: measurement
  state: >
    {% set debut = states('input_number.dernier_cycle_lave_vaisselle_conso_au_debut') | float(0) %}
    {% set fin = states('input_number.dernier_cycle_lave_vaisselle_conso_a_la_fin') | float(0) %}
    {% set consommation = fin - debut %}

    {% if consommation < 0 %}
      0
    {% else %}
      {{ consommation | round(3) }}
    {% endif %}
  icon: mdi:lightning-bolt-circle

6. Capteur de coût du cycle

Pour calculer le coût du cycle, j’utilise un capteur qui multiplie la consommation en kWh par le prix du kWh, défini dans input_number.prix_manuel_du_kwh. Voici le template :

- name: "Coût Cycle Lave-Vaisselle"
  unique_id: sensor.cout_cycle_lave_vaisselle
  unit_of_measurement: "€"
  device_class: monetary
  state: >
    {{ states('sensor.consommation_cycle_lave_vaisselle') | float(0) * states('input_number.prix_manuel_du_kwh') | float(0) | round(4) }}
  icon: mdi:currency-eur

7. Capteur de cycle en cours

Pour éviter les erreurs de détection, j’ai ajouté un capteur de type input_boolean :

  • input_boolean.cycle_lave_vaisselle_en_cours : indique si un cycle est en cours.

8. Automatisations pour le suivi des cycles

Enfin, j’ai créé trois automatisations pour :

  • Détecter le début d’un cycle et enregistrer la consommation et l’heure de début.
  • Détecter la fin d’un cycle et enregistrer la consommation et l’heure de fin.
  • Réinitialiser le suivi si le cycle dépasse 6 heures (sécurité).
alias: Cycle lave-vaisselle - Début
description: ""
triggers:
  - entity_id:
      - sensor.etat_lave_vaisselle
    to: En marche
    trigger: state
    from: Éteint
    for:
      hours: 0
      minutes: 0
      seconds: 20
conditions:
  - condition: state
    entity_id: input_boolean.cycle_lave_vaisselle_en_cours
    state: "off"
    alias: Si on n'a pas déjà un cycle en cours
actions:
  - action: input_boolean.turn_on
    target:
      entity_id: input_boolean.cycle_lave_vaisselle_en_cours
    data: {}
    alias: Cycle en cours passe à ON
  - action: input_number.set_value
    data:
      entity_id: input_number.dernier_cycle_lave_vaisselle_conso_au_debut
      value: "{{ states('sensor.lave_vaisselle_energy') | float }}"
    alias: Sauvegarder la valeur de la conso kWh au début
  - action: input_datetime.set_datetime
    data:
      entity_id: input_datetime.dernier_cycle_lave_vaisselle_debut
      datetime: "{{ now().strftime('%Y-%m-%d %H:%M:%S') }}"
    alias: Sauvegarder heure et date du début de cycle


alias: Cycle lave-vaisselle - Fin
description: ""
triggers:
  - trigger: numeric_state
    entity_id:
      - sensor.lave_vaisselle_power
    for:
      hours: 0
      minutes: 5
      seconds: 0
    below: 20
conditions:
  - condition: state
    entity_id: input_boolean.cycle_lave_vaisselle_en_cours
    state: "on"
actions:
  - action: input_number.set_value
    data:
      entity_id: input_number.dernier_cycle_lave_vaisselle_conso_a_la_fin
      value: "{{ states('sensor.lave_vaisselle_energy') | float }}"
    alias: Sauvegarder la conso à la fin
  - action: input_datetime.set_datetime
    data:
      entity_id: input_datetime.dernier_cycle_lave_vaisselle_fin
      datetime: "{{ now().strftime('%Y-%m-%d %H:%M:%S') }}"
    alias: Sauvegarde Heure et Date de la fin de cycle
  - action: input_boolean.turn_off
    target:
      entity_id: input_boolean.cycle_lave_vaisselle_en_cours
    data: {}
    alias: Désactiver Cycle en cours

alias: Cycle lave-vaisselle - Cycle trop long
description: "Réinitialise le flag si le cycle dépasse 6h"
trigger:
  - platform: state
    entity_id: input_boolean.cycle_lave_vaisselle_en_cours
    to: "on"
    for: "06:00:00"
action:
  - service: input_boolean.turn_off
    target:
      entity_id: input_boolean.cycle_lave_vaisselle_en_cours

Création d’une vue dédiée pour l’électroménager

Pour visualiser clairement l’état et les données de mon lave-vaisselle, j’ai créé une carte personnalisée dans Home Assistant. Cette carte me permet de suivre en temps réel la puissance consommée, l’état de l’appareil, ainsi que les informations sur le dernier cycle effectué. Voici le résultat final et une explication détaillée du code utilisé.

Carte de suivi du lave-vaisselle dans Home Assistant

Explication du code de la carte

Le code ci-dessous définit une vue organisée en sections pour afficher les informations relatives à mon lave-vaisselle. Voici une description de chaque élément :

type: sections
max_columns: 4
title: Electro
path: electro
icon: mdi:washing-machine
sections:
  - type: grid
    cards:
      - type: heading
        heading: Lave-vaisselle
        heading_style: title
        icon: mdi:dishwasher

Explication : Cette section définit une vue nommée « Electro » avec une icône de machine à laver. Le titre principal de la section est « Lave-vaisselle », affiché avec une icône de lave-vaisselle. La structure est de type grid, ce qui permet d’organiser les cartes dans une grille flexible.

      - type: custom:button-card
        entity: sensor.etat_lave_vaisselle
        name: Lave-vaisselle
        show_state: true
        show_icon: true
        color_type: icon
        styles:
          card:
            - height: 183px
        state:
          - value: En marche
            color: "#1e90ff"
            styles:
              icon:
                - animation: blink 2s ease infinite
          - operator: default
            color: "#49556c"
        grid_options:
          columns: 6
          rows: 3

Explication : Cette carte utilise le composant custom:button-card pour afficher l’état actuel du lave-vaisselle (sensor.etat_lave_vaisselle). Elle montre à la fois l’icône et l’état. Si le lave-vaisselle est « En marche », l’icône clignote en bleu (#1e90ff). Sinon, elle reste grise (#49556c). La carte occupe 6 colonnes et 3 lignes dans la grille.

      - type: gauge
        entity: sensor.lave_vaisselle_power
        min: 0
        needle: true
        severity:
          green: 0
          yellow: 60
          red: 1700
        grid_options:
          columns: 6
          rows: 3
        name: Puissance
        unit: W
        max: 1800

Explication : Cette carte est un indicateur de type gauge (jauge) qui affiche la puissance actuelle consommée par le lave-vaisselle (sensor.lave_vaisselle_power). La jauge est graduée de 0 à 1800 W, avec des zones de couleur pour indiquer la sévérité : vert pour une faible consommation, jaune pour une consommation modérée, et rouge pour une consommation élevée. La jauge occupe également 6 colonnes et 3 lignes dans la grille.

      - type: custom:mushroom-entity-card
        entity: input_datetime.dernier_cycle_lave_vaisselle_debut
        icon_color: light-green
        name: Début
        grid_options:
          columns: 4
          rows: 1
        layout: vertical

Explication : Cette carte utilise le composant custom:mushroom-entity-card pour afficher l’heure de début du dernier cycle (input_datetime.dernier_cycle_lave_vaisselle_debut). L’icône est en vert clair et la carte est organisée verticalement. Elle occupe 4 colonnes et 1 ligne dans la grille.

      - type: custom:mushroom-entity-card
        entity: input_datetime.dernier_cycle_lave_vaisselle_fin
        icon_color: red
        name: "Fin"
        grid_options:
          columns: 4
          rows: 1
        layout: vertical

Explication : Cette carte affiche l’heure de fin du dernier cycle (input_datetime.dernier_cycle_lave_vaisselle_fin). L’icône est en rouge pour une meilleure visibilité. Elle occupe 4 colonnes et 1 ligne dans la grille.

      - type: custom:mushroom-entity-card
        entity: sensor.duree_cycle_lave_vaisselle
        icon_color: orange
        name: Durée
        grid_options:
          columns: 4
          rows: 1
        layout: vertical

Explication : Cette carte affiche la durée du dernier cycle (sensor.duree_cycle_lave_vaisselle). L’icône est en orange et la carte est organisée verticalement. Elle occupe 4 colonnes et 1 ligne dans la grille.

      - type: custom:mushroom-entity-card
        icon_color: light-green
        name: Conso dernier cycle
        entity: sensor.consommation_cycle_lave_vaisselle

Explication : Cette carte affiche la consommation d’énergie du dernier cycle (sensor.consommation_cycle_lave_vaisselle). L’icône est en vert clair. Elle utilise les paramètres par défaut pour la taille dans la grille.

      - type: custom:mushroom-entity-card
        icon_color: light-green
        name: Coût dernier cycle
        entity: sensor.cout_cycle_lave_vaisselle

Explication : Cette carte affiche le coût du dernier cycle (sensor.cout_cycle_lave_vaisselle). L’icône est également en vert clair. Elle utilise les paramètres par défaut pour la taille dans la grille.

      - type: custom:apexcharts-card
        header:
          show: true
          title: Puissance (7 derniers jours)
          show_states: true
          colorize_states: true
        graph_span: 7d
        series:
          - entity: sensor.lave_vaisselle_power
            name: " "
        apex_config:
          chart:
            height: 450
          stroke:
            curve: stepline

Explication : Cette carte utilise le composant custom:apexcharts-card pour afficher un graphique de la puissance consommée sur les 7 derniers jours (sensor.lave_vaisselle_power). Le graphique est colorisé et affiche les états. La hauteur du graphique est définie à 450 pixels pour une meilleure lisibilité.

Avantages de cette vue

  • Centralisation des informations : Toutes les données relatives au lave-vaisselle sont regroupées en un seul endroit, ce qui facilite le suivi.
  • Visualisation claire : Les cartes personnalisées et les couleurs permettent de distinguer rapidement l’état et les données importantes.
  • Suivi en temps réel : La puissance consommée et l’état de l’appareil sont mis à jour en temps réel.
  • Historique accessible : Le graphique permet de visualiser l’évolution de la consommation sur une semaine.

Cette vue est idéale pour surveiller efficacement la consommation et l’utilisation de mon lave-vaisselle, tout en gardant un œil sur les coûts énergétiques.

Je teste le capteur de température Humidité Zigbee Moes KCTW1Z-02

🔍 Je vérifie le modèle reçu

La fiche technique indique le modèle ZSS-KB-TH-LF-C-MS. Sur le carton, c’est écrit en minuscule et presque illisible, mais à l’arrière du capteur, le modèle est parfaitement visible :

Modèle inscrit au dos du capteur

Bonne surprise : la pile est incluse. Je peux donc tester le capteur immédiatement, sans devoir acheter un modèle spécifique. La pile fournie est neuve, protégée par une languette.

Capteur Zigbee et sa pile

Face avant du capteur Zigbee

L’installation est très simple : le capteur tient debout, se pose sur un meuble ou se colle au mur avec le double-face fourni (ou non selon les lots). Je n’ai rien à percer : c’est propre et réversible.

Lire la suite

Je teste le capteur ouverture Porte/Fenêtre Zigbee Moes ZSS-GWM-C

🔍 Je vérifie le modèle reçu

Sur le carton, impossible de lire la référence – ils ont osé du gris sur dégradé de gris ! C’est illisible, donc je conseille de bien vérifier le modèle sur le site du vendeur avant achat.

Vue du carton capteur ouverture Moes

Heureusement, à l’arrière du boîtier, la référence est bien lisible. Vérifier les infos sur le produit reçu est essentiel pour s’assurer qu’il correspond à la commande.

Modèle lisible au dos

Bonne nouvelle : la pile est incluse, ce qui permet de tester le capteur tout de suite sans achat supplémentaire. La pile est neuve, protégée par une languette.

Capteur ouverture Zigbee et pile Lire la suite