Automatisation NodeRed suivant état de plusieurs entités

Bonjour,

Mon problème

J’ai 9 entités de chauffages ( vannes) que je pilote suivant besoin.
Pendant la journée, rien ne chauffe, donc la chaudière doit être coupée.
J’utilise une automatisation sur HA, mais c’est pas si pertinent.

Je voudrai que lorsque toutes les vannes sont ‹ off ›, le bruleur soit ‹ off ›. Mais comment comparer les états de chaque entité pour avoir le résultat final et appliquer cela sur un 2 switch (circulateur et bruleur). Il faut aussi que si une vanne s’ouvre, le bruleur et le circulateur soit activés. ( avec nodered si possible)

les vannes sont pilotées individuellement par un thermostat et un calendrier. ( ça fonctionne bien)

merci pour vos éclairements.

Ma configuration


Texte à remplacer par votre configuration

Comment récupérer ma configuration :
Dans votre HA, Menu latéral Paramètres > Système > Corrections puis les trois petits points en haut a droite > Informations Système puis une fois en bas Copier


Salut,

tu passes par HA

mais le sujet parle et est dans la catégorie nodered ?

1 « J'aime »

Salut, c’est ce que j’ai voulu faire, mais il y a ce message quand tu veux faire un nouveau post: "=============================================================================
Cette catégorie est destinée à accueillir vos tutoriels sur Home Assistant et seulement cela.

Pour toute demande d’aide, il faut aller dans la catégorie Entraide Home Assistant.

Merci d’avance
============================================================================="

Donc oui, comme indiqué la bonne catégorie, c’est « Entraide Home Assistant ». Et pas la catégorie de la section « Tutoriel »

Reste la question initiale quand même : cela concerne-t-il vraiment Nodered ?

oui, car je desire passer cette automatisattion sur Nodered car j’ai des soucis avec l’automatisation ‹ normale ›.

A mon avis tu peux mettre ton automatisation normale ici, c’est une base indispensable pour avancer un peu.
Et mon avis perso, c’est que j’ai pas l’impression que ce soit plus simple ou plus facile avec Nodered.
Compter le nombre de vannes ouvertes c’est ultra simple avec un template, un exemple pour de lumières :

    {{ expand('light.parking','light.plafonnier_salon') | selectattr('state','eq','on') | list | count }}

Je pense que c’est aussi simple des deux côtés mais mieux intégré dans HA.

Quand on connait Nodered possible (si tu sais faire l’équivalent de ce comptage, perso ça m’intéresse par curiosité), mais j’ai pas l’impression que ce soit le cas là

Pour faire clair, avec l’automatisation intégrée, je dois faire une qui allume quand il y a une demande de chaleur de la part d’une pièce, et je dois faire une seconde automatisation qui coupe quand toutes les pièces qui n’ont pas de demande.

Mais, ça ne fonctionne pas toujours très bien.

J’ai les mêmes problèmes avec plusieurs automatisations.

Par contre, avec Nodered, je trouve que j’ai de meilleurs résultats avec plus de possibilités.

Je pense avoir réussi, faut encore quelques tests.

Voici le yaml des 2 automatisations intégrées puis celle de Nodered.

alias: Démarre Chaudière
description: ""
trigger:
  - platform: time_pattern
    seconds: /10
    enabled: true
condition:
  - condition: or
    conditions:
      - condition: state
        entity_id: switch.bureau
        state: "on"
        for:
          hours: 0
          minutes: 0
          seconds: 1
      - condition: state
        entity_id: switch.sejour
        state: "on"
        for:
          hours: 0
          minutes: 0
          seconds: 1
      - condition: state
        entity_id: switch.0x84fd27fffe3b1555
        state: "on"
        for:
          hours: 0
          minutes: 0
          seconds: 1
      - condition: state
        entity_id: switch.0x84fd27fffe3b18a3
        state: "on"
        for:
          hours: 0
          minutes: 0
          seconds: 1
      - condition: state
        entity_id: switch.douche
        state: "on"
        for:
          hours: 0
          minutes: 0
          seconds: 1
      - condition: state
        entity_id: switch.vestibule
        state: "on"
        for:
          hours: 0
          minutes: 0
          seconds: 1
      - condition: state
        entity_id: switch.sdb
        state: "on"
        for:
          hours: 0
          minutes: 0
          seconds: 1
      - condition: state
        entity_id: switch.d_j
        state: "on"
        for:
          hours: 0
          minutes: 0
          seconds: 1
      - condition: state
        entity_id: switch.mathy
        state: "on"
        for:
          hours: 0
          minutes: 0
          seconds: 1
action:
  - type: turn_on
    device_id: 995f472950f5874b42a2ceef72581a79
    entity_id: 00718adfc68679620e72bf32ea28e5b3
    domain: switch
  - type: turn_on
    device_id: 995f472950f5874b42a2ceef72581a79
    entity_id: c596efeb59ebe9307ab255b2ea462fcc
    domain: switch
mode: restart

alias: Couper chauffage
description: ""
trigger:
  - platform: time_pattern
    seconds: /5
    enabled: true
condition:
  - condition: and
    conditions:
      - condition: state
        entity_id: switch.bureau
        state: "off"
      - condition: state
        entity_id: switch.sejour
        state: "off"
      - condition: state
        entity_id: switch.0x84fd27fffe3b1555
        state: "off"
      - condition: state
        entity_id: switch.0x84fd27fffe3b18a3
        state: "off"
      - condition: state
        entity_id: switch.douche
        state: "off"
      - condition: state
        entity_id: switch.vestibule
        state: "off"
      - condition: state
        entity_id: switch.sdb
        state: "off"
      - condition: state
        entity_id: switch.d_j
        state: "off"
      - condition: state
        entity_id: switch.mathy
        state: "off"
action:
  - type: turn_off
    device_id: 995f472950f5874b42a2ceef72581a79
    entity_id: 00718adfc68679620e72bf32ea28e5b3
    domain: switch
  - type: turn_off
    device_id: 995f472950f5874b42a2ceef72581a79
    entity_id: c596efeb59ebe9307ab255b2ea462fcc
    domain: switch
mode: restart

[{"id":"76ec592a6d7698ec","type":"tab","label":"Chaudière","disabled":false,"info":"","env":[]},{"id":"7e14eaacaad0a011","type":"api-call-service","z":"76ec592a6d7698ec","name":"","server":"d423fbbc.365f58","version":7,"debugenabled":true,"action":"switch.turn_on","floorId":[],"areaId":[],"deviceId":[],"entityId":["switch.4_channel_chaudiere_l2","switch.4_channel_chaudiere_l1"],"labelId":[],"data":"","dataType":"jsonata","mergeContext":"","mustacheAltTags":false,"outputProperties":[],"queue":"all","blockInputOverrides":false,"domain":"switch","service":"turn_on","x":380,"y":140,"wires":[[]]},{"id":"d717890f20f6556d","type":"api-call-service","z":"76ec592a6d7698ec","name":"","server":"d423fbbc.365f58","version":7,"debugenabled":true,"action":"switch.turn_off","floorId":[],"areaId":[],"deviceId":[],"entityId":["switch.4_channel_chaudiere_l2","switch.4_channel_chaudiere_l1"],"labelId":[],"data":"","dataType":"jsonata","mergeContext":"","mustacheAltTags":false,"outputProperties":[],"queue":"all","blockInputOverrides":false,"domain":"switch","service":"turn_off","x":380,"y":60,"wires":[[]]},{"id":"853f7bdd2fdc5521","type":"trigger-state","z":"76ec592a6d7698ec","name":"Chauffage","server":"d423fbbc.365f58","version":5,"inputs":0,"outputs":2,"exposeAsEntityConfig":"","entities":{"entity":["switch.bureau","switch.vestibule","switch.sejour","switch.verriere","switch.douche","switch.mathy","switch.d_j","switch.sdb","switch.0x84fd27fffe3b1555","switch.0x84fd27fffe3b18a3"],"substring":[],"regex":[]},"debugEnabled":true,"constraints":[{"targetType":"entity_id","targetValue":"switch.bureau","propertyType":"current_state","propertyValue":"new_state.state","comparatorType":"is","comparatorValueDatatype":"str","comparatorValue":"off"},{"targetType":"entity_id","targetValue":"switch.vestibule","propertyType":"current_state","propertyValue":"new_state.state","comparatorType":"is","comparatorValueDatatype":"str","comparatorValue":"off"},{"targetType":"entity_id","targetValue":"switch.sejour","propertyType":"current_state","propertyValue":"new_state.state","comparatorType":"is","comparatorValueDatatype":"str","comparatorValue":"off"},{"targetType":"entity_id","targetValue":"switch.verriere","propertyType":"current_state","propertyValue":"new_state.state","comparatorType":"is","comparatorValueDatatype":"str","comparatorValue":"off"},{"targetType":"entity_id","targetValue":"switch.douche","propertyType":"current_state","propertyValue":"new_state.state","comparatorType":"is","comparatorValueDatatype":"str","comparatorValue":"off"},{"targetType":"entity_id","targetValue":"switch.mathy","propertyType":"current_state","propertyValue":"new_state.state","comparatorType":"is","comparatorValueDatatype":"str","comparatorValue":"off"},{"targetType":"entity_id","targetValue":"switch.d_j","propertyType":"current_state","propertyValue":"new_state.state","comparatorType":"is","comparatorValueDatatype":"str","comparatorValue":"off"},{"targetType":"entity_id","targetValue":"switch.sdb","propertyType":"current_state","propertyValue":"new_state.state","comparatorType":"is","comparatorValueDatatype":"str","comparatorValue":"off"},{"targetType":"entity_id","targetValue":"switch.0x84fd27fffe3b1555","propertyType":"current_state","propertyValue":"new_state.state","comparatorType":"is","comparatorValueDatatype":"str","comparatorValue":"off"},{"targetType":"entity_id","targetValue":"switch.0x84fd27fffe3b18a3","propertyType":"current_state","propertyValue":"new_state.state","comparatorType":"is","comparatorValueDatatype":"str","comparatorValue":"off"}],"customOutputs":[],"outputInitially":false,"stateType":"str","enableInput":false,"x":100,"y":60,"wires":[["d717890f20f6556d"],["7e14eaacaad0a011"]]},{"id":"d423fbbc.365f58","type":"server","name":"Home Assistant","addon":true}]

Pour moi la première devrait ressembler à ça

alias: Démarre Chaudière
description: ""
trigger:
  - platform: time_pattern
    seconds: /10
    enabled: true
condition:
  - condition: template
    value_template: >-
       {{ expand('switch.0x84fd27fffe3b1555','switch.0x84fd27fffe3b18a3','switch.bureau','switch.d_j','switch.douche','switch.mathy','switch.sdb','switch.sejour','switch.vestibule') | selectattr('state','eq','on') | list | count }} >= 1
action:
  - type: turn_on
    device_id: 995f472950f5874b42a2ceef72581a79
    entity_id: 00718adfc68679620e72bf32ea28e5b3
    domain: switch
  - type: turn_on
    device_id: 995f472950f5874b42a2ceef72581a79
    entity_id: c596efeb59ebe9307ab255b2ea462fcc
    domain: switch
mode: restart

A toi de jouer pour le deuxième si ça fonctionne

Ok pour le « et » et le « ou » logique . mais si on ajoute les aléas de commutation des vannes, alors sous HA il se peut que les commandes soient activées d’une façon aléatoire et donnent un déclenchement intempestifs de la chaudière. D’un point de vue du chauffagiste, il faut impérativement ajouter des délais de validation pour être sûr que la vanne soit ouverte, ie fermée. Un délai de validation est nécessaire je pense. Sous nodered, il sera plus facile de gérer les aléas et surtout de s’apercevoir que les aléas peuvent biaiser les asservissements…

Salut
Sinon tu mets tous tes switchs dans un groupe et tu te sert de l’état du groupe comme déclencheur.
Plus besoin de tes conditions ni de faire des déclenchements toutes les 5 secondes.

Bof, il n’existe pas de système 100% efficace et 100% sur.
Plus ton algo est complexe, certes tu sécurise un peu, mais surtout plus tu ajoutes de bugs…
Et puis bon NR, ça marche mais de là dire que c’est plus fiable HA, c’est une affirmation que je ne franchis pas…

1 « J'aime »

Je ne vois pas ce que Node-Red apporte en plus que HA.

Tu peux très bien rajouter des contrôles pour ajouter ces différents délais de validation sous HA.

1 « J'aime »

Bonjour,

Les dysfonctionnements que j’ai remarqués sont principalement le non déclenchement ou l’arrêt loupé de la chaudière.

En regardant de plus près, les logs… l’automatisation ne s’est pas déclenchée. En testant, j’ai bien tout les switchs sur off et la chaudière tourne toujours.

Or le but est d’optimiser les temps de fonctionnement pour diminuer la consommation et garder du confort. Pour chauffer la maison de façon traditionnelle, c’est à dire avec un thermostat d’ambiance, des vannes thermostatiques sur chaque radiateur, et 2 pièces en chauffage sol, nous partons sur 4000 l de mazout par an. sur les 12 derniers mois, on arrive grâce à cette optimisation, à un peu plus de 1000 l de mazout.

Lorsque la chaudière est active pendant la journée, elle peut consommer jusqu’à 4-6 litres juste pour pas grand chose. Tous les jours pendant 6 mois ça fait 900 litres et je ne parle mème pas de la nuit ou il fait encore plus froid. (consommation du bruleur: environ 3,5 l par heure)

Il est donc pour moi important d’avoir la meilleure optimisation, c’est pourquoi, j’ai une meilleure vision de ma programmation sur Nodered que sur HA. Mais je suis ouvert à la discussion.

Bonne journée

Salut

Le non déclenchement d’une automatisation c’est lié à deux choses :

  • Soit l’évènement (trigger) n’arrive pas
  • Soit l’automatisation est mal codée (algo, oubli, bug etc)

Dans tous les cas, en ajoutant une couche supplémentaire avec Nodered, on ne compense rien.

  • Si l’événement n’est pas dans HA, il ne sera pas plus visible par Nodered
  • Si l’algorithmique est mauvaise côté HA, à code équivalent côté NR, le résultat est le même
  • Et on profite des bug de HA et ceux de NR en plus…

Edit : on est tout à fait libre de se sentir plus à l’aise avec l’un ou l’autre, ça c’est subjectif.
Par contre utiliser les 2 ça nécessite bien savoir comment les 2 fonctionnent. 2 fois plus de lecture de doc, de debug, de maintenance.
Et si le problème actuel est que la chaudière consomme 900 litres de trop sur 6 mois, je pense que c’est plus un souci d’algo que d’efficacité/stabilité