Votre machine à laver n’est pas connectée ? Pas de panique ! Avec une simple prise connectée à 15€ et Home Assistant, vous pouvez transformer n’importe quelle machine en appareil intelligent. Ce guide complet vous explique comment créer un système de monitoring avancé pour suivre vos cycles de lavage, recevoir des notifications et optimiser votre consommation.
Pourquoi domotiser sa machine à laver ?
Les avantages sont nombreux :
- Notifications intelligentes : Plus jamais de linge oublié dans la machine
- Suivi de consommation : Connaître précisément le coût de chaque cycle
- Historique des cycles : Analyser les performances et l’usage
Matériel nécessaire
La prise connectée : le cœur du système
Pour ce projet, vous aurez besoin d’une prise connectée avec mesure de consommation. Voici les critères essentiels :
- Protocole : Zigbee ou Wi-Fi (Zigbee recommandé pour la fiabilité)
- Mesure de puissance : Précision au Watt près indispensable
- Charge maximale : Minimum 16A (3600W) pour une machine à laver
- Compatibilité : Home Assistant native ou via intégrations
Prises recommandées :
- Nous Zigbee (~15€) : Très précise, excellente fiabilité
Voir le produit sur Amazon
Voir le produit sur Domadoo
- Aqara Smart Plug (~20€) : Bonne précision, intégration parfaite
Voir le produit sur Amazon
Voir le produit sur Domadoo
Prérequis logiciels
- Home Assistant installé et configuré
- Zigbee2MQTT ou ZHA pour les prises Zigbee
- Application Home Assistant Companion sur votre smartphone
- Accès au File Editor (module complémentaire)
Installation et configuration de la prise
Étape 1 : Installation physique
- Débranchez votre machine à laver
- Branchez la prise connectée sur la prise murale
- Connectez la machine à la prise intelligente
- Vérifiez que la puissance maximale est respectée
⚠️ Sécurité : Assurez-vous que la prise supporte la puissance de votre machine (généralement 2000-3000W).
Étape 2 : Intégration dans Home Assistant
Pour Zigbee2MQTT :
# La prise apparaît automatiquement avec ses entités :
# - sensor.machine_a_laver_power (puissance instantanée)
# - sensor.machine_a_laver_energy (énergie cumulée)
# - switch.machine_a_laver (contrôle marche/arrêt)
Pour les prises Wi-Fi :
- Suivez la procédure d’appairage du fabricant
- Ajoutez l’intégration correspondante dans Home Assistant
- Vérifiez que les capteurs de puissance sont disponibles
Phase d’apprentissage : comprendre votre machine
Avant de créer les automatisations, il est crucial d’analyser le comportement de votre machine.
Lancement du cycle d’apprentissage
- Lancez un cycle complet avec la prise connectée
- Surveillez la consommation dans Home Assistant
- Notez les seuils clés :
- Consommation de veille (généralement 1-3W)
- Pics de consommation (chauffage, essorage)
- Durée totale du cycle
Exemple d’analyse typique
# Profil de consommation observé :
# Veille : 2W
# Démarrage : 5-10W (remplissage)
# Chauffage : 2000-2500W (15-20min)
# Lavage : 50-200W (cycles variables)
# Essorage : 300-800W (pics courts)
# Fin de cycle : retour à 2W
Points critiques à identifier :
- Seuil de démarrage : Puissance au-dessus de laquelle la machine démarre
- Seuil d’arrêt : Puissance sous laquelle on considère la machine terminée
- Durées de confirmation : Temps pour éviter les faux positifs
Configuration des entités Helper
Dans Paramètres → Appareils et services → Helpers, créez :
Input Select : État de la machine
Nom : "État Lave Linge"
Options : Arrêté, En marche, Terminé
Icône : mdi:washing-machine
Input DateTime : Horodatage des cycles
# Début de cycle
Nom : "Début Machine"
Format : Date et heure
Icône : mdi:washing-machine-alert
# Fin de cycle
Nom : "Fin Machine"
Format : Date et heure
Icône : mdi:washing-machine-off
Input Number : Stockage des valeurs
# Consommation de début
Nom : "Puissance Machine Début"
Min : 0, Max : 999999, Pas : 0.1
Unité : kWh
# Temps dernière machine
Nom : "Temps Dernière Machine"
Format : Date et heure
Création des capteurs template
Ajoutez dans configuration.yaml
ou templates.yaml
:
Capteur binaire : État de fonctionnement
template:
- binary_sensor:
- name: "Lave Linge En Marche"
device_class: running
delay_on:
minutes: 1
delay_off:
minutes: 5
state: >
{{ states('sensor.machine_a_laver_power')|float(0) > 5 }}
icon: mdi:washing-machine
Capteur : Durée du dernier cycle
- sensor:
- name: "Durée Dernière Machine"
state: >
{% set debut = states('input_datetime.debut_machine') %}
{% set fin = states('input_datetime.fin_machine') %}
{% if debut != 'unknown' and fin != 'unknown' %}
{% set debut_ts = as_timestamp(debut) %}
{% set fin_ts = as_timestamp(fin) %}
{% if fin_ts > debut_ts %}
{% set duree = (fin_ts - debut_ts) / 60 %}
{{ duree | round(0) }} min
{% else %}
En cours
{% endif %}
{% else %}
Inconnu
{% endif %}
icon: mdi:timer
Capteur : Consommation du cycle
- name: "Consommation Dernier Cycle"
state: >
{% set debut = states('input_number.puissance_machine_debut') | float(0) %}
{% set fin = states('sensor.machine_a_laver_energy') | float(0) %}
{% set cycle = fin - debut %}
{{ (cycle * 1000) | round(0) }} Wh
unit_of_measurement: "Wh"
icon: mdi:flash
Les automatisations intelligentes
Automatisation 1 : Détection du démarrage
alias: "Machine à Laver - Démarrage"
description: "Détecte le début d'un cycle de lavage"
mode: single
trigger:
- platform: numeric_state
entity_id: sensor.machine_a_laver_power
above: 10 # Ajustez selon votre machine
for:
minutes: 2
condition:
- condition: state
entity_id: input_select.etat_lave_linge
state: "Arrêté"
action:
# Mise à jour de l'état
- service: input_select.select_option
target:
entity_id: input_select.etat_lave_linge
data:
option: "En marche"
# Enregistrement heure de début
- service: input_datetime.set_datetime
target:
entity_id: input_datetime.debut_machine
data:
datetime: "{{ now() }}"
# Sauvegarde consommation de début
- service: input_number.set_value
target:
entity_id: input_number.puissance_machine_debut
data:
value: "{{ states('sensor.machine_a_laver_energy') | float }}"
# Notification optionnelle
- service: notify.mobile_app_votre_telephone
data:
title: "🧺 Lave-linge"
message: "Cycle démarré à {{ now().strftime('%H:%M') }}"
data:
tag: "lave_linge"
Automatisation 2 : Détection de fin de cycle
alias: "Machine à Laver - Fin de cycle"
description: "Détecte la fin du cycle et envoie les notifications"
mode: restart
trigger:
- platform: numeric_state
entity_id: sensor.machine_a_laver_power
below: 3 # Ajustez selon votre machine
for:
minutes: 10 # Temps de confirmation
condition:
- condition: state
entity_id: input_select.etat_lave_linge
state: "En marche"
action:
# Mise à jour de l'état
- service: input_select.select_option
target:
entity_id: input_select.etat_lave_linge
data:
option: "Terminé"
# Enregistrement heure de fin
- service: input_datetime.set_datetime
target:
entity_id: input_datetime.fin_machine
data:
datetime: "{{ now() }}"
# Calcul de la durée
- variables:
debut_cycle: "{{ states('input_datetime.debut_machine') }}"
duree_minutes: >
{{ ((now() - strptime(debut_cycle, '%Y-%m-%d %H:%M:%S')).total_seconds() / 60) | round }}
consommation: >
{{ (states('sensor.machine_a_laver_energy') | float -
states('input_number.puissance_machine_debut') | float) * 1000 }}
# Notification principale
- service: notify.mobile_app_votre_telephone
data:
title: "✅ Lave-linge terminé !"
message: >
Cycle terminé en {{ duree_minutes }} minutes
Consommation : {{ consommation | round }} Wh
data:
tag: "lave_linge"
actions:
- action: "CONFIRM_LINGE_RETIRE"
title: "Linge retiré"
- action: "RAPPEL_10MIN"
title: "Rappel dans 10min"
# Programmation du rappel automatique
- delay: "00:30:00"
- condition: state
entity_id: input_select.etat_lave_linge
state: "Terminé"
- service: notify.mobile_app_votre_telephone
data:
title: "🔔 Rappel lave-linge"
message: "N'oubliez pas de vider la machine !"
data:
tag: "lave_linge_rappel"
Automatisation 3 : Gestion des actions
alias: "Machine à Laver - Actions notifications"
description: "Gestion des réponses aux notifications"
mode: single
trigger:
- platform: event
event_type: mobile_app_notification_action
event_data:
action: "CONFIRM_LINGE_RETIRE"
- platform: event
event_type: mobile_app_notification_action
event_data:
action: "RAPPEL_10MIN"
action:
- choose:
# Confirmation linge retiré
- conditions:
- condition: template
value_template: "{{ trigger.event.data.action == 'CONFIRM_LINGE_RETIRE' }}"
sequence:
- service: input_select.select_option
target:
entity_id: input_select.etat_lave_linge
data:
option: "Arrêté"
- service: notify.mobile_app_votre_telephone
data:
title: "👍 Confirmé"
message: "Linge retiré, cycle terminé"
# Programmation rappel
- conditions:
- condition: template
value_template: "{{ trigger.event.data.action == 'RAPPEL_10MIN' }}"
sequence:
- delay: "00:10:00"
- condition: state
entity_id: input_select.etat_lave_linge
state: "Terminé"
- service: notify.mobile_app_votre_telephone
data:
title: "🔔 Rappel programmé"
message: "Pensez à vider la machine !"
Création du dashboard avancé
Configuration des cartes
# Dans votre dashboard, ajoutez :
type: vertical-stack
cards:
# Statut principal
- type: entities
title: "Machine à Laver"
entities:
- entity: input_select.etat_lave_linge
name: "État"
- entity: sensor.machine_a_laver_power
name: "Puissance actuelle"
- entity: binary_sensor.lave_linge_en_marche
name: "En fonctionnement"
# Informations du cycle
- type: entities
title: "Dernier Cycle"
entities:
- entity: input_datetime.debut_machine
name: "Début"
- entity: input_datetime.fin_machine
name: "Fin"
- entity: sensor.duree_derniere_machine
name: "Durée"
- entity: sensor.consommation_dernier_cycle
name: "Consommation"
# Graphique de puissance
- type: history-graph
title: "Consommation dernières 24h"
entities:
- sensor.machine_a_laver_power
hours_to_show: 24
Fonctionnalités avancées
Détection de cycles spécifiques
# Template pour identifier le type de cycle
- sensor:
name: "Type Cycle Lave Linge"
state: >
{% set max_power = state_attr('sensor.machine_a_laver_power', 'max_value') | float(0) %}
{% set duration = states('sensor.duree_derniere_machine') | int(0) %}
{% if max_power > 2000 and duration > 120 %}
Coton chaud
{% elif max_power < 500 and duration < 60 %}
Rinçage
{% elif duration > 180 %}
Programme long
{% else %}
Programme standard
{% endif %}
Suivi des coûts
# Calcul du coût du cycle (prix kWh à adapter)
- sensor:
name: "Coût Dernier Cycle"
state: >
{% set conso = states('sensor.consommation_dernier_cycle') | float(0) / 1000 %}
{% set prix_kwh = 0.2276 %} # Prix en €/kWh
{{ (conso * prix_kwh) | round(3) }}
unit_of_measurement: "€"
Programmation heures creuses
# Automatisation pour démarrage en heures creuses
alias: "Démarrage Automatique HC"
trigger:
- platform: time
at: "22:30:00" # Début heures creuses
condition:
- condition: state
entity_id: input_boolean.programme_hc # Helper à créer
state: "on"
action:
- service: switch.turn_on
target:
entity_id: switch.machine_a_laver
- service: notify.mobile_app_votre_telephone
data:
title: "⚡ Démarrage HC"
message: "Machine lancée en heures creuses"
Optimisation et dépannage
Ajustement des seuils
Les seuils de puissance varient selon les machines :
Machines classiques :
- Seuil démarrage : 5-15W
- Seuil arrêt : 1-5W
- Confirmation : 2-5 minutes
Machines récentes (efficaces) :
- Seuil démarrage : 10-25W
- Seuil arrêt : 2-8W
- Confirmation : 5-10 minutes
Problèmes fréquents
Faux positifs (notifications avant la fin) :
- Augmentez la durée de confirmation
- Vérifiez les cycles de pause de votre machine
- Ajustez le seuil d’arrêt vers le bas
Notifications manquées :
- Diminuez le seuil d’arrêt
- Vérifiez la précision de la prise
- Analysez les données avec l’historique
Template errors :
- Vérifiez l’indentation YAML
- Validez la configuration avant redémarrage
- Utilisez les outils de développement pour tester
Maintenance
# Script de reset mensuel (à programmer)
alias: "Reset Compteurs Lave Linge"
sequence:
- service: input_number.set_value
target:
entity_id: input_number.puissance_machine_debut
data:
value: 0
- service: input_select.select_option
target:
entity_id: input_select.etat_lave_linge
data:
option: "Arrêté"
Extensions possibles
Intégration avec d’autres systèmes
Assistant vocal :
# Annonce vocale de fin de cycle
- service: tts.speak
data:
entity_id: media_player.salon
message: "Le cycle de lavage est terminé"
Détection de fuites :
- Ajoutez un capteur d’eau Zigbee sous la machine
- Créez une alerte en cas de détection d’humidité
Suivi énergétique global :
- Intégrez dans le dashboard énergie HA
- Créez des statistiques de consommation mensuelle
Applications pour autres appareils
Ce système s’adapte facilement à :
- Lave-vaisselle (seuils différents)
- Sèche-linge (consommation plus élevée)
- Four (pics de température + consommation)
Conclusion
Avec une prise connectée à 15€ et “quelques” lignes de code, vous disposez maintenant d’un système de monitoring complet pour votre machine à laver. Ce projet démontre la puissance de Home Assistant pour transformer des appareils “muets” en équipements intelligents.
Les bénéfices immédiats :
- Plus de linge oublié grâce aux notifications intelligentes
- Suivi précis de la consommation et des coûts
- Optimisation des cycles avec la programmation automatique
- Détection précoce de dysfonctionnements
Pour aller plus loin :
- Reproduisez le système sur d’autres électroménagers
- Intégrez la météo pour optimiser le séchage
- Créez des statistiques d’usage familiales
- Développez des alertes de maintenance préventive
La domotique accessible commence par des projets simples comme celui-ci. Avec le temps, vous développerez un véritable écosystème connecté qui simplifiera votre quotidien !
Ce guide est évolutif. N’hésitez pas à l’adapter selon votre matériel et vos besoins spécifiques. La communauté Home Assistant regorge de ressources pour vous accompagner dans vos projets.