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
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
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
je suis vraiment nouveau dans ce domaine
comment faire pour créer un dossier dans HA 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
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
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
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é.
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
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