Eco compteur LEGRAND

Le mien je n’ai jamais réussi à le redémarrer
j’en ai un autre
oui je pense qu’une âme charitable pourra m’aider :slight_smile:

Salut à tous,
Je reviens suite à vos différents échanges
Pour ma part EcoUpdater ne me propose pas d’autre MAJ que ma version actuelle 3.0.17
image

pour la récupération des données de mon compteur 412000, je passe par la lecture JSON qui se trouve dans un fichier Package
Du coup, il faut mettre cette ligne dans le fichier configuration.yaml sous la ligne homeassistant: et la créer ci besoin

packages: !include_dir_named packages/

Ensuite dans le dossier où se trouve configuration.yaml, il faut créer un sous dossier appelé packages
De ce que j’ai compris, les packages permettent d’éviter d’encombrer le fichier configuration.yaml et permet à mon sens de mieux se retrouver ultérieurement

Pour ma part dans le dossier packages j’ai recréé un sous dossier Legrand pour classer les 2 fichiers nécessaire mais ce n’est pas indispensable

Ensuite dans ce dernier dossier il faut créer un fichier data.json (permet de convertir le JSON « data » du compteur qui n’est pas sous un format reconnu) qu’on laisse vide et créer un fichier qu’on nomme comme on le souhaite en .yaml (pour ma part je l’ai nommé « legrand412000 » et dans ce dernier fichier il faut mettre le code suivant

   #####################################
   ##                                 ##
   ##       LECTURE DES JSON          ##
   ##                                 ##
   #####################################

command_line:
  - sensor:
# Appel pour récupérer le data.json suivant adresse Ip de l'Eco Compteur  
      command: curl -s 'http://192.168.1.50/data.json' | jq > /config/packages/Legrand/data.json
      name: Data JSON
      unique_id: data_json
      value_template: "OK"
      scan_interval: 20 # A CHOISIR ?
      command_timeout: 60 # temps maxi pour retour (pas obligatoire)
  - sensor:
# Commande Récupération Valeur data.json
      command: grep "" /config/packages/Legrand/data.json | jq
      name: Données du Json
      unique_id: sensor.donnees_du_json
      value_template: "OK"
      json_attributes:
        - option_tarifaire
        - tarif_courant
        - isousc
        - conso_base
        - conso_hc
        - conso_hp
        - conso_hc_b
        - conso_hp_b
        - conso_hc_w
        - conso_hp_w
        - conso_hc_r
        - conso_hp_r
        - type_imp_0
        - type_imp_1
        - type_imp_2
        - type_imp_3
        - type_imp_4
        - type_imp_5
        - label_entree1
        - label_entree2
        - label_entree3
        - label_entree4
        - label_entree5
        - label_entree_imp0
        - label_entree_imp1
        - label_entree_imp2
        - label_entree_imp3
        - label_entree_imp4
        - label_entree_imp5
        - entree_imp0_disabled
        - entree_imp1_disabled
        - entree_imp2_disabled
        - entree_imp3_disabled
        - entree_imp4_disabled
        - entree_imp5_disabled

  - sensor:
# Appel pour récupérer le inst.json suivant adresse Ip de l'Eco Compteur  
      command: curl -s 'http://192.168.1.50/inst.json'
      name: "Compteur Individuel JSON"
      unique_id: compteur_individuel_json
      value_template: "ok"
      scan_interval: 1
      json_attributes:
        - data1
        - data2
        - data3
        - data4
        - data5
        - data6
        - data6m3
        - data7
        - data7m3
        - heure
        - minute
        - CIR1_Nrj
        - CIR1_Vol
        - CIR2_Nrj
        - CIR2_Vol
        - CIR3_Nrj
        - CIR3_Vol
        - CIR4_Nrj
        - CIR4_Vol
        - Date_Time

   #####################################
   ##                                 ##
   ##       CREATION DES ENTITES      ##
   ##           SOUHAITEES            ##
   ##                                 ##
   #####################################
   
template:
  - sensor:
        
# Template de data.json
    - name: "Valeur Tarif"
      unique_id: valeur_tarif
      state: >
        {{ state_attr('sensor.donnees_du_json','tarif_courant')}}
        
    - name: "Valeur Intensité"
      unique_id: valeur_intensite
      unit_of_measurement: "A"
      state: >
        {{ state_attr('sensor.donnees_du_json','isousc')}}
        
    - name: "Index conso"
      unique_id: index_conso
      unit_of_measurement: "kWh"
      state: >
        {{ state_attr('sensor.donnees_du_json','conso_base') / 1000}}
        
    - name: "Nom data1"
      unique_id: nom_data1
      state: >
        {{ state_attr('sensor.donnees_du_json','label_entree1')}}
        
    - name: "Nom data2"
      unique_id: nom_data2
      state: >
        {{ state_attr('sensor.donnees_du_json','label_entree2')}}
        
    - name: "Nom data3"
      unique_id: nom_data3
      state: >
        {{ state_attr('sensor.donnees_du_json','label_entree3')}}
        
    - name: "Nom data4"
      unique_id: nom_data4
      state: >
        {{ state_attr('sensor.donnees_du_json','label_entree4')}}
        
# Template de inst.json
    - name: 'Conso PC Info'
      unique_id: conso_pc_info
      unit_of_measurement: "W"
      state: >
        {{ state_attr('sensor.compteur_individuel_json','data1')}}
      
    - name: 'Conso Eclairage'
      unique_id: conso_eclairage
      unit_of_measurement: "W"
      state: >
        {{ state_attr('sensor.compteur_individuel_json','data2')}}
      
    - name: 'Conso Chauffage'
      unique_id: conso_chauffae
      unit_of_measurement: "W"
      state: >
        {{ state_attr('sensor.compteur_individuel_json','data3')}}
      
    - name: 'Conso Chaudiere'
      unique_id: conso_chaudiere
      unit_of_measurement: "W"
      state: >
        {{ state_attr('sensor.compteur_individuel_json','data4')}}
    

   #####################################
   ##                                 ##
   ##       SENSORS & TEMPLATES       ##
   ##    CONSOMMATIONS ELECTRIQUE     ##
   ##                                 ##
   #####################################

# Tarif en Cours Donnée Brute
# Valeurs : 0 = Base
# Valeurs : 2 = Pleine / 1 = Creuse
# Valeurs : 8 = Pleine bleu / 5 = Creuse bleu
# Valeurs : 9 = Pleine blanc / 6 = Creuse blanc
# Valeurs : 10 = Pleine rouge / 7 = Creuse rouge

# Transformation Tarif en Cours > Tranche Tarifaire
#    - name: "Tranche Tarifaire"
#      unique_id: tranche_tarifaire
#      state: >
#        {% if is_state('sensor.valeur_tarif', '0') %}
#          Base
#        {% else %}
#        {% if is_state('sensor.valeur_tarif', '10') %}
#          Heure Pleine ROUGE
#        {% else %}
#        {% if is_state('sensor.valeur_tarif', '9') %}
#          Heure Pleine BLANC
#        {% else %}
#        {% if is_state('sensor.valeur_tarif', '8') %}
#          Heure Pleine BLEU
#        {% else %}
#        {% if is_state('sensor.valeur_tarif', '7') %}
#          Heure Creuse ROUGE
#        {% else %}
#        {% if is_state('sensor.valeur_tarif', '6') %}
#          Heure Creuse BLANC
#        {% else %}
#        {% if is_state('sensor.valeur_tarif', '5') %}
#          Heure Creuse BLEU
#        {% else %}
#        {% if is_state('sensor.valeur_tarif', '2') %}
#          Heure Pleine
#        {% else %}
#        {% if is_state('sensor.valeur_tarif', '1') %}
#          Heure Creuse 
#        {% endif %}

   #####################################
   ##                                 ##
   ##             RELEVES             ##
   ##           ABONNEMENT            ##
   ##                                 ##
   #####################################

# Puissance Souscrite
    - name: "Puissance Abonnement Souscrite"
      unique_id: puissance_abonnement_souscrite
      unit_of_measurement: 'kVA'
      state: >
        {% set i = states('sensor.valeur_intensite') | float(default=0) %} 
        {{ ( i / 5 ) | round(2) }}
        

   #####################################
   ##                                 ##
   ##         SENSORS CALCULS         ##
   ##        CONSOMMATION HC/HP       ##
   ##                                 ##
   #####################################

# Les Sensors ci-après permettent d'aditionner les conso issues de DATA.JSON de HP - HC y compris en tarif TEMPO
# Les sensors sont à adaptés en prenant comme base les premiers Templates
# Calcul Consommation Totale (HP + HC)
#        - name: "Legrand Consommation Totale"
#          unit_of_measurement: "kWh"
#          state: >
#            {{ float(states('sensor.legrand_consommation_hp') + #float(states.sensor.legrand_consommation_hc') | default(0) | round(2) }}

# Calcul Consommation Totale Tempo ou équivalent
#        - name: "Legrand Consommation Totale"
#          unit_of_measurement: "kWh"
#          state: >
#            {{ float(states('sensor.legrand_consommation_hp_b') + #float(states.sensor.legrand_consommation_hc_b') + #float(states('sensor.legrand_consommation_hp_w') + #float(states('sensor.legrand_consommation_hc_w') + #float(states('sensor.legrand_consommation_hp_r') + #float(states('sensor.legrand_consommation_hc_r') | default(0) | round(2) }}

   #####################################
   ##                                 ##
   ##          SENSORS COUTS          ##
   ##      FACTURATION ELECTRICITE    ##
   ##                                 ##
   #####################################

# Sensor Input Number pour insertion du prix de l'Abonnement
#    - name: "Legrand Prix Abonement"
#      unique_id: legrand_prix_abonement
#      unit_of_measurement: "€"
#      state: >-
#        {{ states('input_num.legrand_prix_abonement') | default(0) | round(2) }}


#    - name: "Legrand Prix kWh Base"
#      unique_id: legrand_prix_kwh_base
#      unit_of_measurement: "€"
#      state: >-
#        {{ states('input_num.legrand_prix_kwh_base') | default(0) | round(2) }}

input_number:
# Sensor Input Number pour insertion du prix de l'Abonnement
 legrand_prix_abonnement:
    name: Legrand Prix Abonnement 9kVA
    initial: 15.79
    min: 0
    max: 500
    step: 0.01
    mode: box 
    unit_of_measurement: "€ / Mois"
    icon: mdi:currency-eur
# Sensor Input Number pour insertion du prix du kwh en Base, à dupliquer pour les multi tarif
 legrand_prix_kwh_base:
    name: Legrand Prix kWh Base 
    initial: 25.16 
    min: 0
    max: 500
    step: 0.01
    mode: box 
    unit_of_measurement: "€ /kWh"
    icon: mdi:flash-red-eye

Ensuite il faut adapter les lignes suivantes à sa configuration
command: curl -s 'http://192.168.1.50/data.json' | jq > /config/packages/Legrand/data.json
command: grep "" /config/packages/Legrand/data.json | jq
command: curl -s 'http://192.168.1.50/inst.json

Ensuite il faut adapter les Templates en fonction de ce que vous avez besoin pour créer les entités souhaités.

Et une fois fini, il faut penser à redémarrer HA ou au moins faire recharger les YAML

Voilà comment j’ai fait
N’hésitez pas si vous voulez des infos complémentaires

Merci yoyouri
je voudrais essayer ta proposition
mais me faudrai encore de l’aide :stuck_out_tongue:
je suis vraiment nouveau dans ce domaine
comment faire pour créer un dossier dans HA :stuck_out_tongue: c la base je pense, mais je sais pas

Pareil pour moi et j’ai énormément de mal avec le code YAML, mais heureusement sur le forum il y a énormément d’aide

non ce n’est pas forcément la base !!!
Il y a plusieurs façon, mais la plus simple est de passer par File editor à installer depuis les modules complémentaires
image

ok j’ai réussi a faire les dossiers
et créer les fichiers
faut que j’adapte quoi sur la ligne surligné ?
pour l’instant j’ai une erreur
image
image

Si tu as créé le sous-dossier « Legrand » rien, si non, il faut le supprimer du chemin d’accès
Attention, j’ai mis une majuscule dans le nom du dossier, il faut la mettre dans le nom du dossier ou la remplacer dans le code yaml

ok
et pour les entitées je les retrouvent ou

Dans le listing des entités

je n’y trouve rien
je suis perdu
faudrai presque faire en live :stuck_out_tongue:

1 « J'aime »

Merci beaucoup Yoyouri pour ton aide, tu as la classe
je récupère les instantanées de mes ecocompteurs
je suis content
maintenant jecherche pour avoir l’Energie , je te tient au courant si je trouve

À première vue ça doit être réalisable via cette intégration

oui c’est ca
j’ai configuré un canal pour voir et ca fonctionne
il incrémente en continu
maintenant, avoir les données pour comparer l’Energie consommée par jour , comment faire ?

Faut lire ce thread, quasiment tout a déjà été expliqué. :blush:

Par exemple, je pense que tu en es là : Eco compteur LEGRAND - #85 par otpod

salut otpod
j’ai créé le sensor energie suivant ce thread , mais il me met une erreur :stuck_out_tongue:
image

Copie ton YAML ici pour voir et l’intégrale que tu as créée pour le calcul de l’énergie.

pour essayer j’ai créé que 1 entité energie
voici ce que tu demande


  #####################################
  ##                                 ##
  ##       LECTURE DES JSON          ##
  ##                                 ##
  #####################################

command_line:
  - sensor:
# Appel pour récupérer le inst.json suivant adresse Ip de l'Eco Compteur  
      command: curl -s 'http://192.168.1.54/inst.json'
      name: "Compteur 1"
      unique_id: compteur_1
      value_template: "ok"
      scan_interval: 1
      json_attributes:
        - data1
        - data2
        - data3
        - data4
        - data5
        - data6
        - data6m3
        - data7
        - data7m3
        - heure
        - minute
        - CIR1_Nrj
        - CIR1_Vol
        - CIR2_Nrj
        - CIR2_Vol
        - CIR3_Nrj
        - CIR3_Vol
        - CIR4_Nrj
        - CIR4_Vol
        - Date_Time

  - sensor:
      command: curl -s 'http://192.168.1.62/inst.json'
      name: "Compteur 2"
      unique_id: compteur_2
      value_template: "ok"
      scan_interval: 1
      json_attributes:
        - data1
        - data2
        - data3
        - data4
        - data5
        - data6
        - data6m3
        - data7
        - data7m3
        - heure
        - minute
        - CIR1_Nrj
        - CIR1_Vol
        - CIR2_Nrj
        - CIR2_Vol
        - CIR3_Nrj
        - CIR3_Vol
        - CIR4_Nrj
        - CIR4_Vol
        - Date_Time
        
  - sensor:
      command: curl -s 'http://192.168.1.93/inst.json'
      name: "Compteur 3"
      unique_id: compteur_3
      value_template: "ok"
      scan_interval: 1
      json_attributes:
        - data1
        - data2
        - data3
        - data4
        - data5
        - data6
        - data6m3
        - data7
        - data7m3
        - heure
        - minute
        - CIR1_Nrj
        - CIR1_Vol
        - CIR2_Nrj
        - CIR2_Vol
        - CIR3_Nrj
        - CIR3_Vol
        - CIR4_Nrj
        - CIR4_Vol
        - Date_Time
        
  #####################################
  ##                                 ##
  ##       CREATION DES ENTITES      ##
  ##           SOUHAITEES            ##
  ##                                 ##
  #####################################
  
template:
  - sensor:
        
# Template de inst.json
    - name: 'PAC unite ext'
      unique_id: pac_unité_ext
      unit_of_measurement: "W"
      state: >
        {{ state_attr('sensor.compteur_1','data1')}}
      
    - name: 'prise chaufferie'
      unique_id: prise_chaufferie
      unit_of_measurement: "W"
      state: >
        {{ state_attr('sensor.compteur_1','data2')}}
      
    - name: 'PAC unite int'
      unique_id: pac_unite_int
      unit_of_measurement: "W"
      state: >
        {{ state_attr('sensor.compteur_1','data3')}}
      
    - name: 'Prod Photovoltaique'
      unique_id: prod_Photovoltaique
      unit_of_measurement: "W"
      state: >
        {{ state_attr('sensor.compteur_1','data4')}}
        
    - name: 'Prise salon'
      unique_id: prise_salon
      unit_of_measurement: "W"
      state: >
        {{ state_attr('sensor.compteur_1','data5')}}
    
    
    - name: 'Prise bureau'
      unique_id: prise_bureau
      unit_of_measurement: "W"
      state: >
        {{ state_attr('sensor.compteur_2','data1')}}
      
    - name: 'Prise cuisine'
      unique_id: prise_cuisine
      unit_of_measurement: "W"
      state: >
        {{ state_attr('sensor.compteur_2','data2')}}
      
    - name: 'Prise chambre'
      unique_id: prise_chambre
      unit_of_measurement: "W"
      state: >
        {{ state_attr('sensor.compteur_2','data3')}}
      
    - name: 'Four'
      unique_id: four
      unit_of_measurement: "W"
      state: >
        {{ state_attr('sensor.compteur_2','data4')}}
        
    - name: 'Plaque cuisson'
      unique_id: plaque_cuisson
      unit_of_measurement: "W"
      state: >
        {{ state_attr('sensor.compteur_2','data5')}}
        
        
    - name: 'Seche linge'
      unique_id: seche_linge
      unit_of_measurement: "W"
      state: >
        {{ state_attr('sensor.compteur_3','data1')}}
      
    - name: 'Lave linge'
      unique_id: lave_linge
      unit_of_measurement: "W"
      state: >
        {{ state_attr('sensor.compteur_3','data2')}}
      
    - name: 'Lave vaisselle'
      unique_id: lave_vaisselle
      unit_of_measurement: "W"
      state: >
        {{ state_attr('sensor.compteur_3','data3')}}
      
    - name: 'Baie de brassage'
      unique_id: baie_de_brassage
      unit_of_measurement: "W"
      state: >
        {{ state_attr('sensor.compteur_3','data4')}}
        
    - name: 'vide'
      unique_id: vide
      unit_of_measurement: "W"
      state: >
        {{ state_attr('sensor.compteur_3','data5')}}

Salut
Je pense que @otpod attend plus le code YAML de l’entrée que tu as créé que le code YAML pour récupérer les données des compteurs vu que tu a une erreur sur l’entrée

je veux bien mais je ne vois pas comment trouver le code YAML

j’ai trouvé le code YAML , j’ai toujours l’erreur

state_class: total
source: sensor.baie_de_brassage
unit_of_measurement: kWh
icon: mdi:chart-histogram
friendly_name: energie baie de brassage

Bonjour,
Tout nouveau sur HA, j’ai parcouru tout ce fil et j’ai réussi à intégrer mon écocompteur grâce à voytre travail en décodant le inst.json et data.json.
Par contre, n’ayant rien trouvé pour récupérer les données de conso des différents circuits, j’ai creusé et j’ai complété le YAML pour décoder le fichier log2.CSV qui contien ces données.
Je vous partage le code pour ceux que ça intéresse

rest:
  - resource: "http://192.168.1.5/inst.json"
    sensor:
      - name: "EcoCompteur_Chauffage"
        unique_id: EcoCompteur_Chauffage
        value_template: "{{ ( value_json.data1 | float * 1 ) | round(0) }}"
        unit_of_measurement: W
        device_class: power

      - name: "EcoCompteur_RDC"
        value_template: "{{ ( value_json.data2 | float * 1 ) | round(0) }}"
        unique_id: EcoCompteur_RDC
        unit_of_measurement: W
        device_class: power
        
      - name: "EcoCompteur_Etage"
        value_template: "{{ ( value_json.data3 | float * 1 ) | round(0) }}"
        unique_id: EcoCompteur_Etage
        unit_of_measurement: W
        device_class: power

      - name: "EcoCompteur_Electro"
        value_template: "{{ ( value_json.data4 | float * 1 ) | round(0) }}"
        unique_id: EcoCompteur_Electro
        unit_of_measurement: W
        device_class: power

      - name: "EcoCompteur_Total"
        value_template: "{{ ( value_json.data5 | float * 1 ) | round(0) }}"
        unique_id: EcoCompteur_Total
        unit_of_measurement: W
        device_class: power


# https://community.home-assistant.io/t/how-to-decode-special-json-ex-conso-hc-006699756/253018/33

  - resource: "http://192.168.1.5/data.json"
    sensor:
      - name: "EcoCompteur_Conso_Base"
        value_template: '{{ (((value|regex_replace("([ :])0+(\\d+),", "\g<1>\g<2>,")|from_json).conso_base) | float * 1 / 1000) | round(0) }}'
        unique_id: EcoCompteur_Conso_Base
        device_class: energy
        unit_of_measurement: kWh
        state_class: total_increasing


      - name: "EcoCompteur_isousc"
        value_template: '{{ (((value|regex_replace("([ :])0+(\\d+),", "\g<1>\g<2>,")|from_json).isousc) | float * 1 ) | round(0) }}'
        unique_id: EcoCompteur_isousc
        device_class: current
        unit_of_measurement: A
        
# Données conso circuits individuels

  - resource: "http://192.168.1.5/log2.csv"
    sensor:
      - name: "EcoCompteur_Conso_Circuit1"
        value_template: >
          {% set r = value.splitlines() %}
          {% set size = r | length %}
          {% set param = r[size - 1].split(';') %}
          {% if param | length > 7 %}
          {{ param[7] | float | round(3) }}
          {% else %}
          0
          {% endif %}
        unique_id: EcoCompteur_Conso_Circuit1
        device_class: energy
        unit_of_measurement: kWh
        state_class: total_increasing
        
      - name: "EcoCompteur_Conso_Circuit2"
        value_template: >
          {% set r = value.splitlines() %}
          {% set size = r | length %}
          {% set param = r[size - 1].split(';') %}
          {% if param | length > 9 %}
          {{ param[9] | float | round(3) }}
          {% else %}
          0
          {% endif %}
        unique_id: EcoCompteur_Conso_Circuit2
        device_class: energy
        unit_of_measurement: kWh
        state_class: total_increasing

      - name: "EcoCompteur_Conso_Circuit3"
        value_template: >
          {% set r = value.splitlines() %}
          {% set size = r | length %}
          {% set param = r[size - 1].split(';') %}
          {% if param | length > 11 %}
          {{ param[11] | float | round(3) }}
          {% else %}
          0
          {% endif %}
        unique_id: EcoCompteur_Conso_Circuit3
        device_class: energy
        unit_of_measurement: kWh
        state_class: total_increasing
    
      - name: "EcoCompteur_Conso_Circuit4"
        value_template: >
          {% set r = value.splitlines() %}
          {% set size = r | length %}
          {% set param = r[size - 1].split(';') %}
          {% if param | length > 13 %}
          {{ param[13] | float | round(3) }}
          {% else %}
          0
          {% endif %}
        unique_id: EcoCompteur_Conso_Circuit4
        device_class: energy
        unit_of_measurement: kWh
        state_class: total_increasing

      - name: "EcoCompteur_Conso_Circuit5"
        value_template: >
          {% set r = value.splitlines() %}
          {% set size = r | length %}
          {% set param = r[size - 1].split(';') %}
          {% if param | length > 15 %}
          {{ param[15] | float | round(3) }}
          {% else %}
          0
          {% endif %}
        unique_id: EcoCompteur_Conso_Circuit5
        device_class: energy
        unit_of_measurement: kWh
        state_class: total_increasing
1 « J'aime »