Eco compteur LEGRAND

Bonjour,

J’ai réglé le problème en reformatant les entrées de configuration.yaml:

command_line:
    - sensor:
        name: "Tarif en cours"
        command: curl -s 'http://192.168.x.x/data.json' | jq '.tarif_courant'
        scan_interval: 10

    - sensor:
        name: "EcoCompteur Consommation HC"
        command: curl -s 'http://192.168.x.x/data.json' | jq '.conso_hc |floor/1000'
        scan_interval: 1800 #30min
        unit_of_measurement: kWh

    - sensor:
        name: "EcoCompteur Consommation HP"
        command: curl -s 'http://192.168.x.x/data.json' | jq '.conso_hp |floor/1000'
        scan_interval: 1800 #30min
        unit_of_measurement: kWh

    - sensor:
        name: "EcoCompteur Abonnement"
        command: curl -s 'http://192.168.x.x/data.json' | jq '.isousc'
        scan_interval: 43200 #12h
        unit_of_measurement: A

    - sensor:
        name: "EcoCompteur Climatisation"
        command: curl -s 'http://192.168.x.x/inst.json' | jq '.data1'
        scan_interval: 2
        unit_of_measurement: W

    - sensor:
        name: "EcoCompteur VMC /Pompe"
        command: curl -s 'http://192.168.x.x/inst.json' | jq '.data2'
        scan_interval: 2
        unit_of_measurement: W

    - sensor:
        name: "EcoCompteur Borne VE"
        command: curl -s 'http://192.168.x.x/inst.json' | jq '.data3'
        scan_interval: 2
        unit_of_measurement: W

    - sensor:
        name: "EcoCompteur Prises"
        command: curl -s 'http://192.168.x.x/inst.json' | jq '.data4'
        scan_interval: 2
        unit_of_measurement: W

    - sensor:
        name: "EcoCompteur Cuisine"
        command: curl -s 'http://192.168.x.x/inst.json' | jq '.data5'
        scan_interval: 2
        unit_of_measurement: W
2 « J'aime »

Bien joué.
J’ai enfin pu trouver un mec qui en parlait pour une autre integration. J’en profite pour prendre un screenshot.
J’ai aussi ajouté (device_class: power) pour une meilleur integration dans mon dashboard Energie.

Merci a vous.
Je débute dans HA (via synology) (je suis actuellement sous eedomus) et ce forum est gorger de plein d’astuce
mes entités sont fonctionnel, reste juste a les passer en capteur d’énergie car 1 de mes tors est en direct sur mes panneaux pour éviter le cloud

En effet, encore une erreur dû au monsieur entre l’écran et la chaise… :stuck_out_tongue:
Donc il faut juste reprendre le YAML et ça remarche même en 12.3 !

Sinon, j’ai mis en place des entités de type « Intégrale – Capteur d’intégrale de Riemann » pour transformer les W lu par le TOR en KWh pour le dashboard Energy.
Cela fonctionne apparemment bien mais j’ai une valeur faussée pour mon ECS à chaque démarrage :
image

Comment procédez vous de votre coté pour intégrer les valeurs de l’ecocompteur dans ENERGY ?

Bonjour,

As-tu réussi a récupérer les données de l’EcoCompteur ???
Le mien est instalé, j’ai créer mon compte sue le site dev de netatmo, mais peux importe ce que je fait, j’ai toujours la même erreur: « Error during webhook registration », et mes sensors sont toujours en « indisponible » … Je pense qu’il ne me manque pas grand chose …
Merci

Bonjour,

Oui, bien sur.
Le mien est un « vrai » EcoCompteur réf: 412000. Pas besoin de bidouille dans le cloud, ni de compte chez Netatmo.

Bonjour
J’essai de récupérer les info du miens avec les différents bouts de code vu ici et là mais sans succès

@jpty Pouvez-vous me transmettre le votre en entier en indiquant quel bout dans quel YAML ?

Je vous remercie par avance

Bonjour,
J’ai rencontré le même problème suite à la mise à jour mais jusque là impossible d’avoir le retour de mes mesures.

Avant j’avais ça dans mon fichier sensor.yaml :

  - platform: command_line
    name: Tarif en cours
    command: curl -s 'http://192.168.1.12/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.12/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.12/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.12/data.json' | jq '.isousc'
    scan_interval: 43200 #12h
    unit_of_measurement: A

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

  - platform: command_line
    name: EcoCompteur MachineLaver
    command: curl -s 'http://192.168.1.12/inst.json' | jq '.data2'
    scan_interval: 2
    unit_of_measurement: W

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

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

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

Suivi de ça même si je ne sais plus à quoi ça servait :

  - platform: integration
    source: sensor.ecocompteur_total
    name: conso_total
    unit_prefix: k
    round: 2
    
  - platform: integration
    source: sensor.ecocompteur_pac
    name: conso_pac
    unit_prefix: k
    round: 2
    
  - platform: integration
    source: sensor.ecocompteur_machinelaver
    name: conso_machinelaver
    unit_prefix: k
    round: 2

  - platform: integration
    source: sensor.ecocompteur_data4
    name: conso_baie
    unit_prefix: k
    round: 2
    
  - platform: integration
    source: sensor.ecocompteur_data5
    name: prod_solaire
    unit_prefix: k
    round: 2

En me basant sur ton poste j’ai modifié mon code et intégré dans configuration.yaml

command_line:
    - sensor:
        name: "Tarif en cours"
        command: curl -s 'http://192.168.x.x/data.json' | jq '.tarif_courant'
        scan_interval: 10

    - sensor:
        name: "EcoCompteur Consommation HC"
        command: curl -s 'http://192.168.x.x/data.json' | jq '.conso_hc |floor/1000'
        scan_interval: 1800 #30min
        unit_of_measurement: kWh

    - sensor:
        name: "EcoCompteur Consommation HP"
        command: curl -s 'http://192.168.x.x/data.json' | jq '.conso_hp |floor/1000'
        scan_interval: 1800 #30min
        unit_of_measurement: kWh

    - sensor:
        name: "EcoCompteur Abonnement"
        command: curl -s 'http://192.168.x.x/data.json' | jq '.isousc'
        scan_interval: 43200 #12h
        unit_of_measurement: A

    - sensor:
        name: "EcoCompteur Total"
        command: curl -s 'http://192.168.x.x/inst.json' | jq '.data1'
        scan_interval: 2
        unit_of_measurement: W

    - sensor:
        name: "EcoCompteur MachineLaver"
        command: curl -s 'http://192.168.x.x/inst.json' | jq '.data2'
        scan_interval: 2
        unit_of_measurement: W

    - sensor:
        name: "EcoCompteur PAC"
        command: curl -s 'http://192.168.x.x/inst.json' | jq '.data3'
        scan_interval: 2
        unit_of_measurement: W

    - sensor:
        name: "EcoCompteur data4"
        command: curl -s 'http://192.168.x.x/inst.json' | jq '.data4'
        scan_interval: 2
        unit_of_measurement: W

    - sensor:
        name: "EcoCompteur data5"
        command: curl -s 'http://192.168.x.x/inst.json' | jq '.data5'
        scan_interval: 2
        unit_of_measurement: W

Mais mes sensors sont indiqués indisponibles, j’ai rajouté des unique_id pour chaque car j’ai lu ailleurs que ça pouvait aider mais rien.
J’ai essayer ensuite de mettre la partie commande_line dans un commande_line.yaml et rajouté command_line: !include command_line.yaml dans mon configuration.yaml mais toujours rien.

Voilà ce que ça me mets dans le journal. Et ça pour chacun des sensor :

Détails du journal (ERREUR)
Logger: homeassistant
Source: components/sensor/__init__.py:623
First occurred: 14:39:30 (3 occurrences)
Last logged: 14:39:30

Error doing job: Task exception was never retrieved
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/components/sensor/__init__.py", line 616, in state
    numerical_value = int(value)
                      ^^^^^^^^^^
ValueError: invalid literal for int() with base 10: ''

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/components/sensor/__init__.py", line 619, in state
    numerical_value = float(value)
                      ^^^^^^^^^^^^
ValueError: could not convert string to float: ''

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 509, in async_add_entities
    await asyncio.gather(*tasks)
  File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 754, in _async_add_entity
    await entity.add_to_platform_finish()
  File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 1024, in add_to_platform_finish
    await self.async_added_to_hass()
  File "/usr/src/homeassistant/homeassistant/components/command_line/sensor.py", line 126, in async_added_to_hass
    await self._update_entity_state(None)
  File "/usr/src/homeassistant/homeassistant/components/command_line/sensor.py", line 150, in _update_entity_state
    await self._async_update()
  File "/usr/src/homeassistant/homeassistant/components/command_line/sensor.py", line 191, in _async_update
    self._process_manual_data(value)
  File "/usr/src/homeassistant/homeassistant/helpers/trigger_template_entity.py", line 238, in _process_manual_data
    self.async_write_ha_state()
  File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 745, in async_write_ha_state
    self._async_write_ha_state()
  File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 845, in _async_write_ha_state
    state, attr = self._async_generate_attributes()
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 786, in _async_generate_attributes
    state = self._stringify_state(available)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 751, in _stringify_state
    if (state := self.state) is None:
                 ^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/sensor/__init__.py", line 623, in state
    raise ValueError(
ValueError: Sensor sensor.ecocompteur_pac has device class 'None', state class 'None' unit 'W' and suggested precision 'None' thus indicating it has a numeric value; however, it has the non-numeric value: '' (<class 'str'>)

image

Vous auriez une idée ?

Finalement j’ai réussi en bidouillant, je crois que c’est enlever les unités de mesure.

Est-ce que vous depuis cette modif dû aux mises à jour, vous avez pu récupérer l’historique des valeurs de vos différents compteurs ?

Dans mon cas ça en créé un nouveau avec un autre nom, je perds tout l’historique des consommation et c’est vraiment dommage de perdre un suivi de plusieurs années comme ça.

Bonjour,

Content de savoir que tu as un « vrai » compteur, sauf que cela ne fait pas avancer le schmelblick :wink:
Effectivement, le mien est celui sous la référence 412032 (412033 avec les tores)…
J’ai paramétrer les données sur le site de dev de netatmo.
J’ai un certificat SSL (Let’s enctypt) et j’accède bien en HTTPS a mon instance.
J’ai défini les credential et l’intégration ne donne pas d’erreur …
… sauf que mes sensors sont toujours muets « unavailable ».
Je ne pense pas qu’il me manque grand chose, alors étant nouveau sur Home Assistant, je suis preneur de toutes idées …
Merci

  • Core 2024.1.0
  • Supervisor 2023.12.0
  • Operating System 11.2
  • Frontend 20240103.3
1 « J'aime »

Bonjour,
Est-ce que quelqu’un peut m’aider à récupérer les données de mon compteurs Legrand 412000 ?

J’ai essayé différent codes, mais sans succès et y compris les derniers.
Pouvez-vous m’indiquer quel bout de code il faut insérer où, car j’ai essayé un peut de partout.
Merci par avance,

Bonjour, je serai intéressé également par le code, merci.

@chced0 et @tatane1234 j’essai de l’actualiser pour qu’il soit totalement fonctionnel avec les dernières versions de HA, mais compliqué

Heureusement que j’ai de l’aide bien précieuse car j’ai vraiment du mal à comprendre le fonctionnement du code sous HA

Je vous tiens au courant dès que ça fonctionne chez moi pour que vous puissiez le tester

1 « J'aime »

Si ça peut aider, le code qui marche chez moi :

#########################################
#########################################
#   Configuration COMMAND_LINE          #
#########################################
command_line:
  - sensor:
      name: "Tarif en cours"
      command: curl -s 'http://192.168.xxx.xxx/data.json' | jq '.tarif_courant'
      scan_interval: 10

  - sensor:
      name: "EcoCompteur Consommation HC"
      unique_id: eco_conso_hc
      device_class: "energy"
      state_class: "total"
      command: curl -s 'http://192.168.xxx.xxx/data.json' | jq '.conso_hc |floor/1000'
      scan_interval: 1800 #30min
      unit_of_measurement: kWh

  - sensor:
      name: "EcoCompteur Consommation HP"
      unique_id: eco_conso_hp
      device_class: "energy"
      state_class: "total"
      command: curl -s 'http://192.168.xxx.xxx/data.json' | jq '.conso_hp |floor/1000'
      scan_interval: 1800 #30min
      unit_of_measurement: kWh

  - sensor:
      name: "EcoCompteur Abonnement"
      unique_id: eco_Abo
      device_class: "energy"
      command: curl -s 'http://192.168.xxx.xxx/data.json' | jq '.isousc'
      scan_interval: 43200 #12h
      unit_of_measurement: A

  - sensor:
      name: "EcoCompteur Equipement 1"
      unique_id: eco_p_eq1
      device_class: "power"
      command: curl -s 'http://192.168.xxx.xxx/inst.json' | jq '.data1'
      scan_interval: 2
      unit_of_measurement: W

  - sensor:
      name: "EcoCompteur Equipement 2"
      unique_id: eco_p_eq2
      device_class: "power"
      command: curl -s 'http://192.168.xxx.xxx/inst.json' | jq '.data2'
      scan_interval: 2
      unit_of_measurement: W

  - sensor:
      name: "EcoCompteur Equipement 3"
      unique_id: eco_p_eq3
      device_class: "power"
      command: curl -s 'http://192.168.0.110/inst.json' | jq '.data3'
      scan_interval: 2
      unit_of_measurement: W

  - sensor:
      name: "EcoCompteur Equipement 4"
      unique_id: eco_p_eq4
      device_class: "power"
      command: curl -s 'http://192.168.xxx.xxx/inst.json' | jq '.data4'
      scan_interval: 2
      unit_of_measurement: W

  - sensor:
      name: "EcoCompteur Equipement 5"
      unique_id: eco_p_eq5
      device_class: "power"
      command: curl -s 'http://192.168.xxx.xxx/inst.json' | jq '.data5'
      scan_interval: 2
      unit_of_measurement: W

A modifier bien évidemment… :wink:

Maintenant je voudrais insérer les infos des couts des abonnement & Co pour avoir un prix journalier au plus proche de celui annoncé par EDF… :stuck_out_tongue:

Je n’ai pas oublié mais il me reste la partie calcul à finaliser mais je n’ai pas eu le temps de mis remettre
J’essai de faire ça dans les prochains jours

Bonjour
Je partage ma config qui fonctionne bien.
La totalisation des consommations (en kWh) se fait par Paramètres/Appareils et services/Entrées et en faisant des intégrales de Riemann, mais je n’en suis pas très satisfait. A voir si on peut récupérer les index de consommations ce serait bien mieux.

J’ai plafonné les puissances à 8000 kW (32A) car parfois au démarrage de certains appareils ça fausse beaucoup (notamment sur les intégrales). A adapter selon les circuits que vous utilisez (4 kW sur un 16A, 5 kW sur un 20A, 8kW sur un 32A histoire d’avoir un peu de marge).

J’ai mis le texte suivant dans un fichier yaml dédié dans un dossier packages.
Si vous faites comme ça il faut veiller à avoir dans le fichier configuration.yaml les lignes suivantes :

homeassistant:
  packages: !include_dir_merge_named packages/

Le fichier packages/ecocompteur.yaml

 ecocompteur : 
    rest:
      - resource: http://192.168.[XXX].[XXX]/inst.json
        scan_interval: 10
        timeout: 5
        sensor:
          - name: "ecocompteur cuisine"
            unique_id: "ecocompteur_data1"
            value_template: >
              {% if (value_json.data1 > 8000 | float) %}
                {{ 8000 }}
              {% else %}
                {{ value_json.data1|round(0) }}
              {% endif %}
            device_class: power
            unit_of_measurement : W
            state_class: measurement
            icon: mdi:alpha-w-circle-outline
          - name: "Ecocompteur IRVE"
            unique_id: "ecocompteur_data2"
            value_template: >
              {% if (value_json.data2 > 8000 | float) %}
                {{ 8000 }}
              {% else %}
                {{ value_json.data2|round(0) }}
              {% endif %}
            device_class: power
            unit_of_measurement : W
            state_class: measurement
            icon: mdi:alpha-w-circle-outline
          - name: "Ecocompteur Clim"
            unique_id: "ecocompteur_data3"
            value_template:  >
              {% if (value_json.data3 > 8000 | float) %}
                {{ 8000 }}
              {% else %}
                {{ value_json.data3|round(0) }}
              {% endif %}
            device_class: power
            unit_of_measurement : W
            state_class: measurement
            icon: mdi:alpha-w-circle-outline
          - name: "Ecocompteur prises"
            unique_id: "ecocompteur_data4"
            value_template:  >
              {% if (value_json.data4 > 8000 | float) %}
                {{ 8000 }}
              {% else %}
                {{ value_json.data4|round(0) }}
              {% endif %}
            device_class: power
            unit_of_measurement : W
            state_class: measurement
            icon: mdi:alpha-w-circle-outline
          - name: "Ecocompteur ECS"
            unique_id: "ecocompteur_data5"
            value_template: >
              {% if (value_json.data5 > 4000 | float) %}
                {{ 4000 }}
              {% else %}
                {{ value_json.data5|round(0) }}
              {% endif %}
            device_class: power
            unit_of_measurement : W
            state_class: measurement
            icon: mdi:alpha-w-circle-outline
1 « J'aime »

merci du partage LittleLama elle marche aussi chez moi
Avez vous une idée pour récupérer dans le fichier json « Autre » l’info qui se trouve dans « détail des consommations » de la page web en local 192.168.x.x
Peut on récupérer la consommation (W) en direct du linky avec l’ecocompteur?

Pour les intégrales j’ai basculé sur le mode « Méthode des rectangles à gauche » et non pas « Méthode des trapèzes » car avec mon ECS j’avais des conso faussées au démarrage du ballon… :wink:

1 « J'aime »

Salut à tous
J’ai réussi tant bien que mal en suivant le fils de discussion à faire apparaître les informations de l’eco compteur. Quelqu’un sait il comment configurer à l’aide de ses infos le tableau Energie de HA ?
merci à vous

Bonjour,
avez vous pu intégrer le 412033 alors ?