RoTeK70 schreef op vrijdag 12 november 2021 @ 15:13:
Ik had ergens een optelling van 2 waardes van sensoren gevonden en deze gebruikt voor 2 yearly utility waardes maar ik krijg onderstaande foutmelding:
Template warning: 'float' got invalid input 'unknown' when rendering template '{{ ((states("sensor.consumed_energy") | float(default=0) + states("sensor.yearly_pomp") | float) + (states("sensor.myearly_uvl") | float)) | round(3) }}' but no default was specified. Currently 'float' will return '0', however this template will fail to render in Home Assistant core 2021.12
Nu weet ik ook niet wat float doet in deze optelling.
Hieronder de code:
code:
1
2
3
4
5
6
7
8
| # Optelling UV-Lamp en Pomp Vijver Yearly
- platform: template
sensors:
vijver_totaalverbruik_totaal_yearly:
friendly_name: "vijver totaal verbruikt yearly"
value_template: >
{{ ((states("sensor.consumed_energy") | float(default=0) + states("sensor.yearly_pomp") | float) + (states("sensor.myearly_uvl") | float)) | round(3) }}
unit_of_measurement: "kWh" |
Wat dit deel doet weet ik ook niet: (states("sensor.consumed_energy")
Iets van de klok horen luiden maar weet niet waar de klepel hangt?

Wie kan mij op weg helpen?
Een
float is een getal, eventueel met decimalen (waar een
int een getal zonder decimalen is).
De state van een entity is in HA altijd een string (tekst dus). Daar kun je niet mee rekenen. Met
| float zet je dat om naar een getal. Dat gaat natuurlijk prima als de state van een entity "538" is, maar wordt lastiger als de state "abracadabra" of, zoals ook wel vaak "unavailable" is.
Als je het
| float filter toepast op zo'n waarde die niet naar een getal om te zetten is, wordt op dit moment nog de default waarde 0 gebruikt.
"unavailalbe" | float geeft dus als resultaat
0
Vanaf HA 2021.12 gaat daat veranderen, en zal bovenstaande resulteren in een error. Daar gaat die warning dus over.
Je kunt dat voorkomen door zelf een default mee te geven. Ook vanaf 2021.12 zal
"unavailalbe" | float(default=0) nog steeds
0 als resultaat geven.(Eigenlijk is
"unavailalbe" | float(0) al voldoende, maar met
default= er bij is het wellicht duidelijker.
Wat nu op zich wel opmerkelijk is in de template hierboven, is dat je wel een default mee geeft met die entity die je niet herkent, en niet bij de andere entities. De warning komt dus in ieder geval niet door die entity die je niet herkende.
Mogelijk kan deze warning in je log terecht gekomen zijn toen HA aan het opstarten was, en je template al berekend werd voordat die entities geladen waren. Als dat niet het geval is, zit er mogelijk een typo in.