Re
Bon j’ai essayé ça
sensor:
- platform: template
sensors:
max_value_kona_odometer:
friendly_name: "Valeur maximale kona odometer"
value_template: >
{% set max_value = states('sensor.kona_odometer') %}
{% for state in states.sensor %}
{% if state.entity_id == 'sensor.kona_odometer' %}
{% continue %}
{% endif %}
{% if state.state != 'unknown' %}
{% set state_float = state.state | float %}
{% if state_float > max_value | float %}
{% set max_value = state_float %}
{% endif %}
{% endif %}
{% endfor %}
{{ max_value }}
Et c’est encore pire. Le capteur est « indisponible » et j’ai ça comme erreur dans les logs. On dirait qu’il n’aime pas l’instruction « float » ou que je l’utilise mal en tous cas
2024-03-20 18:16:01.806 ERROR (MainThread) [homeassistant.helpers.event] Error while processing template: Template<template=({% set max_value = states('sensor.kona_odometer') %} {% for state in states.sensor %}
{% if state.entity_id == 'sensor.kona_odometer' %}
{% continue %}
{% endif %}
{% if state.state != 'unknown' %}
{% set state_float = state.state | float %}
{% if state_float > max_value | float %}
{% set max_value = state_float %}
{% endif %}
{% endif %}
{% endfor %} {{ max_value }}) renders=2>
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/helpers/template.py", line 2037, in forgiving_float_filter
return float(value)
^^^^^^^^^^^^
ValueError: could not convert string to float: 'Situation normale'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/helpers/template.py", line 573, in async_render
render_result = _render_with_context(self.template, compiled, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/src/homeassistant/homeassistant/helpers/template.py", line 2364, in _render_with_context
return template.render(**kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/site-packages/jinja2/environment.py", line 1301, in render
self.environment.handle_exception()
File "/usr/local/lib/python3.12/site-packages/jinja2/environment.py", line 936, in handle_exception
raise rewrite_traceback_stack(source=source)
File "<template>", line 6, in top-level template code
File "/usr/src/homeassistant/homeassistant/helpers/template.py", line 2040, in forgiving_float_filter
raise_no_default("float", value)
File "/usr/src/homeassistant/homeassistant/helpers/template.py", line 1668, in raise_no_default
raise ValueError(
ValueError: Template error: float got invalid input 'Situation normale' when rendering template '{% set max_value = states('sensor.kona_odometer') %} {% for state in states.sensor %}
{% if state.entity_id == 'sensor.kona_odometer' %}
{% continue %}
{% endif %}
{% if state.state != 'unknown' %}
{% set state_float = state.state | float %}
{% if state_float > max_value | float %}
{% set max_value = state_float %}
{% endif %}
{% endif %}
{% endfor %} {{ max_value }}' but no default was specified
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/helpers/template.py", line 699, in async_render_to_info
render_info._result = self.async_render(
^^^^^^^^^^^^^^^^^^
File "/usr/src/homeassistant/homeassistant/helpers/template.py", line 575, in async_render
raise TemplateError(err) from err
homeassistant.exceptions.TemplateError: ValueError: Template error: float got invalid input 'Situation normale' when rendering template '{% set max_value = states('sensor.kona_odometer') %} {% for state in states.sensor %}
{% if state.entity_id == 'sensor.kona_odometer' %}
{% continue %}
{% endif %}
{% if state.state != 'unknown' %}
{% set state_float = state.state | float %}
{% if state_float > max_value | float %}
{% set max_value = state_float %}
{% endif %}
{% endif %}
{% endfor %} {{ max_value }}' but no default was specified
2024-03-20 18:16:01.821 ERROR (MainThread) [homeassistant.components.template.template_entity] TemplateError('ValueError: Template error: float got invalid input 'Situation normale' when rendering template '{% set max_value = states('sensor.kona_odometer') %} {% for state in states.sensor %}
{% if state.entity_id == 'sensor.kona_odometer' %}
{% continue %}
{% endif %}
{% if state.state != 'unknown' %}
{% set state_float = state.state | float %}
{% if state_float > max_value | float %}
{% set max_value = state_float %}
{% endif %}
{% endif %}
{% endfor %} {{ max_value }}' but no default was specified') while processing template 'Template<template=({% set max_value = states('sensor.kona_odometer') %} {% for state in states.sensor %}
{% if state.entity_id == 'sensor.kona_odometer' %}
{% continue %}
{% endif %}
{% if state.state != 'unknown' %}
{% set state_float = state.state | float %}
{% if state_float > max_value | float %}
{% set max_value = state_float %}
{% endif %}
{% endif %}
{% endfor %} {{ max_value }}) renders=4>' for attribute '_attr_native_value' in entity 'sensor.max_value_kona_odometer'
La 1ère erreur semble indiqué que la valeur du capteur est de type « string ». Ce qui est étrange pour un nombre de km
Pour info, voici comment est définit le sensor dans l’integragtion
SensorEntityDescription(
key="_odometer",
name="Odometer",
icon="mdi:speedometer",
native_unit_of_measurement=DYNAMIC_UNIT,
device_class=SensorDeviceClass.DISTANCE,
state_class=SensorStateClass.TOTAL_INCREASING,
Là je suis perdu.
JC