Template Binary Sensor

Bonjour,

je voudrais un peu d’aide, pour ma porte de garage j’ai mis 2 capteurs d’ouverture de portes aqara.
Un en bas (binary_sensor.detection_porte_garage_fermee) qui quand la porte de garage est fermée est sur off et un autre (binary_sensor.detection_porte_garage_ouverte) en haut qui quand la porte et ouverte est sur off.

je voudrais donc que si binary_sensor.detection_porte_garage_fermee est à off et binary_sensor.detection_porte_garage_ouverte est à on mon nouveau binary sensor soit sur off et si non à ON.

Voici mon template, il reste tout le temps à off :

- platform: template
    sensors:
      garage_etat:
        friendly_name: "Etat Porte de Garage"
        device_class: garage_door
        value_template: >-
          {% if states.binary_sensor.detection_porte_garage_fermee == 'off' and states.binary_sensor.detection_porte_garage_ouverte == 'on' %}
            off
          {% else %}
            on
          {% endif %}

Merci pour votre aide

Bonsoir,

La prochaine fois que tu met du code, utilise les balises ‹ Texte préformaté › puis ‹ citation ›, cela évitera à l’éditeur de modifier ton code initial (les '' qui se transforment en <>) et permettra de conserver l’indentation :+1:

Pour en revenir à ton problème, il te manque la propriété .state à la fin de chaque capteur :

states.binary_sensor.detection_porte_garage_fermee
devient
states.binary_sensor.detection_porte_garage_fermee.state

donc pour ton cas, ce qui fonctionnera est (édité):

- platform: template
    sensors:
      garage_etat:
        friendly_name: 'Etat Porte de Garage'
        device_class: garage_door
        value_template: >-          
          {% if states.binary_sensor.detection_porte_garage_fermee.state == 'off' and states.binary_sensor.detection_porte_garage_ouverte.state == 'on' %}
          false
          {% else %}
          true
          {% endif %}

Pour aller plus loin :
le code ci-dessous te permettra de récupérer dans un sensor et non dans un binary_sensor l’état de la batterie de tes capteurs :

- platform: template
  sensors:
    detection_porte_garage_fermee_batterie:
        unit_of_measurement: '%'
        entity_id:
          - binary_sensor.detection_porte_garage_fermee
        value_template: "{{states.binary_sensor.detection_porte_garage_fermee.attributes.battery_level }}"  

Pour info :
Dans la partie ‹ Outils de développement › , il y a un onglet ‹ Modèle › qui te permet de tester ton code en direct en tenant compte de l’état de tes capteurs actuels.

Cet onglet est très utile et te fait gagner un temps précieux de ‹ débug › :
image

N’hésite pas si tu as des questions concernant ma réponse.

J’ai bien mit le texte preformaté mais pas la citation.

Je regarde tout ça demain matin.
Merci beaucoup en tout

Pas de soucis et fait nous un retour :+1:

Salut,

effectivement avec ton code ça fonctionne dans la partie développement lorsque j’intégre binary_sensor.garage_etat à Lovelace il reste en permanence à Off :’(

quesque j’ai loupé encore ?

Pour la batterie j’ai une entitée spécifique sur ZHA

En tout cas la partie modèle dans dev est effectivement très pratique, merci

Bizarre, car je l’avais testé dans ‹ Modèle ›.

As tu bien relancé Home assistant pour mettre a jour le capteur ?

Et dans la partie modèle, est que le fonctionnement est correct ?

Pour être sûr de quand se fait la mise a jour de ton capteur tu peux ajouter entity_id' :

- platform: template
    sensors:
      garage_etat:
        friendly_name: 'Etat Porte de Garage'
        device_class: garage_door
        entity_id: binary_sensor.detection_porte_garage_fermee, binary_sensor.detection_porte_garage_ouverte
        value_template: >-          
          {% if states.binary_sensor.detection_porte_garage_fermee.state == 'off' and states.binary_sensor.detection_porte_garage_ouverte.state == 'on' %}
          off
          {% else %}
          on
          {% endif %}

Le fait d’ajouter entity_id force la mise à jour du capteur lorsque l’état du ou des capteurs renseignés change.

oui dans la partie modèle le fonctionnement est correct.

je viens d’ajouter entity_id et reboot de HA, ça ne change rien il reste sur off, j’y comprends rien

En prenant exemple dans modele j’ai essayé comme ça

  {% if is_state("binary_sensor.detection_porte_garage_fermee", "off") and
  is_state("binary_sensor.detection_porte_garage_ouverte", "on") -%}
    off
  {%- else -%}
    on
  {%- endif %}

même résultat.
Par contre si je vais dans développement -> Etats et que je force l’état à On, si mon capteur bouge garage_etat repasse à off

Vu que tu crée un binary_sensor met plutôt true et false plutôt que on et off.

Garde is_state car mieux géré que states..

C’est bien ça, true et false !
pourtant dans la doc il me semble qu’il parle de on et off

en tout cas merci beaucoup pour ton aide

Pour la doc, il est dit que l’état ne peut être que on ou off mais que la valeur prend on si la formule renvoie true.

Je viens de mettre à jour le post 2.

N’hésite pas à le marquer comme solution.

c’est fait

encore merci