Comparaison de valeur dans automatisation

Bonjour,

Mon problème

J’essaie de faire un bloc « if » dans une automatisation, qui est vrai si la valeur d’un capteur (batterie de voiture) est inférieure à une valeur définie sur un input_select :

Quand je teste dans les outils de développement cela fonctionne :

Mais dans l’automatisation, non :

J’utilise ceci en template :

"{{ states('sensor.why_battery') | float(0) <= states('input_select.tesla_charge_level')
 | float(0) }}"

Mon input_select :

Bonjour,
par défaut c’est un nombre entier et pas a virgule. Remplace le |float(0) par |int(0)

{{ states('sensor.why_battery') | int(0) <= states('input_select.tesla_charge_level')
 | int(0) }}

Hello @WarC0zes !

Je viens de tester avec ta solution : idem, la condition n’est pas remplie (batterie à 50, input_select à 75 toujours)

Bonjour,

Pourquoi ne pas utiliser une condition de type numeric_state ?

Hello @Makai, j’ai essayé également :

Mais lors du test j’obtiens :

expected float for dictionary value @ data[0]['below']

Ok je viens de voir que c’était un input_select :slight_smile:

Du coup je dirais comme @WarC0zes mais il vous faut enlever les guillemets dans le contenu du modèle pour avoir :


  - if:
      - condition: template
        value_template: >-
          {{ states('sensor.why_battery') | int(0) <= states('input_select.tesla_charge_level')
 | int(0) }}

Merci :wink:
Ça fonctionne !

Par curiosité, pourquoi enlever les guillemets ?

Très bonne question ! En fait parce qu’il y a >- au dessus indiquant que tout ce qui suis est le template (et donc pas besoin de le délimiter par les guillemets)

1 « J'aime »