Téléinfo via wifi

J’ai installé influxDB et pour l’instant je n’ai pas encore assez de données mais j’ai pu voir la mise en route de ma PAC
@Jcpas, je te tiens au courant si j’arrive à faire un graph via Grafana de la conso en VA.

2 « J'aime »

Bonjour à tous!

Cherchant une alternative à l’intégration Linky je me suis lancé dans le projet de mettre en place un système de récupération de Téléinfo via wifi il y a quelques semaines. Le temps que tous les composants arrivent, j’ai attaquer le montage hier sur breadboard (les PCB sont en route…).

Mon objectif étant de claquer le bazard dans le tableau électrique tout en utilisant HA j’ai principalement suivi ces deux guides:
https://www.canaletto.fr/post/home-assistant-esp-and-teleinfo
https://forum.jeedom.com/viewtopic.php?f=185&t=21758&sid=7888443669e19baa7f8e33f03ec72b24

Après quelques déboires avec une LED montée à l’envers :unamused: le système est opérationnel et remonte bien toutes les infos dans HA.
Si à la lecture des deux liens ci-dessus il y a des questions qui vous viennent profitez en tant que j’ai encore tout dans la tête…

1 « J'aime »

@Jcpas, c’est un truc comme ça que tu voudrais My Canaletto | Home Assistant, ESP & Téléinfo

C’est vrai que les graphiques sont classes :

Je ne connais pas utility_meter, tu pourrais partager ta config que j’essaie de mon côté pour tester avec mes sensors ?

C’est assez simple d’utiliser utiliser utility_meter.
Bien évidemment, les sensors à reprendre sont ceux qui sont déclarés dans les templates.
Le code ci-dessous génère de nouveaux sensors qui reprennent les données cumulées en fonction du cycle défini.

A noter que, toujours à cause de cette fichue LED, j’ai appelé hier après-midi le fournisseur d’electricité pour passer en mode TIC Standard du coup j’ai plus rien depuis 0h00…
Je dois rappeler demain pour repasser en mode Historique…
Mais je sais que ça fonctionne , j’ai eu toutes les remontées attendues avant ce changement de mode de TIC.

Du coup j’ai pas trop eu l’occasion de vérifier toute l’intégration dans HA mais y a pas de raison…

utility_meter:
  hourly_energy_consumption:
    source: sensor.teleinfo_energy
    cycle: hourly
  daily_energy_consumption:
    source: sensor.teleinfo_energy
    cycle: daily
  weekly_energy_consumption:
    source: sensor.teleinfo_energy
    cycle: weekly
  monthly_energy_consumption:
    source: sensor.teleinfo_energy
    cycle: monthly  
  hourly_energyhp_consumption:
    source: sensor.teleinfo_energyhp
    cycle: hourly
  daily_energyhp_consumption:
    source: sensor.teleinfo_energyhp
    cycle: daily
  weekly_energyhp_consumption:
    source: sensor.teleinfo_energyhp
    cycle: weekly
  monthly_energyhp_consumption:
    source: sensor.teleinfo_energyhp
    cycle: monthly            
  hourly_energyhc_consumption:
    source: sensor.teleinfo_energyhc
    cycle: hourly
  daily_energyhc_consumption:
    source: sensor.teleinfo_energyhc
    cycle: daily
  weekly_energyhc_consumption:
    source: sensor.teleinfo_energyhc
    cycle: weekly
  monthly_energyhc_consumption:
    source: sensor.teleinfo_energyhc
    cycle: monthly  

Voici ma config d’utility_meter :


# utility_meter
utility_meter:
  consommation_heure:
    source: sensor.puissance
    cycle: hourly
  consommation_jour:
    source: sensor.puissance
    cycle: daily
  consommation_semaine:
    source: sensor.puissance
    cycle: weekly
  consommation_mois:
    source: sensor.puissance
    cycle: monthly
  consommation_annee:
    source: sensor.puissance
    cycle: yearly

Mon sensor c’est celui qui me renvoi la puissance instantanée en VA.
Mais là ma consommation_heure est à 37910 et il est 9h31 donc ça me ferait aux alentours de 75000 par heure :unamused:

Il ressemble à quoi le template dans lequel tu déclare le sensor.puissance?

C’est mon sensor de mon ESPHome qui me renvoi la puissance instantanée.
Je pense qu’utility_meter fait un cumul alors qu’il faudrait faire une moyenne.

C’est vrai que ça fait bizarre 128360 VA, j’ai l’impression d’habiter dans une centrale nucléaire :grin: :
image

1 « J'aime »

Mais vos sensors mesurent la puissance soutirée là non? Pas la consommation?
https://fr.wikipedia.org/wiki/Voltamp%C3%A8re

Regardez les sensors ci-dessous qui viennent du site de Canaletto.https://www.canaletto.fr/post/home-assistant-esp-and-teleinfo
Il y a un sensor puissance ET des sensors de consommation (HC / HP / HC+HP).
En tout cas chez moi ça fonctionne comme ça…

#### Teleinfo attributes from Wemos_PitInfo
#
- platform: template
  sensors:
    #
    # Power
    teleinfo_puissance:
      value_template: '{{ state_attr("sensor.wemos_pitinfo","ENERGY").Power }}'
      unit_of_measurement: "W"
    #
    # EnergyHC
    teleinfo_energyhc:
      value_template: '{{ state_attr("sensor.wemos_pitinfo","ENERGY").HCHC }}'
      unit_of_measurement: "Wh"
    #
    # EnergyHP
    teleinfo_energyhp:
      value_template: '{{ state_attr("sensor.wemos_pitinfo","ENERGY").HCHP }}'
      unit_of_measurement: "Wh"
    #
    # Energy Total + attr HP/HC
    teleinfo_energy:
      value_template: '{{ state_attr("sensor.wemos_pitinfo","ENERGY").HCHC + state_attr("sensor.wemos_pitinfo","ENERGY").HCHP }}'
      unit_of_measurement: "Wh"
      attribute_templates:
        Index HP: >-
          {{ state_attr("sensor.wemos_pitinfo","ENERGY").HCHP }}
        Index HC: >-
          {{ state_attr("sensor.wemos_pitinfo","ENERGY").HCHC }}

@Antoine1, le problème est que dans les trames récupérées, je ne vois pas cette info :

[06:01:08][E][teleinfo:036]: bad crc: got 59 except 56
[06:01:10][D][sensor:092]: 'ADCO': Sending state xxxxxxxxxxx.00000  with 0 decimals of accuracy
[06:01:10][D][sensor:092]: 'Intensité souscrite': Sending state 45.00000 A with 0 decimals of accuracy
[06:01:10][D][sensor:092]: 'Index': Sending state 21651.81250 kWh with 0 decimals of accuracy
[06:01:10][D][sensor:092]: 'Intensité': Sending state 12.00000 A with 0 decimals of accuracy
[06:01:10][D][sensor:092]: 'Intensité maximale': Sending state 90.00000 A with 0 decimals of accuracy
[06:01:10][D][sensor:092]: 'Puissance': Sending state 2870.00000 VA with 0 decimals of accuracy
[06:01:12][D][sensor:092]: 'ADCO': Sending state xxxxxxxxxxx.00000  with 0 decimals of accuracy
[06:01:12][D][sensor:092]: 'Intensité souscrite': Sending state 45.00000 A with 0 decimals of accuracy
[06:01:12][D][sensor:092]: 'Index': Sending state 21651.81250 kWh with 0 decimals of accuracy
[06:01:12][D][sensor:092]: 'Intensité': Sending state 12.00000 A with 0 decimals of accuracy
[06:01:12][D][sensor:092]: 'Intensité maximale': Sending state 90.00000 A with 0 decimals of accuracy
[06:01:12][D][sensor:092]: 'Puissance': Sending state 2890.00000 VA with 0 decimals of accuracy
[06:01:13][D][sensor:092]: 'WiFi Signal Sensor': Sending state -80.00000 dB with 0 decimals of accuracy
[06:01:14][D][sensor:092]: 'ADCO': Sending state xxxxxxxxxxx.00000  with 0 decimals of accuracy
[06:01:14][D][sensor:092]: 'Intensité souscrite': Sending state 45.00000 A with 0 decimals of accuracy
[06:01:14][D][sensor:092]: 'Index': Sending state 21651.81250 kWh with 0 decimals of accuracy
[06:01:14][D][sensor:092]: 'Intensité': Sending state 12.00000 A with 0 decimals of accuracy

Et le firmware de Canaletto est un firmware Tasmota pas ESPHome. Tu utilises Tasmota ?
Avec @Jcpas, on utilise le composant teleinfo qui (je l’espère) sortira un jour avec ESPHome (stable) mais qui est pour l’instant en dev.

Je viens de tomber sur ça dans la doc ESPHome (dev) :

# Example configuration entry
uart:
  id: uart_bus
  rx_pin: GPIO3
  tx_pin: GPIO1
  baud_rate: 1200
  parity: EVEN
  data_bits: 7

sensor:
  - platform: teleinfo
    tags:
     - name: "HCHC"
       sensor:
        name: "hchc"
        unit_of_measurement: "Wh"
        icon: mdi:flash
     - name: "HCHP"
       sensor:
        name: "hchp"
        unit_of_measurement: "Wh"
        icon: mdi:flash
     - name: "PAPP"
       sensor:
        name: "papp"
        unit_of_measurement: "VA"
        icon: mdi:flash
    update_interval: 60s
    historical_mode: true

Je vais essayer de l’ajouter à mon code de l’ESP32 puis upload, on verra si ça me rajoute les Wh

J’ai ajouté ce bout de yaml à la fin du bloc tags mais ESPHome (dev) ne voulait pas compiler car name n’était pas conforme ([name] is an invalid option for [6]. Did you mean [tag_name] ?):

     - name: "HCHC"
       sensor:
        name: "hchc"
        unit_of_measurement: "Wh"
        icon: mdi:flash
     - name: "HCHP"
       sensor:
        name: "hchp"
        unit_of_measurement: "Wh"
        icon: mdi:flash

J’ai donc changé name: par tag_name:. Il a accepté de compiler mais pas de trames HCHC ou HCHP visible dans les logs.
Pourtant j’ai vérifié, je suis bien en mode historique sur mon compteur et via le menu du linky, je vois bien ces 2 infos (HCHC & HCHP)
Je sèche … :thinking:

J’ai essayé avec cette doc mais l’indentation empêche la compilation :

VA ou W c’est presque équivalent, à peu de chose près.
Le Linky n’envoie pas la consommation instantanée en W mais en VA, d’ailleurs c’est ce qui est visible sur le Linky.
Il n’y a aucune information en W envoyée :


Moi je ne suis pas en heures creuses/heures pleines donc je n’ai pas les HC/HP, j’ai l’étiquette BASE à la place.
Comment Tasmota peut avoir la consommation en W si elle n’est pas fourni par le Linky ?
Y a un calcul à faire ou ils ont simplement estimé que VA = W ?
Il faudrait regarder dans le code pour voir quelle étiquette est récupérée pour le sensor Power.

Mis à part le name → tag_name, ton morceau de code m’a l’air correct.
Tu as essayé en mettant level: DEBUG au lieu de level: INFO ?
Peut être que tu verras plus d’étiquettes.

Je viens de tester un truc, j’ai ajouté un autre sensor en Wh qui récupère les infos du tag BASE :

     - tag_name: "BASE"
       sensor:
        name: "Index"
        unit_of_measurement: "kWh"
        icon: mdi:home-analytics
        filters:
          - multiply: 0.001
     - tag_name: "BASE"
       sensor:
        name: "Index (Wh)"
        unit_of_measurement: "Wh"
        icon: mdi:home-analytics

le sensor Index récupère les KWh arrondi alors que Index (Wh) récupère l’index en Wh non arrondi.

Est-ce que l’on pourrait pas récupérer que la différence entre deux envois, on pourrait alors tracer sur une courbe l’évolution des Wh au lieu des VA ?
Le problème, c’est rattaché ça au temps…
ça dépasse mes compétences là …

Donc si tu as l’étiquette BASE tu ne devrais pas avoir les options heures creuses/heures pleines si ?
Oui ça peut être une piste de comparer l’évolution des index, mais je ne pense pas qu’on soit les premiers à vouloir faire ça.
L’autre piste, plus simple peut être, serait de faire une moyenne parmi les valeurs reçues de conso instantanée.

Effectivement, je vois les options HC/HP mais elle ne doivent pas être actif. C’est pour cela que je reçois pas de trames.
En fait, il faudrait pouvoir récupérer le delta entre 2 index de BASE non arrondi. Comme cela, on peut avoir l’évolution de la conso en Wh.
Mais pour ça, faut pouvoir stocker dans une variable l’index n-1 pour le comparer à l’index n sous ESPHome.
Quelqu’un saurait faire ça dans le yaml sous ESPHome (dev) ?

Bon je crois avoir compris.
J’ai ajouté dans mon ESP l’index en Wh comme tu as fait plus haut :

     - tag_name: "BASE"
       sensor:
        name: "Index (Wh)"
        unit_of_measurement: "Wh"
        icon: mdi:home-analytics

J’ai ensuite modifié mon utility_meter pour suivre ce sensor :

utility_meter:
  consommation_heure:
    source: sensor.index_wh
    cycle: hourly
  consommation_jour:
    source: sensor.index_wh
    cycle: daily
  consommation_semaine:
    source: sensor.index_wh
    cycle: weekly
  consommation_mois:
    source: sensor.index_wh
    cycle: monthly
  consommation_annee:
    source: sensor.index_wh
    cycle: yearly

Et ça a l’air de marcher, utility_meter fait déjà la différence de valeurs.
Maintenant il ne me reste plus qu’à trouver comment supprimer l’historique des sensors.
Il faut aussi modifier la paramétrage des sensors, parce que les unités ne sont plus bonnes, HA m’indique les valeurs en VA alors que maintenant elles sont en W.
Je pourrais renommer mes sensors mais ça ne fait pas propre :grinning:

@Jcpas, si tu utilises la carte Mini Graph Card, tu peux changer l’unité qui s’affiche sur ton graph
image

Ne fais pas attention au valeur, je viens juste d’appliquer tes modifs à utility_meter

Bon voici ma config d’utility_meter :

utility_meter
# Téléinfo
  consommation_heure:
    source: sensor.index_wh
    cycle: hourly
  consommation_jour:
    source: sensor.index
    cycle: daily
  consommation_semaine:
    source: sensor.index
    cycle: weekly
  consommation_mois:
    source: sensor.index
    cycle: monthly
  consommation_annee:
    source: sensor.index
    cycle: yearly

Mon graph par heure :

par heure
align_icon: left
color_thresholds:
  - color: '#11f13a'
    value: 1300
  - color: '#f0da11'
    value: 1400
  - color: '#ef5a0f'
    value: 1500
  - color: '#ef1d0f'
    value: 1600
entities:
  - sensor.consommation_heure
unit: Wh
hours_to_show: 1
hour24: true
more_info: false
name: Conso EDF par heure
points_per_hour: 60
animate: true
show:
  labels: true
  name: true
type: 'custom:mini-graph-card'

mon graph par jour :

par jour
align_icon: left
color_thresholds:
  - color: '#11f13a'
    value: 32
  - color: '#f0da11'
    value: 33
  - color: '#ef5a0f'
    value: 34
  - color: '#ef1d0f'
    value: 35
entities:
  - sensor.consommation_jour
unit: kWh
hours_to_show: 24
hour24: true
more_info: false
name: Conso EDF par jour
points_per_hour: 2
animate: true
show:
  labels: true
  name: true
type: 'custom:mini-graph-card'

Et par semaine :

par semaine
align_icon: left
color_thresholds:
  - color: '#11f13a'
    value: 224
  - color: '#f0da11'
    value: 225
  - color: '#ef5a0f'
    value: 226
  - color: '#ef1d0f'
    value: 227
entities:
  - sensor.consommation_semaine
unit: kWh
hours_to_show: 168
hour24: true
more_info: false
name: Conso EDF par semaine
points_per_hour: 1
animate: true
show:
  labels: true
  name: true
type: 'custom:mini-graph-card'

Y a plus qu’à attendre que les données s’accumule pour voir des graphiques cohérents … :unamused: