Calcul différent selon condition dans template

Mon problème

Bonjour à tous,

Ce que je pensais être simple se révèle d’une difficulté sans précédents !
J’ai un capteur d’énergie électrique sur ma production photovoltaique et un autre sur ma sortie linky, ce qui me permet de savoir ce que je produis et ce que je consomme.

Cependant, le calcul de la consommation electrique doit être adapté selon si les panneaux solaires produisent. Pas de problème, un simple "if’ va résoudre le problème !

Eh bien, dès que j’inclus du « if » dans mon template, pas d’erreur de syntaxe d’après HA, mais le sensor disparait !

template:
  - sensor:
    - name: "Consommation-electrique-brut"
      unit_of_measurement: "W"
      state: >
        {% set Puissance_consommee = states('sensor.solarsystem_measurement_power_a') | float %}
        {% set Power_factor_consommation = states('sensor.solarsystem_measurement_power_factor_a') | float %}
        {% set Puissance_produit_solaire = states('sensor.solarsystem_measurement_power_b') | float %}
		{% if Puissance_produit_solaire | float>0 %}
            {% set consommation-electrique-brut-corrected = Puissance_produit_solaire - 100*(Puissance_consommee/Power_factor_consommation) | float %}
        {% else %}
            {% set consommation-electrique-brut-corrected = 100*(Puissance_consommee/Power_factor_consommation) | float %}
        {% endif %}

        {{ (consommation-electrique-brut-corrected) | round(1, default=0)}}

Je ne sais pas si c’est une erreur de syntaxe ou de raisonnement… peut être que je ne peux pas faire cela dans template et doit faire d’une autre manière ?

Si quelqu’un a une idée, je suis preneur !

En vous remerciant,

Ma configuration


[center]## System Information

version core-2024.5.2
installation_type Home Assistant OS
dev false
hassio true
docker true
user root
virtualenv false
python_version 3.12.2
os_name Linux
os_version 6.6.28-haos-raspi
arch aarch64
timezone Europe/Paris
config_dir /config
Home Assistant Community Store
GitHub API ok
GitHub Content ok
GitHub Web ok
GitHub API Calls Remaining 5000
Installed Version 1.34.0
Stage running
Available Repositories 1399
Downloaded Repositories 3
HACS Data ok
Home Assistant Cloud
logged_in false
can_reach_cert_server ok
can_reach_cloud_auth ok
can_reach_cloud ok
Home Assistant Supervisor
host_os Home Assistant OS 12.3
update_channel stable
supervisor_version supervisor-2024.05.1
agent_version 1.6.0
docker_version 25.0.5
disk_total 28.5 GB
disk_used 8.6 GB
healthy true
supported true
board rpi5-64
supervisor_api ok
version_api ok
installed_addons ESPHome (2024.3.2), Terminal & SSH (9.10.0), File editor (5.8.0), Tailscale (0.17.0), Mosquitto broker (6.4.0), Zigbee2MQTT (1.37.0-1)
Dashboards
dashboards 3
resources 0
views 2
mode storage
Recorder
oldest_recorder_run 26 mai 2024 à 05:03
current_recorder_run 26 mai 2024 à 07:03
estimated_db_size 210.56 MiB
database_engine sqlite
database_version 3.44.2
[/center]` ___

Je viens de trouver… il ne faut pas utiliser de « - » dans le nom de variable…
Mon dieu que je n’aime pas ce language :slight_smile:

J’ai découvert le débugueur dans Outils de développement\Modèles, très pratique !

template:
  - sensor:
    - name: "Consommation-electrique-brut"
      unit_of_measurement: "W"
      state: >
        {% set Puissance_consommee = states('sensor.solarsystem_measurement_power_a') | float %}
        {% set Power_factor_consommation = states('sensor.solarsystem_measurement_power_factor_a') | float %}
        {% set Puissance_produit_solaire = states('sensor.solarsystem_measurement_power_b') | float %}
        {% if Puissance_produit_solaire | float>0 %}
          {% set consommation_electrique_brut_corrigee=Puissance_produit_solaire - 100*(Puissance_consommee/Power_factor_consommation) | float %}
        {% else %}
          {% set consommation_electrique_brut_corrigee=100*(Puissance_consommee/Power_factor_consommation) | float %}
        {% endif %}

        {{ (consommation_electrique_brut_corrigee) | round(1, default=0)}}