Intégration Huawei Solar : Consommation nette de la Maison

Mon problème

Bonjour,
Je dispose d’une installation solaire Huawei avec onduleur, panneaux solaires, batterie et power meter. J’utilise l’intégration HACS Huawei Solar qui fonctionne très bien.

J’utilise ces infos dans des cartes et des automatisations.

Toutefois, je n’ai pas trouvé dans cette intégration la consommation nette de la maison, càd ce que consomme la maison à l’instant T (que ce soit via le réseau, les batteries ou le solaire).

Pourtant je retrouve bien cette information sur ma carte power-flow-card-plus (en haut à gauche sur l’image précédente) dont voici le yaml :

type: custom:power-flow-card-plus
entities:
  battery:
    entity: sensor.battery_charge_discharge_power
    state_of_charge: sensor.battery_state_of_capacity
    color_value: true
    invert_state: true
    color_icon: true
    color_circle: true
  grid:
    entity: sensor.power_meter_active_power
    invert_state: true
    color_value: true
    color_icon: true
    color_circle: true
    use_metadata: false
  solar:
    entity: sensor.inverter_input_power
    display_zero_state: true
    color_value: true
    color_icon: true
    display_zero_tolerance: 0
    use_metadata: false
  home:
    color_value: true
clickable_entities: true
display_zero_lines:
  mode: show
  transparency: 50
  grey_color:
    - 189
    - 189
    - 189
use_new_flow_rate_model: true
w_decimals: 0
kw_decimals: 1
min_flow_rate: 2
max_flow_rate: 7
max_expected_power: 2000
min_expected_power: 0.01
watt_threshold: 1000
transparency_zero_lines: 0

Je ne sais pas comment fait la carte power-flow-card-plus pour obtenir la conso nette de la maison car j’ai testé le sensor.power_meter_active_power qui donne une valeur négative quand je consomme mais qui ne prend pas en compte la charge des batteries et l’export/import réseau (en résumé sa valeur est juste uniquement dans le cas où je tire sur le réseau sans production solaire).

J’ai donc essayé via un moyen détourné en créant plusieurs templates sensors dans mon fichier templates.yaml :

# Template Huawei Solar passe la consommation en positif
    - name: "Active Power Positive"
      unit_of_measurement: "W"
      state: "{{ states('sensor.power_meter_active_power') | int(0) | abs }}"

# Templates import et export
    - name: "huawei_export_reseau"
      unit_of_measurement: "W"
      state: >
        {% set power = states('sensor.power_meter_active_power') | float %}
        {{ power | int if power >= 0 else 0 }}
    - name: "huawei_import_reseau"
      unit_of_measurement: "W"
      state: >
        {% set power = states('sensor.power_meter_active_power') | float %}
        {{ 0 if power >= 0 else power | abs | int }}

# Templates calcule la Conso Nette de la maison
    - name: "consommation_nette_maison"
      unit_of_measurement: "W"
      state: >
        {% set production_solaire = states('sensor.inverter_input_power') | float %}
        {% set export_reseau = states('sensor.huawei_export_reseau') | float %}
        {% set import_reseau = states('sensor.huawei_import_reseau') | float %}
        {% set charge_batterie = states('sensor.battery_charge_discharge_power') | float %}

        {% set consommation_nette = production_solaire - export_reseau + import_reseau %}

        {% if charge_batterie > 0 %}
          {% set consommation_nette = consommation_nette - charge_batterie %}
        {% elif charge_batterie < 0 %}
          {% set consommation_nette = consommation_nette - charge_batterie %}
        {% endif %}

        {{ consommation_nette | int if consommation_nette >= 0 else 0 }}

Le template sensor #Templates calcule la Conso Nette de la maison calcule la « consommation_nette_maison », à l’instant T (que ce soit via le réseau, les batteries ou le solaire)

  1. Variables initialisées :

    • production_solaire: La puissance de production d’énergie solaire, récupérée à partir du capteur ‹ sensor.inverter_input_power ›.
    • export_reseau: La puissance d’exportation vers le réseau électrique, récupérée à partir du capteur ‹ sensor.huawei_export_reseau ›.
    • import_reseau: La puissance d’importation depuis le réseau électrique, récupérée à partir du capteur ‹ sensor.huawei_import_reseau ›.
    • charge_batterie: La puissance de charge ou décharge de la batterie, récupérée à partir du capteur ‹ sensor.battery_charge_discharge_power ›.
  2. Calcul de la consommation nette :

    • consommation_nette: Cette variable est calculée en soustrayant la puissance exportée vers le réseau (export_reseau) et en ajoutant la puissance importée depuis le réseau (import_reseau) à la production solaire (production_solaire).
  3. Gestion de la batterie :

    • Si la puissance de charge de la batterie (charge_batterie) est positive (la batterie est en train de se charger), alors la puissance de charge est soustraite de la consommation_nette.
    • Si la puissance de charge de la batterie est négative (la batterie est en train de se décharger), alors la puissance de décharge est également soustraite de la consommation_nette.
  4. Vérification de la consommation nette non négative :

    • Avant de retourner le résultat final, le template vérifie que la consommation_nette est supérieure ou égale à zéro. Si elle est négative, elle est ajustée à zéro.
  5. Résultat final :

    • Le résultat final est la consommation_nette convertie en entier (int), assurant que la valeur retournée est un nombre entier.

Miracle, il s’avère que ce template est fonctionnel et calcule bien la consommation nette de la maison en tenant compte de la production solaire, de l’exportation et de l’importation d’énergie, ainsi que de la charge ou décharge de la batterie. La valeur finale est rendue positive pour éviter les valeurs négatives.

Ma question est (désolé pour la longueur du post), aurais-je pu faire autrement ? Plus simplement ? Existe-t-il une autre solution ?

Merci de vos lumières :wink:

Ma configuration


System Information

version core-2024.1.6
installation_type Home Assistant OS
dev false
hassio true
docker true
user root
virtualenv false
python_version 3.11.6
os_name Linux
os_version 6.1.74-haos
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 1462
Downloaded Repositories 21
HACS Data ok
Home Assistant Cloud
logged_in true
subscription_expiration 16 janvier 2025 à 01:00
relayer_connected true
relayer_region eu-central-1
remote_enabled true
remote_connected true
alexa_enabled true
google_enabled false
remote_server eu-central-1-2.ui.nabu.casa
certificate_status ready
instance_id 9b1354271d894ddab777f6bfe47bce87
can_reach_cert_server ok
can_reach_cloud_auth ok
can_reach_cloud ok
Home Assistant Supervisor
host_os Home Assistant OS 11.5
update_channel stable
supervisor_version supervisor-2024.01.1
agent_version 1.6.0
docker_version 24.0.7
disk_total 28.0 GB
disk_used 10.1 GB
healthy true
supported true
board green
supervisor_api ok
version_api ok
installed_addons Terminal & SSH (9.8.1), Linky (1.2.0), Home Assistant Google Drive Backup (0.112.1), Studio Code Server (5.15.0), Silicon Labs Multiprotocol (2.4.4), Mosquitto broker (6.4.0)
Dashboards
dashboards 2
resources 21
views 9
mode storage
Recorder
oldest_recorder_run 29 janvier 2024 à 08:10
current_recorder_run 6 février 2024 à 17:12
estimated_db_size 2211.20 MiB
database_engine sqlite
database_version 3.41.2
Spotify
api_endpoint_reachable ok
___