[Concours] Suivi réel du niveau de batterie virtuel du fournisseur USE

Bonjour a tous, je chercher depuis quelques temps a avoir le suivi de batterie virtuel USE au jour le jour pour ne pas avoir de mauvaise surprise.

Je me suis donc crée un suivi personnalisé via HA dont je vous partage la configuration.
Il reprend les sensors de l’intégration MyElectricaldata pour avoir les valeurs d’ Enedis et quelques templates et autre calcul pour obtenir les valeurs voulue.

Avec un affichage directement dans le Dashboard energie

Donc mes templates et autre capteur pour le suivi de la batterie USE sur home assistant et dans le Dashboard energie.
pour commencer les sensors :

Code a mettre dans votre sensors.yaml en complétant avec vos propre sensor correspondant

- platform: template
 sensors:
   energie_batterie:
     friendly_name: "Énergie prise de la batterie"
     unique_id: "Énergie prise de la batterie"
     unit_of_measurement: "kWh"
     value_template: >
       {% set consommation = states('votre conso journaliere') | float(0) %}
       {% set production = states('votre production du jour') | float(0) %}
       {% set batterie = states('sensor.niveau_de_batterie_annuelle') | float(0) %}
       
       {% if consommation > production and batterie > 0 %}
         {% set energie_utilisee = consommation - production %}
         {% if energie_utilisee > batterie %}
           {{ batterie }}
         {% else %}
           {{ energie_utilisee }}
         {% endif %}
       {% else %}
         {{ 0 }}
       {% endif %}
    energie_mise_batterie:
      friendly_name: "Énergie mise dans la batterie"
      unique_id: "Énergie mise dans la batterie"
      unit_of_measurement: "kWh"
      value_template: >
        {% set consommation = states('votre conso journaliere') | float(0) %}
        {% set production = states('votre retour reseau') | float(0) %}
        {% set batterie = states('sensor.niveau_de_batterie_annuelle') | float(0) %}
        {% set capacite_max_batterie = 10000 %}
        
        {% if production > consommation %}
          {% set energie_ajoutee = production - consommation %}
          {% if (batterie + energie_ajoutee) > capacite_max_batterie %}
            {{ capacite_max_batterie - batterie }}
          {% else %}
            {{ energie_ajoutee }}
          {% endif %}
        {% else %}
          {{ 0 }}
        {% endif %}
 energie_reseau:
      friendly_name: "Énergie tirée du réseau"
      unique_id: "energie_tiree_du_reseau"
      unit_of_measurement: "kWh"
      value_template: >
        {% set consommation = states('votre conso journaliere') | float(0) %}
        {% set production = states('votre production du jour') | float(0) %}
        {% set batterie = states('sensor.niveau_de_batterie_annuelle') | float(0) %}
        
        {% if consommation > production and batterie == 0 %}
          {{ consommation - production }}
        {% else %}
          {{ 0 }}
        {% endif %}
niveau_de_batterie_mensuel:
      friendly_name: "Niveau de batterie mensuel"
      unique_id: "niveau_de_batterie_mensuel"
      unit_of_measurement: "kWh"
      value_template: >
        {% set production = states('votre production mensuel') | float(0) %}
        {% set consommation = states('votre conso mensuel') | float(0) %}
        {% set capacite_max = 2000 %}

        {% set niveau_batterie = production - consommation %}

        {{ niveau_batterie }}
 niveau_de_batterie_annuelle:
      friendly_name: "Niveau de batterie annuelle"
      unique_id: "niveau_de_batterie_annuelle"
      unit_of_measurement: "kWh"
      value_template: >
        {% set capacite_max = 20000 %}
        {% set niveau_batterie_initial = states('input_number.niveau_de_batterie_mois_precedent') | float(0) %}
        
        {% set production = states('votre production mensuel') | float(0) %}
        {% set consommation = states('votre conso mensuel') | float(0) %}
        
        {% set production = max(0, production) %}
        {% set consommation = max(0, consommation) %}
        
        {% set niveau_batterie = niveau_batterie_initial + (production - consommation) %}
        
        {% if niveau_batterie < 0 %}
          {{ 0 }}
        {% elif niveau_batterie > capacite_max %}
          {{ capacite_max }}
        {% else %}
          {{ niveau_batterie }}
        {% endif %}

template a crée via ha :

- sensor:
      - name: "Production mensuelle"
        unit_of_measurement: "kWh"
        state_class: "total_increasing"
        device_class: "energy"
        state: >
          {{ state_attr('votre sensor production mensuel') | default(0) | float }}
 - sensor:
      - name: "Retour réseau"
        unit_of_measurement: "kWh"
        state: >
          {% set consommation = states('votre conso maison total production + reseau ') | float %}
          {% set production = states('votre production journalière') | float %}
          {% if production > consommation %}
            {{ production - consommation }}  # Retour positif
          {% elif production < consommation %}
            {{ -(consommation - production) }}  # Retour négatif
          {% else %}
            0  # Aucun retour
          {% endif %}
 - sensor:
      - name: "Recharge batterie mensuel"
        unit_of_measurement: "kWh"
        device_class: "energy"
        state_class: "measurement"
        state: >
          {% set production = states('votre production mensuel') %}
          {% set consommation = states('votre consomation mensuel') %}
          {% set production_value = production if production != 'unknown' else 0 %}
          {% set consommation_value = consommation if consommation != 'unknown' else 0 %}
          {% set energie_dispo = production_value | float - consommation_value | float %}
          {{ energie_dispo }}

le plus important pour le suivi mensuel
crée un imput number reprenant le niveau de batterie du mois précédent

crée une automatisation pour la mise a jour mensuel de cette imput:

alias: Mise à jour du niveau de batterie mensuel
description: ""
triggers:
  - at: "00:00:00"
    trigger: time
conditions:
  - condition: template
    value_template: "{{ now().day == 1 }}"
actions:
  - data:
      entity_id: input_number.niveau_de_batterie_mois_precedent
      value: "{{ states('sensor.niveau_de_batterie_annuelle') | float }}"
    action: input_number.set_value
mode: single

ensuite crée des « compteur de service public » pour intégrer dans le dashboard énergie

a savoir un compteur pour :

« Energie pris dans le reseau » a mettre dans consommation réseau
« Energie pris dans la batterie " et " un retour réseau » a mettre dans la partie batterie de stockage

pour le lovelace je me sert de la carte vertical-stack

capture d’ecran:


2 « J'aime »