Eco compteur LERAND

es ce que quelqu’un à un autre lien pour l’intégration du compteur LEgrand car celui du site ne marche plus???

J’ai mis du temps avant de comprendre que tu parlais de ce tutoriel : https://hacf.fr/integration-de-lecocompteur-legrand-dans-home-assistant/

Récupérer de puis le cache : (@McFly : il n’est pas présent dans la V2…)

Intégration de l’écocompteur Legrand dans Home Assistant.
Introduction.
Bonjour, si vous avez une maison récente respectant la loi RT2012 vous avez certainement dû acquérir un écompteur pour permettre de quantifier l’énergie utilisée par les différents systèmes de la maison. Soyons honnête nous n’allons jamais voir dessus la consommation… Dans cet article je vais vous montrer comment lui donner une deuxième vie et lui donner une réel utilité.

Mise à jour : 15/07/2020 – Temps de lecture / réalisation : 8 / 20 min – Difficulté : Faible.

Prérequis.
Version de HA : V100.0
Matériels utilisés.
Ecocompteur LEGRAND IP (Ref. 4 120 00)
Installation / configuration.
A ce jour il n’existe pas d’intégration pour ce type de compteur, il va donc nous falloir créer nos propres “sensors”. Vous trouverez plus de détails sur les “sensors” ici.

Configuration du module IP
La première étape est de préparer le module. Si cela n’est pas fais, commencez par le brancher sur votre réseau via un câble Ethernet.

La deuxième étape est de trouver son IP sur le réseau et de lui en fixer une. Vous avez deux possibilités, soit par une réservation en DHCP, soit en lui fixant une IP.

J’ai une préférence pour fixer les IPs quand cela est possible, on est moins embêté en cas de changement de box (si celle-ci fait serveur DHCP).

Vous trouverez son IP actuelle en naviguant dans le menu de l’écocompteur (Assez intuitif). Une fois que vous l’avez trouvé rendez vous sur la page de ce dernier via un navigateur et définissez l’adresse souhaitée comme dans l’exemple ci-dessous. Une fois validé allez sur sa nouvelle IP pour confirmer que cela fonctionne correctement.

Paramétrage réseau de l’écocompteur LEGRAND
Rendez-vous sur la page suivante en n’oubliant pas de remplacer l’IP par celle que vous avez précédemment choisis :

http://192.168.1.13/data.json
Vous devrez obtenir quelque chose qui ressemble à cela :

{
	"option_tarifaire" : 4,
	"tarif_courant" : 11,
	"isousc" : 0,
	
	"conso_base" : 0,
	"conso_hc"   : 0,
	"conso_hp"   : 0,
	"conso_hc_b" : 0,
	"conso_hp_b" : 0,
	"conso_hc_w" : 0,
	"conso_hp_w" : 0,
	"conso_hc_r" : 0,
	"conso_hp_r" : 0,
	
	"type_imp_0" : 0,
	"type_imp_1" : 1,
	"type_imp_2" : 1,
	"type_imp_3" : 1,
	"type_imp_4" : 1,
	"type_imp_5" : 1,

	"label_entree1" : "Eau chaude",
	"label_entree2" : "Refroidissement",
	"label_entree3" : "Prises de Courant",
	"label_entree4" : "Prises de Courant",
	"label_entree5" : "Prises de Courant",
	
	"label_entree_imp0" : "Gaz",
	"label_entree_imp1" : "Eau",
	"label_entree_imp2" : "Eau",
	"label_entree_imp3" : "Eau",
	"label_entree_imp4" : "Eau",
	"label_entree_imp5" : "Eau",
	
	"entree_imp0_disabled" : 1,
	"entree_imp1_disabled" : 0,
	"entree_imp2_disabled" : 1,
	"entree_imp3_disabled" : 1,
	"entree_imp4_disabled" : 1,
	"entree_imp5_disabled" : 1
}

Voilà, la première et la partie la plus compliquée est terminée ! Simple, vous ne trouvez pas ? Si vous n’obtenez pas ce résultat veuillez consultez la fin de l’article, pour quelques hypothèses.

Configuration de HA
Au tout début de l’article, je vous ai dit qu’il n’y avait pas d’intégration existante sur HA pour notre équipement, nous allons donc créer nos propre sensors, rien de plus simple je vous mets tout le code !

Le code suivant et à mettre dans le fichier configuration yaml ou si vous avez suivi le tuto de notre ami McFly sur les sensors vous devrez l’insérer dans votre fichier sensors.

Dans configuration.yaml en dessous de “sensor:” ou dans sensors.yaml Ajouter ceci :

  - platform: command_line
    name: Tarif en cours
    command: curl -s 'http://192.168.1.13/data.json' | jq '.tarif_courant'
    scan_interval: 10

  - platform: template
    sensors:
      legrand_hchp:
        friendly_name: Tarif en cours
        entity_id: sensor.tarif_en_cours
        value_template: >
          {% if is_state('sensor.tarif_en_cours', '2') %}
            HP
          {% else %}
            HC
          {% endif %}

  - platform: command_line
    name: EcoCompteur Consommation HC
    command: curl -s 'http://192.168.1.13/data.json' | jq '.conso_hc |floor/1000'
    scan_interval: 1800 #30min
    unit_of_measurement: kWh

  - platform: command_line
    name: EcoCompteur Consommation HP
    command: curl -s 'http://192.168.1.13/data.json' | jq '.conso_hp |floor/1000'
    scan_interval: 1800 #30min
    unit_of_measurement: kWh

  - platform: command_line
    name: EcoCompteur Abonnement
    command: curl -s 'http://192.168.1.13/data.json' | jq '.isousc'
    scan_interval: 43200 #12h
    unit_of_measurement: A

  - platform: command_line
    name: EcoCompteur Chauffe Eau
    command: curl -s 'http://192.168.1.13/inst.json' | jq '.data1'
    scan_interval: 2
    unit_of_measurement: W

  - platform: command_line
    name: EcoCompteur Congélateur
    command: curl -s 'http://192.168.1.13/inst.json' | jq '.data2'
    scan_interval: 2
    unit_of_measurement: W

  - platform: command_line
    name: EcoCompteur Chauffage
    command: curl -s 'http://192.168.1.13/inst.json' | jq '.data3'
    scan_interval: 2
    unit_of_measurement: W

  - platform: command_line
    name: EcoCompteur Prise
    command: curl -s 'http://192.168.1.13/inst.json' | jq '.data4'
    scan_interval: 2
    unit_of_measurement: W

  - platform: command_line
    name: EcoCompteur Climatisation
    command: curl -s 'http://192.168.1.13/inst.json' | jq '.data5'
    scan_interval: 2
    unit_of_measurement: W

Modifier le code pour mettre l’IP de votre écocompteur, vous pouvez renommer les noms pour faire correspondre à vos équipements électriques.

Comme toujours vérifier la configuration de HA, puis redémarrer HA si celle-ci est correcte.

Contrôler la configuration
Après le redémarrage vous devez trouver les différents sensors dans Outils de développement :

Les entités précédemment créés
Interface
A vous de jouer pour l’interface, vous pouvez simplement les afficher, faire des courbes…

Je n’ai pas ce type de compteur mais vu la reponse du compteur en json, je partirai plus sur l’utilisation d’un REST pour ne faire qu’une seul interrogation (quitte ensuite à extraire des entités)

Merci!!! :blush: :blush: :blush: :blush: :blush:

petite question en +

J’aimerai créer un sensor général qui additionne les 5 sensor de l’écocompteur.

On fait sa comment?

j’essaye sa mais sa marche pas:

- platform: template 
  sensors:
    friendly_name: 'consomation totale'
    value_template: "{{ (states('sensor.ecocompteur.attributes["data1"]') |float + states('states.sensor.ecocompteur.attributes["data2"]') |float }}"
    unit_of_measurement: "kWh"

Essaie plutôt quelque chose du genre :

- platform: template 
  sensors:
    friendly_name: 'consomation totale'
    value_template: >
      {{
        (
          state_attr('sensor.ecocompteur','data')|float
        ) 
        + 
        (
          state_attr('sensor.ecocompteur', 'data2')|float
        )
      }}
    unit_of_measurement: "kWh"

Le code doit etre bon, mais il m’indique 0 en permanence!!!
une idée de se qui bloque?

 - platform: template
    sensors:
      consomation_totale:
        value_template: >
          {{ '%0.1f' | format(states('sensor.ecocompteur.attributes["data1"]') | float + 
                              states('sensor.ecocompteur.attributes["data2"]') | float +
                              states('sensor.ecocompteur.attributes["data3"]') | float +
                              states('sensor.ecocompteur.attributes["data4"]') | float +
                              states('sensor.ecocompteur.attributes["data5"]') | float) }}
        unit_of_measurement: 'KWh'
        friendly_name: 'consomation totale'

et

Sont antinomique pour moi :sweat_smile:



As-tu essayé le code que je t’ai indiqué (je viens de le mettre à jour car il manquait une quotte) ?

Car il contient la syntaxe pour récupérer un attribut :

Si tu mets la récupération de l’attribut que tu utilises dans Outils de développement → Onglet MODELE il te renverra certainement unknown, du coup, la conversion en nombre derrière renvoi 0

quand j’intègre ton code et que je teste la config il me dit sa:

Error loading /config/configuration.yaml: while parsing a block mapping
in « /config/configuration.yaml », line 3, column 1
expected , but found ‹ - ›
in « /config/configuration.yaml », line 49, column 1

j’ai trouvé l’erreur de syntaxe maintenant il me dit sa:

Invalid config for [sensor.template]: expected dictionary for dictionary value @ data['sensors']. Got None
extra keys not allowed @ data['friendly_name']. Got 'consomation totale'
extra keys not allowed @ data['unit_of_measurement']. Got 'kWh'
extra keys not allowed @ data['value_template']. Got "{{\n (\n state_attr('sensor.ecocompteur','data1')|float\n ) \n + \n (\n state_attr('sensor.ecocompteur','data2')|float\n )\n}}\n". (See ?, line ?).

ci joint la config de mon ecocompteur:

sensor:
  - platform: rest
    name: ecocompteur
    json_attributes:
      - data1
      - data2
      - data3
      - data4
      - data5
    resource: http://192.168.1.230/inst.json
    value_template: '{{ value_json.Date_Time }}'
  - platform: template
    sensors:
      data1:
        friendly_name: 'Chauffage'
        unit_of_measurement: 'W'
        value_template: '{{ states.sensor.ecocompteur.attributes["data1"] }}'
      data2:
        friendly_name: 'Cumulus'
        unit_of_measurement: 'W'
        value_template: '{{ states.sensor.ecocompteur.attributes["data2"] }}'
      data3:
        friendly_name: 'Prises'
        unit_of_measurement: 'W'
        value_template: '{{ states.sensor.ecocompteur.attributes["data3"] }}'
      data4:
        friendly_name: 'Eclairage'
        unit_of_measurement: 'W'
        value_template: '{{ states.sensor.ecocompteur.attributes["data4"] }}'
      data5:
        friendly_name: 'Piscine'
        unit_of_measurement: 'W'
        value_template: '{{ states.sensor.ecocompteur.attributes["data5"] }}'

Pour la récupération des attributs, je te conseilles de préférer la méthode présentée ici :

merci j’ai réussi sa marche

Partage le code :+1:

Bonjour aeamaa_aeamaa,

Je suis preneur pour ton code, peux-tu le partager stp.
Merci
Bon Week-end