Template sensor does not work

Hi all, i have this template-sensor that suddenly has stopped working.
Any ideas?

  - platform: template
    sensors:
      batteria_macchina_da_ricaricare:
        friendly_name: "Batteria da caricare"
        unit_of_measurement: 'kWh'
        value_template: >
          {% set percent_desired = states('input_number.batteria_desiderata') | int %}
          {% set percent_current = states('sensor.i4_edrive40_percentuale_di_batteria_rimanente') | int %}
          {% set battery_capacity = 80.3 %}
          {% set battery_to_charge = (battery_capacity * (percent_desired/100)) - (battery_capacity * (percent_current/100)) %}
          {{ '%0.1f'|format(battery_to_charge) }}

Looks good to me still: it’s legacy format but that still works.

Are you certain your two source entities are still working? Do you have anything in the logs? You don’t provide a default value to the int filters, so they will throw an error if the input isn’t a number.

the template works, so the entity.

but not the sensor:

Perhaps an error elsewhere in the YAML file has broken this one? Check the logs.

image

i have an error:

Registratore: homeassistant.helpers.event
Fonte: helpers/event.py:330
Prima occorrenza: 14 marzo 2024 alle ore 12:38:05 (17 occorrenze)
Ultima registrazione: 14:27:24

Error while dispatching event for input_number.batteria_desiderata to <Job track state_changed event {‘input_number.batteria_desiderata’, ‘sensor.i4_edrive40_percentuale_di_batteria_rimanente’} HassJobType.Callback <bound method TrackTemplateResultInfo._refresh of <TrackTemplateResultInfo {Template<template=({% set percent_desired = states(‘input_number.batteria_desiderata’) | int %} {% set percent_current = states(‘sensor.i4_edrive40_percentuale_di_batteria_rimanente’) | int %} {% set battery_capacity = 80.3 %} {% set battery_to_charge = (battery_capacity * (percent_desired/100)) - (battery_capacity * (percent_current/100)) %} {{ ‘%0.1f’|format(battery_to_charge) }} #BATTERIA RESTANTE FOTOVOLTAICO) renders=34>: <RenderInfo Template<template=({% set percent_desired = states(‘input_number.batteria_desiderata’) | int %} {% set percent_current = states(‘sensor.i4_edrive40_percentuale_di_batteria_rimanente’) | int %} {% set battery_capacity = 80.3 %} {% set battery_to_charge = (battery_capacity * (percent_desired/100)) - (battery_capacity * (percent_current/100)) %} {{ ‘%0.1f’|format(battery_to_charge) }} #BATTERIA RESTANTE FOTOVOLTAICO) renders=34> all_states=False all_states_lifecycle=False domains=frozenset() domains_lifecycle=frozenset() entities=frozenset({‘input_number.batteria_desiderata’, ‘sensor.i4_edrive40_percentuale_di_batteria_rimanente’}) rate_limit=None has_time=False exception=None is_static=False>}>>>
Error while dispatching event for input_number.batteria_desiderata to <Job track state_changed event {‘input_number.batteria_desiderata’, ‘sensor.i4_edrive40_percentuale_di_batteria_rimanente’} HassJobType.Callback <bound method TrackTemplateResultInfo._refresh of <TrackTemplateResultInfo {Template<template=({% set percent_desired = states(‘input_number.batteria_desiderata’) | int %} {% set percent_current = states(‘sensor.i4_edrive40_percentuale_di_batteria_rimanente’) | int %} {% set battery_capacity = 80.3 %} {% set battery_to_charge = (battery_capacity * (percent_desired/100)) - (battery_capacity * (percent_current/100)) %} {{ ‘%0.1f’|format(battery_to_charge) }} #BATTERIA RESTANTE FOTOVOLTAICO) renders=36>: <RenderInfo Template<template=({% set percent_desired = states(‘input_number.batteria_desiderata’) | int %} {% set percent_current = states(‘sensor.i4_edrive40_percentuale_di_batteria_rimanente’) | int %} {% set battery_capacity = 80.3 %} {% set battery_to_charge = (battery_capacity * (percent_desired/100)) - (battery_capacity * (percent_current/100)) %} {{ ‘%0.1f’|format(battery_to_charge) }} #BATTERIA RESTANTE FOTOVOLTAICO) renders=36> all_states=False all_states_lifecycle=False domains=frozenset() domains_lifecycle=frozenset() entities=frozenset({‘input_number.batteria_desiderata’, ‘sensor.i4_edrive40_percentuale_di_batteria_rimanente’}) rate_limit=None has_time=False exception=None is_static=False>}>>>
Error while dispatching event for input_number.batteria_desiderata to <Job track state_changed event {‘input_number.batteria_desiderata’, ‘sensor.i4_edrive40_percentuale_di_batteria_rimanente’} HassJobType.Callback <bound method TrackTemplateResultInfo._refresh of <TrackTemplateResultInfo {Template<template=({% set percent_desired = states(‘input_number.batteria_desiderata’) | int %} {% set percent_current = states(‘sensor.i4_edrive40_percentuale_di_batteria_rimanente’) | int %} {% set battery_capacity = 80.3 %} {% set battery_to_charge = (battery_capacity * (percent_desired/100)) - (battery_capacity * (percent_current/100)) %} {{ ‘%0.1f’|format(battery_to_charge) }} #BATTERIA RESTANTE FOTOVOLTAICO) renders=38>: <RenderInfo Template<template=({% set percent_desired = states(‘input_number.batteria_desiderata’) | int %} {% set percent_current = states(‘sensor.i4_edrive40_percentuale_di_batteria_rimanente’) | int %} {% set battery_capacity = 80.3 %} {% set battery_to_charge = (battery_capacity * (percent_desired/100)) - (battery_capacity * (percent_current/100)) %} {{ ‘%0.1f’|format(battery_to_charge) }} #BATTERIA RESTANTE FOTOVOLTAICO) renders=38> all_states=False all_states_lifecycle=False domains=frozenset() domains_lifecycle=frozenset() entities=frozenset({‘input_number.batteria_desiderata’, ‘sensor.i4_edrive40_percentuale_di_batteria_rimanente’}) rate_limit=None has_time=False exception=None is_static=False>}>>>
Error while dispatching event for input_number.batteria_desiderata to <Job track state_changed event {‘input_number.batteria_desiderata’, ‘sensor.i4_edrive40_percentuale_di_batteria_rimanente’} HassJobType.Callback <bound method TrackTemplateResultInfo._refresh of <TrackTemplateResultInfo {Template<template=({% set percent_desired = states(‘input_number.batteria_desiderata’) | int %} {% set percent_current = states(‘sensor.i4_edrive40_percentuale_di_batteria_rimanente’) | int %} {% set battery_capacity = 80.3 %} {% set battery_to_charge = (battery_capacity * (percent_desired/100)) - (battery_capacity * (percent_current/100)) %} {{ ‘%0.1f’|format(battery_to_charge) }} #BATTERIA RESTANTE FOTOVOLTAICO) renders=40>: <RenderInfo Template<template=({% set percent_desired = states(‘input_number.batteria_desiderata’) | int %} {% set percent_current = states(‘sensor.i4_edrive40_percentuale_di_batteria_rimanente’) | int %} {% set battery_capacity = 80.3 %} {% set battery_to_charge = (battery_capacity * (percent_desired/100)) - (battery_capacity * (percent_current/100)) %} {{ ‘%0.1f’|format(battery_to_charge) }} #BATTERIA RESTANTE FOTOVOLTAICO) renders=40> all_states=False all_states_lifecycle=False domains=frozenset() domains_lifecycle=frozenset() entities=frozenset({‘input_number.batteria_desiderata’, ‘sensor.i4_edrive40_percentuale_di_batteria_rimanente’}) rate_limit=None has_time=False exception=None is_static=False>}>>>
Error while dispatching event for input_number.batteria_desiderata to <Job track state_changed event {‘input_number.batteria_desiderata’, ‘sensor.i4_edrive40_percentuale_di_batteria_rimanente’} HassJobType.Callback <bound method TrackTemplateResultInfo._refresh of <TrackTemplateResultInfo {Template<template=({% set percent_desired = states(‘input_number.batteria_desiderata’) | int %} {% set percent_current = states(‘sensor.i4_edrive40_percentuale_di_batteria_rimanente’) | int %} {% set battery_capacity = 80.3 %} {% set battery_to_charge = (battery_capacity * (percent_desired/100)) - (battery_capacity * (percent_current/100)) %} {{ ‘%0.1f’|format(battery_to_charge) }} #BATTERIA RESTANTE FOTOVOLTAICO) renders=42>: <RenderInfo Template<template=({% set percent_desired = states(‘input_number.batteria_desiderata’) | int %} {% set percent_current = states(‘sensor.i4_edrive40_percentuale_di_batteria_rimanente’) | int %} {% set battery_capacity = 80.3 %} {% set battery_to_charge = (battery_capacity * (percent_desired/100)) - (battery_capacity * (percent_current/100)) %} {{ ‘%0.1f’|format(battery_to_charge) }} #BATTERIA RESTANTE FOTOVOLTAICO) renders=42> all_states=False all_states_lifecycle=False domains=frozenset() domains_lifecycle=frozenset() entities=frozenset({‘input_number.batteria_desiderata’, ‘sensor.i4_edrive40_percentuale_di_batteria_rimanente’}) rate_limit=None has_time=False exception=None is_static=False>}>>>
Traceback (most recent call last):
File “/usr/src/homeassistant/homeassistant/components/sensor/init.py”, line 668, in state
numerical_value = float(value) # type:ignore[arg-type]
^^^^^^^^^^^^
ValueError: could not convert string to float: ‘3.2\n\n #BATTERIA RESTANTE FOTOVOLTAICO’

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
File “/usr/src/homeassistant/homeassistant/helpers/event.py”, line 330, in _async_dispatch_entity_id_event
hass.async_run_hass_job(job, event)
File “/usr/src/homeassistant/homeassistant/core.py”, line 727, in async_run_hass_job
hassjob.target(*args)
File “/usr/src/homeassistant/homeassistant/helpers/event.py”, line 1262, in _refresh
self.hass.async_run_hass_job(self._job, event, updates)
File “/usr/src/homeassistant/homeassistant/core.py”, line 727, in async_run_hass_job
hassjob.target(*args)
File “/usr/src/homeassistant/homeassistant/components/template/template_entity.py”, line 434, in _handle_results
self.async_write_ha_state()
File “/usr/src/homeassistant/homeassistant/helpers/entity.py”, line 992, in async_write_ha_state
self._async_write_ha_state()
File “/usr/src/homeassistant/homeassistant/helpers/entity.py”, line 1113, in _async_write_ha_state
state, attr, capabilities, shadowed_attr = self.__async_calculate_state()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/src/homeassistant/homeassistant/helpers/entity.py”, line 1050, in __async_calculate_state
state = self._stringify_state(available)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/src/homeassistant/homeassistant/helpers/entity.py”, line 998, in _stringify_state
if (state := self.state) is None:
^^^^^^^^^^
File “/usr/src/homeassistant/homeassistant/components/sensor/init.py”, line 670, in state
raise ValueError(
ValueError: Sensor sensor.batteria_macchina_da_ricaricare has device class ‘None’, state class ‘None’ unit ‘kWh’ and suggested precision ‘None’ thus indicating it has a numeric value; however, it has the non-numeric value: '3.2

#BATTERIA RESTANTE FOTOVOLTAICO’ (<class ‘str’>)

the two templates are this:

  - platform: template
    sensors:
      batteria_macchina_da_ricaricare:
        friendly_name: "Batteria da caricare"
        unit_of_measurement: 'kWh'
        value_template: >
          {% set percent_desired = states('input_number.batteria_desiderata') | int %}
          {% set percent_current = states('sensor.i4_edrive40_percentuale_di_batteria_rimanente') | int %}
          {% set battery_capacity = 80.3 %}
          {% set battery_to_charge = (battery_capacity * (percent_desired/100)) - (battery_capacity * (percent_current/100)) %}
          {{ '%0.1f'|format(battery_to_charge) }}

            #BATTERIA RESTANTE FOTOVOLTAICO
  - platform: template
    sensors:
      batteria_fotovoltaico_restante:
        friendly_name: "batteria fotovoltaico restante"
        value_template: "{{ (states('sensor.solarman_battery_1_soc')|float/100)*20.8 }}"
        unit_of_measurement: "kWh"            
  - platform: template

It’s including your comment as part of the template output. Remove that comment.

OMG, thanks a lot!!

1 Like

If you want to include comments in your templates:

{# this is a comment in jinja #}

nope, it was the comment for the second sensor

oh right, that comment wasn’t indented properly