Automatiser son LAVE VAISSELLE avec une simple prise connectée

Bonjour,

Comme demandé dans le sujet Solar Optimizer, voici comment j’ai automatisé le fonctionnement de mon lave vaisselle.

Pour commencer, j’utilise une simple prise Zigbee qui me remonte les données de conso instantanée que l’on peut couper à distance.
Mon lave vaisselle est un modèle ikéa tout simple, sans minuteur, et je n’utilise que le mode ECO ou 65°.

Le principe:
Je déclenche mon LV normalement en choisissant l’un des 2 cycles, HA détecte un changement de conso, coupe le LV et notifie mon mobile (ou groupe de mobile dans mon cas) afin de proposer 3 possibilités.
Soit on le lance maintenant, de nuit (heures creuses) ou en solaire.
Si aucun choix n’est fait, HA lance le LV au bout de 5 mn.

Le mode solaire se base sur l’intégration SolarOptimizer de JM Collin, si vous n’en avez pas l’utilité, il faudra supprimer ces lignes.

Pour cela, j’ai créer 2 variables de type liste déroulante, une pour définir le mode de départ du LV:

Une pour déterminer si on attend un retour de l’utilisateur:

J’ai ensuite créer un dashboard « questions » que j’ai ensuite caché dans la barre latérale de l’appli mobile.


et voici le code du dashboard:

views:
  - title: Questions
    sections:
      - type: grid
        cards:
          - type: heading
            heading: Le lave vaisselle a démarré, que dois-je faire ?
            heading_style: title
          - show_name: true
            show_icon: true
            type: button
            tap_action:
              action: perform-action
              perform_action: input_select.select_option
              target:
                entity_id: input_select.mode_lave_vaisselle
              data:
                option: Continue
            entity: input_select.mode_lave_vaisselle
            hold_action:
              action: none
            icon: mdi:timer-alert
            name: Maintenant
            visibility:
              - condition: state
                entity: input_select.mode_lave_vaisselle
                state: Rien
          - show_name: true
            show_icon: true
            type: button
            tap_action:
              action: perform-action
              perform_action: input_select.select_option
              target:
                entity_id: input_select.mode_lave_vaisselle
              data:
                option: Nuit
            entity: input_select.mode_lave_vaisselle
            hold_action:
              action: none
            icon: mdi:weather-night
            name: Cette nuit
            visibility:
              - condition: state
                entity: input_select.mode_lave_vaisselle
                state: Rien
          - show_name: true
            show_icon: true
            type: button
            tap_action:
              action: perform-action
              perform_action: input_select.select_option
              target:
                entity_id: input_select.mode_lave_vaisselle
              data:
                option: Solaire
            entity: input_select.mode_lave_vaisselle
            hold_action:
              action: none
            icon: mdi:weather-sunny
            name: En solaire
            visibility:
              - condition: state
                entity: input_select.mode_lave_vaisselle
                state: Rien
          - type: entity
            entity: input_select.mode_lave_vaisselle
            state_color: true
            visibility:
              - condition: state
                entity: input_select.mode_lave_vaisselle
                state_not: Rien
          - type: conditional
            conditions:
              - condition: state
                entity: input_select.mode_lave_vaisselle
                state_not: Rien
            card:
              type: heading
              icon: mdi:menu-close
              heading: Revenir au menu
              heading_style: title
              tap_action:
                action: navigate
                navigation_path: /dashboard-solaire
        column_span: 2
        visibility:
          - condition: state
            entity: input_select.question
            state: LV
      - type: grid
        cards:
          - type: conditional
            conditions: []
            card:
              type: heading
              icon: mdi:fridge
              heading: Rien a faire, revenir au menu
              heading_style: title
              tap_action:
                action: navigate
                navigation_path: /dashboard-solaire
        visibility:
          - condition: state
            entity: input_select.question
            state: RIEN
      
    type: sections
    max_columns: 4
    cards: []

Ce Dashboard n’affichera la question a poser que si la liste déroulante question est sur LV.
(un second mode voiture n’est pas décrit ici). si un utilisateur du groupe notifié répond, les autres utilisateurs n’auront plus l’affichage du questionnaire.

Une fois une des options sélectionnée, l’affichage change et affiche uniquement le mode choisi, puis indiquera qu’il n’y a plus de question en attente.

Et enfin, l’automatisation associée:

alias: Init Lave-Vaisselle
description: ""
triggers:
  - trigger: state
    entity_id:
      - sensor.pc_cuisine_lavevaisselle_power
    from: "0"
    for:
      hours: 0
      minutes: 0
      seconds: 10
conditions:
  - condition: not
    conditions:
      - condition: state
        entity_id: sensor.pc_cuisine_lavevaisselle_power
        state: unavailable
actions:
  - choose:
      - conditions:
          - condition: state
            entity_id: input_select.mode_lave_vaisselle
            state: Solaire
        sequence:
          - action: input_select.select_option
            metadata: {}
            data:
              option: Continue
            target:
              entity_id: input_select.mode_lave_vaisselle
      - conditions:
          - condition: state
            entity_id: input_select.mode_lave_vaisselle
            state: Rien
        sequence:
          - action: switch.turn_off
            metadata: {}
            data: {}
            target:
              entity_id: switch.pc_cuisine_lavevaisselle
          - delay:
              hours: 0
              minutes: 0
              seconds: 3
              milliseconds: 0
          - action: switch.turn_off
            metadata: {}
            data: {}
            target:
              entity_id: switch.pc_cuisine_lavevaisselle
          - action: input_select.select_option
            metadata: {}
            data:
              option: LV
            target:
              entity_id: input_select.question
          - data:
              message: Le lave vaisselle a démarré, que dois-je faire ?
              data:
                url: /dashboard-questions/0
                actions:
                  - action: SOLAIRE
                    title: Lance le en solaire
                    icon: sfsymbols:sun.max.fill
                  - action: NUIT
                    title: Lance le cette nuit
                    icon: sfsymbols:moon
                  - action: NOW
                    title: maintenant
                    icon: sfsymbols:powerplug.fill
              title: "{{ states('input_text.notif_question') }}"
            action: notify.nous
          - wait_for_trigger:
              - event_type: mobile_app_notification_action
                event_data:
                  action: SOLAIRE
                id: SOLAIRE
                trigger: event
              - event_type: mobile_app_notification_action
                event_data:
                  action: NUIT
                id: NUIT
                trigger: event
              - event_type: mobile_app_notification_action
                event_data:
                  action: NOW
                id: NOW
                trigger: event
              - trigger: state
                entity_id:
                  - input_select.mode_lave_vaisselle
                from: Rien
            timeout:
              hours: 0
              minutes: 5
              seconds: 0
              milliseconds: 0
            continue_on_timeout: true
          - choose:
              - conditions:
                  - condition: template
                    value_template: "{{ wait.trigger.id == 'SOLAIRE' }}"
                sequence:
                  - action: input_select.select_option
                    metadata: {}
                    data:
                      option: Solaire
                    target:
                      entity_id: input_select.mode_lave_vaisselle
                  - action: switch.turn_on
                    metadata: {}
                    data: {}
                    target:
                      entity_id: switch.enable_solar_optimizer_lave_vaisselle
              - conditions:
                  - condition: template
                    value_template: "{{ wait.trigger.id == 'NUIT' }}"
                sequence:
                  - if:
                      - condition: state
                        entity_id: binary_sensor.rte_tempo_heures_creuses
                        state: "on"
                    then:
                      - action: input_select.select_option
                        metadata: {}
                        data:
                          option: Continue
                        target:
                          entity_id: input_select.mode_lave_vaisselle
                      - action: switch.turn_on
                        metadata: {}
                        data: {}
                        target:
                          entity_id: switch.pc_cuisine_lavevaisselle
                    else:
                      - action: input_select.select_option
                        metadata: {}
                        data:
                          option: Nuit
                        target:
                          entity_id: input_select.mode_lave_vaisselle
              - conditions:
                  - condition: template
                    value_template: "{{ wait.trigger.id == 'NOW' }}"
                sequence:
                  - action: input_select.select_option
                    metadata: {}
                    data:
                      option: Continue
                    target:
                      entity_id: input_select.mode_lave_vaisselle
                  - action: switch.turn_on
                    metadata: {}
                    data: {}
                    target:
                      entity_id: switch.pc_cuisine_lavevaisselle
            default:
              - choose:
                  - conditions:
                      - condition: state
                        entity_id: input_select.mode_lave_vaisselle
                        state: Continue
                    sequence:
                      - action: input_select.select_option
                        metadata: {}
                        data:
                          option: Continue
                        target:
                          entity_id: input_select.mode_lave_vaisselle
                      - action: switch.turn_on
                        metadata: {}
                        data: {}
                        target:
                          entity_id: switch.pc_cuisine_lavevaisselle
                  - conditions:
                      - condition: state
                        entity_id: input_select.mode_lave_vaisselle
                        state: Solaire
                    sequence:
                      - action: input_select.select_option
                        metadata: {}
                        data:
                          option: Solaire
                        target:
                          entity_id: input_select.mode_lave_vaisselle
                      - action: switch.turn_on
                        metadata: {}
                        data: {}
                        target:
                          entity_id: switch.enable_solar_optimizer_lave_vaisselle
                  - conditions:
                      - condition: state
                        entity_id: input_select.mode_lave_vaisselle
                        state: Rien
                    sequence:
                      - action: input_select.select_option
                        metadata: {}
                        data:
                          option: Continue
                        target:
                          entity_id: input_select.mode_lave_vaisselle
                      - action: switch.turn_on
                        metadata: {}
                        data: {}
                        target:
                          device_id: 1416c3415351b7d64737a743a4045060
  - delay:
      hours: 0
      minutes: 0
      seconds: 10
      milliseconds: 0
  - action: input_select.select_option
    metadata: {}
    data:
      option: RIEN
    target:
      entity_id: input_select.question
mode: single

Attention, les logos dans la notif sont ceux pour IOS, il faudra adapter le code à votre terminal.
J’utilise également une variable texte input_text.notif_question qui me permet de facilement décrire la demande à l’utilisateur, par exemple « HA à besoin de vous » ou dans le cas de l’input texte input_text.notif_info « HA vous informe ». Cela me permet de réutiliser ces 2 texte dans plusieurs automatisations, et si je veux le changer, je n’ai à le faire qu’à un seul endroit.

Là en clair, dès que le serveur détecte une conso du LV, il le coupe et envoie une notif actionnable aux utilisateurs. Soit l’utilisateur utilise le système de notif actionnable, soit (comme la plupart des utilisateurs), il clique dessus et atterrit sur le dashboard question.

Dans l’automatisation, il y a 4 détections de trigger mobile, les 3 1er pour le système de notif actionnable, le dernier prenant en compte un changement de la liste « mode LV ».

Il est également nécessaire de détecté que la fin cycle du LV afin de remettre le select Mode LV à « rien ». Pour çà j’utilise une automatisation qui est spécifique à mon LV. Il vous sera donc nécessaire de l’adapter au votre en fonction de niveau de conso et de durée des cycles.
L’automatisation envoie une notif au groupe de mobile pour prévenir que le LV est terminé et que l’on peux le vider :slight_smile:
Pour le trigger de cette automatisation, il vous faudra remplacer les ID du device et de l’entité (une serie de lettre et de chiffre) par les votres

alias: Fin cycle LV
description: ""
triggers:
  - type: power
    device_id: DEVICE_ID_DE_LA_PRISE_LV
    entity_id: ENTITY_ID_PUISSANCE_DE_LA_PRISE_LV
    domain: sensor
    trigger: device
    above: 4
    below: 12
    for:
      hours: 0
      minutes: 0
      seconds: 20
conditions: []
actions:
  - if:
      - condition: state
        entity_id: input_select.mode_lave_vaisselle
        state: Continue
        for:
          hours: 2
          minutes: 28
          seconds: 0
    then:
      - delay:
          hours: 0
          minutes: 1
          seconds: 0
      - action: input_select.select_option
        metadata: {}
        data:
          option: Rien
        target:
          entity_id: input_select.mode_lave_vaisselle
      - action: switch.turn_off
        metadata: {}
        data: {}
        target:
          entity_id: switch.enable_solar_optimizer_lave_vaisselle
      - action: notify.nous
        metadata: {}
        data:
          message: Lave Vaisselle fini !!
          title: "{{ states('input_text.notif_info') }}"
    else:
      - if:
          - condition: state
            entity_id: input_select.mode_lave_vaisselle
            state: Continue
            for:
              hours: 2
              minutes: 4
              seconds: 0
          - condition: numeric_state
            entity_id: sensor.pc_cuisine_lavevaisselle_power
            below: 11
            above: 2
        then:
          - if:
              - condition: state
                entity_id: input_select.mode_lave_vaisselle
                state: Continue
                for:
                  hours: 2
                  minutes: 10
                  seconds: 0
            then: []
            else:
              - delay:
                  hours: 0
                  minutes: 0
                  seconds: 15
                  milliseconds: 0
              - action: input_select.select_option
                metadata: {}
                data:
                  option: Rien
                target:
                  entity_id: input_select.mode_lave_vaisselle
              - action: switch.turn_off
                metadata: {}
                data: {}
                target:
                  entity_id: switch.enable_solar_optimizer_lave_vaisselle
              - action: notify.nous
                metadata: {}
                data:
                  message: Lave Vaisselle fini !!
                  title: "{{ states('input_text.notif_info') }}"
mode: single

Cette automatisation marche dans 95% des cas, mais parfois elle ne se déclenche pas.
J’ai donc créer une autre automatisation qui rebascule le mode LV à rien au bout de 2H45 (sans notif)

alias: Reinit mode LV
description: ""
triggers:
  - trigger: state
    entity_id:
      - input_select.mode_lave_vaisselle
    to: Continue
    for:
      hours: 2
      minutes: 45
      seconds: 0
conditions: []
actions:
  - action: input_select.select_option
    metadata: {}
    data:
      option: Rien
    target:
      entity_id: input_select.mode_lave_vaisselle
mode: single

J’utilise çà depuis décembre, et çà fonctionne plutôt bien si on évite les redémarrages HA pendant que le LV tourne. Là il est nécessaire d’aller modifier le Select Mode LV manuellement pour que le système puisse refonctionner normalement.

Ce n’est pas parfait, mais j’en suis plutôt content, et ma compagne aussi.

Si vous avez des suggestions/remarques, permettant d’améliorer tout cela, en espérant que çà puisse vous servir.

4 « J'aime »

Bonjour,

Je viens de déplacer dans la bonne section. Merci à toi

1 « J'aime »

J’aime bien ton poste, il est intéressant.

Si tu veut plus de détail lors de la notification de fin, tu peut aller voir là : Gestion de lave-vaisselle dans Home assistant

Bonne journée

1 « J'aime »

Il n’y a pas de danger pour le LV de lui couper brutalement la tension après l’avoir fait démarrer ?
Par ailleurs est-ce que tous les LV reprennent leur cycle dès le retour de la tension ?
C’est juste de la curiosité car j’utilise un LV qui permet de définir un retard de départ (mais pas d’info sue la fin du cycle, ni sur la consommation)

Salut,

Dommage mon LV se met en pause quand on lui coupe le courant. Faudrait que j’installe un Fingerbot… Bof…

Non certain LV se mettent en pause, j’ai le problème avec ma machine à laver, je suis obligé d’appuyer sur un bouton pour qu’elle reparte.

Ent termes de danger je ne sais pas, à voir sur la durée si la carte électronique le supporte bien

Mais c’est pour ça que je le coupe rapidement. Il n’y a pas eu d’appel de puissance n’y d’eau dedans

Salut
Si vos lave vaisselle ont une façade avec des boutons physiques comme le mien

Il est possible avec un esp32 et des relais d’interagir avec ceux-ci.
Sur mon lave vaisselle, je peux piloter par HA avec l’esp32 le bouton On/Off, le bouton de choix du programme et celui de Démarrage/Pause du cycle de lavage.
En complément j’ai une prise connecté pour relevé la consommation et savoir quand il commence et fini son cycle.

Pour le fonctionnement, je mets la vaisselle et les produits dedans et je le referme (logique jusque là) ensuite je dis « ok google, programme le lave vaisselle » ou je le fais par la page dédiée sur HA.
Le lendemain (ou le jour même selon l’heure) quand j’ai assez de puissance photovoltaique, une automatisation allume le lave vaisselle et declenche le cycle de lavage puis m’envoi une notification
En fin de cycle le bouton On/Off est commandé à nouveau pour l’éteindre et je reçoit une notification également.

Je n’ai malheureusement pas de photos du montage, mais l’ESP et les relais sont dans une boite de dérivation derrière le lave vaisselle et la jonction entre les relais et le panneaux de commande est faites par un câble réseau qui passe sous le lave vaisselle et remonte dans sa porte jusqu’au bouton.

1 « J'aime »

Hello,

Tu as MOES qui vend des prises Zigbee encastrable, ça fonctionne très bien. Sinon j’ai vu que Sonoff a sorti de nouvelles prises connectées Zigbee allant jusqu’à 4000W de puissance.

Hello,

Ça me parait être la solution idéale effectivement (il me semble avoir vu sur le forum des photos, je ne sais pas si c’était ton Install ou non), mais pas trop envie de faire autant de bidouilles pour quelques centimes par lavage… et puis, si je me loupe je suis bon pour changer de LV :sweat_smile:

Ce sujet a été automatiquement fermé après 60 jours. Aucune réponse n’est permise dorénavant.