Template Error Sensor in configuration.yaml

Hello,

first of all, I am quite new and created the code with the help of AI. Unfortunately, I always get the following error messages, no matter what I correct in the code:

Error 1:

Logger: homeassistant.helpers.event
Quelle: helpers/template.py:645
Erstmals aufgetreten: 09:27:10 (1 Vorkommnisse)
Zuletzt protokolliert: 09:27:10

Error while processing template: Template<template=({% if states('sensor.solax_grid_import')|float > 0 %} {{ states('sensor.solax_grid_import')|float }} {% elif states('sensor.solax_grid_export')|float > 0 %} {{ -1 * states('sensor.solax_grid_export')|float }} {% else %} 0 {% endif %}) renders=2>
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/helpers/template.py", line 2375, in forgiving_float_filter
    return float(value)
ValueError: could not convert string to float: 'unavailable'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/helpers/template.py", line 643, in async_render
    render_result = _render_with_context(self.template, compiled, **kwargs)
  File "/usr/src/homeassistant/homeassistant/helpers/template.py", line 2756, in _render_with_context
    return template.render(**kwargs)
           ~~~~~~~~~~~~~~~^^^^^^^^^^
  File "/usr/local/lib/python3.13/site-packages/jinja2/environment.py", line 1295, in render
    self.environment.handle_exception()
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^
  File "/usr/local/lib/python3.13/site-packages/jinja2/environment.py", line 942, in handle_exception
    raise rewrite_traceback_stack(source=source)
  File "<template>", line 1, in top-level template code
  File "/usr/src/homeassistant/homeassistant/helpers/template.py", line 2378, in forgiving_float_filter
    raise_no_default("float", value)
    ~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/helpers/template.py", line 1932, in raise_no_default
    raise ValueError(
    ...<2 lines>...
    )
ValueError: Template error: float got invalid input 'unavailable' when rendering template '{% if states('sensor.solax_grid_import')|float > 0 %}
            {{ states('sensor.solax_grid_import')|float }}
          {% elif states('sensor.solax_grid_export')|float > 0 %}
            {{ -1 * states('sensor.solax_grid_export')|float }}
          {% else %}
            0
          {% endif %}' 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 760, in async_render_to_info
    render_info._result = self.async_render(  # noqa: SLF001
                          ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
        variables, strict=strict, log_fn=log_fn, **kwargs
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    )
    ^
  File "/usr/src/homeassistant/homeassistant/helpers/template.py", line 645, in async_render
    raise TemplateError(err) from err
homeassistant.exceptions.TemplateError: ValueError: Template error: float got invalid input 'unavailable' when rendering template '{% if states('sensor.solax_grid_import')|float > 0 %}
            {{ states('sensor.solax_grid_import')|float }}
          {% elif states('sensor.solax_grid_export')|float > 0 %}
            {{ -1 * states('sensor.solax_grid_export')|float }}
          {% else %}
            0
          {% endif %}' but no default was specified

Error 2

Logger: homeassistant.components.template.template_entity
Quelle: components/template/template_entity.py:203
Integration: Template (Dokumentation, Probleme)
Erstmals aufgetreten: 09:27:10 (1 Vorkommnisse)
Zuletzt protokolliert: 09:27:10

TemplateError('ValueError: Template error: float got invalid input 'unavailable' when rendering template '{% if states('sensor.solax_grid_import')|float > 0 %} {{ states('sensor.solax_grid_import')|float }} {% elif states('sensor.solax_grid_export')|float > 0 %} {{ -1 * states('sensor.solax_grid_export')|float }} {% else %} 0 {% endif %}' but no default was specified') while processing template 'Template<template=({% if states('sensor.solax_grid_import')|float > 0 %} {{ states('sensor.solax_grid_import')|float }} {% elif states('sensor.solax_grid_export')|float > 0 %} {{ -1 * states('sensor.solax_grid_export')|float }} {% else %} 0 {% endif %}) renders=4>' for attribute '_attr_native_value' in entity 'sensor.stromfluss'

Here is the Part of configuration.yaml

      - name: "Haus Stromverbrauch"
        unique_id: haus_stromverbrauch
        unit_of_measurement: "W"
        state_class: measurement
        device_class: power
        state: >-
          {% set pv = states('sensor.pv_power_total') | float(0) %}
          {% set netz_export = states('sensor.solax_grid_export') %}
          {% set netz_import = states('sensor.solax_grid_import') %}
          {% set batterie = states('sensor.solax_battery_power_charge') %}

          {% set netz_export = netz_export | float(0) if netz_export not in ['unavailable', 'unknown', None] else 0 %}
          {% set netz_import = netz_import | float(0) if netz_import not in ['unavailable', 'unknown', None] else 0 %}
          {% set batterie = batterie | float(0) if batterie not in ['unavailable', 'unknown', None] else 0 %}

          {% set batterie_korrigiert = batterie if batterie < 0 else batterie * -1 %}

          {{ pv - netz_export + netz_import + batterie_korrigiert }}

Basically, the code works and also calculates the correct value.

However, I would like the error to no longer be displayed under logs.

      - name: "Haus Stromverbrauch"
        unique_id: haus_stromverbrauch
        unit_of_measurement: "W"
        state_class: measurement
        device_class: power
        state: >
          {% set pv = states('sensor.pv_power_total') | float %}
          {% set netz_export = states('sensor.solax_grid_export') | float  %}
          {% set netz_import = states('sensor.solax_grid_import') | float  %}
          {% set batterie = states('sensor.solax_battery_power_charge') | float %}
          {{ pv - netz_export + netz_import + batterie_korrigiert }}
        availability: >
          {{ has_value('sensor.pv_power_total') and
             has_value('sensor.solax_grid_import') and
             has_value('sensor.solax_grid_import') and
             has_value('sensor.solax_battery_power_charge') }}

See: Why an availability template is important for energy template sensors for an explanation of what the availability template does.

Thank you so much! The Errors are solved. Now i get a new one:

Logger: homeassistant.config
Quelle: config.py:357
Erstmals aufgetreten: 10:13:36 (1 Vorkommnisse)
Zuletzt protokolliert: 10:13:36

Invalid config for 'template' at configuration.yaml, line 61: invalid template (TemplateSyntaxError: expected token ',', got 'string') for dictionary value 'sensor->1->availability', got "{{ states('sensor.pv_power_total') not in ['unavailable', 'unknown', None'] and\n states('sensor.solax_grid_export') not in ['unavailable', 'unknown', None'] and\n states('sensor.solax_grid_import') not in ['unavailable', 'unknown', None'] and\n states('sensor.solax_battery_power_charge') not in ['unavailable', 'unknown', None'] }}\n"

Nowhere in my template do I have that. You have not used my template.

You’re right, I made a mistake because the value of “battery_corrected” was missing and I then inserted it incorrectly into your code.
Now everything fits!
Thanks again!