Configurer injection EDF avec Shelly Pro 3EM

Bonjour à tous,

cela fait un moment que je cherche à configurer la partie retour sur le réseau dans le tableau de bord Energy, sans succès.

J’ai acheté et mis en place un Shelly Pro 3EM avec 3 pinces (j’ai une installation triphasée).
Le Shelly a bien été ajouté à HA et fonctionne correctement sur l’appli à priori.

J’ai des panneaux solaires plug and play branchés sur la phase A, donc j’ai en journée (lorsque je produis) une valeur négative sur la phase A et des valeurs positives sur la B et la C, ce qui me semble normal ; mais par contre pour le sensor « Total active energy returned » du Shelly, il me comptabilise tout ce qui est négatif, donc toute la production solaire comme étant retournée sur le réseau alors qu’il ne déduit pas ce que je consomme réellement.
Je suis certain d’avoir réinjecté sur le réseau ces derniers jours en produisant plus que ce que je consommais, mais pas autant que la valeur indiquée par le Shelly.
J’imagine qu’il s’agit d’un problème de paramétrage.
Forcément, si j’ajoute ce sensor dans la partie retourné sur le réseau du tableau de bord Energy, ça fausse complètement les données.

J’ai tenté de peaufiner cela en suivant le tuto suivant :

mais je n’y arrive pas, je dois avoir une erreur quelque part, voici ce que j’ai fait (en remplacant les noms des entités par les miennes) :

Dans le fichier sensor.yaml :

# Shelly 3EM templates for 3-phase Net Import, Export and Consumption(if you have solar generation details)
# This uses the shelly instantaneous power sensors to achieve the best possible accuracy. 
# Shelly Sensors are  sensor.l1_power, sensor.l2_power, sensor.l3_power for the three phases
# Solar generation in W is used to calculate consumption via sensor.power_solargen
# V1.0 Initial release by Uksa007
# V1.1 add float(0) to Consumption template to stop log warnings.
# V1.2 add Friendly names to Utility Meter sensors
# V1.3 remove negative spikes from power consumption due to different update timing of solar sensor
# V1.4 change round: 2 for small value users.

  - platform: template
    sensors:

      # Template sensor for values of power import (active_power > 0)
      power_import:
        friendly_name: "Power Import"
        unit_of_measurement: 'W'
        value_template: >-
          {% if (states('sensor.shelly_pro_edf_tri_phase_a_active_power')|float + states('sensor.shelly_pro_edf_tri_phase_b_active_power')|float + states('sensor.shelly_pro_edf_tri_phase_c_active_power')|float) > 0 %}
            {{ states('sensor.shelly_pro_edf_tri_phase_a_active_power')|float + states('sensor.shelly_pro_edf_tri_phase_b_active_power')|float + states('sensor.shelly_pro_edf_tri_phase_c_active_power')|float }}
          {% else %}
            {{ 0 }}
          {% endif %}
        availability_template: "{{
            [ states('sensor.shelly_pro_edf_tri_phase_a_active_power'),
              states('sensor.shelly_pro_edf_tri_phase_b_active_power'),
              states('sensor.shelly_pro_edf_tri_phase_c_active_power')
            ] | map('is_number') | min
          }}"

      # Template sensor for values of power export (active_power < 0)
      power_export:
        friendly_name: "Power Export"
        unit_of_measurement: 'W'
        value_template: >-
          {% if (states('sensor.shelly_pro_edf_tri_phase_a_active_power')|float + states('sensor.shelly_pro_edf_tri_phase_b_active_power')|float + states('sensor.shelly_pro_edf_tri_phase_c_active_power')|float) < 0 %}
            {{ (states('sensor.shelly_pro_edf_tri_phase_a_active_power')|float + states('sensor.shelly_pro_edf_tri_phase_b_active_power')|float + states('sensor.shelly_pro_edf_tri_phase_c_active_power')|float) * -1 }}
          {% else %}
            {{ 0 }}
          {% endif %}
        availability_template: "{{
            [ states('sensor.shelly_pro_edf_tri_phase_a_active_power'),
              states('sensor.shelly_pro_edf_tri_phase_b_active_power'),
              states('sensor.shelly_pro_edf_tri_phase_c_active_power')
            ] | map('is_number') | min
          }}"

      # Template sensor for values of power consumption
      power_consumption:
        friendly_name: "Power Consumption"
        unit_of_measurement: 'W'
        value_template: >-
          {% if (states('sensor.power_export')|float(0)) > 0 and (states('sensor.total_production_solaire')|float(0) - states('sensor.power_export')|float(0)) < 0 %}
          {% elif (states('sensor.power_export')|float(0)) > 0 and (states('sensor.total_production_solaire')|float(0) - states('sensor.power_export')|float(0)) > 0 %}
            {{ (states('sensor.total_production_solaire')|float(0)) - states('sensor.power_export')|float(0) }}    
          {% else %}
            {{ states('sensor.power_import')|float(0) + states('sensor.total_production_solaire')|float(0) }}
          {% endif %}


  # Sensor for Riemann sum of energy import (W -> Wh)
  - platform: integration
    source: sensor.power_import
    name: energy_import_sum
    unit_prefix: k
    round: 2
    method: left

  # Sensor for Riemann sum of energy export (W -> Wh)
  - platform: integration
    source: sensor.power_export
    name: energy_export_sum
    unit_prefix: k
    round: 2
    method: left

  # Sensor for Riemann sum of energy consumption (W -> Wh)
  - platform: integration
    source: sensor.power_consumption
    name: energy_consumption_sum
    unit_prefix: k
    round: 2
    method: left

dans configuration.yaml :

utility_meter:
  energy_import_daily:
    source: sensor.energy_import_sum
    name: Energy Import Daily
    cycle: daily
  energy_import_monthly:
    source: sensor.energy_import_sum
    name: Energy Import Monthly
    cycle: monthly
  energy_export_daily:
    source: sensor.energy_export_sum
    name: Energy Export Daily
    cycle: daily
  energy_export_monthly:
    source: sensor.energy_export_sum
    name: Energy Export Monthly
    cycle: monthly
  energy_consumption_daily:
    source: sensor.energy_consumption_sum
    name: Energy Consumption Daily
    cycle: daily
  energy_consumption_monthly:
    source: sensor.energy_consumption_sum
    name: Energy Consumption Monthly
    cycle: monthly

Après tout ça, je n’ai pas la possibilité d’ajouter le sensor « active_power_export » dans la partie Energy, car il n’apparaît pas dans la liste.
Tous les sensors créés ne donnent rien
Lorsque je teste cela dans la partie « Outils de développement » les données semblent s’actualiser :

Je ne vois pas ou je me trompe donc n’hésitez pas à me dire si vous voyez quelque chose qui cloche, ou s’il vous manque des infos pour mieux comprendre.

Par avance merci pour votre aide !
Franck

Ma configuration


[center]## System Information

version core-2024.3.3
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.20-haos
arch x86_64
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 1475
Downloaded Repositories 47
Home Assistant Cloud
logged_in true
subscription_expiration 19 novembre 2024 à 01:00
relayer_connected true
relayer_region eu-central-1
remote_enabled true
remote_connected true
alexa_enabled true
google_enabled true
remote_server eu-central-1-1.ui.nabu.casa
certificate_status ready
instance_id 760a075755a74a3d94385655f0dc5844
can_reach_cert_server ok
can_reach_cloud_auth ok
can_reach_cloud ok
Home Assistant Supervisor
host_os Home Assistant OS 12.1
update_channel stable
supervisor_version supervisor-2024.03.0
agent_version 1.6.0
docker_version 24.0.7
disk_total 50.5 GB
disk_used 24.0 GB
healthy true
supported true
board ova
supervisor_api ok
version_api ok
installed_addons File editor (5.8.0), Z-Wave JS (0.4.5), Samba share (12.3.1), ESPHome (2024.3.0), Zigbee2MQTT (1.36.0-1), Mosquitto broker (6.4.0), tydom2mqtt (3.4.3)
Dashboards
dashboards 1
resources 26
views 26
mode storage
MercedesME 2020
api_endpoint_reachable ok
websocket_connection_state connected
cars_connected 1
version v0.12.0
Recorder
oldest_recorder_run 16 mars 2024 à 06:50
current_recorder_run 25 mars 2024 à 16:05
estimated_db_size 2764.18 MiB
database_engine sqlite
database_version 3.44.2
Spotify
api_endpoint_reachable ok
[/center] ___

Bonjour,
Juste une suggestion :
As-tu vérifié le sens des pinces ampèremétriques ?
Tu as une fonction dans l’application Shelly pour inverser leur valeur, au cas où tu te sois trompé de sens, ce qui est bien pratique.

Merci pour ta réponse, oui les pinces sont dans le bon sens.
J’ai fini par utiliser le « export_monthly » dans la partie energy qui lui fonctionne

Bonjour,
Je suis dans la même configuration que toi. Je suis en triphasé et j’ai une installation autoconsommation solaire sur une seule phase.
Pour me facturer, mon fournisseur fait la somme de la puissance de chaque phase (positive ou négative). Donc à un instant t, je peux produire 1000W sur une phase, consommer 1000W sur une autre et 1000W sur la 3ème. Je serai donc facturé de 1000W (ou pour être puriste 1000Wh si cette puissance était pendant 1h).
Or dans ce cas, le Shelly comprend que je surproduis 1000W et que j’ai une consommation de 2000W ce qui me fausse les statistiques dans Home assistant.

Avez vous avancé dans la résolution de votre problème ?

Si ça peut servir pour d’autres, j’ai trouvé la solution en parcourant le forum:
J’utilise la télérelève pour mesurer la consommation des 6 compteurs Tempo.
J’utilise le export daily du code ci-après pour l’injection sur le réseau.

# Shelly 3EM templates for 3-phase Net Import, Export and Consumption(if you have solar generation details)
# This uses the shelly instantaneous power sensors to achieve the best possible accuracy. 
# Shelly Sensors are  sensor.shellyem3_3494547b97ab_channel_a_energy, sensor.shellyem3_3494547b97ab_channel_b_energy, sensor.shellyem3_3494547b97ab_channel_c_energy for the three phases
# Solar generation in W is used to calculate consumption via sensor.meter_2
# V1.0 Initial release by Uksa007
# V1.1 add float(0) to Consumption template to stop log warnings.
# V1.2 add Friendly names to Utility Meter sensors
# V1.3 remove negative spikes from power consumption due to different update timing of solar sensor
# V1.4 change round: 2 for small value users.

sensor:
  - platform: template
    sensors:

      # Template sensor for values of power import (active_power > 0)
      power_import:
        friendly_name: "Power Import"
        unit_of_measurement: 'W'
        device_class: energy
        value_template: >-
          {% if (states('sensor.shellyem3_3494547b97ab_channel_a_power')|float + states('sensor.shellyem3_3494547b97ab_channel_b_power')|float + states('sensor.shellyem3_3494547b97ab_channel_c_power')|float) > 0 %}
            {{ states('sensor.shellyem3_3494547b97ab_channel_a_power')|float + states('sensor.shellyem3_3494547b97ab_channel_b_power')|float + states('sensor.shellyem3_3494547b97ab_channel_c_power')|float }}
          {% else %}
            {{ 0 }}
          {% endif %}
        availability_template: "{{
            [ states('sensor.shellyem3_3494547b97ab_channel_a_power'),
              states('sensor.shellyem3_3494547b97ab_channel_b_power'),
              states('sensor.shellyem3_3494547b97ab_channel_c_power')
            ] | map('is_number') | min
          }}"

      # Template sensor for values of power export (active_power < 0)
      power_export:
        friendly_name: "Power Export"
        unit_of_measurement: 'W'
        device_class: energy
        value_template: >-
          {% if (states('sensor.shellyem3_3494547b97ab_channel_a_power')|float + states('sensor.shellyem3_3494547b97ab_channel_b_power')|float + states('sensor.shellyem3_3494547b97ab_channel_c_power')|float) < 0 %}
            {{ (states('sensor.shellyem3_3494547b97ab_channel_a_power')|float + states('sensor.shellyem3_3494547b97ab_channel_b_power')|float + states('sensor.shellyem3_3494547b97ab_channel_c_power')|float) * -1 }}
          {% else %}
            {{ 0 }}
          {% endif %}
        availability_template: "{{
            [ states('sensor.shellyem3_3494547b97ab_channel_a_power'),
              states('sensor.shellyem3_3494547b97ab_channel_b_power'),
              states('sensor.shellyem3_3494547b97ab_channel_c_power')
            ] | map('is_number') | min
          }}"

      # Template sensor for values of power consumption
      power_consumption:
        friendly_name: "Power Consumption"
        unit_of_measurement: 'W'
        device_class: energy
        value_template: >-
          {% if (states('sensor.power_export')|float(0)) > 0 and (states('sensor.meter_2')|float(0) - states('sensor.power_export')|float(0)) < 0 %}
          {% elif (states('sensor.power_export')|float(0)) > 0 and (states('sensor.meter_2')|float(0) - states('sensor.power_export')|float(0)) > 0 %}
            {{ (states('sensor.meter_2')|float(0)) - states('sensor.power_export')|float(0) }}    
          {% else %}
            {{ states('sensor.power_import')|float(0) + states('sensor.meter_2')|float(0) }}
          {% endif %}


  # Sensor for Riemann sum of energy import (W -> Wh)
  - platform: integration
    source: sensor.power_import
    name: energy_import_sum
    unit_prefix: k
    round: 2
    method: left

  # Sensor for Riemann sum of energy export (W -> Wh)
  - platform: integration
    source: sensor.power_export
    name: energy_export_sum
    unit_prefix: k
    round: 2
    method: left

  # Sensor for Riemann sum of energy consumption (W -> Wh)
  - platform: integration
    source: sensor.power_consumption
    name: energy_consumption_sum
    unit_prefix: k
    round: 2
    method: left

utility_meter:
  energy_import_daily:
    source: sensor.energy_import_sum
    name: Energy Import Daily
    cycle: daily
  energy_import_monthly:
    source: sensor.energy_import_sum
    name: Energy Import Monthly
    cycle: monthly
  energy_export_daily:
    source: sensor.energy_export_sum
    name: Energy Export Daily
    cycle: daily
  energy_export_monthly:
    source: sensor.energy_export_sum
    name: Energy Export Monthly
    cycle: monthly
  energy_consumption_daily:
    source: sensor.energy_consumption_sum
    name: Energy Consumption Daily
    cycle: daily
  energy_consumption_monthly:
    source: sensor.energy_consumption_sum
    name: Energy Consumption Monthly
    cycle: monthly

Le dashboard énergie par défaut répond à mon besoin (les graphiques sont aplatis car je viens de brancher ma voiture électrique qui tire 11kW) :

Et la carte Power Flow Card Plus sur HACS me permet de voir les flux d’énergies instantanés: