Migration Node Red vers HA

Bon en fait le code du message n°25 ne fonctionne pas si bien que ça …

Cela faisait plusieurs matins (suite à nos douches) que le déshumidificateur ne démarrait pas sans ouvrir/fermer la fenêtre.

Ce matin j’ai pu récupérer les graphiques des capteurs :

On voit que la prise s’est bien activée lors du passage de 44.xx à 45.xx à 7:39:52 (d’ailleurs excellente réactivité car c’est exactement la même heure entre le passage du seuil d’humidité et l’activation de la prise).

Mais je ne comprend pas pourquoi elle se désactive à 7:56:41:thinking:
Je ne vois qu’une évolution de l’humidité à 7:54:15 qui passe de 45.18 à 45.32 … Mais 86s de réactivité me semble beaucoup et surtout la valeur reste au dessus de 45.00.

La seule variation proche de 7:56:41 reste le capteur de contact qui a son link_quality qui passe de 40 à 42 à 7:56:40 ??? mais pourquoi cette donnée aurait fait modifier l’automatisation alors que je n’ai aucune condition dessus ???
(j’ai vérifié, le capteur de contact n’a pas changé de valeur entre 7:30 et 8:00, il est resté à Fermé.)

:thinking: :thinking: :thinking:

Des idées peut-être ?

Je ne pensais pas que l’avais mis en production…

En fait le problème vient de tes conditions et du cas default.

Le code que tu as se déclenche sur tous les changements d’humidité en dehors de la valeur 45.
Ensuite, tu vérifie si la valeur est au dessus de 45 et si la prise est éteinte et si la fenêtre est fermée.

Et le fait que tu ai mis le cas défaut, au prochain changement d’humidité, ça éteint car cas par défaut…(la prise étant déjà allumée…)

Je ne me rappelle pas pourquoi tu n’avais pas retenu ma proposition ?

Bon c’est sûr, c’est lié au variation de link_quality du capteur aqara_open_sdb_linkquality !

Voici les évolutions de la prise du déshumidificateur :

Les évolutions du capteur d’humidité aqara_temp_sdb_humidity :

Les évolutions du link_quality du capteur de contact aqara_open_sdb_linkquality :

Détail des évolutions des valeurs
Heure ikea_prise_sdb aqara_open_sdb_linkquality aqara_temp_sdb_humidity Commentaires
Inactive 39 43.92
7:39:52 bascule vers Active 39 45.14 Normal, c’est le passage du seuil de l’humidité qui active la prise
7:50:24 Active 39 45.18
7:56:40 Active 42
7:56:41 bascule vers Inactive 42 Pas normal la valeur de l’humidité est toujours au dessus de 45%
8:01:18 Inactive 60 45.64
9:18:21 Inactive 60 67.95
9:37:00 Inactive 60
9:37:01 bascule vers Active 60 Pas normal, la valeur de l’humidité est toujours au dessus de 45%
9:40:37 Active 60 61.89
9:47:59 Active 60 60.11
10:17:58 Active 60 56.10
10:27:08 bascule vers Inactive 26 Pas normal, la valeur de l’humidité est toujours au dessus de 45%
10:42:55 Inactive 31
11:17:16 Inactive 31 60.55
11:17:17 bascule vers Active 31 Pas normal, la valeur de l’humidité est toujours au dessus de 45%
11:17:24 Active 31 58.15

Pourquoi le link_quality ferait basculer l’automatisation … :thinking:

:pleading_face:, je sais plus pourquoi …

Je files de suite faire le test avec ta proposition …

@Clemalex, j’ai fait le test avec ton code :

  1. Aucune erreur à la vérification de HA.
  2. Redémarrage de HA
  3. Le déshumidificateur démarre
  4. J’ouvre la fenêtre => Le déshumidificateur tourne toujours
  5. Je referme la fenêtre => Le déshumidificateur tourne toujours
  6. Passage de l’humidité de 45.07% à 44.07% (via l’outil de développement de HA) => Le déshumidificateur tourne toujours
  7. Retour à 45.07% => Le déshumidificateur tourne toujours
  8. Passage de 45.07% à 44.15% (naturellement) => Le déshumidificateur tourne toujours

J’attend le passage en dessous de 44% pour être sûr …

Détail du code utilisé
#
# Gestion de la déshumidification de la salle de bains
#
- mode: single
  alias: "Gestion de la déshumidification (test)"
  description: "Gestion de la déshumidification de la salle de bains"
  trigger:
    - platform: state
      entity_id: binary_sensor.aqara_open_sdb_contact
    - platform: state
      entity_id: sensor.aqara_temp_sdb_humidity
  condition: []
  action:
    - choose:
        - conditions:
            - condition: or
              conditions:
                - condition: state
                  entity_id: binary_sensor.aqara_open_sdb_contact
                  state: 'on'
                - condition: numeric_state
                  entity_id: sensor.aqara_temp_sdb_humidity
                  below: '45'
          sequence:
            - condition: state
              entity_id: switch.ac
              state: 'on'
            - service: switch.turn_off
              target:
                entity_id: switch.ikea_prise_sdb
        - conditions:
            - condition: numeric_state
              entity_id: sensor.aqara_temp_sdb_humidity
              above: '44'
          sequence:
            - condition: state
              entity_id: switch.ikea_prise_sdb
              state: 'off'
            - service: switch.turn_on
              target:
                entity_id: switch.ikea_prise_sdb
      default: []

Étrange je regarderais ce soir…

Edit:

T’as oublié de changer l’entité switch.ac par switch.ikea_prise_sdb donc forcément l’extinction ne fonctionne pas… :upside_down_face: :sweat_smile:

1 « J'aime »

Et voici le fonctionnement :

animate

Je pensais que cette automatisation correspondait à ton besoin initial.

Je ne vois pas pourquoi tu n’est pas partis dessus… :sweat_smile:

PS: J’ai mis le nom chauffage car m’a gourré ! C’est bien sûr le déshumidificateur :upside_down_face: :wink:

Je modifierai demain, mais comme toujours avec toi, ça doit être ça :wink:

Comment tu fais pour avoir cette carte avec les entrées et la sortie de ton automation ?
C’est vachement pratique plutôt que de passer par les outils de Dev

C’est juste une cartes entités… :innocent: :blush:

@Clemalex, c’est toujours simple avec toi :grin:

J’ai beau créer une carte entité, je n’arrive pas à avoir un switch sur le capteur de contact et un bouton incrément sur les valeurs d’humidité.

type: entities
entities:
  - entity: binary_sensor.aqara_open_sdb_contact
    name: Fenêtre
  - entity: sensor.aqara_temp_sdb_temperature
    name: Température
  - entity: sensor.aqara_temp_sdb_humidity
    name: Humidité
  - entity: switch.ikea_prise_sdb
    name: Déshumidificateur
  - type: divider
  - type: buttons
    entities:
      - entity: binary_sensor.aqara_open_sdb_contact
        name: Contact
title: Déshumidificateur
show_header_toggle: false
state_color: true

La seule entité que je peux modifier c’et la prise mais c’est normal, c’est un switch d’origine.
Une petite piste ?

Oui, pour la mise au point, je passe directement par des input_*.

Ce n’est qu’après avoir vérifié le fonctionnement que je bascule sur les entités de production.

Cela a le mérite d’être indépendant des mises à jour des entités et de rester sur son canapé pour faire tests :sweat_smile: sans devoir aller ouvrir une fenêtre ni allumer une prise… :innocent: :blush:

D’où ma phrase hier :

Il est préférable de faire la mise au point sur des entités créées, plutôt que les entités cibles finales.

Pas tout compris là … :thinking:

Ce que j’ai compris :

  1. Tu crées une entité input_aqara_open_sdb_contact qui correspond à aqara_open_sdb_contact dans le réel en suivant cette doc Input Boolean
  2. Dans la carte entities, tu utilises cette entité comme entrée que tu peux à loisir modifier via le switch
  3. Dans l’automation, tu remplaces l’entité aqara_open_sdb_contact par l’entité virtuel que tu as créé input_aqara_open_sdb_contact

C’est bien ça ?

Et pour l’humidité, tu prends un input_number ? (comme dans cette doc input number)

Oui, c’est ça… :innocent:

Il faut essayer d’utiliser le même type que l’entité cible…

Il faut prendre le coup de le faire pour chaque mise au point d’automatisation afin de mettre en production une automatisation dérisquée.

@Clemalex,j’y ai cru mais non :unamused:

Voilà ce que j’ai mis dans le fichier configuration.yaml pour créer mes nouveaux inputs :

input_boolean:
  contact_sdb:
    name: Fenêtre
  deshumidifier_sdb:
    name: Déshumidificateur
input_number:
  humidity_sdb:
    name: Humidité
    initial: 45
    min: 0
    max: 100
    step: 1
    mode: box

Avec cette configuration, je vois bien mes nouvelles entités dans la Configuration
image

J’ai bien mon automation activée :

Puis j’ai créer une carte entités :

type: entities
entities:
  - entity: input_boolean.contact_sdb
    name: Fenêtre
  - entity: input_number.humidity_sdb
    name: Humidité
  - entity: input_boolean.deshumidifier_sdb
    name: Déshumidificateur
  - entity: automation.gestion_de_la_deshumidification_test
title: Déshumidificateur (simulation)
show_header_toggle: false
state_color: true

Mais lorsque je modifie le switch Fenêtre ou que j’augmente ou baisse la valeur de l’Humidité le switch Déshumidificateur ne bouge pas.
Il me manque quelque chose … :thinking:

Tu as mis quel code ? car aucune raison que cela ne fonctionne pas chez toi si ça fonctionne chez moi, à moins de se tromper dans les affectations.

:information_source: Pour la mise au point, je ne passe pas par le YAML pour créer les entités mais directement par l’interface graphique car ce n’est que de la mise au point et cela évite de devoir redemarrer, idem pour les automatisation, je les mets au points dans Lovelace.

J’ai mis ce code pour l’automation :

#
# Gestion de la déshumidification de la salle de bains
#
- mode: single
  alias: "Gestion de la déshumidification (test)"
  description: "Gestion de la déshumidification de la salle de bains"
  trigger:
    - platform: state
      entity_id: input_boolean.contact_sdb
    - platform: state
      entity_id: input_number.humidity_sdb
  condition: []
  action:
    - choose:
        - conditions:
            - condition: or
              conditions:
                - condition: state
                  entity_id: input_boolean.contact_sdb
                  state: 'on'
                - condition: numeric_state
                  entity_id: input_number.humidity_sdb
                  below: '45'
          sequence:
            - condition: state
              entity_id: input_boolean.deshumidifier_sdb
              state: 'on'
            - service: switch.turn_off
              target:
                entity_id: input_boolean.deshumidifier_sdb
        - conditions:
            - condition: numeric_state
              entity_id: input_number.humidity_sdb
              above: '44'
          sequence:
            - condition: state
              entity_id: input_boolean.deshumidifier_sdb
              state: 'off'
            - service: switch.turn_on
              target:
                entity_id: input_boolean.deshumidifier_sdb
      default: []

Il correspond à ton code mais avec toutes les entités remplacées par les inputs précédemment créées.

:expressionless:

:sweat_smile: :innocent:

input_boolean.turn_off

La même pour l’activation…

:+1:

@Clemalex, super, ça fonctionne nickel. :+1:

Je vais finaliser l’automation en Prod et vendredi prochain, je rédiges un tuto sur « Comment tester vos automations via des entités virtuels ». Je pense que ce tuto pourra intéresser pas mal de personne pour pouvoir débugger l’automation sur laquelle il bosse. T’en penses quoi ?
Si tu as des solutions pour débugger pas-à-pas une automation, je suis preneur pour le tuto.

Désolé mais je pourrais pas avant vendredi car je profites que je suis en chômage partiel les vendredis pour les gros chantier sur la domotique :grin:

Un grand merci à toi, j’en apprend de plus en plus sur HA et surtout les automations grâce à toi, MERCI !

Pour la mise mise au point, une seul et unique action (au lieu de faire des input_*) la notification persistent :

en passant par Lovelace, pas besoin forcément de l’id de notification

C’est ce que je fais du moins, cela permet de tester en créant seulement les entrées. Et ensuite, après la mise au point, on peut les laisser dans la prod quelques temps pour voir…

Mais si on ne veux pas être surchargé de notifications (uniquement dans Lovelace) , alors passer par un input_text à la place afin de profiter de l’historique de l’entité.

On verra à la relecture après :+1: