Téléinfo via wifi

Tu peux mais faut stopper le stable avant de lancer le dev et inversement

Je n’arrive pas à trouver l’URL du repository dev, @oncleben31, tu n’aurais pas ça ?

Et c’est bien dans Supervisor > Add-on Store > 3 points en haut à droite > Repositories > 'Add repository` qu’il faut ajouter l’URL de ce repository de dev ?

C’est ça.

Oui mais tu va gagner des points d’expérience :smiling_imp:. Et puis le système de sauvegarde marche très bien avec HassOS.

On peut installer deux versions d’esphome, la dev et la stable, c’est ce que j’ai fait.
Les deux sont lancés en même temps et à priori pas de soucis puisque j’ai pu faire mon OTA.

J’ai installé HA via cette commande de @McFly :

curl -sL « https://raw.githubusercontent.com/McFlyPartages/supervised-installer/master/installer.sh » >> hassio_install.sh
sudo bash hassio_install.sh -m raspberrypi4

J’ai un doute entre HassOS et HA via Docker :thinking:
C’est la même chose ?

Edit : plus besoin d’ESPHome Dev, la téléinfo a été intégrée dans la branche de prod.

Pour faire suite à un de mes messages précédent, voici comment j’ai fait avec un D1 mini et le module téléinfo de Charles Hallard.
Je vais essayé de me rappeler de tout ce que j’ai dû faire, j’espère que je ne vais rien oublier.

1. Installation d’Esphome sur HA
Aller dans supervisor/add-on store et installer ESPHome.

2. Création du nouveau node
Voici le yaml de ma config :

substitutions:
  name: teleinfo

esphome:
  name: ${name}
  platform: ESP8266
  board: d1_mini

wifi:
  ssid: "Jcpas"
  password: "********"

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Teleinfo Fallback Hotspot"
    password: "********"

web_server:
  port: 80

captive_portal:

# Enable logging
logger:     
  baud_rate: 0   # disable logging via UART, help to avoid numerous crash with ESP_LOGD
  level: INFO   # INFO for less log, put DEBUG to view all the linky's "étiquettes" received  in the logs
  esp8266_store_log_strings_in_flash: False     # recommanded for ESP8266 https://esphome.io/components/sensor/custom.html

# Enable Home Assistant API
api:
  password: "********"

ota:
  password: "********"

# ajout du composant uart pour la communication série avec la sortie TIC du compteur
# GPIO3 = Pin Rx sur Wemos D1
uart:
  id: uart_bus
#  tx_pin: GPIO15
  rx_pin: GPIO3
  baud_rate: 1200
  parity: EVEN
  data_bits: 7

# déclaration des sensors numérique
# les sensors doivent être déclarés dans l'ordre de la fonction lambda
sensor:
  - platform: wifi_signal
    name: "WiFi Signal Sensor"
    update_interval: 60s
    unit_of_measurement: dB
    accuracy_decimals: 0
    force_update: false
    icon: mdi:wifi
  - platform: uptime
    id: uptime_seconds
    name: "Uptime Sensor"
    update_interval: 60s
    unit_of_measurement: s
    accuracy_decimals: 0
    force_update: false
    icon: mdi:timer
  - platform: teleinfo
    tags:
     - tag_name: "ADCO"
       sensor:
        name: "ADCO"
        unit_of_measurement: ""
        icon: mdi:eye
     - tag_name: "BASE"
       sensor:
        name: "Index"
        unit_of_measurement: "kWh"
        icon: mdi:home-analytics
        filters:
          - multiply: 0.001
     - tag_name: "ISOUSC"
       sensor:
        name: "Intensité souscrite"
        unit_of_measurement: "A"
        icon: mdi:information
     - tag_name: "IMAX"
       sensor:
        name: "Intensité maximale"
        unit_of_measurement: "A"
        icon: mdi:information
     - tag_name: "IINST"
       sensor:
        name: "Intensité"
        unit_of_measurement: "A"
        icon: mdi:power-plug
     - tag_name: "PAPP"
       sensor:
        name: "Puissance"
        unit_of_measurement: "VA"
        icon: mdi:flash
    update_interval: 2s
    historical_mode: true

binary_sensor:
  - platform: status
    name: "Status"

switch:
  - platform: restart
    name: "${name} reboot"

text_sensor:
  - platform: template
    name: ${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() };
      }

Et on sauvegarde.

3. Téléchargement du binary
Compiler le node à l’aide des 3 petits points.
Une fois la compilation terminée, cliquer sur download binary.

4. Premièr upload sur mon Esp
Brancher l’Esp sur le PC à l’aide d’un cable mini USB.
Pour ma part je suis sous Windows 10, j’ai installé esphome-flasher puis envoyé le binary sur l’Esp.

5. Montage du D1 mini sur le Linky
J’ai donc utilisé mon D1 mini et le module téléinfo.
Voici le montage :



6. Récupération de l’appareil sur HA
Une fois l’Esp branché, HA devrait trouver automatiquement l’appareil.
Il suffit ensuite d’ajouter les infos récupérées sur le Dashboard.

4 « J'aime »

Merci @Jcpas, @oncleben31, @Makai et @djtef :clap: :clap: :clap: :clap:

Bravo à vous pour m’avoir aider à rendre fonctionnelle ma téléinfo, ce fut long mais j’ai enfin des données cohérentes. A voir dans le temps …

Merci encore à vous tous, je vais pouvoir voir mes consos instantanées :grin:

1 « J'aime »

Pas de problème, c’est grâce à ce post que j’ai pu le faire aussi donc merci à toi :wink:
Par contre est-ce que quelqu’un a réussi à voir les infos du style consommation hebdomadaire, consommation journalière, … ?
J’ai testé vite fait utility_meter mais ça me donne des infos incohérentes, j’ai dû passer à côté de quelque chose.

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: