Combinaisons de AND et OR

Bonjour,

Blueprint que je tente de modifier mais qui ne fonctionne pas (pas d’erreur dans les logs) :

      # ----- Mode Auto - conges
      - condition:
          condition: or
          conditions:
            - condition: state
              entity_id: !input entity_mode
              state: Conges
            - condition: and
              conditions:
                - condition: state
                  entity_id: !input entity_mode
                  state: Normal
                - condition: state
                  entity_id: sensor.template_fca
                  state: True    
        sequence:
          - service: automation.turn_on
            target:
              entity_id: !input entity_thermostat_tpi
          - service: switch.turn_on
            target:
              entity_id:
                - !input entity_schedule_conges
          - service: switch.turn_off
            target:
              entity_id:
                - !input entity_schedule_confort_semaine
                - !input entity_schedule_confort_weekend
                - !input entity_schedule_absent

Merci de reprendre ton message d’aide en mettant tout le contenu du blueprint, le contexte et une question.

En l’état, ça donne pas du tout envie d’aider…

Et dire simplement que ça ne marche pas, je te renvoi au sujet de demande d’aide :

https://forum.hacf.fr/t/aide-jai-un-probleme-je-demande-de-laide/1808

1 « J'aime »

Je comprends Clemalex mais j’ai posté uniquement la partie modifiée (condition). Tout le reste est OK.

Avant modification :

      # ----- Mode Auto - conges
      - conditions:
            - condition: state
              entity_id: !input entity_mode
              state: Conges 
        sequence:
          - service: automation.turn_on
            target:
              entity_id: !input entity_thermostat_tpi
          - service: switch.turn_on
            target:
              entity_id:
                - !input entity_schedule_conges
          - service: switch.turn_off
            target:
              entity_id:
                - !input entity_schedule_confort_semaine
                - !input entity_schedule_confort_weekend
                - !input entity_schedule_absent

Après modification :

# ----- Mode Auto - conges
      - condition:
          condition: or
          conditions:
            - condition: state
              entity_id: !input entity_mode
              state: Conges
            - condition: and
              conditions:
                - condition: state
                  entity_id: !input entity_mode
                  state: Normal
                - condition: state
                  entity_id: sensor.template_fca
                  state: True    
        sequence:
          - service: automation.turn_on
            target:
              entity_id: !input entity_thermostat_tpi
          - service: switch.turn_on
            target:
              entity_id:
                - !input entity_schedule_conges
          - service: switch.turn_off
            target:
              entity_id:
                - !input entity_schedule_confort_semaine
                - !input entity_schedule_confort_weekend
                - !input entity_schedule_absent

Je réitère la demande :

Peux tu partager le blueprint en entier, le contexte et ce que tu souhaites faire ?

Voici le blueprint complet :

blueprint:
  name: Pilotage chauffage
  description: Gestion des différents modes de chauffage - Stop  Hors-gel  Auto confort Auto eco 
  domain: automation

  input:
    entity_consigne:
      name: Consigne
      description: Champs d'entrée de la température de consigne (input number).
      selector:
        entity:
          domain: input_number
    entity_mode:
      name: Sélection du mode
      description: Entité de gestion du mode de gestion du chauffage (input_select)
      selector:
        entity:
          domain: input_select
    entity_schedule_confort_semaine:
      name: Schedule mode confort semaine
      description: Entité générée par schedule pour la planification du mode confort semaine (switch)
      selector:
        entity:
          domain: switch
    entity_schedule_confort_weekend:
      name: Schedule mode confort weekend
      description: Entité générée par schedule pour la planification du mode confort weekend (switch)
      selector:
        entity:
          domain: switch
    entity_schedule_conges:
      name: Schedule mode conges
      description: Entité générée par schedule pour la planification du mode congés (switch)
      selector:
        entity:
          domain: switch
    entity_schedule_absent:
      name: Schedule mode absent
      description: Entité générée par schedule pour la planification du mode absent (switch)
      selector:
        entity:
          domain: switch
    entity_thermostat_tpi:
      name: Thermostat
      description: Entité de gestion du thermostat TPI (automation)
      selector:
        entity:
          domain: automation


# Température pour le hors gel
variables:
  temperature_hg: 10

alias: Pilotage chauffage bureau Patrick
description: ''
trigger:
  - platform: state
    entity_id: !input entity_mode
condition: []
action:
  - choose:
      # ----- Mode Stop
      - conditions:
          - condition: state
            entity_id: !input entity_mode
            state: Arret
        sequence:
          - service: input_number.set_value
            data:
              value: 0
            target:
              entity_id: !input entity_consigne
          - service: switch.turn_off
            target:
              entity_id:
                - !input entity_schedule_confort_semaine
                - !input entity_schedule_confort_weekend
                - !input entity_schedule_conges
                - !input entity_schedule_absent
          - service: automation.turn_off
            target:
              entity_id: !input entity_thermostat_tpi
      # ----- Mode Hors-gel
      - conditions:
          - condition: state
            entity_id: !input entity_mode
            state: Hors-gel
        sequence:
          - service: automation.turn_on
            target:
              entity_id: !input entity_thermostat_tpi
          - service: input_number.set_value
            data:
              value: '{{temperature_hg}}'
            target:
              entity_id: !input entity_consigne
          - service: switch.turn_off
            target:
              entity_id:
                - !input entity_schedule_confort_semaine
                - !input entity_schedule_confort_weekend
                - !input entity_schedule_conges
                - !input entity_schedule_absent
      # ----- Mode Auto - confort
      - conditions:
          - condition: state
            entity_id: !input entity_mode
            state: Normal
        sequence:
          - service: automation.turn_on
            target:
              entity_id: !input entity_thermostat_tpi
          - service: switch.turn_on
            target:
              entity_id:
                - !input entity_schedule_confort_semaine
                - !input entity_schedule_confort_weekend
          - service: switch.turn_off
            target:
              entity_id:
                - !input entity_schedule_conges
                - !input entity_schedule_absent
      # ----- Mode Auto - conges
        condition:
          condition: or
          conditions:
            - condition: state
              entity_id: !input entity_mode
              state: Conges
            - condition: and
              conditions:
              - condition: state
                entity_id: !input entity_mode
                state: Normal
              - condition: state
                entity_id: sensor.template_fca
                state: True    
        sequence:
          - service: automation.turn_on
            target:
              entity_id: !input entity_thermostat_tpi
          - service: switch.turn_on
            target:
              entity_id:
                - !input entity_schedule_conges
          - service: switch.turn_off
            target:
              entity_id:
                - !input entity_schedule_confort_semaine
                - !input entity_schedule_confort_weekend
                - !input entity_schedule_absent
      # ----- Mode Eco
      - conditions:
          - condition: state
            entity_id: !input entity_mode
            state: Absent
        sequence:
          - service: automation.turn_on
            target:
              entity_id: !input entity_thermostat_tpi
          - service: switch.turn_on
            target:
              entity_id:
                - !input entity_schedule_absent
          - service: switch.turn_off
            target:
              entity_id:
                - !input entity_schedule_confort_semaine
                - !input entity_schedule_confort_weekend
                - !input entity_schedule_conges
    # ----- Mode manuel
    default:
      - service: switch.turn_off
        target:
          entity_id:
            - !input entity_schedule_conges
            - !input entity_schedule_confort_semaine
            - !input entity_schedule_confort_weekend
            - !input entity_schedule_absent
      - service: automation.turn_on
        target:
          entity_id: !input entity_thermostat_tpi
mode: single

Je souhaite que si jours feries (sensor.template_fca sur True) et entity_mode sur Normal, la planification du chauffage soit réglée sur celle des congés (personnes présentes dans la maison).
Avec les modifications effectuées, l’automatisation ne se créée pas mais je n’ai pas de message d’erreur.

1 « J'aime »

Sujet intéressent et permettra de faire des économies simplement pour tous😁

Ce blueprint est basé sur celui d’Argonaute que je modifie petit à petit pour l’adapter à mes besoins.
Le but de cette modification est de ne pas se lever un 1er novembre par exemple (ainsi que tous les autres jours féries qui tombe en semaine) et de se cailler dans la maison.
Donc si jours féries = on et thermostat sur Normal (Normal équivaut à la programmation du chauffage pour une semaine habituelle de travail) alors la planification passe en mode congés (maison chauffée toute la journée).
Il faut qu’également que le lendemain, la planification reprenne son cycle normal sans aucune action.
J’avais crée un script lua (sous Domoticz) qui me faisait ce genre de chose. J’essaye de le reproduire sous HA.

Il te faut simplement une automatisation qui passe entity_mode, ton sélecteur de chauffe en mode congé les jours fériés, en sauvegardant l’état précédent pour le remettre le lendemain.

Ce n’est pas le blueprint qu’il faut modifier mais jouer sur son entrée (le sélecteur).

Non ?

Ton automatisation est déjà écrite :

Donc si jours féries = on et thermostat sur Normal (Normal équivaut à la programmation du chauffage pour une semaine habituelle de travail) alors la planification passe en mode congés (maison chauffée toute la journée).
Il faut qu’également que le lendemain, la planification reprenne son cycle normal sans aucune action.

Plus qu’à la retranscrire

oui … aussi … j’ai songé à cette possibilité. J’ai pensé que la modification du blueprint était plus simple.

Le plus simple n’est pas le plus maintenable… :innocent:

Il faut essayer de dissocier les actions pour ne pas se retrouver avec une usine à gaz… :innocent:

Si tu prends 2 garages dont un où on prends le temps de tout ranger et un autre où on ne fait qu’ empiler les affaires… A un moment, même si les deux ont les mêmes fonctions, tu ne voudras plus toucher au garage mal rangé, de peur que quelque chose te tombe dessus…et que tout soit cassé :innocent:…(ou ça te prendra des heures pour un simple coup de tournevis)

Si la fonction première du blueprint est de gérer les chauffages avec comme déclencheur un mode, utilise le :+1:

Ça vaut ce que ça vaut, je donne juste ma façon de voir les choses :+1:

1 « J'aime »

Je comprends ton point de vue…
Pour l’automatisation, dans un sens c’est simple:

Si Férié (false à true) et Mode Normal → Tous les modes en mode congés

Par contre pour revenir au mode Normal, j’ai du mal à construire l’automatisation pour revenir au mode Normal. :thinking:

Edit:
Si Férié (false à true) et Mode Normal → Tous les modes en mode congés (peut être passer une variable à on)
Si Férié (true à false) et Mode Congés et variable à on → Tous les modes en mode normal (et passer variable à off)

Une autre idée ?

Quand tu veux revenir à un état précédent, il te faut une variable tampon qui sert à la mémorisation.

Dans ton cas, tu souhaites modifié un sélecteur donc il te faut un sélecteur tampon.

SI jour_ferié = vrai ALORS
  SI mode_de_chauffe = mode_normal ALORS
    Mémorisation du mode memo_mode_de_chauffe = mode_de_chauffe
    Affectation mode_de_chauffe = mode_congé
  FIN SI
FIN SI

SI jour_ferié = faux ALORS
  SI memo_mode_de_chauffe <>(différent) inactif ALORS
    Affectation mode_de_chauffe = memo_mode_de_chauffe     
    Mémorisation du mode memo_mode_de_chauffe = inactif
  FIN SI
FIN SI

En écrivant ce code, je ne suis pas sûr de l’utilité de la mémorisation du mode écrasé par le mode congé…car ce sera toujours le mode normal…

Je pense que peut importe le mode initial, il faut passer le mode en congé (et s’il existe un mode vacance à l’extérieur, il faut encore une automatisation qui désactive cette automatisation de gestion de jour férié)

Donc je reprendrais la 1ère pour la logique suivante :

SI jour_ferié = vrai ALORS
  SI mode_de_chauffe <> mode_congé ALORS
    Mémorisation du mode memo_mode_de_chauffe = mode_de_chauffe
    Affectation mode_de_chauffe = mode_congé
  FIN SI
FIN SI

Effectivement, la mémorisation du mode écrasé est inutile. L’automatisation ne sera active qu’a la condition que le mode est en Normal.
Par contre, pour revenir du mode congés au mode Normal … je réfléchis encore car :
Par exemple :
Je suis en congés une semaine donc mode congés enclenché le lundi
Mercredi est un jour férié , il ne faudrait pas que le mode chauffage passe en Normal le jeudi.

… d’où mon idée d’utiliser une variable.

J’en reviens au premier post de ce sujet :

# ----- Mode Auto - conges
        condition:
          condition: or
          conditions:
            - condition: state
              entity_id: !input entity_mode
              state: Conges
            - condition: and
              conditions:
              - condition: state
                entity_id: !input entity_mode
                state: Normal
              - condition: state
                entity_id: sensor.template_fca
                state: True    
        sequence:
          - service: automation.turn_on
            target:
              entity_id: !input entity_thermostat_tpi
          - service: switch.turn_on
            target:
              entity_id:
                - !input entity_schedule_conges
          - service: switch.turn_off
            target:
              entity_id:
                - !input entity_schedule_confort_semaine
                - !input entity_schedule_confort_weekend
                - !input entity_schedule_absent

Y’a t-il une erreur ?

J’ai crée les deux automatisation (passage en mode congés et retour au mode normal), je verrai si elle couvre tous les cas de figures :

- id: 'xxxxxxxxxxxx'
  alias: Chauffage ON jours Ferié
  description: ''
  trigger:
  - platform: state
    entity_id: sensor.template_fca
    from: 'False'
    to: 'True'
  condition:
  - condition: state
    entity_id: input_select.chauffage
    state: Normal
  action:
  - service: input_select.set_options
    target:
      entity_id:
      - input_select.chauffage
      - input_select.chauffage1
      - input_select.chauffage2
      - input_select.chauffage3
    data:
      options: Conges
  - service: input_boolean.turn_on
    target:
      entity_id: input_boolean.switch_chauffage_jours_feries
  mode: single
- id: 'xxxxxxxxxx'
  alias: Chauffage OFF jours Ferié
  description: ''
  trigger:
  - platform: state
    entity_id: sensor.template_fca
    from: 'True'
    to: 'False'
  condition:
  - condition: state
    entity_id: input_boolean.switch_chauffage_jours_feries
    state: 'on'
  - condition: state
    entity_id: input_select.chauffage
    state: Conges
  action:
  - service: input_select.select_option
    target:
      entity_id:
      - input_select.chauffage
      - input_select.chauffage1
      - input_select.chauffage2
      - input_select.chauffage3
    data:
      option: Normal
  - service: input_boolean.turn_off
    target:
      entity_id: input_boolean.switch_chauffage_jours_feries
  mode: single