
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
Éteint |
Veille |
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é.

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.
