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)
Makai
Septembre 7, 2024, 7:17
5
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']
Makai
Septembre 7, 2024, 8:44
7
Ok je viens de voir que c’était un input_select
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
Ça fonctionne !
Par curiosité, pourquoi enlever les guillemets ?
Makai
Septembre 7, 2024, 11:05
9
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 »