Prise connectée Lave-Vaisselle : Comment déterminer la consommation d'un cycle?

Bon, j’avais fait un copier/coller dans le script de reset des conso pour le sèche linge XD
qui avait les valeurs du lave-linge…

Une erreur de trouvée :wink:

1 « J'aime »

En regardant les automatisations j’ai des erreur sur une variable qui est utilisée dans un template :


Dans le guide de domo-blog il faut créer cette entité input_datetime.temps_dernier_cycle_lave_linge
Mais elle n’est utilisée nulle part dans tout le reste du code des autres fichiers qu’il fourni ou dans son guide.
Je pense que je vais virer ça et coder autrement la gestion de fin de cycle en créant un script comme pour le début de cycle.

Comment peut on mettre une valeur dans une entité de type input_datetime dans un script ?

Dernière chose , un template sensor , ça se met à jour en continue n’est-ce pas ? Pas seulement quand on affiche une carte sur un Dashboard qui utilise ce sensor.

Salut :wave:t2:
Bon je crois que j’ai réussi à avoir quelques chose de fonctionnel et propre.
J’ai choisi de conserver dans une entité la date de fin de cycle en plus de celle de début.
Pour le calcul de la durée qui mersit j’ai fait autrement après avoir passé plusieurs heures dans la partie développement pour faire des essais avec les fonctions de temps :blush:

J’ai encore quelques peaufinages à faire quant à l’affichage du cycle en cours : par exemple mettre « en cours depuis xxx min ».



Il me reste à transcrire ceci sur le lave linge et le sèche linge :blush:

Bonjour,
J’ai enfin quelque chose de fonctionnel ^^
J’ai dû virer des automatisations la partie qui calculait la durée, car ça ne fonctionnait pas, ça me faisait une erreur et la suite n’était pas traitée.
Je fais juste écrire la valeur du temps de fin dans le input_datetime dans l’automatisation, et je lance un script à la fin qui va enregister dans un input_number la valeur de la consommation à la fin du cycle.
Le calcul de la consommation et de la durée est faite dans le template dans lequel j’ai mis une condition sur le statut « En-cours » ou non d’une machine.
Par exemple, pour mon lave-vaisselle :

  # ╔══════════════════════════════════════════════════════════════════════════╗
  # ║ Entités pour calculer les durées des dernières machines                  ║
  # ╚══════════════════════════════════════════════════════════════════════════╝
  - name: "Comptage Lave-Vaisselle"
    unique_id: "comptage_lave_vaisselle"
    state: >
      {% if is_state('input_boolean.cycle_lave_vaisselle', 'on') %}
        En cours
      {% else %}
        {% set var_debut_lave_vaisselle = as_timestamp(states('input_datetime.debut_lave_vaisselle')) -%}
        {%- set var_fin_lave_vaisselle = as_timestamp(states('input_datetime.fin_lave_vaisselle')) -%}
        {%- set var_duree_derniere_lave_vaisselle = as_datetime(var_fin_lave_vaisselle) - as_datetime(var_debut_lave_vaisselle) -%}
        {{ var_duree_derniere_lave_vaisselle }}
      {% endif %}

  # ╔══════════════════════════════════════════════════════════════════════════╗
  # ║ Entités pour calculer les consommations des dernières machines           ║
  # ╚══════════════════════════════════════════════════════════════════════════╝
  - name: "Conso. Lave-Vaisselle"
    unique_id: "conso_lave_vaisselle"
    state: >
      {% set energie_debut_lave_vaisselle = states('input_number.lave_vaisselle_energie_debut_cycle')  | round(2) %}
      {% if is_state('input_boolean.cycle_lave_vaisselle', 'on') %}
        {% set energie_fin_lave_vaisselle = states('sensor.smartplug_lave_vaisselle_energy') | round(2) %}
        {% set energie_cycle_lave_vaisselle = energie_fin_lave_vaisselle - energie_debut_lave_vaisselle %}
        ⚡️ {{ (energie_cycle_lave_vaisselle) | round(2) }} kWh (en cours)
      {% else %}
        {% set energie_fin_lave_vaisselle = states('input_number.lave_vaisselle_energie_fin_cycle') | round(2) %}
        {% set energie_cycle_lave_vaisselle = energie_fin_lave_vaisselle - energie_debut_lave_vaisselle %}
        ⚡️  {{ (energie_cycle_lave_vaisselle) | round(2) }} kWh
      {% endif %}

Tout ça nécessite la création d’un certains nombre de input_datetime, de input_boolean et de input_number, mais là j’ai quelque chose de fonctionnel ^^
Et d’assez élégant :

Bonjour

Est-il possible d’avoir le code de ta carte, Merci.

Salut @pascal_ha
Tu parles de quelle carte ? J’en ai 9 par machine :grinning:

Celle ci par exemple

@pascal_ha Il y a justement 9 cartes dedans ^^

Mais voilà le code de tout ça :

Code YAML
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# ~~~~~~~~~~~~~~~~~~ Partie pour le Lave-Vaisselle ~~~~~~~~~~~~~~~~~~~
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      - type: custom:text-divider-row
        text: Suvi cycle du Lave-Vaiselle
      - type: vertical-stack
        cards:
          - square: false
            type: grid
            cards:
              - type: custom:mushroom-entity-card
                entity: input_boolean.cycle_lave_vaisselle
                icon_color: amber
                name: Cycle Lave-Vaisselle
              
              - type: custom:mushroom-entity-card
                entity: sensor.conso_lave_vaisselle
                icon_color: pink
                name: Conso. dernier cycle
                fill_container: false
                icon: mdi:lightning-bolt
              
              - type: custom:mushroom-entity-card
                entity: sensor.debut_lave_vaisselle_template
                icon_color: light-green
                name: Début Lave-Vaisselle
              
              - type: custom:mushroom-entity-card
                # entity: input_datetime.fin_lave_vaisselle
                entity: sensor.fin_lave_vaisselle_template
                icon_color: red
                name: Fin Lave-Vaisselle
                fill_container: false
            columns: 2
          
          - type: custom:mushroom-entity-card
            entity: sensor.comptage_lave_vaisselle
            icon_color: orange
            name: Durée dernier cycle Lave-Vaisselle
            fill_container: false
            icon: mdi:clock-time-eight
          
          - type: custom:mini-graph-card
            entities:
              - entity: sensor.smartplug_lave_vaisselle_power
                unit: W
                color: "#ED4C67"
                name: Lave-Vaisselle
            line_width: 1
            icon: mdi:dishwasher
            hours_to_show: 24
            points_per_hour: 12
            hour24: true
            show:
              graph: line
              labels: true
              labels_secondary: true
              extrema: true

          - type: vertical-stack
            cards:
              - type: custom:mushroom-entity-card
                entity: sensor.smartplug_lave_vaisselle_energy
                icon_color: teal
                name: Consommation Totale Lave-Vaisselle
                fill_container: false
              - square: false
                type: grid
                cards:
                  - type: custom:mushroom-entity-card
                    entity: sensor.smartplug_lave_vaisselle_power
                    icon_color: orange
                    name: Puissance Lave-Vaisselle
                    fill_container: false
                  - type: custom:mushroom-entity-card
                    entity: select.smartplug_lave_vaisselle_power_outage_memory
                    icon_color: pink
                    name: Mode coupure
                columns: 2

l va te falloir créer les template et input_datetime et compagnie ^^

1 « J'aime »

Merci pour le code, je vais adapter à mes input et sensor.

Bonjour,

Je te remercie pour le travail founi, top.

Pourrais-tu partager ton code de l’automatisation pour démarrer le lave vaisselle ? (le mien ne fonctionne plus et input reste bloqué sur le 6 juin …

Autre question, a quoi correspond ‹ sensor.debut_lave_vaisselle_template › , c’est ton automatisation que tu transforme en sensor ? si oui comment as-tu fait :slight_smile:

Désolé je m’inspire, n’y connaissant pas grand chose.

Merci d’avance

Salut @cedric1
Voilà le code de l’automatisation de début de cycle :

YAML
alias: Mode - Technique - Lave-Vaisselle - Début du Cycle
description: ""
trigger:
  - type: power
    platform: device
    device_id: cfe3eeabcaeb78671f9d8dc44ebbfd04
    entity_id: 48a48ba6d6704d060de7620275286972
    domain: sensor
    id: lave-vaisselle-demarrage
    above: 2
    for:
      hours: 0
      minutes: 1
      seconds: 0
condition: []
action:
  - if:
      - condition: state
        entity_id: input_boolean.cycle_lave_vaisselle
        state: "off"
    then:
      - service: input_datetime.set_datetime
        data:
          datetime: "{{ now() }}"
        target:
          entity_id: input_datetime.debut_lave_vaisselle
      - service: input_boolean.turn_on
        data: {}
        enabled: true
        target:
          entity_id: input_boolean.cycle_lave_vaisselle
      - service: script.turn_on
        data: {}
        target:
          entity_id: script.auto_technique_lave_vaisselle_reset_conso_debut_de_cycle
    else: []
mode: single

Ce sensor est effectivement un template qui permet de formater comme je le veux l’écriture de la date, je n’ai pas trouvé comment faire autrement.


  # ╔══════════════════════════════════════════════════════════════════════════╗
  # ║ Entités pour afficher le temps de début et de fin des dernières machines ║
  # ╚══════════════════════════════════════════════════════════════════════════╝
  - name: "Début Lave-Vaisselle Template"
    unique_id: "debut_lave_vaisselle_template"
    state: >
      {%- set months = ["janvier", "février", "mars", "avril", "mai", "juin", "juillet", "août", "septembre", "octobre", "novembre", "décembre"] %}
      {%- set days = ["Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi", "Dimanche"]  %}
      {%- set days_short = ["Lun.", "Mar.", "Mer.", "Jeu.", "Ven.", "Sam.", "Dim."]  %}
      {%- set months_short = ["janv.", "févr.", "mars", "avr.", "mai", "juin", "juill.", "août", "sept.", "oct.", "nov.", "déc."] %}
      {{ days_short[as_datetime(states('input_datetime.debut_lave_vaisselle')).weekday()] + ' ' + as_datetime(states('input_datetime.debut_lave_vaisselle')).day | string + ' ' + months_short[as_datetime(states('input_datetime.debut_lave_vaisselle')).month-1] + ' ' + (as_datetime(states('input_datetime.debut_lave_vaisselle'))).strftime("à %H:%M") }}

J’ai le même capteur pour le temps de fin de cycle.

Les entités debut_lave_vaisselle et fin_lave_vaissellesont des input_datetime :

debut_lave_vaisselle:
  name: Début Lave-Vaisselle
  has_date: true
  has_time: true
  icon: mdi:dishwasher-alert

fin_lave_vaisselle:
  name: Fin Lave-Vaisselle
  has_date: true
  has_time: true
  icon: mdi:dishwasher-off

Merci, je vais tester cela ce soir :wink:

1 « J'aime »

Pas de soucis.
Si tu as un problème hésite pas .
Je me dis qu’il faudrait que je fasse un message complet expliquant tout de A à Z.

1 « J'aime »

Là, il y a un topic qui reprend de A à Z pour comment faire :

1 « J'aime »

Bonjour Roumano,

J’ai j’ai déjà lu et essayer plusieurs tuto. Je comprend pas pourquoi je n’ai plus mes automatisations qui fonctionnent pour le lave vaisselle.
je recommence et lisant d’autre topic et en cherchant mes erreurs et ce qui ne va plus ^^

Merci en tout cas :slight_smile:

Bonsoir,
Finalement ça prend plus de temps de calculer sa consommation (pourquoi d’ailleurs ?) que de faire la vaisselle :rofl:
Mais des choses intéressantes dans ce post.
Bob

5 « J'aime »

Je viens de tomber sur un cas intéressant, je ne sais pas si tu le gères.

J’ai mis un délai de démarrage sur ma machine. De ce fait elle consomme un peu puis ensuite se met en veille jusqu’au démarrage. ça m’a compté ça comme un cycle car j’ai un seuil de 3W pour savoir si elle est en route ou pas :smiley: Il va falloir que je l’augmente!

@MilesTEG1 quelle puissance as-tu mis pour la détection?

Salut @Cloom

  • Pour le lave-linge, c’est 3W ;
  • Pour le sèche-linge c’est 2W ;
  • Pour le lave-vaisselle c’est 2 W.

Je temporise avec une condition sur la durée : plus d’une minute à cette valeur pour le lancement, et plus de 10 min au-dessous pour la fin.

Mais en effet, si ta machine se met en veille au-dessous de ces valeurs lors d’un cycle différé, je ne gère pas ça… ça va te faire un micro cycle batard de quelques minutes avec quelques W XD

Je t’avoue que je n’ai pas trop regardé le cas du lancement différé…

En ce moment j’ai un bug difficile à trouver sur la valeur affichée ici lorsque le cycle est en cours :


Là sur la capture, je n’ai aps de souci apparent, mais quand le cycle est en route, j’ai une valeur trop grande pour être celle de la conso réelle…