Yaml : capteur avec plusieurs conditions

Bonjour,

Je souhaiterais créer un capteur qui réponde à plusieurs conditions. Déjà voici ce que j’aimerais faire :

binary_sensor:
	-platform: template
	  sensors:
		chauffage_salon_mode_confort:
		  friendly_name: "Chauffage confort salon"
		  value_template: >
			{% if states.input_datetime.heure_debut_confort_semaine_salon.state < states.input_datetime.heure_fin_confort_semaine_salon.state %}
				{% if (states.sensor.time.state > states.input_datetime.heure_debut_confort_semaine_salon.state) and (states.sensor.time.state < states.input_datetime.heure_fin_confort_semaine_salon.state) %}
				  on
				{% endif %}
			{% else %}
				{% if (states.sensor.time.state > states.input_datetime.heure_debut_confort_semaine_salon.state) or (states.sensor.time.state < states.input_datetime.heure_fin_confort_semaine_salon.state) %}
				  on
				{% endif %}
			{% endif %}
			{% if binary_sensor.vendredi %}
				{% if states.input_datetime.heure_debut_confort_weekend_salon.state < states.input_datetime.heure_fin_confort_weekend_salon.state < '23:59:59' %}
					{% if (states.sensor.time.state > states.input_datetime.heure_debut_confort_weekend_salon.state) and (states.sensor.time.state < states.input_datetime.heure_fin_confort_weekend_salon.state) %}
					  on
					{% endif %}
				{% else %}
					{% if (states.sensor.time.state > states.input_datetime.heure_debut_confort_weekend_salon.state) or (states.sensor.time.state < states.input_datetime.heure_fin_confort_weekend_salon.state) %}
					  on
					{% endif %}
				{% endif %}
			{% endif %}

Et encore dans ce qu’on voit là je n’ai pas mis toutes les conditions que je souhaiterais… Il y’en a plus que cela.

Voici l’idée derrière cela. J’essaie de créer un capteur qui m’indique lorsque la température doit être en mode confort dans mon appartement. Si ce capteur est à ON alors je suis en mode confort et si il est à OFF alors je suis en mode éco.

Le problème que j’ai c’est que j’ai beaucoup de conditions qui permettent de le mettre à ON et que l’on ne peux pas mettre plusieurs IF dans les conditions du capteur. Autre difficulté, comme vous le voyez dans mon exemple je souhaiterais n’avoir à définir que les conditions du ON et si aucune n’est remplie alors je voudrais qu’il soit à OFF.

Comment feriez vous cela?

Salut,

Alors je ne sais pas si l’approche d’un on/off est la plus simple… (perso je gère des consignes avec GitHub - aneeshd/schedule_state: Home Assistant (HA) sensor that returns a string based on a defined schedule, enabling further automations) mais techniquement, tu peux tout à fait faire X conditions directement

{% if xxxxxxxxxxxxx %}
  ...
{% elif yyyyyyyyyyy %}
  ...
{% elif xxxxxxxxxxxx %}
  ...
{% else %}
  ...
{% endif %}

1 IF
1 ELSE
mais autant de ELIF que tu veux

Niveau syntaxe à voir si

states.sensor.time.state

C’est pas plus lisible sous cette forme

states('sensor.time')

Bonjour,
je rajoute ma couche, autant utiliser le nouveau format de template.

exemple:

# Determine when the washing machine has a load running.
template:
  - binary_sensor:
      - name: "Washing Machine"
        delay_off:
          minutes: 5
        state: >
          {{ states('sensor.washing_machine_power')|float > 0 }}
1 « J'aime »

J’ai essayé de simplifier au maximum mon code :

template:
  - binary_sensor :
      - name: "Chauffage confort salon"
        state: >
          {% if binary_sensor.lundi and (states.sensor.time.state > input_datetime.lundi_debut_confort_salon_plage_1) and (states.sensor.time.state < input_datetime.lundi_fin_confort_salon_plage_1) %}
            on
          {% else %}
            off
          {% endif %}

Mais déjà comme ça il ne fonctionne pas. Lorsque je regarde son état il n’est ni à ‹ on ›, ni à ‹ off › mais en ‹ indisponible ›. Quelqu’un pourrait il me le corriger svp?

Je pense avoir un problème de syntaxe quelque part mais malgré tous mes essais je ne trouve pas?

Tu as déjà des pistes (autre chose qu’un sensor à toi et autre syntaxe)

Ensuite, tu peux tester la syntaxe dans les outils de dev => modèles

Et puis une entité pour savoir si on est lundi, c’est riche…

J’ai essayé cela sans succès.

J’ai même simplifié encore mon code :

template:
  - binary_sensor :
      - name: "Chauffage confort salon"
        state: >
          {% if binary_sensor.lundi %}
            on
          {% else %}
            off
          {% endif %}

Et même la ça ne fonctionne pas, je ne comprends pas.

Pourtant bien écrit ça marche…
Et ça c’est une syntaxe qui n’existe pas :

ça ne récupère pas l’état

Tu as les outils dev pour tester…

Oui je fais mes tests dans l’outil de dev pour essayer de voir d’où vient le problème.

C’est un capteur qui me permet de savoir quel jour de la semaine on est :


Le problème vient peut être de lui effectivement car lorsque je le supprime de mes équations ça fonctionne…

C’était le moyen que j’avais trouvé pour récupérer le jour de la semaine.

Oui ta syntaxe concernant la récupération de l’heure fonctionne. Mais la mienne également. Quand je disais que « j’ai essayé sans succès » je voulais dire que cela n’avait pas résolu mon problème.

Là non ! {% if binary_sensor.lundi %} c’est faux au niveau de la syntaxe. C’est pas la mienne et c’est pas la tienne non plus (pas de states. ni de .state)

Mais ça fait beaucoup pour l’usage. pas vraiment intéressant de créer 7 sensors quand tu peux faire le calcul à la volée

allez un coup de main :sweat_smile:

{% if is_state("binary_sensor.lundi", "on") %}
3 « J'aime »

Et puis la doc, ça aidera encore plus
https://www.home-assistant.io/docs/configuration/templating/#formatting-sensor-states

2 « J'aime »

Merci beaucoup c’était ça qu’il me fallait :slight_smile: