Fehlermeldung in den Logs Template

Hallo Leute,
ich versuche immer mal wieder Fehler in den Logs zu bereinigen, aber bei den beiden Fehlern komme ich nicht dahinter.
Ich habe mal angehängt was in der yaml steht und den Fehlerlog.
Offenbar hat es mit dem float Filter zu tun. So wie ich das verstanden habe extrahiert float eine Fließkommazahl aus states. Das kann er hier aber wohl nicht, weil ‘unavailable’.
Aber eigentlich verstehe ich die Dokumentation so, dass in dem Fall dann als devault 0 genommen wird?? Letztes Jahr ging ja noch float(0), das für aber jetzt direkt zu einem Fehler.

Zu dem 2. Fehler habe ich gar keine Idee.

Wär echt cool wenn da jemand den Durchblick hätte.
Grüße Ingo

sensor.yaml

      solar_gewinn:
        friendly_name: "Solargewinn"
        unique_id: solar_gewinn
        unit_of_measurement: "€"
        device_class: monetary
        value_template: "{{ (float(states('sensor.pv_bereinigt')) * 0.26) | round(2) }}"


template.yaml

      - name: "Strom Power Return"
        unique_id: strom_power_return
        unit_of_measurement: W
        device_class: power
        state_class: measurement
        state: >-
          {{ [ (states('sensor.strom_power_total')), 0.0 ] | min }}    


Logger: homeassistant.helpers.event
Source: helpers/template.py:460
First occurred: 11:25:26 (2 occurrences)
Last logged: 11:25:27

Error while processing template: Template("{{ (float(states('sensor.pv_bereinigt')) * 0.26) | round(2) }}")
Error while processing template: Template("{{ [ (states('sensor.strom_power_total')), 0.0 ] | min }}")
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/helpers/template.py", line 1761, in forgiving_float
    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 458, in async_render
    render_result = _render_with_context(self.template, compiled, **kwargs)
  File "/usr/src/homeassistant/homeassistant/helpers/template.py", line 2007, in _render_with_context
    return template.render(**kwargs)
  File "/usr/local/lib/python3.10/site-packages/jinja2/environment.py", line 1301, in render
    self.environment.handle_exception()
  File "/usr/local/lib/python3.10/site-packages/jinja2/environment.py", line 936, in handle_exception
    raise rewrite_traceback_stack(source=source)
  File "<template>", line 1, in top-level template code
  File "/usr/local/lib/python3.10/site-packages/jinja2/sandbox.py", line 393, in call
    return __context.call(__obj, *args, **kwargs)
  File "/usr/src/homeassistant/homeassistant/helpers/template.py", line 1764, in forgiving_float
    raise_no_default("float", value)
  File "/usr/src/homeassistant/homeassistant/helpers/template.py", line 1472, in raise_no_default
    raise ValueError(
ValueError: Template error: float got invalid input 'unavailable' when rendering template '{{ (float(states('sensor.pv_bereinigt')) * 0.26) | round(2) }}' 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 576, in async_render_to_info
    render_info._result = self.async_render(variables, strict=strict, **kwargs)
  File "/usr/src/homeassistant/homeassistant/helpers/template.py", line 460, in async_render
    raise TemplateError(err) from err
homeassistant.exceptions.TemplateError: ValueError: Template error: float got invalid input 'unavailable' when rendering template '{{ (float(states('sensor.pv_bereinigt')) * 0.26) | round(2) }}' but no default was specified

Probiere mal so:

value_template: "{{ float(states('sensor.pv_bereinigt')) * 0.26 | round(2) }}"

Wenn der nicht geht mach auch ein state: >- und lass das value_template: weg und die "

Und so:

{{ states('sensor.strom_power_total'), 0.0  | min }}

Hatte ich beides schon. Im 1. Fall funktioniert das Runden auf 2 Stellen nicht mehr, im 2. Fall komm die Fehlermeldung TypeError: ‘float’ object is not iterable

probiere es mal so:

{{ (states('sensor.pv_bereinigt') | float(0)*0.26 | round(2) }}

Wenn der Sensor keinen Wert hat, ist er unavailable, float kann damit nix anfangen, weil es ein String ist. Mit float(0) müsste er aber bei sowas dann standardmäßig Null nehmen.

{{ [ states('sensor.strom_power_total') | float(0), 0.0 ] | min}}  

so würde der andere Sensor aussehen

Also ich runde so:

{{ states('input_number.strompreis')| round(1) }}

Das funktioniert bei mir.

Und bei zweiten habe ich das so:

states('sensor.strommesser_channel_c_power')| float(0)

Werde gerade nicht ganz schlau was du da vor hast

Edit: Da war einer schneller

1 „Gefällt mir“

Danke euch, ihr habt mir auf den richtigen Weg geholfen. Bisher keine Meldung mehr um Log. :slight_smile:

Nicht vergessen, die Lösung mit der Lösungs-Box zu markieren :wink:

Google Chrome - Staubsauger Karte - DashboardCardsFrontend - simon42 Community_2023-03-06_23.04.10

Coole Funktion…hatte ich gar nicht gesehen :slightly_smiling_face:

Hi,
ich klinke mich mal hier rein, da ich wohl auch das “float” einbauen muss. Da es sich bei meinen Sensoren um “pattform: template” handelt, fuktioniert hier die vorgeschlagene Lösung nicht.

    - platform: template
      sensors:
         mokka_e_battery_voltage:
           friendly_name: "Batterie Spannung"
           unit_of_measurement: "V"
           value_template: '{{ states.sensor.mokka_e.attributes["battery"]["voltage"] * 4 }}'
       mokka_e_battery_level:
175          friendly_name: "Batterie Level"
          unit_of_measurement: "%"
          value_template: '{{ states.sensor.mokka_e.attributes["energy"][0]["level"] }}'

Ich hatte dannmit notepad++ editiert, dabei scheint sich ein Fehler zusätzlich eingeschlichen haben:

Logger: homeassistant.util.yaml.loader
Source: util/yaml/loader.py:163
First occurred: 13:59:10 (1 occurrences)
Last logged: 13:59:10
while parsing a block mapping in “/config/configuration.yaml”, line 175, column 9 expected , but found ‘’ in “/config/configuration.yaml”, line 177, column 94

Zeile 175 ist oben markiert.

Sieht einer meinen Fehler, wo ich mal wieder blind bin und kann das “float(0)” richtig einfügen.
Danke vorab

Dein code ist komisch eingerückt. Bei YAML musst du das einhalten, sonst spuckt er Fehler.

ja, ich hatte Probleme richtig formatiert hier reinzukopieren. Zum Schluss habe ich dann wohl doch noch was übersehen. In der YAML sollte aber richtig sein.

platform: template ?!

Vielleicht solltest du deine YAML in dem Zug direkt mal auf das Modern Format umstellen…

… ich hänge mich hier mal mit dran wenn das in Ordnung ist. Ich habe ebenfalls ein paar Fehler im Log welche ich gerne bereinigen würde

Logger: homeassistant.helpers.event
Source: helpers/template.py:570
First occurred: 11:53:00 (13 occurrences)
Last logged: 11:53:01

Error while processing template: Template<template=({{ (100 / (float(states('sensor.absolute_luftfeuchte_terrasse'))) * (float(states('sensor.absolute_luftfeuchte_unterschied_waschkueche')))) | round (0) }}) renders=2>
Error while processing template: Template<template=({{ ( float(states('sensor.absolute_luftfeuchte_vorratskammer')) - float(states('sensor.absolute_luftfeuchte_terrasse')) ) | float | round (2) }}) renders=2>
Error while processing template: Template<template=({{ (100 / (float(states('sensor.absolute_luftfeuchte_terrasse'))) * (float(states('sensor.absolute_luftfeuchte_unterschied_vorratskammer')))) | round (0) }}) renders=2>
Error while processing template: Template<template=({{ ( float(states('sensor.absolute_luftfeuchte_stromraum')) - float(states('sensor.absolute_luftfeuchte_terrasse')) ) | float | round (2) }}) renders=2>
Error while processing template: Template<template=({{ (100 / (float(states('sensor.absolute_luftfeuchte_terrasse'))) * (float(states('sensor.absolute_luftfeuchte_unterschied_stromraum')))) | round (0) }}) renders=2>
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/helpers/template.py", line 1917, in forgiving_float
    return float(value)
           ^^^^^^^^^^^^
ValueError: could not convert string to float: 'unknown'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/helpers/template.py", line 568, in async_render
    render_result = _render_with_context(self.template, compiled, **kwargs)
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/helpers/template.py", line 2198, in _render_with_context
    return template.render(**kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/jinja2/environment.py", line 1301, in render
    self.environment.handle_exception()
  File "/usr/local/lib/python3.11/site-packages/jinja2/environment.py", line 936, in handle_exception
    raise rewrite_traceback_stack(source=source)
  File "<template>", line 1, in top-level template code
  File "/usr/local/lib/python3.11/site-packages/jinja2/sandbox.py", line 393, in call
    return __context.call(__obj, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/helpers/template.py", line 1920, in forgiving_float
    raise_no_default("float", value)
  File "/usr/src/homeassistant/homeassistant/helpers/template.py", line 1628, in raise_no_default
    raise ValueError(
ValueError: Template error: float got invalid input 'unknown' when rendering template '{{ (float(states('sensor.heizung_energiebedarf_pro_jahr'))) * (float(states('sensor.heizung_normnutzungsgrad'))) }}' 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 694, in async_render_to_info
    render_info._result = self.async_render(
                          ^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/helpers/template.py", line 570, in async_render
    raise TemplateError(err) from err
homeassistant.exceptions.TemplateError: ValueError: Template error: float got invalid input 'unknown' when rendering template '{{ (float(states('sensor.heizung_energiebedarf_pro_jahr'))) * (float(states('sensor.heizung_normnutzungsgrad'))) }}' but no default was specified

sowie

Logger: homeassistant.components.template.template_entity
Source: components/template/template_entity.py:478
Integration: Template (documentation, issues)
First occurred: 11:53:00 (13 occurrences)
Last logged: 11:53:01

TemplateError('ValueError: Template error: float got invalid input 'unknown' when rendering template '{{ (100 / (float(states('sensor.absolute_luftfeuchte_terrasse'))) * (float(states('sensor.absolute_luftfeuchte_unterschied_waschkueche')))) | round (0) }}' but no default was specified') while processing template 'Template<template=({{ (100 / (float(states('sensor.absolute_luftfeuchte_terrasse'))) * (float(states('sensor.absolute_luftfeuchte_unterschied_waschkueche')))) | round (0) }}) renders=4>' for attribute '_attr_native_value' in entity 'sensor.absolute_luftfeuchte_unterschied_waschkueche_prozent'
TemplateError('ValueError: Template error: float got invalid input 'unknown' when rendering template '{{ ( float(states('sensor.absolute_luftfeuchte_vorratskammer')) - float(states('sensor.absolute_luftfeuchte_terrasse')) ) | float | round (2) }}' but no default was specified') while processing template 'Template<template=({{ ( float(states('sensor.absolute_luftfeuchte_vorratskammer')) - float(states('sensor.absolute_luftfeuchte_terrasse')) ) | float | round (2) }}) renders=4>' for attribute '_attr_native_value' in entity 'sensor.absolute_luftfeuchte_unterschied_vorratskammer'
TemplateError('ValueError: Template error: float got invalid input 'unknown' when rendering template '{{ (100 / (float(states('sensor.absolute_luftfeuchte_terrasse'))) * (float(states('sensor.absolute_luftfeuchte_unterschied_vorratskammer')))) | round (0) }}' but no default was specified') while processing template 'Template<template=({{ (100 / (float(states('sensor.absolute_luftfeuchte_terrasse'))) * (float(states('sensor.absolute_luftfeuchte_unterschied_vorratskammer')))) | round (0) }}) renders=4>' for attribute '_attr_native_value' in entity 'sensor.absolute_luftfeuchte_unterschied_vorratskammer_prozent'
TemplateError('ValueError: Template error: float got invalid input 'unknown' when rendering template '{{ ( float(states('sensor.absolute_luftfeuchte_stromraum')) - float(states('sensor.absolute_luftfeuchte_terrasse')) ) | float | round (2) }}' but no default was specified') while processing template 'Template<template=({{ ( float(states('sensor.absolute_luftfeuchte_stromraum')) - float(states('sensor.absolute_luftfeuchte_terrasse')) ) | float | round (2) }}) renders=4>' for attribute '_attr_native_value' in entity 'sensor.absolute_luftfeuchte_unterschied_stromraum'
TemplateError('ValueError: Template error: float got invalid input 'unknown' when rendering template '{{ (100 / (float(states('sensor.absolute_luftfeuchte_terrasse'))) * (float(states('sensor.absolute_luftfeuchte_unterschied_stromraum')))) | round (0) }}' but no default was specified') while processing template 'Template<template=({{ (100 / (float(states('sensor.absolute_luftfeuchte_terrasse'))) * (float(states('sensor.absolute_luftfeuchte_unterschied_stromraum')))) | round (0) }}) renders=4>' for attribute '_attr_native_value' in entity 'sensor.absolute_luftfeuchte_unterschied_stromraum_prozent'

Pack ich das in den Template Editor sieht alles sauber aus und die Werte passen

Ideen?

Hier ergänzend noch ein Beispiel aus der Waschküche

template:
  - sensor:
      #Errechnet aus der relativen Luftfeuchte und Temperatur die absolute Luftfreuchtigkeit in Gramm pro Kubikmeter
      - name: "absolute luftfeuchte waschkueche"
        unique_id: "absolute_luftfeuchte_waschkueche"
        unit_of_measurement: "g/m³"
        state_class: "measurement"
        icon: mdi:water
        state: >
          {{ ( 1000*e**(19.016-(4064.95/(float(states('sensor.temperatur_ist_waschkueche'))+236.25)))*100/(461.66*(float(states('sensor.temperatur_ist_waschkueche'))+273.15)) * float(states('sensor.relative_luftfeuchte_waschkueche'))/100 | float) | round (2) }}
      # Errechnet aus der Temperatur und relativen Luftfeuchte den Taupunkt in Grad
      - name: "taupunkt waschkueche"
        unique_id: "taupunkt_waschkueche"
        unit_of_measurement: "°C"
        device_class: temperature
        state_class: measurement
        icon: mdi:thermometer-water
        state: >
          {% set temp = states('sensor.temperatur_ist_waschkueche') | float %}
          {% set rh = states('sensor.relative_luftfeuchte_waschkueche') | float %}
          {% set K2 = 17.62 | float %}
          {% set K3 = 243.12 | float %}
          {{ (K3 * ((K2*temp)/(K3+temp) + log(rh/100)) / ((K2*K3)/(K3+temp) - log(rh/100)))  | round(1) }}
      # Errechnet den Untschied der Luftfeuchte von innen und außen in Gramm pro Kubikmeter
      - name: "absolute luftfeuchte unterschied waschkueche"
        unique_id: "absolute_luftfeuchte_unterschied_waschkueche"
        unit_of_measurement: "g/m³"
        state_class: "measurement"
        icon: mdi:water
        state: >
          {{ ( float(states('sensor.absolute_luftfeuchte_waschkueche')) - float(states('sensor.absolute_luftfeuchte_terrasse')) ) | float | round (2) }}
      # Errechnet den Untschied der Luftfeuchte von innen und außen in %
      - name: "absolute luftfeuchte unterschied waschkueche prozent"
        unique_id: "absolute_luftfeuchte_unterschied_waschkueche_prozent"
        unit_of_measurement: "%"
        state_class: "measurement"
        icon: mdi:cloud-percent
        state: >
          {{ (100 / (float(states('sensor.absolute_luftfeuchte_terrasse'))) * (float(states('sensor.absolute_luftfeuchte_unterschied_waschkueche')))) | round (0) }}

Guten Morgen,
hat es hier eine Lösung gegeben? ich suche nach der richtigen Syntax für Float(0) default

kann mir da einer helfen?

Liebe Grüße
Markus