Prise connectée et Home assistant
Les prises connectées sont de plus en plus présentes dans nos maisons pour piloter différents appareils. Dans cet article, je vais vous partager mes utilisations.
Tout d’abord, les prises devaient être en Zigbee pour fonctionner sur mon réseau. Il existe aussi des prises Wi-Fi, mais je souhaite rester sur un même type de réseau afin d’avoir une domotique unifiée. Ensuite, il a fallu trouver des prises compatibles avec Home Assistant, mais aussi m’assurer qu’elles fonctionnent avec ZHA dans mon cas ou avec Zigbee2MQTT si vous utilisez cette solution. Il existe le site Database of Zigbee, qui répertorie les appareils domotiques et indique leurs compatibilités avec les différentes plateformes. Ce site étant alimenté par les utilisateurs, tout n’y est donc pas forcément référencé…
Prise connectée et Home assistant
Le plus souvent, c’est en consultant différents articles que l’on découvre ce qui est compatible ou non. De mon côté, j’avais d’abord prévu d’acheter les prises de chez IKEA, mais le magasin n’étant pas sur mon trajet habituel. J’ai finalement opté pour les prises de la marque Lexman de Leroy Merlin, qui sont elles aussi compatibles avec Home Assistant et Zigbee.
Sur le site de la base de données, seule la version 16 A est répertoriée, mais il me fallait également une 10 A. Dans les avis de la prise 10 A sur le site de Leroy Merlin, un commentaire indiquait qu’elle était compatible avec Home Assistant et ZHA. J’ai donc acheté une 10 A et une 16 A pour deux usages différents.
Physiquement, les prises se ressemblent. La version 16A est un peu plus encombrante, mais on retrouve sur les deux modèles un bouton unique permettant d’allumer ou d’éteindre la prise. Ce bouton sert également à associer la prise à votre réseau. Une LED verte indique l’état de la prise.
Connecté à Home assistant et sur ZHA
Une fois l’association effectuée, vous retrouvez vos deux prises dans l’intégration ZHA. On remarque ici une différence au niveau de la remontée des informations, ce qui pourrait être bloquant pour vos futures automatisations.
Sur la première image, nous avons les données de la prise 10A, et sur la seconde, celles de la 16A. On constate que cette dernière remonte en temps réel la puissance de consommation, ce qui n’est pas le cas de la 10A. Pour mon projet, ce manque d’information peut être gênant, nous y reviendrons un peu plus bas.
Pour quelle utilité ?
Pour la version 10A, son utilisation reste simple : elle a pour rôle d’allumer une lumière qui n’est pas utilisée au quotidien. En effet, dans un précédent article sur le pilotage des volets, j’avais créé un bouton que j’active en cas d’absence, afin qu’une automatisation gère l’ouverture et la fermeture des volets.
Mais quel est le rapport avec les volets ? Eh bien, l’absence justement ! J’ai créé une nouvelle automatisation qui prend en compte l’état de ce bouton d’absence. Celle-ci permet de piloter la lumière, en l’allumant quelques minutes après le coucher du soleil, puis en l’éteignant après une certaine durée. Le fait de ne pas avoir de retour sur la consommation n’est donc pas bloquant dans ce cas.
Voici une automatisation simple : remplacez l’entité switch.lumiere_comptoir par la vôtre. Pour découvrir toute l’installation du mode absence, rendez-vous sur cet article.
alias: Lumière - Allumer lumière comptoir si absent
description: >-
Allume la lumière 20 minutes après le coucher du soleil si absent, puis
l'éteint 1h après
triggers:
- event: sunset
offset: "00:20:00"
trigger: sun
conditions:
- condition: state
entity_id: input_boolean.absent
state: "on"
actions:
- target:
entity_id: switch.lumiere_comptoir
action: switch.turn_on
- delay: "01:00:00"
- target:
entity_id: switch.lumiere_comptoir
action: switch.turn_off
mode: single
Pour la seconde prise, l’utilisation sera plus aboutie. Elle servira pour la machine à laver et aura deux rôles.
Le premier sera de permettre la programmation du démarrage de la machine en notre absence, afin qu’elle soit terminée à notre retour. Pour cela, il faut une machine pas trop récente : la mienne (n’étant pas bourrée d’électronique) fonctionne encore avec des boutons de mise en marche et des programmateurs rotatifs mécaniques. Je peux donc laisser le bouton sur « On », programmer le mode de lavage, et la machine démarrera automatiquement à l’arrivée du courant.
Le second rôle consistera à me notifier lorsque le cycle est terminé. La machine étant installée dans mon garage, je ne l’entends pas et il m’arrive souvent de l’oublier.
Mise en place du programmateur
Pour créer notre programmateur nous allons avoir besoin de plusieurs choses.
- Créer une entité heure.
Il va servir pour notre programmateur. Rendez-vous dans Paramètres, puis Appareils et services, ensuite dans Entrées, et cliquez sur Créer une entrée. Dans la liste, choisissez Date et/ou heure. Indiquez un nom, une icône, puis sélectionnez Heure.

- Création d’un interrupteur virtuel.
C’est lui que l’on activera pour lancer une programmation. Toujours dans Paramètres, puis Appareils et services, allez dans Entrées et cliquez sur Créer une entrée. Recherchez Interrupteur, puis indiquez un nom et une icône.
- Ajout d’un plugin HACS.
Ce n’est pas obligatoire, mais par défaut, pour modifier l’heure de l’entité créée à la première étape, il faut cliquer dessus et saisir manuellement l’heure souhaitée. Comme je dispose d’un petit écran tactile pour piloter la maison, je voulais quelque chose de plus rapide. Le plugin Time Picker Card permet justement d’avoir une interface graphique simple et rapide pour la programmation.

- Activer le sensor Time.
Il faut que Home Assistant connaisse l’heure actuelle pour pouvoir la comparer avec notre entité d’heure et ainsi déclencher l’automatisation.
Pour cela, allez dans Paramètres, puis Appareils et services, et cliquez sur Ajouter une intégration. Dans la liste, recherchez Date.

Une fois l’intégration ajoutée, ouvrez-la puis cliquez sur Ajouter un service. Sélectionnez Heure, puis validez.

Il faut maintenant créer une automatisation. Toutes les minutes, elle vérifiera si notre interrupteur virtuel est activé et si l’heure programmée correspond à l’heure actuelle.
Pour cela, allez dans Paramètres, puis Automatisation, et ajoutez une nouvelle automatisation. Passez en mode YAML et collez le code. Pour que cela fonctionne chez vous, il faudra remplacer les entités suivantes par celles que vous avez définies :
input_datetime.debut_machine_a_laver: l’entité dateinput_boolean.lave_linge_programme: l’interrupteur virtuelswitch: l’entité correspondant à votre prise connectée
Si tout est correctement configuré, l’automatisation activera la prise pour démarrer le lave-linge.
alias: Machine à laver - Lancement programme
description: ""
triggers:
- minutes: /1
trigger: time_pattern
conditions:
- condition: template
value_template: >
{{ states('sensor.time') ==
states('input_datetime.debut_machine_a_laver')[0:5] }}
- condition: state
entity_id: input_boolean.lave_linge_programme
state: "on"
actions:
- target:
entity_id: switch.machine_a_laver
action: switch.turn_on
- target:
entity_id: input_boolean.lave_linge_programme
action: input_boolean.turn_off
mode: single
Mise en place d’une carte
Vous pouvez maintenant passer à la partie graphique. Il vous faudra le plugin pour programmer l’heure, l’interrupteur virtuel pour activer la programmation, et le bouton pour couper la prise connectée.
Voici un exemple de mon côté : je commence par programmer l’heure, puis j’active la programmation et enfin je coupe la prise. Côté machine, je mets l’interrupteur en marche et je choisis le programme souhaité.![]()
Pour que mes icônes changent de couleur, j’utilise Mushroom. Je vous fournis les codes pour le bouton de programmation et pour le pilotage de la prise connectée. Remplacez les entités par les vôtres.
Pour le bouton de programmation :
type: custom:mushroom-template-card
entity: input_boolean.lave_linge_programme
primary: Programmer
icon: mdi:timer-play
tap_action:
action: toggle
color: |
{% if is_state('input_boolean.lave_linge_programme', 'on') %}
green
{% else %}
grey
{% endif %}
features_position: bottom
card_mod:
style: |
ha-card {
font-weight: bold;
}
Pour le contrôle de la prise:
type: custom:mushroom-template-card
entity: switch.machine_a_laver
primary: Machine à laver
icon: mdi:washing-machine
tap_action:
action: toggle
grid_options:
columns: 6
rows: 1
color: |
{% if is_state('switch.machine_a_laver', 'on') %}
green
{% else %}
red
{% endif %}
features_position: bottom
Il ne vous reste plus qu’à tester une programmation et vérifier si votre prise s’active à l’heure indiquée.
Notification
Il m’arrive souvent d’oublier la machine, alors quoi de mieux que de recevoir une notification sur son smartphone ? Il fallait que celle-ci soit efficace, par exemple en ne me notifiant pas lorsque je ne suis pas à la maison et qu’une autre personne utilise la machine.
Le moyen le plus efficace que j’ai trouvé consiste à vérifier si le téléphone est connecté au Wi-Fi de la maison. Toujours via HACS, j’ai installé l’intégration iPhone Detect for Home Assistant. Je ne sais pas si elle fonctionne avec un Android, car elle demande uniquement l’adresse IP et effectue un « ping » toutes les x secondes pour vérifier la présence de l’appareil sur le réseau.
Une fois l’intégration installée via HACS, il vous faudra l’ajouter via le menu Paramètres, puis Appareils et services, et Ajouter une intégration. Dans la liste, recherchez iPhone Detect.
Retournez ensuite sur la page des intégrations et ouvrez celle-ci. Cliquez sur Ajouter un appareil, puis indiquez le nom que vous souhaitez, son IP (attention : il faudra attribuer une IP fixe à votre iPhone pour qu’il soit toujours détectable) et enfin, définissez l’intervalle de scan sur le réseau.
Il faut également que votre smartphone soit connecté à Home Assistant ; si vous avez installé l’application, il y a de fortes chances que ce soit déjà le cas.
Nous allons maintenant créer notre automatisation, et c’est là que la remontée de puissance de la prise devient nécessaire. Pour savoir quand la machine a fini, mettez-la simplement en fonctionnement sans lancer de programme, en laissant uniquement le bouton « On » activé. J’ai ainsi pu constater qu’au repos, ma machine consomme 3 W.
Pour l’automatisation, je procède ainsi : si la prise connectée est en dessous de 3,1 W pendant 3 minutes et que l’iPhone est connecté au réseau, alors envoyer la notification. Voici le résultat.
Voici le code : passez en mode modification YAML pour l’ajouter. Il faudra remplacer les entités suivantes pour qu’il fonctionne chez vous :
sensor.machine_a_laver_puissance: le capteur de votre prise connectée qui remonte la puissancedevice_tracker.iphone_seb: le capteur créé par iPhone Detectnotify.mobile_app_iphone: il faudra un peu chercher pour celle-ci, car cela a changé avec les versions. En version graphique, pour la notification, vous pouvez chercher notify et votre téléphone apparaîtra dans la liste.
alias: NOTIFICATION - Machine à laver terminée
description: Préviens quand la machine est terminée si je suis à la maison
triggers:
- entity_id: sensor.machine_a_laver_puissance
below: 3.1
for: "00:03:00"
trigger: numeric_state
conditions:
- condition: numeric_state
entity_id: sensor.machine_a_laver_puissance
above: 0
- condition: state
entity_id: device_tracker.iphone_seb
state: home
actions:
- data:
title:
Machine à laver
message: Le cycle est terminé
action: notify.mobile_app_iphone
mode: single
Conclusion
Voici deux idées d’utilisation d’une prise connectée… La seconde vous permettra de transformer votre lave-linge dinosaure en un véritable lave-linge connecté des temps modernes. Et le tout intégré sur mon écran de pilotage.
On peut aller encore plus loin : grâce à la puissance, il est possible d’identifier les différentes étapes du lavage, comme le montre ce graphique.
Au début, on voit la chauffe de l’eau, suivie de plusieurs montées régulières correspondant à la phase de lavage et aux rotations du tambour. Pour terminer, on observe un plateau vers 9h53, qui correspond au rinçage.
Ainsi, dans Home Assistant, on peut déterminer l’avancement du cycle en fonction de la puissance.
Et comme nous utilisons toujours le même programme, un chronomètre d’avancement du cycle pourrait être ajouté. ![]()