Contents
Intro
C’est fait, j’ai enfin câblé la télé information de mon compteur Linky. Rien de bien méchant il suffit de se raccorder aux bornes i1/i2 du linky, le plus délicat fut le passage du câble de 60 ml entre le compteur Linky et mon tableau électrique.
Cet article traite le mode « Historique » du linky, il peut également communiqué en mode « Standard » plus élaboré, voir mon article sur le sujet.
Pré requis
Mes fichiers « .yaml » sont regroupés dans un dossier « config/packages ». J’utilise la directive « !include_dir_named packages » dans mon « configuration.yaml » très pratique pour organiser son HA.
Choix du matériel
Les informations transmises par le Linky ne sont pas directement exploitables par un ESP, elles nécessitent un adaptateur, vous trouverez beaucoup de modèles sur le Net, perso j’ai choisi la facilité en achetant un module Wemos Teleinfo.
C’est un module pas très cher, correctement étudié et bien fini, compatible avec les esp8266 et ESP32 Mini, qui dispose également d’une Led WS2812 RGB programmable, d’un connecteur I2C disponible pour un afficheur OLED ou autres capteurs compatibles, et d’une led indiquant l’état de la connexion avec le Linky qui se raccorde sur le bornier vert.
Perso j’utilise un L’ESP32 Mini ou ici , en effet l’ESP8266 est trop juste en puissance de calcul si on utilise l’intégration ESPHOME plus un afficheur, j’ai galéré avec, je ne le recommande pas, le constructeur du wemos téléinfo non plus d’ailleurs.
L’ESP32 Mini est un ESP32 au format ESP8266 D1, pratique si l’on souhaite utiliser des cartes d’extension, mais avec une puissance de calcul et de traitement bien supérieure.
Descriptif fonctionnel
Les compteurs Linky disposent de 2 modes de téléinformation :
• Le mode Historique, qui correspond à l’ancien mode des compteurs électroniques.
• Le mode Standard, qui est le nouveau format et qui comporte plus d’informations.
Vous trouverez les informations détaillées dans le document Enedis suivant:
J’ai utilisé dans un premier temps le mode historique du Linky, puis je suis passé au mode standard, le nombre d’informations disponibles est plus élevés, voir mon article sur le sujet.
Le module WEMOS Teleinfo est compatible, le changement de mode passe obligatoirement par une demande auprès de votre fournisseur d’énergie qui relaye vers Enedis.
Concernant l’intégration dans HA, pas de problème particulier grâce à « teleinfo » disponible sur ESP Home, il est compatible avec les deux modes, les différences étant dans la vitesse de transmission et la validation du mode historique ou pas:
Mode Historique
Mode Standard
Informations collectées
Pour information le linky, dans l’entité « PAPP », remonte des VoltAmpére et non des Watt ».
Je collecte les énergies Heures creuses « HCHC » et heures pleines »HPHC » en wh, je les additionne dans un « template » (Linky HPHC KWH) et divise par 1000 pour obtenir des kWh. C’est cette entité que j’utilise dans les « utility meter » de HA pour calculer mes consommations journalière, semaine, mois, année.
Si vous avez un seul tarif, il faut remonter le tag « base à la place de HCHP et HPHP »
Je collecte également l’intensité instantanée « IINST » et l’intensité souscrite « ISOUSC », je calcule dans un « Template » « Linky I/Imax » le ratio entre les deux en %, ce qui me donne une idée de la réserve d’intensité disponible et plus tard, m’en servir pour vérifier si mon abonnement peut être revue à la baisse.
L’information PTEC nous indique si le tarif est en heure creuse ou heure pleine, variable utilisée dans l’automatisme de comptabilisation de l’énergie avec les « utility_meter ».
Code ESP
Si vous avez des difficultés de flashage avec ESPHome, parcourez mon article https://domo.rem81.com/home-assistant_esp-home/ cela devrait vous aider.
L’afficheur utilise une police de caractère « Arial », vous pouvez télécharger le fichier arial.ttf ici puis le transférer dans un dossier « fonts » de votre « /config/esphome ». Bien entendu vous pouvez utiliser une autre police de caractéres, « size » détermine la taille des caractères.
Double Tarif
substitutions:
device_name: esp124-tic
adress_ip: "192.168.0.124"
friendly_name: esp124
time_timezone: "Europe/Paris"
esphome:
name: ${device_name}
platform: ESP32
board: mhetesp32minikit
platformio_options:
lib_deps: NeoPixelBus@2.6.0
on_boot:
then:
- light.control:
id: led1
brightness: 0.25
state: on
wifi:
networks:
- ssid: !secret wifi_esp
password: !secret mdpwifi_esp
priority: 1
- ssid: !secret wifi
password: !secret mdpwifi
priority: 0
reboot_timeout: 5min
manual_ip:
static_ip: ${adress_ip}
gateway: 192.168.0.1
subnet: 255.255.255.0
# Enable logging
logger:
# baud_rate: 0
# Enable Home Assistant API
api:
ota:
web_server:
port: 80
font:
- file: "fonts/arial.ttf"
id: arial
size: 15
i2c:
sda: GPIO21 #D2=pin 19
scl: GPIO22 #D1=pin 20
scan: True
id: bus_a
#
uart:
id: uart_a
rx_pin: GPIO23
# tx_pin: GPIO1
baud_rate: 1200
parity: EVEN
data_bits: 7
teleinfo:
id: myteleinfo
uart_id: uart_a
update_interval: 10s
historical_mode: true
# Led WS2812 RGB
light:
- platform: partition
name: led1
id: led1
default_transition_length: 0s
segments:
- id: rgb_led
from: 0
to: 0
- platform: neopixelbus
num_leds: 1
pin: GPIO18
name: "RGB strip"
variant: ws2812
id: rgb_led
default_transition_length: 0s
sensor:
- platform: teleinfo
id: hchc
tag_name: "HCHC" # Si un seul tarif mettre "BASE" dans le tag_name
name: "Linky HC Wh" # Si un seul tarif: "Linky base Wh"
unit_of_measurement: "Wh"
icon: mdi:flash
teleinfo_id: myteleinfo
- platform: teleinfo # A supprimer si un seul tarif
id: hchp
tag_name: "HCHP"
name: "Linky HP Wh"
unit_of_measurement: "Wh"
icon: mdi:flash
teleinfo_id: myteleinfo
- platform: teleinfo
id: papp
tag_name: "PAPP"
name: "Linky PAPP"
unit_of_measurement: "VA"
device_class: "power"
state_class: "measurement"
icon: mdi:flash
teleinfo_id: myteleinfo
on_value:
- if:
condition:
sensor.in_range:
id: papp
below: 1000
then:
- light.control:
id: led1
red: 0%
green: 100% # vert
blue: 0%
- if:
condition:
sensor.in_range:
id: papp
above: 1000
below: 3000
then:
- light.control:
id: led1
red: 0%
green: 0% # bleu
blue: 100%
- if:
condition:
sensor.in_range:
id: papp
above: 3000
then:
- light.control:
id: led1
red: 100% #rouge
green: 0%
blue: 0%
- platform: teleinfo
id: isousc
tag_name: "ISOUSC"
name: "Linky I Sousc"
unit_of_measurement: "A"
icon: mdi:flash
teleinfo_id: myteleinfo
- platform: teleinfo
id: iinst
tag_name: "IINST"
name: "Linky I Inst"
unit_of_measurement: "A"
icon: mdi:flash
teleinfo_id: myteleinfo
- platform: teleinfo
id: imax
tag_name: "IMAX"
name: "linky I Max"
unit_of_measurement: "A"
icon: mdi:flash
teleinfo_id: myteleinfo
- platform: template
name: "Linky I/Imax"
id: i100
icon: mdi:flash
unit_of_measurement: "%"
accuracy_decimals: 0
lambda: |-
return (id(iinst).state/id(isousc).state*100);
- platform: template
name: "Linky HPHC KWH"
id: hphc_kwh
icon: mdi:flash
unit_of_measurement: "kWh"
accuracy_decimals: 0
lambda: |-
return ((id(hchc).state+id(hchp).state)/1000);
- platform: homeassistant
name: "HCHP J"
unit_of_measurement: "kWh"
entity_id: sensor.energie_totale_linky_jour
id: hphcj
- platform: wifi_signal
id: wif
name: "${friendly_name} WiFi Signal Sensor"
update_interval: 60s
- platform: uptime
id: uptime_seconds
name: "${friendly_name} Uptime"
update_interval: 60s
unit_of_measurement: s
accuracy_decimals: 0
force_update: false
icon: mdi:timer
text_sensor:
- platform: teleinfo
tag_name: "OPTARIF"
name: "Linky OPTARIF"
teleinfo_id: myteleinfo
- platform: teleinfo
tag_name: "PTEC"
id: tarif
name: "Linky PTEC"
teleinfo_id: myteleinfo
- platform: template
name: "${friendly_name} Uptime"
update_interval: 60s
icon: mdi:clock-start
lambda: |-
int seconds = (id(uptime_seconds).state);
int days = seconds / (24 * 3600);
seconds = seconds % (24 * 3600);
int hours = seconds / 3600;
seconds = seconds % 3600;
int minutes = seconds / 60;
seconds = seconds % 60;
if ( days ) {
return { (String(days) +"d " + String(hours) +"h " + String(minutes) +"m "+ String(seconds) +"s").c_str() };
} else if ( hours ) {
return { (String(hours) +"h " + String(minutes) +"m "+ String(seconds) +"s").c_str() };
} else if ( minutes ) {
return { (String(minutes) +"m "+ String(seconds) +"s").c_str() };
} else {
return { (String(seconds) +"s").c_str() };
}
#Etat de la connection
binary_sensor:
- platform: status
name: "${friendly_name} Status"
switch:
- platform: restart
name: "${friendly_name} Restart"
display:
- platform: ssd1306_i2c
model: "SSD1306 128x64"
address: 0x3C
brightness: 100%
lambda: |-
it.printf(0,0,id(arial),"PuC=%.0f VA",id(papp).state);
it.printf(0,15,id(arial),"I Inst=%.0f A",id(iinst).state);
it.printf(70,15,id(arial),"-%.0f %%",id(i100).state);
it.printf(0,30,id(arial),"ConsoJ=%.0f kWh",id(hphcj).state);
std::string tarif_ = id(tarif).state;
it.printf(0,45,id(arial), "Tarif: %s", tarif_.c_str());
Simple tarif:
substitutions:
device_name: esp124-tic
adress_ip: "192.168.0.124"
friendly_name: esp124
time_timezone: "Europe/Paris"
esphome:
name: ${device_name}
platform: ESP32
board: mhetesp32minikit
platformio_options:
lib_deps: NeoPixelBus@2.6.0
on_boot:
then:
- light.control:
id: led1
brightness: 0.25
state: on
wifi:
networks:
- ssid: !secret wifi_esp
password: !secret mdpwifi_esp
priority: 1
- ssid: !secret wifi
password: !secret mdpwifi
priority: 0
reboot_timeout: 5min
manual_ip:
static_ip: ${adress_ip}
gateway: 192.168.0.1
subnet: 255.255.255.0
# Enable logging
logger:
# baud_rate: 0
# Enable Home Assistant API
api:
ota:
web_server:
port: 80
font:
- file: "fonts/arial.ttf"
id: arial
size: 15
i2c:
sda: GPIO21 #D2=pin 19
scl: GPIO22 #D1=pin 20
scan: True
id: bus_a
#
uart:
id: uart_a
rx_pin: GPIO23
# tx_pin: GPIO1
baud_rate: 1200
parity: EVEN
data_bits: 7
teleinfo:
id: myteleinfo
uart_id: uart_a
update_interval: 10s
historical_mode: true
# Led WS2812 RGB
light:
- platform: partition
name: led1
id: led1
default_transition_length: 0s
segments:
- id: rgb_led
from: 0
to: 0
- platform: neopixelbus
num_leds: 1
pin: GPIO18
name: "RGB strip"
variant: ws2812
id: rgb_led
default_transition_length: 0s
sensor:
- platform: teleinfo
id: base
tag_name: "BASE"
name: "Linky base Wh"
unit_of_measurement: "Wh"
icon: mdi:flash
teleinfo_id: myteleinfo
- platform: teleinfo
id: papp
tag_name: "PAPP"
name: "Linky PAPP"
unit_of_measurement: "VA"
device_class: "power"
state_class: "measurement"
icon: mdi:flash
teleinfo_id: myteleinfo
on_value:
- if:
condition:
sensor.in_range:
id: papp
below: 1000
then:
- light.control:
id: led1
red: 0%
green: 100% # vert
blue: 0%
- if:
condition:
sensor.in_range:
id: papp
above: 1000
below: 3000
then:
- light.control:
id: led1
red: 0%
green: 0% # bleu
blue: 100%
- if:
condition:
sensor.in_range:
id: papp
above: 3000
then:
- light.control:
id: led1
red: 100% #rouge
green: 0%
blue: 0%
- platform: teleinfo
id: isousc
tag_name: "ISOUSC"
name: "Linky I Sousc"
unit_of_measurement: "A"
icon: mdi:flash
teleinfo_id: myteleinfo
- platform: teleinfo
id: iinst
tag_name: "IINST"
name: "Linky I Inst"
unit_of_measurement: "A"
icon: mdi:flash
teleinfo_id: myteleinfo
- platform: teleinfo
id: imax
tag_name: "IMAX"
name: "linky I Max"
unit_of_measurement: "A"
icon: mdi:flash
teleinfo_id: myteleinfo
- platform: template
name: "Linky I/Imax"
id: i100
icon: mdi:flash
unit_of_measurement: "%"
accuracy_decimals: 0
lambda: |-
return (id(iinst).state/id(isousc).state*100);
- platform: homeassistant
name: "Conso J"
unit_of_measurement: "kWh"
entity_id: sensor.energie_totale_linky_jour
id: conso
- platform: wifi_signal
id: wif
name: "${friendly_name} WiFi Signal Sensor"
update_interval: 60s
- platform: uptime
id: uptime_seconds
name: "${friendly_name} Uptime"
update_interval: 60s
unit_of_measurement: s
accuracy_decimals: 0
force_update: false
icon: mdi:timer
text_sensor:
- platform: template
name: "${friendly_name} Uptime"
update_interval: 60s
icon: mdi:clock-start
lambda: |-
int seconds = (id(uptime_seconds).state);
int days = seconds / (24 * 3600);
seconds = seconds % (24 * 3600);
int hours = seconds / 3600;
seconds = seconds % 3600;
int minutes = seconds / 60;
seconds = seconds % 60;
if ( days ) {
return { (String(days) +"d " + String(hours) +"h " + String(minutes) +"m "+ String(seconds) +"s").c_str() };
} else if ( hours ) {
return { (String(hours) +"h " + String(minutes) +"m "+ String(seconds) +"s").c_str() };
} else if ( minutes ) {
return { (String(minutes) +"m "+ String(seconds) +"s").c_str() };
} else {
return { (String(seconds) +"s").c_str() };
}
#Etat de la connection
binary_sensor:
- platform: status
name: "${friendly_name} Status"
switch:
- platform: restart
name: "${friendly_name} Restart"
display:
- platform: ssd1306_i2c
model: "SSD1306 128x64"
address: 0x3C
brightness: 100%
lambda: |-
it.printf(0,0,id(arial),"PuC=%.0f VA",id(papp).state);
it.printf(0,15,id(arial),"I Inst=%.0f A",id(iinst).state);
it.printf(70,15,id(arial),"-%.0f %%",id(i100).state);
it.printf(0,30,id(arial),"ConsoJ=%.0f kWh",id(conso).state);
Affichage local
J’affiche quelques valeurs en local sur un oled SSD1306 128×64, pratique pour une visu rapide à la puissance et l’intensité instantanée, du ratio I/imax et la conso du jour.
Je joue également avec la Led WS2812 RGB connectée sur le GPIO18. En fonction de la puissance la led change de couleur:
- Verte de 0 à 1000 VA
- Bleu entre 1000 et 3000 VA
- Rouge si supérieure à 3000 VA
- Les combinaisons sont infinies et facilement programmables.
Codes du fichier linky.yaml
Remarque: dans ce code vous pouvez supprimer les utility meter et utiliser la méthode décrite dans cet article: https://domo.rem81.com/2022/06/06/ha-compteur-de-service-utility-meter/
Double Tarif
On y retrouve:
- les « utility meter » qui comptabilisent les energies consommées HC/HP par jour, semaine, mois, année
- un ‘binary_sensor » HC utilisé dans l’affichage des graphiques de puissance permettant de matérialiser la zone HC
- les « templates » qui cumulent les HC/HP des utility meter et calculent en € les coûts de consommations
####################################################
# #
# LINKY #
# #
####################################################
utility_meter:
# usage jour
energy_total_usage_daily:
source: sensor.linky_hphc_kwh
cycle: daily
tariffs:
- hp
- hc
# usage semaine
energy_total_usage_weekly:
source: sensor.linky_hphc_kwh
cycle: weekly
tariffs:
- hp
- hc
# usage mois
energy_total_usage_monthly:
source: sensor.linky_hphc_kwh
cycle: monthly
tariffs:
- hp
- hc
#usage an
energy_total_usage_yearly:
source: sensor.linky_hphc_kwh
cycle: yearly
tariffs:
- hp
- hc
##
input_boolean:
com_linky:
name: Comm Linky OK=On
input_number:
# Calcul des coûts journaliers
cout_kwh_hp:
name: Cout du Kwh HP
min: 0
max: 10
unit_of_measurement: €
icon: mdi:currency-eur
step: 0.00001
mode: box
cout_kwh_hc:
name: Cout du Kwh HC
min: 0
max: 10
unit_of_measurement: €
icon: mdi:currency-eur
step: 0.00001
mode: box
input_text:
# Permet de simuler des Statuts pour les tests unitaires
linky_test_status:
name: Test statuts Linky
template:
- binary_sensor:
# Utilisé dans l'affichage des graphiques de puissance permettant de materialiser la zone HC
# = true si HC
- name: "display_hp_hc"
unique_id: "display_hp_hc"
state: >-
{{ states('sensor.linky_n_tarif')|int(default=0) == 1 }} # =1 si HC =2 si HP
# Consommation journalière HP + HC - addition des utility meter
- sensor:
- name: "Energie Totale Jour"
unique_id: "energy_total_daily"
state: >-
{% set p = states('sensor.energy_total_usage_daily_hp') | float(default=0) | round(2) %}
{% set o = states('sensor.energy_total_usage_daily_hc') | float(default=0) | round(2) %}
{{ (o + p) | round(2) }}
unit_of_measurement: "kWh"
device_class: "energy"
state_class: "total"
# Consommation semaine HP + HC
- name: "energy_total_weekly"
state: >-
{% set p = states('sensor.energy_total_usage_weekly_hp') | float(default=0) | round(2) %}
{% set o = states('sensor.energy_total_usage_weekly_hc') | float(default=0) | round(2) %}
{{ (o + p) | round(2) }}
unit_of_measurement: "kWh"
device_class: "energy"
state_class: "total"
# Consommation mensuelle HP + HC
- name: "energy_total_monthly"
state: >-
{% set p = states('sensor.energy_total_usage_monthly_hp') | float(default=0) | round(2) %}
{% set o = states('sensor.energy_total_usage_monthly_hc') | float(default=0) | round(2) %}
{{ (o + p) | round(2) }}
unit_of_measurement: "kWh"
device_class: "energy"
state_class: "total"
# Consommation annuelle HP + HC
- name: "energy_total_yearly"
state: >-
{% set p = states('sensor.energy_total_usage_yearly_hp') | float(default=0) | round(2) %}
{% set o = states('sensor.energy_total_usage_yearly_hc') | float(default=0) | round(2) %}
{{ (o + p) | round(2) }}
unit_of_measurement: "kWh"
device_class: "energy"
state_class: "total"
# Cout de l'Energie
# les couts du kWh HP et HC sont calculés dans excel en fonction des factures recues
# et saisis manuellement dans HA
- name: "Cout Energy Total Jour HPHC"
state: >-
{% set hp = states('sensor.energy_total_usage_daily_hp') | float(default=0) | round(2) %}
{% set hc = states('sensor.energy_total_usage_daily_hc') | float(default=0) | round(2) %}
{% set chp = states('input_number.cout_kwh_hp') | float(default=0) | round(5) %}
{% set chc = states('input_number.cout_kwh_hc') | float(default=0) | round(5) %}
{{((hc*chc) + (hp*chp)) | round(2) }}
unit_of_measurement: "€"
device_class: "monetary"
state_class: "total"
unique_id: "cout_energy_total_jour_hphc"
- name: "Cout Energy Total Jour HP"
state: >-
{% set hp = states('sensor.energy_total_usage_daily_hp') | float(default=0) | round(2) %}
{% set chp = states('input_number.cout_kwh_hp') | float(default=0) | round(5) %}
{{(hp*chp) | round(2) }}
unit_of_measurement: "€"
device_class: "monetary"
state_class: "total"
unique_id: "cout_energy_total_jour_hp"
- name: "Cout Energy Total Jour HC"
state: >-
{% set hc = states('sensor.energy_total_usage_daily_hc') | float(default=0) | round(2) %}
{% set chc = states('input_number.cout_kwh_hc') | float(default=0) | round(5) %}
{{(hc*chc) | round(2) }}
unit_of_measurement: "€"
device_class: "monetary"
state_class: "total"
unique_id: "cout_energy_total_jour_hc"
Tarif unique
On y retrouve:
- les « utility meter » qui comptabilisent les energies consommées HC/HP par jour, semaine, mois, année
- le « template » qui calcule en € le coût de consommation
####################################################
# #
# LINKY #
# #
####################################################
utility_meter:
# usage jour
energy_total_linky_usage_daily:
source: sensor.linky_base_wh
cycle: daily
# usage semaine
energy_total_linky_usage_weekly:
source: sensor.linky_base_wh
cycle: weekly
# usage mois
energy_total_linky_usage_monthly:
source: sensor.linky_base_wh
cycle: monthly
#usage an
energy_total_linky_usage_yearly:
source: sensor.linky_base_wh
cycle: yearly
input_boolean:
com_linky:
name: Comm Linky OK=On
input_number:
# Calcul du coût journalier
cout_kwh_hp:
name: Cout du Kwh
min: 0
max: 10
unit_of_measurement: €
icon: mdi:currency-eur
step: 0.00001
mode: box
template:
- sensor:
# Cout de l'Energie
# le cout du kWh est calculé en fonction des factures recues
# et saisi manuellement dans HA
- name: "Cout Energy Total Jour"
state: >-
{% set conso = states('sensor.energy_total_linky_usage_daily') | float(default=0) | round(2) %}
{% set cout = states('input_number.cout_kwh_hp') | float(default=0) | round(5) %}
{{(conso*cout) | round(2) }}
unit_of_measurement: "€"
device_class: "monetary"
state_class: "total"
unique_id: "cout_energy_total_jour"
Automatismes
Commutation de HP vers HC et Inversement
Il permet de permuter la tarification des utiliy meter en fonction du tarif récupéré dans le Linky (PTEC)
Code de l’automatisme
- id: '1642614758763'
alias: 6_1_1 Energie Changement HP<->HC simplifié
description: ''
trigger:
- platform: state
entity_id: sensor.linky_ptec
id: tarif_hc
from: HP..
to: HC..
- platform: state
entity_id: sensor.linky_ptec
from: HC..
to: HP..
id: tarif_hp
condition: []
action:
- choose:
- conditions:
- condition: trigger
id: tarif_hc
sequence:
- service: select.select_option
data:
option: hc
target:
entity_id:
- utility_meter.energy_total_linky_usage_daily
- utility_meter.energy_total_linky_usage_monthly
- utility_meter.energy_total_linky_usage_weekly
- utility_meter.energy_total_linky_usage_yearly
- conditions:
- condition: trigger
id: tarif_hp
sequence:
- service: select.select_option
data:
option: hp
target:
entity_id:
- utility_meter.energy_total_linky_usage_daily
- utility_meter.energy_total_linky_usage_monthly
- utility_meter.energy_total_linky_usage_weekly
- utility_meter.energy_total_linky_usage_yearly
default: []
mode: single
Automatisme de contrôle de la communication du Linky
Descriptif fonctionnel
Le but est de surveiller si la communication entre le Linky et HA est établie.
A chaque changement d’état de l’entité PAPP (puissance instantanée), l’automatisme est déclenché:
- l' »input_boolean.com_linky » signifiant que la communication entre le linky et HA est OK est forcé sur On
- Un délai d’une heure est déclenché,
- si durant ce délai PAPP change d’état, l’automatisme est relancé (mode:restart) et « input_boolean.com_linky » reste sur On
- sinon, passé ce délai, l' »input_boolean.com_linky » est forcé sur Off, et la communication est considérée en défaut, il sera remis sur On au prochain changement d’état de PAPP
Je surveillance la puissance PAPP, c’est la valeur plus évolutive, mais il arrive que quelques fois, surtout de nuit que la puissance reste stable pas et déclare donc un défaut fantôme.
En mode standard, nous pourrions utiliser l’entité « DATE ».
Code de l’automatisme:
- id: '1638118858848'
alias: 2_2_2 Alarme_Notification Time Out Linky
description: ' '
trigger:
- platform: state
entity_id: sensor.linky_papp
condition: []
action:
- service: input_boolean.turn_on
target:
entity_id: input_boolean.com_linky
- delay:
hours: 1
minutes: 0
seconds: 0
milliseconds: 0
- service: input_boolean.turn_off
target:
entity_id: input_boolean.com_linky
mode: restart
Blueprint Notification défaut communication:
J’exploite le défaut avec un blueprint « Nagging Alerting Notification Automation » plus pratique que l’intégration « alert » qui nécessite un redémarrage de HA à chaque modification. J’utilise ce blueprint dans d’autres cas de surveillance, portes, communication, etc..
- id: '1638119466260'
alias: 2_1_11 Alarme Blueprints Notification Def Com Linky
description: Blue Print
use_blueprint:
path: pavax/nagging_alert_notification.yaml
input:
condition_entity_state: 'on'
sensor_entity: input_boolean.com_linky
alert_state: 'off'
alert_action:
- service: notify.telegram
data:
message: Com Linky off Line{{-"\n"-}}{{states("sensor.date_time") }}
title: Etat Reseau !!!
- service: persistent_notification.create
data:
message: Com Linky Off Line {{-"\n"-}}{{states("sensor.date_time") }}
resolved_action:
- service: notify.telegram
data:
message: Com Linky On Line{{-"\n"-}} {{states("sensor.date_time") }}
title: Etat RESEAU!!!
- service: persistent_notification.create
data:
message: Com Linky On Line{{-"\n"-}}{{states("sensor.date_time") }}
notify_device: 62cdce054a9d3448484b4df8e44cc499
repeat_delay: 300
initial_delay: 1
max_alerts: 100
resolved_message: Alert {{ entity_name }} resolved
notify_message: Alert {{ entity_name }} triggered
Lovelace
Exemple d’affichage des données
Un autre exemple d’affichage utilisant « custom:mini-graph-card » de HACS
type: vertical-stack
cards:
- type: custom:mini-graph-card
entities:
- entity: sensor.energie_totale_linky_jour
name: Conso Linky 7j
hours_to_show: 168
aggregate_func: max
group_by: date
show:
graph: bar
icon: mdi:flash
- type: custom:mini-graph-card
color_thresholds:
- color: '#00FF00'
value: 0
- color: '#FF9900'
value: 4000
- color: '#EA9999'
value: 6000
- color: '#CC0000'
value: 10000
color_thresholds_transition: hard
line_width: 2
icon: mdi:flash
show:
extrema: true
fill: true
icon: true
labels: false
name: true
state: true
hour24: true
points_per_hour: 4
hours_to_show: 24
group: false
state_map:
- label: hp
value: 'off'
- label: hc
value: 'on'
style: |
ha-card {
border: solid 2px var(--primary-color);
}
entities:
- entity: sensor.linky_papp
name: Totale
- color: '#CCC0cCC'
entity: binary_sensor.display_hp_hc
name: HC
show_line: false
y_axis: secondary
name: Puissance Linky 24h
Un autre exemple d’affichage utilisant « custom:apexcharts-card » de HACS
type: custom:apexcharts-card
chart_type: donut
header:
show: true
title: Conso du Jour
show_states: false
colorize_states: true
series:
- entity: sensor.energy_total_linky_usage_daily_hp
name: HP
color: green
- entity: sensor.energy_total_linky_usage_daily_hc
name: HC
color: blue
Affichage du tableau Energie
Affichage dans Grafana
Vous trouverez ci-après le fichier Graphana correspondant (A renommer en .json)
Très bon article, bravo et merci !
Il ne me reste qu’a sauter le pas.
Je te remercie, n’hésite pas à me remonter les difficultés rencontrées.
Bonjour Remi,
Merci pour ce tuto !
J’y suis presque mais impossible de compiler mon fichier avec HA
Il m’affiche toujours une erreur :
INFO Reading configuration /config/esphome/test.yaml…
Failed config
i2c: [source /config/esphome/test.yaml:28]
–
ESP8266: Invalid pin number: 21.
sda: GPIO21
ESP8266: Invalid pin number: 22.
scl: GPIO22
scan: True
id: bus_a
uart: [source /config/esphome/test.yaml:35]
– id: uart_a
ESP8266: Invalid pin number: 23.
rx_pin: GPIO23
baud_rate: 9600
parity: EVEN
data_bits: 7
light.neopixelbus: [source /config/esphome/test.yaml:60]
platform: neopixelbus
num_leds: 1
ESP8266: Invalid pin number: 18.
pin: GPIO18
name: RGB strip
variant: ws2812
id: rgb_led
default_transition_length: 0s
Tu as une idée ?
Merci beaucoup 🙂
Bonjour Quentin, je vois que tu utilise un esp8266, il faut dans ce cas déclarer les GPIO adaptés à esp8266, le tuto étant basé sur l’esp32. Regarde dans la doc https://github.com/hallard/WeMos-TIC tu trouvera les GPIO à utiliser pour l’ESP8266. Bon courage
Bonjour Rémi,
Merci pour votre réponse.
J’ai bien une carte mini ESP32 D1 je n’ai pas fait attention qu’il y en avait plusieurs
Merci pour tout 😀
Il me reste plus que cette erreur et tout est réglé : ========================= [SUCCESS] Took 42.76 seconds =========================
INFO Successfully compiled program.
INFO Resolving IP address of dernier-test.local
ERROR Error resolving IP address of dernier-test.local. Is it connected to WiFi?
ERROR (If this error persists, please set a static IP address: https://esphome.io/components/wifi.html#manual-ips)
ERROR Error resolving IP address: Error resolving address with mDNS: Did not respond. Maybe the device is offline., [Errno -5] No address associated with hostname
Merci pour tout depuis le temps que je galère avec ca !
Bonjour
Réponse tardive, tu a surement résolu ton pbm, sinon, Il semblerait que l’esp n’arrive pas à se connecter, vérifier la connexion wifi dans « secrets » de esphome en haut à droite, et/ou mettre une adresse ip statique
Cdlt
C’est tout bon !
En faite je n’arrivais pas a flasher la carte car j’avais le fichier factory
J’ai pris la dernière option pour flasher et c’est passé !
merci beaucoup 🙂 à bientôt !
Merci beaucoup pour ce tuto detaillé, j’ai essayé de l’adapter à ma config mais je suis en tarif de base, j’ai modifié le fichier ESP mais le sensor.energie_totale_linky_jour ne remonte aucune info, j’egalement modifié ceci:
– platform: teleinfo
id: index_base
tag_name: « BASE »
name: « Linky HP Wh »
unit_of_measurement: « Wh »
icon: mdi:flash
teleinfo_id: myteleinfo
– platform: template
name: « Linky HPHC KWH »
id: hphc_kwh
icon: mdi:flash
unit_of_measurement: « kWh »
accuracy_decimals: 0
lambda: |-
return ((id(index_base).state)/1000);
– platform: homeassistant
name: « HCHP J »
unit_of_measurement: « kWh »
entity_id: sensor.energie_totale_linky_jour
id: hphcj
J’ai supprimé les HC.
En te rerciant par avance.
Bonjour, merci pour ton retour. Concernant l’énergie, le « sensor.energie_total_linky_jour » est calculé dans HA avec un utility_meter https://www.home-assistant.io/integrations/utility_meter/, dans ton cas la source sera le template « sensor.linky_hphc_kwh » que tu calcule dans l’esp. Tu peux aussi simplifier en supprimant le template name »Linky HPHC kWh » et convertir directement les wh en kWh en ajoutant « filters: lamba … »
# Energie Active soutirée totale
– platform: teleinfo
id: index_base
tag_name: « BASE »
name: « Linky HP KWH »
unit_of_measurement: « kWh »
icon: mdi:flash
teleinfo_id: myteleinfo
filters:
lambda: |-
return x/1000;
Dans ce cas la source de l’utility meter sera directement ce sensor.
Bon courage
Merci pour ton aide, voilà ce que j’ai fait:
sensor:
– platform: teleinfo
id: index_base
tag_name: « BASE »
name: « Linky HP Wh »
unit_of_measurement: « Wh »
icon: mdi:flash
teleinfo_id: myteleinfo
– platform: template
name: « Linky HP KWH »
id: hphc_kwh
icon: mdi:flash
unit_of_measurement: « kWh »
accuracy_decimals: 0
lambda: |-
return ((id(index_base).state)/1000);
– platform: homeassistant
name: « HCHP J »
unit_of_measurement: « kWh »
entity_id: sensor.energie_totale_linky_jour
id: hphcj
Puis j’ai adapté les valeurs dans pour l’utility meter:
utility_meter:
# usage jour
energy_total_linky_usage_daily:
source: sensor.linky_hp_kwh
cycle: daily
tariffs:
– hp
# usage semaine
energy_total_linky_usage_weekly:
source: sensor.linky_hp_kwh
cycle: weekly
tariffs:
– hp
# usage mois
energy_total_linky_usage_monthly:
source: sensor.linky_hp_kwh
cycle: monthly
tariffs:
– hp
#usage an
energy_total_linky_usage_yearly:
source: sensor.linky_hp_kwh
cycle: yearly
tariffs:
– hp
# Linky: Cumul HP+HC en kWh -> Utilisé dans utility meter
# sensor.linky_hp_kwh est calculé dahns l’ESP
– name: « Linky Conso Totale HPHC »
unique_id: « linky_hp_kwh »
unit_of_measurement: « kWh »
device_class: « energy »
state_class: « total »
state: >-
{% set index_base = states(‘sensor.linky_hp_kwh’) | float(default=0) | round(0) %}
{% if (index_base)>10000 %}
{{ (index_base) | round(0) }}
{%endif%}
Voilà où j’en suis pour adapter ta config à la mienne, que dois je faire maintenant, sachant que j’ai crée les deux cartes ainsi que le .json de grafana, les données sont récoltées mais il faut que j’attende 24h pour avoir un calcul journalier?
Bonjour
Voici ce que j’écrirai à ta place. le fait d’avoir un seul tarif simplifie le code:
Apres reboot l’utility meter du jour doit commencer à compter.
Bon courage
*******************************************
sensor:
– platform: teleinfo
id: index_base
tag_name: « BASE »
name: « Linky HP kWh »
unit_of_measurement: « kWh »
icon: mdi:flash
teleinfo_id: myteleinfo
lambda: |-
return ((id(index_base).state)/1000);
utility_meter:
# usage jour
energie_totale_linky_jour:
source: sensor.linky_hp_kwh
cycle: daily
# usage semaine
energie_totale_linky_semaine:
source: sensor.linky_hp_kwh
cycle: weekly
# usage mois
energie_totale_linky_mois:
source: sensor.linky_hp_kwh
cycle: monthly
#usage an
energie_totale_linky_annee:
source: sensor.linky_hp_kwh
cycle: yearly
***************************************************
tu dois retrouver ton energie du jour dans: sensor.energie_totale_linky_jour
Ce qui n’apparait plus par rapport à ton message tu le supprime
Ca marche au top, merci beaucoup 😉
Avec plaisir.
Salut BOB,
j’ai repris ce code mais j’ai une erreur à la validation j’ai un duplicate key « source ».
Je suis novice sur HA , j’avoue etre un peu perdu en YAML.
Bonjour, ds quel code as tu cette erreur?
sur celui là :
*******************************************
sensor:
– platform: teleinfo
id: index_base
tag_name: « BASE »
name: « Linky HP kWh »
unit_of_measurement: « kWh »
icon: mdi:flash
teleinfo_id: myteleinfo
lambda: |-
return ((id(index_base).state)/1000);
utility_meter:
# usage jour
energie_totale_linky_jour:
source: sensor.linky_hp_kwh
cycle: daily
# usage semaine
energie_totale_linky_semaine:
source: sensor.linky_hp_kwh
cycle: weekly
# usage mois
energie_totale_linky_mois:
source: sensor.linky_hp_kwh
cycle: monthly
#usage an
energie_totale_linky_annee:
source: sensor.linky_hp_kwh
cycle: yearly
***************************************************
j’ai essayé de l’adapter avec mes connaissances 😉 mais ça fonctionne pas tout a fait comme voulu.
du coup mon code donne ça :
***************************************************
#
uart:
id: uart_a
rx_pin: GPIO23
# tx_pin: GPIO1
baud_rate: 1200
parity: EVEN
data_bits: 7
teleinfo:
id: myteleinfo
uart_id: uart_a
update_interval: 10s
historical_mode: true
# Led WS2812 RGB
light:
– platform: partition
name: led1
id: led1
default_transition_length: 0s
segments:
– id: rgb_led
from: 0
to: 0
– platform: neopixelbus
num_leds: 1
pin: GPIO18
name: « RGB strip »
variant: ws2812
id: rgb_led
default_transition_length: 0s
sensor:
– platform: teleinfo
id: index_base
tag_name: « BASE »
name: « Linky Base Wh »
unit_of_measurement: « Wh »
icon: mdi:flash
teleinfo_id: myteleinfo
state_class: « total_increasing »
device_class: « energy »
– platform: teleinfo
id: papp
tag_name: « PAPP »
name: « Linky PAPP »
unit_of_measurement: « W »
device_class: « power »
state_class: « measurement »
icon: mdi:flash
teleinfo_id: myteleinfo
on_value:
– if:
condition:
sensor.in_range:
id: papp
below: 1000
then:
– light.control:
id: led1
red: 0%
green: 100% # vert
blue: 0%
– if:
condition:
sensor.in_range:
id: papp
above: 1000
below: 3000
then:
– light.control:
id: led1
red: 0%
green: 0% # bleu
blue: 100%
– if:
condition:
sensor.in_range:
id: papp
above: 3000
then:
– light.control:
id: led1
red: 100% #rouge
green: 0%
blue: 0%
– platform: teleinfo
id: isousc
tag_name: « ISOUSC »
name: « Linky I Sousc »
unit_of_measurement: « A »
icon: mdi:flash
teleinfo_id: myteleinfo
– platform: teleinfo
id: iinst
tag_name: « IINST »
name: « Linky I Inst »
unit_of_measurement: « A »
icon: mdi:flash
teleinfo_id: myteleinfo
– platform: teleinfo
id: imax
tag_name: « IMAX »
name: « linky I Max »
unit_of_measurement: « A »
icon: mdi:flash
teleinfo_id: myteleinfo
– platform: template
name: « Linky I/Imax »
id: i100
icon: mdi:flash
unit_of_measurement: « % »
accuracy_decimals: 0
lambda: |-
return (id(iinst).state/id(isousc).state*100);
– platform: template
name: « Linky Base KWH »
id: base_kwh
icon: mdi:flash
unit_of_measurement: « kWh »
accuracy_decimals: 0
lambda: |-
return ((id(index_base).state)/1000);
– platform: homeassistant
name: « BASE J »
unit_of_measurement: « kWh »
entity_id: sensor.energie_totale_linky_jour
id: basej
– platform: wifi_signal
id: wif
name: « ${friendly_name} WiFi Signal Sensor »
update_interval: 60s
– platform: uptime
id: uptime_seconds
name: « ${friendly_name} Uptime »
update_interval: 60s
unit_of_measurement: s
accuracy_decimals: 0
force_update: false
icon: mdi:timer
text_sensor:
– platform: teleinfo
tag_name: « OPTARIF »
name: « Linky OPTARIF »
teleinfo_id: myteleinfo
– platform: teleinfo
tag_name: « PTEC »
id: tarif
name: « Linky PTEC »
teleinfo_id: myteleinfo
– platform: template
name: « ${friendly_name} Uptime »
update_interval: 60s
icon: mdi:clock-start
lambda: |-
int seconds = (id(uptime_seconds).state);
int days = seconds / (24 * 3600);
seconds = seconds % (24 * 3600);
int hours = seconds / 3600;
seconds = seconds % 3600;
int minutes = seconds / 60;
seconds = seconds % 60;
if ( days ) {
return { (String(days) + »d » + String(hours) + »h » + String(minutes) + »m « + String(seconds) + »s »).c_str() };
} else if ( hours ) {
return { (String(hours) + »h » + String(minutes) + »m « + String(seconds) + »s »).c_str() };
} else if ( minutes ) {
return { (String(minutes) + »m « + String(seconds) + »s »).c_str() };
} else {
return { (String(seconds) + »s »).c_str() };
}
#Etat de la connection
binary_sensor:
– platform: status
name: « ${friendly_name} Status »
switch:
– platform: restart
name: « ${friendly_name} Restart »
display:
– platform: ssd1306_i2c
model: « SSD1306 128×64″
address: 0x3C
brightness: 100%
lambda: |-
it.printf(0,0,id(arial), »PuC=%.0f W »,id(papp).state);
it.printf(0,15,id(arial), »I Inst=%.0f A »,id(iinst).state);
it.printf(70,15,id(arial), »-%.0f %% »,id(i100).state);
it.printf(0,30,id(arial), »ConsoJ=%.0f kWh »,id(basej).state);
std::string tarif_ = id(tarif).state;
it.printf(0,45,id(arial), « Tarif: %s », tarif_.c_str());
**********************************************
j’ai bien des infos qui remontent mais sur l’onglet energie les valeurs affiches sont toutes à la même valeur plus ou moins.
du coup je suis en tarif BASE, et je souhaite avoir un graph des valeurs de puissances instantanées , et un compteur journalier en KWh de ma conso afin de pouvoir historiser.
mais pour le moment je patine.
merci d’avance.
Salut, excuse moi de te déranger, tout fonctionne correctement en ce qui concerne la remontée des informations, par contre j’ai voulu integrer ton automatisation de contrôle de la communication, hélas j’ai une erreur « Unable to find referenced entities input_boolean.com_linky », avant de te déranger j’ai essayer de trouver d’où venait cette erreur mais je n’ai pas trouvé la référence de cet input. En te remerciant par avance. Salutations.
Bonjour, effectivement le input boolean était déclaré dans un autre fichier, en plus je l’avais renommé en ‘input_boolean.com_linky ». je l’ai ajouté dans linky.yaml et mis à jour le code de l’automatisme. Bon courage.
Merci beaucoup ça fonctionne au top, vraiment tu fais du très bon boulot!!!!
Merci.
Bonjour,
avec les nouveaux abonnements multi tarifs, comment peut on adapter tes scripts ?
je viens de passer de mint HP/HC a EDF av c un « électrique vert auto Weekend » , où on bénéficie d’heures creuses les week-end et jours fériés , je pensais bêtement que le compteur prenais ça comme du HC mais c’est pas le cas .
la trame envoyé par le compteur ( en mode historique) est ‘base’
le PTEC est HY et ne comprends pas les mentions HP/HC/WE …
autrement dit tout mes appareils qui lisent la trame sont perdus et ne remontent plus les bonnes infos . ( même ma chaudière ne s enclanche pas plus la nuit 🙁 )
as tu déjà rencontré le soucis ?
je pense qu’on sera de plus en plus nombreux a l’avoir ( EDF a 2 abo de ce type , total energy a les supers HC , ect … )
j imaginais une solution ‘mécanique’ pour palier , mais si on peut le faire en soft
(je pensais utiliser le contact sec C1/C2 du compteur pour savoir si HP ou pas … mais j avous ne pas etre à l’aise a manipuler le compter … )
merci
Bonjour Jerome, il faut passer ton linky en mode standard et tu disposera de 10 index différents, regarde mon article sur le mode historique. Le changement de mode est à faire auprès de ton fournisseur d’énergie, et cela resoudera simplement ton problème, tiens mois informé, bon courage.
Merci pour la réponse rapide 🙂 je viens de faire la demande a EDF , on verra bien . en attendant, je vais potasser la doc spécifique que tu as fait sur le mode standard .
Ok Jerome, tiens moi informé. Salutations
bon, je suis passé en mode normal et ….. c est pire .
j ai un Tywatt1000 qui sert pour le RT2012, il est partit en carafe , d apres deltadore ( a defaut d avoir du matos de merde ils sont réactifs ) , il faut un modele sortit apres octobre 2020 pour gerer le mode normal ( et bim un truc a 250euros qui sert plus a rien ) .
mon ecodevice, pareil , il ne remonte plus rien, meme plus la puissance consommée, pareil, il est pas compatible trame normale 🙁
il n y a que mon petit boitier TIC/USB no name rail din, qui me remonte bien les infos sur Jeedom ( via plugin teleinfo ) .
je l ai branché sur l odroid qui sert pour homeassistant, je recupere bien les infos sur nodered en lecture de l USB, mais apres je ne sais pas faire, et ce n est pas le sujet de cette page .
merci quand meme pour ton aide
ps : la trame ressemble à ça maintenant :
ADSC 062061638213 3
VTIC 02 J
DATE H220223223917 D
NGTF HC et Week-End U
LTARF HEURE CREUSE K
EAST 010686944 5
EASF01 006972049 G
EASF02 003574937 I
EASF03 000139958 G
EASF04 000000000 %
EASF05 000000000 &
EASF06 000000000 ‘
EASF07 000000000 (
EASF08 000000000 )
EASF09 000000000 *
EASF10 000000000 »
EASD01 006685689 P
EASD02 003460150 4
EASD03 000357561 =
EASD04 000183544 <
IRMS1 003 1
URMS1 238 G
PREF 09 H
PCOUP 09 "
SINSTS 00667 Y
SMAXSN H220223021413 06521 1
SMAXSN-1 H220222030411 08197 W
CCASN H220223223000 00510 3
CCASN-1 H220223220000 00556 X
UMOY1 H220223223000 238 –
STGE 003A8000 A
MSG1 PAS DE MESSAGE <
PRM 19467293685817 M
RELAIS 001 C
NTARF 01 N
NJOURF 00 &
NJOURF+1 00 B
PJOURF+1 0000C001 06308002 2230C001 NONUTILE NONUTILE NONUTILE NONUTILE NONUTILE NONUTILE NONUTILE NONUTILE V
Bon c’est déjà pas mal tu récupères ces info, et tu peux voir que tu récupere des watt heure dans EASTF01 à EASTF03, ce qui correspond à tes trois tarifications (regarde dans mon article la signification des entités). Est ce que avec node red tu sais extraire les valeurs par exemple, SINST c’est ta puissance instantanée, il faut extraire la valeur numérique puis la convertir, ce qu’a fait ce gars https://forum.hacf.fr/t/decoder-trames-linky-en-mode-standard-sous-node-red/4222, normalement c’est faisable. Dans cet article http://hallard.me/pitinfo/ un gars a écrit une fonction sous NR pour le mode historique, mais avec quelques modif ca pourrait fonctionner pour de l’historique. J’espère t’avoir aidé.
Salut Rem81,
Tout d’abord, je tiens à te remercier pour ton boulot remarquable !
Cependant, j’ai suivi à la lettre ton article (acheter les même composants, être en mode historique, etc) mais malgré tout ça, je n’ai aucune information venant du linky qui remonte dans home assistant.
Par réflexe, j’ai regardé les logs dans espHome et j’obtiens quelque « teleinfo: bad crc… »:
« `
[18:12:04][D][text_sensor:067]: ‘Linky PTEC’: Sending state ‘HP..’
[18:12:05][E][teleinfo:038]: bad crc: got 62 except 74
[18:12:06][D][sensor:125]: ‘linkyinfo Uptime’: Sending state 1777.36499 s with 0 decimals of accuracy
[18:12:18][D][text_sensor:067]: ‘linkyinfo Uptime’: Sending state ’29m 37s’
[18:12:25][E][teleinfo:038]: bad crc: got 62 except 68
[18:12:30][D][sensor:125]: ‘linkyinfo WiFi Signal Sensor’: Sending state -49.00000 dBm with 0 decimals of accuracy
[18:12:43][D][api:102]: Accepted ::FFFF:C0A8:A
[18:12:43][W][api.connection:083]: Home Assistant 2022.3.7 (::FFFF:C0A8:A): Connection closed
[18:12:45][E][teleinfo:038]: bad crc: got 62 except 80
[18:13:03][D][sensor:125]: ‘Linky P/PCoup’: Sending state nan % with 0 decimals of accuracy
[18:13:04][D][text_sensor:067]: ‘Linky PTEC’: Sending state ‘HP..’
[18:13:05][E][teleinfo:038]: bad crc: got 62 except 54
[18:13:06][D][sensor:125]: ‘linkyinfo Uptime’: Sending state 1837.37097 s with 0 decimals of accuracy
[18:13:18][D][text_sensor:067]: ‘linkyinfo Uptime’: Sending state ’30m 37s’
[18:13:25][E][teleinfo:038]: bad crc: got 82 except 83
[18:13:30][D][sensor:125]: ‘linkyinfo WiFi Signal Sensor’: Sending state -49.00000 dBm with 0 decimals of accuracy
[18:13:43][D][api:102]: Accepted ::FFFF:C0A8:A
[18:13:43][W][api.connection:083]: Home Assistant 2022.3.7 (::FFFF:C0A8:A): Connection closed
[18:13:45][E][teleinfo:038]: bad crc: got 82 except 83
[18:14:03][D][sensor:125]: ‘Linky P/PCoup’: Sending state nan % with 0 decimals of accuracy
[18:14:04][D][text_sensor:067]: ‘Linky PTEC’: Sending state ‘HP..’
[18:14:05][E][teleinfo:038]: bad crc: got 62 except 68
[18:14:06][D][sensor:125]: ‘linkyinfo Uptime’: Sending state 1897.37305 s with 0 decimals of accuracy
« `
Peux-tu essayer de m’aider ou bien as-tu des pistes afin de trouver d’où vient le problème ?
D’avance merci.
Tony
Bonjour Tony
Merci pour ton encouragement. Concernant ton bad crc, c’est le module wemos teleinfo qui ne peut pas déchiffer les trames reçues du linky: vérifie le raccordement au niveau du linky (I1 et I2), est-ce que la led rouge est allumée et clignote de temps en temps, quelle longueur de cables entre le linky et le module?
Rebonjour Rémi,
Merci beaucoup pour te retour rapide.
Concernant tes questions, oui j’ai bien la led rouge du teleinfo qui est allumée mais non, elle ne clignote pas de temps en temps… Elle scintille mais reste allumée.
Et les câbles permettant de relier le teleinfo et le linky font 20cm.
Encore merci pour ton aide.
Tony
Rebonjour Rémi,
Comme je pensais que dans ta question, tu sous-entendais que la longueur du câble pouvez être la cause du problème, j’ai changé les câbles par des câbles de 10cm (20cm auparavant) mais malheureusement cela ne résout pas mon problème, j’ai toujours les erreurs de bas crc…
Merci d’avance pour ton aide.
Re bonsoir
Pas facile de dépanner à distance, peux tu copier coller le début du log de ton esp jusqu’aux premiers bad crc STP?
Bonjour Remi,
Voici les logs demandés (j’èspère que les sauts de lignes sera pris en compte dans le formatage du texte collé)
INFO Reading configuration /config/esphome/linky-info.yaml…
INFO Starting log output from 192.168.0.136 using esphome API
INFO Successfully connected to 192.168.0.136
[09:28:42][I][app:102]: ESPHome version 2022.3.1 compiled on Mar 27 2022, 17:37:37
[09:28:42][C][wifi:491]: WiFi:
[09:28:42][C][wifi:353]: Local MAC: C8:C9:A3:CB:97:90
[09:28:42][C][wifi:354]: SSID: [redacted]
[09:28:42][C][wifi:355]: IP Address: 192.168.0.136
[09:28:42][C][wifi:357]: BSSID: [redacted]
[09:28:42][C][wifi:358]: Hostname: ‘linkyinfo’
[09:28:42][C][wifi:360]: Signal strength: -57 dB ▂▄▆█
[09:28:42][C][wifi:364]: Channel: 9
[09:28:42][C][wifi:365]: Subnet: 255.255.254.0
[09:28:42][C][wifi:366]: Gateway: 192.168.1.254
[09:28:42][C][wifi:367]: DNS1: 0.0.0.0
[09:28:42][C][wifi:368]: DNS2: 0.0.0.0
[09:28:42][C][logger:233]: Logger:
[09:28:42][C][logger:234]: Level: DEBUG
[09:28:42][C][logger:235]: Log Baud Rate: 115200
[09:28:42][C][logger:236]: Hardware UART: UART0
[09:28:42][C][i2c.arduino:038]: I2C Bus:
[09:28:43][C][i2c.arduino:039]: SDA Pin: GPIO21
[09:28:43][C][i2c.arduino:040]: SCL Pin: GPIO22
[09:28:43][C][i2c.arduino:041]: Frequency: 50000 Hz
[09:28:43][C][i2c.arduino:044]: Recovery: bus successfully recovered
[09:28:43][I][i2c.arduino:054]: Results from i2c bus scan:
[09:28:43][I][i2c.arduino:060]: Found i2c device at address 0x3C
[09:28:43][C][uart.arduino_esp32:107]: UART Bus:
[09:28:43][C][uart.arduino_esp32:109]: RX Pin: GPIO23
[09:28:43][C][uart.arduino_esp32:111]: RX Buffer Size: 256
[09:28:43][C][uart.arduino_esp32:113]: Baud Rate: 1200 baud
[09:28:43][C][uart.arduino_esp32:114]: Data Bits: 7
[09:28:43][C][uart.arduino_esp32:115]: Parity: EVEN
[09:28:43][C][uart.arduino_esp32:116]: Stop bits: 1
[09:28:43][C][template.sensor:023]: Template Sensor ‘Linky P/PCoup’
[09:28:43][C][template.sensor:023]: State Class: »
[09:28:43][C][template.sensor:023]: Unit of Measurement: ‘%’
[09:28:43][C][template.sensor:023]: Accuracy Decimals: 0
[09:28:43][C][template.sensor:023]: Icon: ‘mdi:flash’
[09:28:43][C][template.sensor:024]: Update Interval: 60.0s
[09:28:43][C][uptime.sensor:031]: Uptime Sensor ‘linkyinfo Uptime’
[09:28:43][C][uptime.sensor:031]: State Class: ‘total_increasing’
[09:28:43][C][uptime.sensor:031]: Unit of Measurement: ‘s’
[09:28:43][C][uptime.sensor:031]: Accuracy Decimals: 0
[09:28:43][C][uptime.sensor:031]: Icon: ‘mdi:timer’
[09:28:43][C][template.text_sensor:021]: Template Sensor ‘Linky PTEC’
[09:28:43][C][template.text_sensor:021]: Template Sensor ‘linkyinfo Uptime’
[09:28:43][C][template.text_sensor:021]: Icon: ‘mdi:clock-start’
[09:28:43][C][light:104]: Light ‘RGB strip’
[09:28:43][C][light:106]: Default Transition Length: 0.0s
[09:28:43][C][light:107]: Gamma Correct: 2.80
[09:28:43][C][light:104]: Light ‘led1’
[09:28:43][C][light:106]: Default Transition Length: 0.0s
[09:28:43][C][light:107]: Gamma Correct: 2.80
[09:28:43][C][teleinfo:189]: TeleInfo:
[09:28:43][C][teleinfo_sensor:012]: Teleinfo Sensor ‘Linky HPHC KWH’
[09:28:43][C][teleinfo_sensor:012]: Device Class: ‘energy’
[09:28:43][C][teleinfo_sensor:012]: State Class: ‘total_increasing’
[09:28:43][C][teleinfo_sensor:012]: Unit of Measurement: ‘kWh’
[09:28:43][C][teleinfo_sensor:012]: Accuracy Decimals: 0
[09:28:43][C][teleinfo_sensor:012]: Icon: ‘mdi:flash’
[09:28:43][C][teleinfo_sensor:012]: Teleinfo Sensor ‘Linky HC Wh’
[09:28:43][C][teleinfo_sensor:012]: State Class: »
[09:28:43][C][teleinfo_sensor:012]: Unit of Measurement: ‘Wh’
[09:28:43][C][teleinfo_sensor:012]: Accuracy Decimals: 0
[09:28:43][C][teleinfo_sensor:012]: Icon: ‘mdi:flash’
[09:28:43][C][teleinfo_sensor:012]: Teleinfo Sensor ‘Linky HP Wh’
[09:28:43][C][teleinfo_sensor:012]: State Class: »
[09:28:43][C][teleinfo_sensor:012]: Unit of Measurement: ‘Wh’
[09:28:43][C][teleinfo_sensor:012]: Accuracy Decimals: 0
[09:28:43][C][teleinfo_sensor:012]: Icon: ‘mdi:flash’
[09:28:43][C][teleinfo_sensor:012]: Teleinfo Sensor ‘Linky PCOUP’
[09:28:43][C][teleinfo_sensor:012]: State Class: »
[09:28:43][C][teleinfo_sensor:012]: Unit of Measurement: ‘kVA’
[09:28:43][C][teleinfo_sensor:012]: Accuracy Decimals: 0
[09:28:43][C][teleinfo_sensor:012]: Icon: ‘mdi:flash’
[09:28:43][C][teleinfo_sensor:012]: Teleinfo Sensor ‘Linky PAPP’
[09:28:43][C][teleinfo_sensor:012]: Device Class: ‘power’
[09:28:43][C][teleinfo_sensor:012]: State Class: ‘measurement’
[09:28:43][C][teleinfo_sensor:012]: Unit of Measurement: ‘W’
[09:28:43][C][teleinfo_sensor:012]: Accuracy Decimals: 0
[09:28:43][C][teleinfo_sensor:012]: Icon: ‘mdi:flash’
[09:28:43][C][teleinfo_sensor:012]: Teleinfo Sensor ‘Linky Umoy’
[09:28:43][C][teleinfo_sensor:012]: State Class: »
[09:28:43][C][teleinfo_sensor:012]: Unit of Measurement: ‘V’
[09:28:43][C][teleinfo_sensor:012]: Accuracy Decimals: 0
[09:28:43][C][teleinfo_sensor:012]: Icon: ‘mdi:flash’
[09:28:43][C][teleinfo_sensor:012]: Teleinfo Sensor ‘Linky I Inst’
[09:28:43][C][teleinfo_sensor:012]: State Class: »
[09:28:43][C][teleinfo_sensor:012]: Unit of Measurement: ‘A’
[09:28:43][C][teleinfo_sensor:012]: Accuracy Decimals: 0
[09:28:43][C][teleinfo_sensor:012]: Icon: ‘mdi:flash’
[09:28:44][C][teleinfo_sensor:012]: Teleinfo Sensor ‘linky N Tarif’
[09:28:44][C][teleinfo_sensor:012]: State Class: »
[09:28:44][C][teleinfo_sensor:012]: Unit of Measurement: »
[09:28:44][C][teleinfo_sensor:012]: Accuracy Decimals: 0
[09:28:44][C][teleinfo_sensor:012]: Icon: ‘mdi:flash’
[09:28:44][C][teleinfo_text_sensor:009]: Teleinfo Text Sensor ‘linky Statuts’
[09:28:44][C][teleinfo_text_sensor:009]: Icon: ‘mdi:flash’
[09:28:44][C][status:034]: Status Binary Sensor ‘linkyinfo Status’
[09:28:44][C][status:034]: Device Class: ‘connectivity’
[09:28:44][C][restart:022]: Restart Switch ‘linkyinfo Restart’
[09:28:44][C][restart:022]: Icon: ‘mdi:restart’
[09:28:44][C][ssd1306_i2c:023]: I2C SSD1306
[09:28:44][C][ssd1306_i2c:023]: Rotations: 0 °
[09:28:44][C][ssd1306_i2c:023]: Dimensions: 128px x 64px
[09:28:44][C][ssd1306_i2c:024]: Address: 0x3C
[09:28:44][C][ssd1306_i2c:025]: Model: SSD1306 128×64
[09:28:44][C][ssd1306_i2c:027]: External VCC: NO
[09:28:44][C][ssd1306_i2c:028]: Flip X: YES
[09:28:44][C][ssd1306_i2c:029]: Flip Y: YES
[09:28:44][C][ssd1306_i2c:030]: Offset X: 0
[09:28:44][C][ssd1306_i2c:031]: Offset Y: 0
[09:28:44][C][ssd1306_i2c:032]: Inverted Color: NO
[09:28:44][C][ssd1306_i2c:033]: Update Interval: 1.0s
[09:28:44][C][web_server:129]: Web Server:
[09:28:44][C][web_server:130]: Address: 192.168.0.136:80
[09:28:44][C][mdns:084]: mDNS:
[09:28:44][C][mdns:085]: Hostname: linkyinfo
[09:28:44][C][ota:085]: Over-The-Air Updates:
[09:28:44][C][ota:086]: Address: 192.168.0.136:3232
[09:28:44][C][ota:089]: Using Password.
[09:28:44][C][api:138]: API Server:
[09:28:44][C][api:139]: Address: 192.168.0.136:6053
[09:28:44][C][api:143]: Using noise encryption: NO
[09:28:44][C][wifi_signal.sensor:009]: WiFi Signal ‘linkyinfo WiFi Signal Sensor’
[09:28:44][C][wifi_signal.sensor:009]: Device Class: ‘signal_strength’
[09:28:44][C][wifi_signal.sensor:009]: State Class: ‘measurement’
[09:28:44][C][wifi_signal.sensor:009]: Unit of Measurement: ‘dBm’
[09:28:44][C][wifi_signal.sensor:009]: Accuracy Decimals: 0
[09:28:44][C][homeassistant.sensor:030]: Homeassistant Sensor ‘HCHP J’
[09:28:44][C][homeassistant.sensor:030]: State Class: »
[09:28:44][C][homeassistant.sensor:030]: Unit of Measurement: ‘kWh’
[09:28:44][C][homeassistant.sensor:030]: Accuracy Decimals: 1
[09:28:44][C][homeassistant.sensor:031]: Entity ID: ‘sensor.energie_totale_jour’
[09:28:45][E][teleinfo:038]: bad crc: got 62 except 48
[09:28:51][D][api:102]: Accepted ::FFFF:C0A8:A
[09:28:51][W][api.connection:083]: Home Assistant 2022.3.7 (::FFFF:C0A8:A): Connection closed
[09:28:55][E][teleinfo:038]: bad crc: got 62 except 80
[09:29:03][D][sensor:125]: ‘linkyinfo WiFi Signal Sensor’: Sending state -58.00000 dBm with 0 decimals of accuracy
[09:29:05][E][teleinfo:038]: bad crc: got 62 except 48
[09:29:06][D][sensor:125]: ‘Linky P/PCoup’: Sending state nan % with 0 decimals of accuracy
[09:29:15][E][teleinfo:038]: bad crc: got 62 except 80
Merci beaucoup pour ton aide !
Tony
Bonjour Tony
Les entités que tu lis avec teleinfo semblent etre celles du mode standard (je vois PCOUP, U MOY,..), vérifie dans ton esphome le nom des sensors du mode historique ou sinon copie colle ton programme esp
Slts
Salut Remi,
Ah oui, il se peut qu’il y ait des erreurs de ce type car au début, j’avais testé la configuration du mode historique de ton article mais il ne fonctionnait pas… De ce fait, j’ai cliqué sur le lien vers ton github, et j’ai chopé la config du fichier esp124-tic.yaml (https://github.com/remycrochon/home-assistant/blob/master/esphome/esp124-tic.yaml) en ne modifiant juste la variable historical_mode: false en true ainsi que le baud de 9600 en 1200.
Voici mon code:
substitutions:
device_name: linkyinfo
adress_ip: « 192.168.0.136 »
friendly_name: linkyinfo
time_timezone: « Europe/Paris »
esphome:
name: ${device_name}
platform: ESP32
board: mhetesp32minikit
platformio_options:
lib_deps: NeoPixelBus@2.6.0
on_boot:
then:
– light.control:
id: led1
brightness: 0.25
state: on
wifi:
networks:
– ssid: !secret wifi_ssid
password: !secret wifi_password
priority: 1
reboot_timeout: 5min
manual_ip:
static_ip: ${adress_ip}
gateway: 192.168.1.254
subnet: 255.255.254.0
# Enable logging
logger:
# baud_rate: 0
# Enable Home Assistant API
api:
password: !secret api_password
ota:
password: !secret ota_password
web_server:
port: 80
font:
– file: « fonts/arial.ttf »
id: arial
size: 15
i2c:
sda: GPIO21 #D2=pin 19
scl: GPIO22 #D1=pin 20
scan: True
id: bus_a
#
uart:
id: uart_a
rx_pin: GPIO23
# tx_pin: GPIO1
baud_rate: 1200
parity: EVEN
data_bits: 7
teleinfo:
id: myteleinfo
uart_id: uart_a
update_interval: 10s
historical_mode: true
# Led WS2812 RGB
light:
– platform: partition
name: led1
id: led1
default_transition_length: 0s
segments:
– id: rgb_led
from: 0
to: 0
– platform: neopixelbus
num_leds: 1
pin: GPIO18
name: « RGB strip »
variant: ws2812
id: rgb_led
default_transition_length: 0s
sensor:
# Energie Active soutirée totale
– platform: teleinfo
id: hc_hp
tag_name: « EAST »
name: « Linky HPHC KWH »
unit_of_measurement: « kWh »
icon: mdi:flash
teleinfo_id: myteleinfo
device_class: « energy »
state_class: « total_increasing »
filters:
lambda: |-
return x/1000;
# Energie Active soutirée Index01
– platform: teleinfo
id: hchc
tag_name: « EASF01 »
name: « Linky HC Wh »
unit_of_measurement: « Wh »
icon: mdi:flash
teleinfo_id: myteleinfo
# Energie Active soutirée Index02
– platform: teleinfo
id: hchp
tag_name: « EASF02 »
name: « Linky HP Wh »
unit_of_measurement: « Wh »
icon: mdi:flash
teleinfo_id: myteleinfo
#Puissance apparente de coupure
– platform: teleinfo
id: pcoup
tag_name: « PCOUP »
name: « Linky PCOUP »
unit_of_measurement: « kVA »
icon: mdi:flash
teleinfo_id: myteleinfo
#Puissance apparente instantanée ph1
– platform: teleinfo
id: papp
tag_name: « SINSTS »
name: « Linky PAPP »
unit_of_measurement: « W »
device_class: « power »
state_class: « measurement »
icon: mdi:flash
teleinfo_id: myteleinfo
on_value:
– if:
condition:
sensor.in_range:
id: papp
below: 1000
then:
– light.control:
id: led1
red: 0%
green: 100% # vert
blue: 0%
– if:
condition:
sensor.in_range:
id: papp
above: 1000
below: 3000
then:
– light.control:
id: led1
red: 0%
green: 0% # bleu
blue: 100%
– if:
condition:
sensor.in_range:
id: papp
above: 3000
then:
– light.control:
id: led1
red: 100% #rouge
green: 0%
blue: 0%
#Tension moyenne ph1
– platform: teleinfo
id: umoy1
tag_name: « UMOY1 »
name: « Linky Umoy »
unit_of_measurement: « V »
icon: mdi:flash
teleinfo_id: myteleinfo
#Courant efficace ph1
– platform: teleinfo
id: iinst
tag_name: « IRMS1 »
name: « Linky I Inst »
unit_of_measurement: « A »
icon: mdi:flash
teleinfo_id: myteleinfo
# Numero du Tarif en cours
– platform: teleinfo
id: ntarif
tag_name: « NTARF »
name: « linky N Tarif »
unit_of_measurement: « »
icon: mdi:flash
teleinfo_id: myteleinfo
############### TEMPLATE ###################### »
# Calcul du ratio de la puissance apparente utilisée en % par rapport au contrat
– platform: template
name: « Linky P/PCoup »
id: p100
icon: mdi:flash
unit_of_measurement: « % »
accuracy_decimals: 0
lambda: |-
return ((id(papp).state/1000)/id(pcoup).state*100);
# Lecture dans HA de la conso du jour
– platform: homeassistant
name: « HCHP J »
unit_of_measurement: « kWh »
entity_id: sensor.energie_totale_jour
id: hphcj
# Puissance du signal WIFI
– platform: wifi_signal
id: wif
name: « ${friendly_name} WiFi Signal Sensor »
update_interval: 60s
# Temps de fonctionnement de l’ESP
– platform: uptime
id: uptime_seconds
name: « ${friendly_name} Uptime »
update_interval: 60s
unit_of_measurement: s
accuracy_decimals: 0
force_update: false
icon: mdi:timer
#######################################
text_sensor:
# Registre de statuts
– platform: teleinfo
id: stge
tag_name: « STGE »
name: « linky Statuts »
icon: mdi:flash
teleinfo_id: myteleinfo
# Convertion du tarif en cours
– platform: template
id: tarif
name: « Linky PTEC »
lambda: |-
if ( id(ntarif).state == 1 ) {
return { « HC.. » };
} else {
return { « HP.. » };
}
# Affichage du temps de fonctionnement
– platform: template
name: « ${friendly_name} Uptime »
update_interval: 60s
icon: mdi:clock-start
lambda: |-
int seconds = (id(uptime_seconds).state);
int days = seconds / (24 * 3600);
seconds = seconds % (24 * 3600);
int hours = seconds / 3600;
seconds = seconds % 3600;
int minutes = seconds / 60;
seconds = seconds % 60;
if ( days ) {
return { (String(days) + »d » + String(hours) + »h » + String(minutes) + »m « + String(seconds) + »s »).c_str() };
} else if ( hours ) {
return { (String(hours) + »h » + String(minutes) + »m « + String(seconds) + »s »).c_str() };
} else if ( minutes ) {
return { (String(minutes) + »m « + String(seconds) + »s »).c_str() };
} else {
return { (String(seconds) + »s »).c_str() };
}
#Etat de la connection
binary_sensor:
– platform: status
name: « ${friendly_name} Status »
# Restart de l’ESP
switch:
– platform: restart
name: « ${friendly_name} Restart »
# Affichage
display:
– platform: ssd1306_i2c
model: « SSD1306 128×64″
address: 0x3C
brightness: 100%
lambda: |-
it.printf(0,0,id(arial), »P=%.0f W »,id(papp).state);
it.printf(75,0,id(arial), »-%.0f %% »,id(p100).state);
it.printf(0,15,id(arial), »I Inst=%.0f A »,id(iinst).state);
it.printf(0,30,id(arial), »ConsoJ=%.0f kWh »,id(hphcj).state);
std::string tarif_ = id(tarif).state;
it.printf(0,45,id(arial), « Tarif: %s », tarif_.c_str());
Du coup, je vais essayer de prendre ton code en mode historique et de reflasher l’esp.
Encore et toujours, merci pour ton aide !
Cdt,
Tony
Rebonjour Rémi,
Je viens de mettre ta configuration que tu mets à disposition dans cet article (mode historique).
J’ai pris tel-quel ta config à partir de « font: » jusqu’en bas. Mais lorsque je tente de valider la config dans esphome, il me dit que la variable « tarif » n’existe pas et après vérification, elle n’existe pas dans ta config de ton article.
Peux-tu m’éclairer ou mettre à jour ton fichier de conf dans l’article afin que je puisse me baser dessus ?
Merci d’avance Rémi !
Cdt,
Tony-O
Salut Tony-O, as tu trouvé une solution pour ce probleme d’ID tarif ? J’ai exactement le même soucis
Bonjour, effectivement ça marche pas, je ne peux plus tester car je suis en mode « standard » mais
Il faut ajouter « id: tarif » dans la variable
– platform: teleinfo
tag_name: « PTEC »
id: tarif
name: « Linky PTEC »
teleinfo_id: myteleinfo
Cela devrait fonctionner
NB: j’ai mis le code à jour
@+
Hello,
Bravo pour ce super article mais malheureusement le model d’ESP32 mini n’est plus disponible. T’aurais d’autres références?
Merci a toi.
Merci pour ce retour!
J’ai trouvé une ref sur amazon: https://www.amazon.fr/XTVTX-ESP-WROOM-32-d%C3%A9veloppement-Bluetooth-Compatible/dp/B093GQGJCV/ref=pd_sbs_sccl_3/260-2074638-0290232?pd_rd_w=WK3Ci&pf_rd_p=8f6bedf0-41b7-480e-afe0-310ce0bb46fc&pf_rd_r=V77JP27APEHP6PV0V5D7&pd_rd_r=9bf4107e-a582-4bf1-9483-190b9df42331&pd_rd_wg=xyHdT&pd_rd_i=B093GQGJCV&psc=1
Pas testé mais la puce esp est la même. Tiens moi informé!
Hello,
Merci pour ton retour entre temps j’ai commandé ceux là : https://www.amazon.fr/dp/B074RGW2VQ/ref=cm_sw_r_em_apa_i_N8QQ6EQM5C8AXQGVKYDG
Si ce n’est pas bon j’annule et je commande la réf que tu viens de me communiquer.
Merci a toi
Bonjour, l’esp que tu as commandé ne convient pas. Le brochage n’est pas compatible avec le module tic, je te conseille de prendre l’esp Mini que je préconise, bon courage à toi.
Merci pour ton retour j’ai commandé ta référence. là il faut que je fasse les soudures. et ensuite je m’attaquerai au code 🙂
une question par anticipation : mon compteur étant a l’extérieur j’ai presque 5mètres entre mon compteur et station domotique. je peux tirer du cable en 0,8 entre la prise teleinfo et le module?
Bonjour, la section du câble convient mais attention, si le câble chemine dans un fourreau il faut un câble qui résiste aux intempéries.
bonjour
comment faites vous pour intégrer ce fichier yaml linky directement ?
Bonjour
C’est expliquer dans les pré requis, directive « !include_dir_named packages » qui permet d’éclater les configurations .yaml dans plusieurs fichier
Slts
Merci oui j’ai vu apres coup.
autre question dans le input_number, on ne peut mettre que 2 chiffres apres la virgules. Le tarif du kwh edf étant souvant de 0.1487 de ce format là. comment gérer ce souci
Dans la doc il est indiqué
step float (optional, default: 1)
Step value. Smallest value 0.001
Ok merci, tu peux partager la modif STP?
Une autre question afin de bien comprendre.
Quel est l’intérêt d’ajouter les conso HP et HC alors qu’elles sont bien séparés dans la teleinfo et que le pannel énergie de home assistant permet d’ajouter plusieurs compteurs notament HC et HP ?
Avec donc un seul tarif associé aux HC et un seul tarif associé aux HP.
Merci
Bonjour, bonne remarque mais en tarif HC/HP, le linky ne délivre pas la somme des deux, il faut donc additionner HP et HC dans l’esp, puis dégrouper dans HA avec ‘utility.meter ».
Bonne continuation
Merci de ta réponse.
Oui mais je ne comprends pas l intérêt d’additionner les deux.
Sachant que tu peux faire 2 utility meter, un hc et un hp, chaqu un associé à un seul tarif.
Ça fonctionne pour le panneau énergie.
Bonjour, Tu peux effectivement faire comme cela, mais le fait de regrouper diminue de moitié le nombre d’utility meter, et de visualiser d’un cout d’oeil le total autre ment que part la carte « energy ». Le principal étant que chacun y trouve son compte. Bonne continuation . Cdlt
Ok merci
Bonjour,
J’ai flashé le code (mode historique) dans l’ESP32 et interfacé avec HA. Pour l’instant, je ne suis pas encore relié au Linky, je teste ma « chaîne de production » 😉
Cela a l’air de fonctionner, je peux accéder à l’interface et les senseurs apparaissent bien sur HA, avec des valeurs à 0 évidemment. Je peux piloter l’éclairage des LED depuis l’interface ESPHOME.
En revanche, pas moyen de faire afficher quoi que ce soit sur l’afficheur OLED. Est-ce normal (i.e. dû au fait que je ne suis pas encore relié au linky) ?
Bonjour, ce n’est pas normal, vous devriez voir un affichage sur votre Oled, regarder dans le log de l’esp si il detecte bien le oled, par ex
[10:04:52][C][i2c.arduino:038]: I2C Bus:
[10:04:52][C][i2c.arduino:039]: SDA Pin: GPIO21
[10:04:52][C][i2c.arduino:040]: SCL Pin: GPIO22
[10:04:52][C][i2c.arduino:041]: Frequency: 50000 Hz
[10:04:52][C][i2c.arduino:044]: Recovery: bus successfully recovered
[10:04:52][I][i2c.arduino:054]: Results from i2c bus scan:
[10:04:52][I][i2c.arduino:060]: Found i2c device at address 0x3C
Merci pour la réponse.
Voici ce que j’obtiens dans le log :
[C][ssd1306_i2c:023]: I2C SSD1306
[C][ssd1306_i2c:023]: Rotations: 0 °
[C][ssd1306_i2c:023]: Dimensions: 128px x 64px
[C][ssd1306_i2c:024]: Address: 0x3C
[C][ssd1306_i2c:025]: Model: SSD1306 128×64
[C][ssd1306_i2c:027]: External VCC: NO
[C][ssd1306_i2c:028]: Flip X: YES
[C][ssd1306_i2c:029]: Flip Y: YES
[C][ssd1306_i2c:030]: Offset X: 0
[C][ssd1306_i2c:031]: Offset Y: 0
[C][ssd1306_i2c:032]: Inverted Color: NO
[C][ssd1306_i2c:033]: Update Interval: 1.0s
[E][ssd1306_i2c:036]: Communication with SSD1306 failed!
Il faut que je creuse pourquoi la communication ne se fait pas…
En refaisant mon câblage, l’afficheur est bien détecté mais toujours rien sur l’écran…
[C][i2c.arduino:052]: I2C Bus:
[C][i2c.arduino:053]: SDA Pin: GPIO21
[C][i2c.arduino:054]: SCL Pin: GPIO22
[C][i2c.arduino:055]: Frequency: 50000 Hz
[C][i2c.arduino:058]: Recovery: bus successfully recovered
[I][i2c.arduino:068]: Results from i2c bus scan:
[I][i2c.arduino:074]: Found i2c device at address 0x3C
Une idée ?
Petit complément. En réalité,il y a un affichage fugitif au démarrage, puis l’écran redeviens et reste noir. Impossible de lire ce qu’il affiche, c’est trop rapide…
C’est bon, j’ai trouvé grâce au voltmètre : le câble de masse quasi-coupé dans le connecteur. La connexion ne se faisait plus que par un fil. Désolé pour le « bruit ».
Bonjour,
J’ai flashé le code (mode historique) dans l’ESP32 et interfacé avec HA. Pour l’instant, je ne suis pas encore relié au Linky, je teste ma « chaîne de production » 😉
Cela a l’air de fonctionner, je peux accéder à l’interface et les senseurs apparaissent bien sur HA, avec des valeurs à 0 évidemment. Je peux piloter l’éclairage des LED depuis l’interface ESPHOME.
En revanche, pas moyen de faire afficher quoi que ce soit sur l’afficheur OLED. Est-ce normal (i.e. dû au fait que je ne suis pas encore relié au linky) ?
Bonjour, ce n’est pas normal, vous devriez voir un affichage sur votre Oled, regarder dans le log de l’esp si il detecte bien le oled, par ex
[10:04:52][C][i2c.arduino:038]: I2C Bus:
[10:04:52][C][i2c.arduino:039]: SDA Pin: GPIO21
[10:04:52][C][i2c.arduino:040]: SCL Pin: GPIO22
[10:04:52][C][i2c.arduino:041]: Frequency: 50000 Hz
[10:04:52][C][i2c.arduino:044]: Recovery: bus successfully recovered
[10:04:52][I][i2c.arduino:054]: Results from i2c bus scan:
[10:04:52][I][i2c.arduino:060]: Found i2c device at address 0x3C
Merci pour la réponse.
Voici ce que j’obtiens dans le log :
[C][ssd1306_i2c:023]: I2C SSD1306
[C][ssd1306_i2c:023]: Rotations: 0 °
[C][ssd1306_i2c:023]: Dimensions: 128px x 64px
[C][ssd1306_i2c:024]: Address: 0x3C
[C][ssd1306_i2c:025]: Model: SSD1306 128×64
[C][ssd1306_i2c:027]: External VCC: NO
[C][ssd1306_i2c:028]: Flip X: YES
[C][ssd1306_i2c:029]: Flip Y: YES
[C][ssd1306_i2c:030]: Offset X: 0
[C][ssd1306_i2c:031]: Offset Y: 0
[C][ssd1306_i2c:032]: Inverted Color: NO
[C][ssd1306_i2c:033]: Update Interval: 1.0s
[E][ssd1306_i2c:036]: Communication with SSD1306 failed!
Il faut que je creuse pourquoi la communication ne se fait pas…
En refaisant mon câblage, l’afficheur est bien détecté mais toujours rien sur l’écran…
[C][i2c.arduino:052]: I2C Bus:
[C][i2c.arduino:053]: SDA Pin: GPIO21
[C][i2c.arduino:054]: SCL Pin: GPIO22
[C][i2c.arduino:055]: Frequency: 50000 Hz
[C][i2c.arduino:058]: Recovery: bus successfully recovered
[I][i2c.arduino:068]: Results from i2c bus scan:
[I][i2c.arduino:074]: Found i2c device at address 0x3C
Une idée ?
Petit complément. En réalité,il y a un affichage fugitif au démarrage, puis l’écran redeviens et reste noir. Impossible de lire ce qu’il affiche, c’est trop rapide…
C’est bon, j’ai trouvé grâce au voltmètre : le câble de masse quasi-coupé dans le connecteur. La connexion ne se faisait plus que par un fil. Désolé pour le « bruit ».
Bonjour, je vois que tu as résolu ton problème, une mauvaise connexion furtive, pas évident à détecter, bravo et bon courage. @+
Bonjour, je vois que tu as résolu ton problème, une mauvaise connexion furtive, pas évident à détecter, bravo et bon courage. @+
super tuto, super complet! merci
j’avais un WARNING à la compilation et grace à ton
std::string tarif_ = id(tarif).state;
tout est ok! merci
Bonjour, merci pour ton retour d’expérience. @+
Bonjour, merci pour le tuto.
Moi qui m’inquiétait de mes 30m linéaire entre le compteur et le tableau … aucun soucis donc ?
Bonjour, non pas de souci, un Bad CRC de temps en temps, normal je dirai, mais sans conséquence, le câble est un u1000r2v 2*1.5mm2. Cdlt
Bonjour, merci pour le tuto.
Moi qui m’inquiétait de mes 30m linéaire entre le compteur et le tableau … aucun soucis donc ?
Bonjour, non pas de souci, un Bad CRC de temps en temps, normal je dirai, mais sans conséquence, le câble est un u1000r2v 2*1.5mm2. Cdlt
Bonjour,
J’ai un ESP32 qui remonte HC et HP, je me pose la question si celui ci est capable de remonté les couleurs de jours en abonnement Tempo en modifiant le code?
si oui quel est le code a implémenter SVP
merci d’avance
cordialement
Bonjour, cela semble possible en mode historique. Je ne peux pas le tester puis confirmer car je suis en mode « Standard » cependant d’apres la doc consultable dans « descriptif fonctionnel » page 15 dans le tableau 6.1.1, « PTEC » devrait vous donner le tarif en cours HC BLEU, HP BLEU, ..et pour les KWH il suffit de remplacer dans platform-teleinfo les registres HCHC et HCHP par les deux premiers registre tempo BBRHCJB et BBRHPJC puis d’ajouter les 4 registres suivants.
pour info, j’ai mis le code à jour dans https://domo.rem81.com/2022/01/12/ha-teleinformation-linky-mode-standard/ c’est peut etre le monet d’y passer
Cdlt.
Bonjour,
J’ai un ESP32 qui remonte HC et HP, je me pose la question si celui ci est capable de remonté les couleurs de jours en abonnement Tempo en modifiant le code?
si oui quel est le code a implémenter SVP
merci d’avance
cordialement
Bonjour, cela semble possible en mode historique. Je ne peux pas le tester puis confirmer car je suis en mode « Standard » cependant d’apres la doc consultable dans « descriptif fonctionnel » page 15 dans le tableau 6.1.1, « PTEC » devrait vous donner le tarif en cours HC BLEU, HP BLEU, ..et pour les KWH il suffit de remplacer dans platform-teleinfo les registres HCHC et HCHP par les deux premiers registre tempo BBRHCJB et BBRHPJC puis d’ajouter les 4 registres suivants.
pour info, j’ai mis le code à jour dans https://domo.rem81.com/2022/01/12/ha-teleinformation-linky-mode-standard/ c’est peut etre le monet d’y passer
Cdlt.