Mon problème
Depuis la version 2023.5.3, mes templates ne fonctionnent plus et j’ai mais mes sensors qui s’affichent « unvalaibable »
Ma configuration
- sensor:
- name: "PV Puissance Totale"
unique_id: PV_puissance_totale
unit_of_measurement: "W"
device_class: power
state: "{{ [ states('sensor.pv2_charging_power'), states('sensor.pv1_puissance_instantanee') ] | map('float') | sum }}"
availability: >
{{ not 'unavailable' in
[ states('sensor.pv2_charging_power'),
states('sensor.onduleur_pv_watt') ] }}
- name: "Puissance décharge Batterie"
unique_id: puissance_decharge_batterie
state: >-
{% set state1 = states("sensor.batt_discharge_current") %}
{% set state2 = states("sensor.battery_voltage") %}
{% if is_number(state1) and is_number(state2) %}
{{ ( state1|float * state2|float) | round(2) }}
{% endif %}
unit_of_measurement: "W"
state_class: total
device_class: power
- name: "Puissance Charge Batterie"
unique_id: puissance_charge_batterie
state: >-
{% set state1 = states("sensor.batt_charge_current") %}
{% set state2 = states("sensor.battery_voltage") %}
{% if is_number(state1) and is_number(state2) %}
{{ ( state1|float * state2|float) | round(2) }}
{% endif %}
unit_of_measurement: "W"
state_class: total
device_class: power
- name: "PV1_Puissance-instantanee"
unique_id: pv1_puissance_instantanee
state: >-
{% set state1 = states("sensor.pv1_input_current") %}
{% set state2 = states("sensor.pv1_input_voltage") %}
{% if is_number(state1) and is_number(state2) %}
{{ ( state1|float * state2|float) | round(2) }}
{% endif %}
unit_of_measurement: "W"
state_class: total
device_class: power
Quelqu’un a t’il le même problème ?
Makai
Mai 20, 2023, 9:02
2
Bonjour,
Rien dans les logs ?
Sinon, pourquoi n’utilisez vous pas des « entrées » de type « groupe de capteurs » ?
Vous éviteriez les templates.
papoo
Mai 21, 2023, 8:43
3
il me semble qu’il faut définir une valeur par défaut pour float ex: ‹ float(0) ›
Regarde dans le mode développement Modeles tes states !
exemple :
c’est déjà la faisabilité de ton template !
Bonjour
Merci à tous, j’ai déjà récupéré les 3/4 de mes template mais il m’en reste un où c’est impossible.
Il restait « indisponible » quoique je fasse alors je l’ai supprimé et recréer avec un autre nom pour éviter les doublons ou percutage mais il n’apparait même pas dans homeassistant :
- name: "PV_Energie_Totale_instantanee"
unique_id: pv_energie_totale_instantanee
state: >-
{% set state1 = states("sensor.pv2_charging_power") %}
{% set state2 = states("sensor.onduleur_pv_watt") %}
{% if is_number(state1) and is_number(state2) %}
{{ ( state1|float + state2|float) | round(2) }}
{% endif %}
unit_of_measurement: "W"
state_class: total
device_class: power
dans le modèle template pourtant le résultat est conforme :
Je comprends pas
Salut,
Septain21:
Je comprends pas
C’est pas nouveau…
La modif est la depuis octobre 2021, avec un warning dans les logs… Maintenant que tout le monde devrait être au courant… C’est supprimé
Un message à chaque démarrage du type:
TemplateError('ValueError: Template error: float got invalid input 'unavailable' when rendering template blablabla
I keep seeing the same question about the new default argument for the templating. This post will cover all possible ways to define default. All the methods that were changed: acos as_timestamp asin atan atan2 cos float log round sin sqrt...
Reading time: 20 mins 🕑
Likes: 84 ❤
1 « J'aime »
J’ai tenté avec float(0) sans changement de résultat
Qu’as-tu dans les logs (journaux complets) ?
Abel
Juin 1, 2023, 1:52
9
Bonjour,
J’ai modifié le sensor pour y ajouter une valeur si l’ un des capteurs n’a pas de donnée. Il affichera 0
Pas d’erreur dans mon cas.
- sensor:
- name: "PV_Energie_Totale_instantanee"
unique_id: dae4c367-cb78-4418-b265-42ee4b1eeef5
state: >-
{% if has_value('sensor.pv2_charging_power') and has_value('sensor.onduleur_pv_watt') %}
{% set state1 = states('sensor.pv2_charging_power') | float %}
{% set state2 = states('sensor.onduleur_pv_watt') | float %}
{% if is_number(state1) and is_number(state2) %}
{{ (state1 + state2) | round(2) }}
{% endif %}
{% else %}
0
{% endif %}
unit_of_measurement: "W"
state_class: total
device_class: power
Quand tout va bien
Quand un des capteurs est non dispo.
Cordialement,
Abel
Vérifie bien. Quand je copie colle ton code, j’ai une erreur sur une incompatibilité entre le state_class et device_class
Accessoirement dans tes deux derniers exemples tu as toujours des float sans valeurs par défaut. En plus en ayant des valeurs par défaut, pas besoin de tester si c’est numérique
Abel
Juin 1, 2023, 2:22
11
C’est très tôt en France
Tu veux dire comme ça, avec float(default=0)
- sensor:
- name: "PV_Energie_Totale_instantanee"
unique_id: dae4c367-cb78-4418-b265-42ee4b1eeef5
state: >-
{% set state1 = states('sensor.pv2_charging_power') | float(default=0) %}
{% set state2 = states('sensor.onduleur_pv_watt') | float(default=0) %}
{{ (state1 + state2) | round(2) }}
unit_of_measurement: "W"
state_class: total
device_class: power
Abel
Abel
Juin 1, 2023, 2:42
12
Je vois ce que tu voulais dire avec state_class et device_class.
Je viens de regarder le log.
Power ne supporte que measurement
unit_of_measurement: "W"
state_class: measurement
device_class: power
Abel
Abel:
C’est très tôt en France
Oui, encore une nuit hachée de mon coté de l’atlantique
Tout à fait
Pour tester j’ai juste changé les sensors d’entrée en input_number:
template:
- sensor:
- name: "PV_Energie_Totale_instantanee"
unique_id: dae4c367-cb78-4418-b265-42ee4b1eeef5
state: >-
{% set state1 = states('input_number.pv2_charging_power') | float(default=0) %}
{% set state2 = states('input_number.onduleur_pv_watt') | float(default=0) %}
{{ (state1 + state2) | round(2) }}
unit_of_measurement: "W"
state_class: total
device_class: power
Et j’ai un calcul qui ne donne rien
Alors que comme toi ça marche dans les outils de dev
Et voilà ce que je vois
2023-06-01 04:39:29.720 WARNING (MainThread) [homeassistant.components.sensor] Entity sensor.pv_energie_totale_instantanee (<class 'homeassistant.components.template.sensor.SensorTemplate'>) is using state class 'total' which is impossible considering device class ('power') it is using; expected None or one of 'measurement'; Please update your configuration if your entity is manually configured, otherwise create a bug report at https://github.com/home-assistant/core/issues?q=is%3Aopen+is%3Aissue+label%3A%22integration%3A+template%22
Si je corrige (je vire les 2 classes)
Donc tu dois avoir le même souci
Abel
Juin 1, 2023, 3:01
14
J’utilise 2 Shelly pour les valeurs en W. C’est avec ces sensors que j’ai fait mes tests
sensor.light_wc_energy 0.06875 kWh et
sensor.fan_wc_energy 0.0738166666666667 kWh
La somme arondie donne bien 0.14
- sensor:
- name: "PV_Energie_Totale_instantanee"
unique_id: dae4c367-cb78-4418-b265-42ee4b1eeef5
state: >-
{% set state1 = states('sensor.fan_wc_energy') | float(default=0) %}
{% set state2 = states('sensor.light_wc_energy') | float(default=0) %}
{{ (state1 + state2) | round(2) }}
unit_of_measurement: "W"
state_class: measurement
device_class: power
Meme en mode template
Sensor
Je ne pense pas que les sensors jouent sur l’erreur.
Peux-tu
Chercher l’erreur dans les log
Pulpy-Luke:
2023-06-01 04:39:29.720 WARNING (MainThread) [homeassistant.components.sensor] Entity sensor.pv_energie_totale_instantanee (<class 'homeassistant.components.template.sensor.SensorTemplate'>) is using state class 'total' which is impossible considering device class ('power') it is using; expected None or one of 'measurement'; Please update your configuration if your entity is manually configured, otherwise create a bug report at https://github.com/home-assistant/core/issues?q=is%3Aopen+is%3Aissue+label%3A%22integration%3A+template%22
Virer les 2 dernières lignes de ton template
state_class: total
device_class: power
Redémarrer HA
Et confirmer le diagnostique
Abel
Juin 1, 2023, 3:11
16
C’est bon au niveau des logs, j’avais rectifie il y a 25min
Maintenant state_class et device_class sont compatibles
Time for bed over here
Ciao,
Abel
1 « J'aime »