Téléinfo via wifi

@Pbranly, ils viennent d’arriver. Toujours intéressé ?

1 « J'aime »

Oui . Conditions ?
Merci
Philippe

Hello @Sylvain_G ça m’intéresse aussi :slight_smile:
Je dois retravailler mes infos qui arrive de linky, se sera l’occasion de revoir toute la gestion :slight_smile:

@Comperta, tu as de la chance, il ne m’en reste plus qu’une.

Je n’ai plus de pin header de 19 pins (les grandes barrettes noires sur la photo :
image

Avec tout le reste ? ou juste le PCB ?

Ah bah suis preneur de tout le reste :wink: j’ai déjà une barrette donc je m’en sortirai.

Merci en tout cas @Sylvain_G

bonjour
pensez vous qu’il serais possible d’ajouter un panneau solaire et une batterie , pour que le système soit autonome .
chez moi le compteur est au fond du terrain sans prise de courant a coter .

@Florian_Martin, je ne suis pas assez caler en electronique pour répondre avec certitude mais en se basant sur ce projet d’anémomètre connecté, je pense que oui en modifiant la carte.
Je vais regardé le montage et essayé dans faire une version avec alimentation autonome.

Je n’ai jamais tenté mais je pense que c’est faisable, si ton panneau solaire est capable de fournir environ 3 ou 4 fois l’energie consommée par le module (pour tenir compte de la nuit, l’ensoleillement pas optimal, les pertes dans le chargeur de batterie, la batterie elle meme…) afin de recharger la batterie.
Sachant que la board va consommer environ 200mA (au max), une batterie de 4800mAh sous 5V devrait donc le faire fonctionner largement 24h.
Ton panneau solaire doit donc garder une batterie de ce calibre chargée.
Il y a une entrée analogique sur l’ESP32, tu pourrais t’en servir pour remonter le voltage de la batterie avec un peu d’adaptation

Bonjour à tous.

Merci pour tous vos conseils!

Jefinalise mon installation, et je suis à la recherche d’une solution afin d’avoir une comparaison de ma conso vs M-1 ou A-1.

Comment puis je faire?

Merci à vous :slight_smile:

Hello. Avec l’intégration utility_meter :grinning:

Bonjour à tous,

J’utilise la carte de @Sylvain_G et j’ai un soucis :

Pour le code de Esphome c’est celui de @Schmurtz présent sur le GitHub

Il ne voit rien provenant de mon compteur.
Une idée d’où cela peut provenir ?

edit ajout code esphome :

esphome:
  name: teleinfo
  platform: ESP32
  board: nodemcu-32s
# déclaration du fichier source du composant custom
  includes:
    - teleinfo/src/my_tic_component.h
wifi:
  networks:
  - ssid: !secret wifi_ssid
    password: !secret wifi_pass


  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Teleinfo Fallback Hotspot"
    password: !secret wifi_pass
  domain: .local
  power_save_mode: LIGHT
  fast_connect: false
  reboot_timeout: 15min
  use_address: teleinfo.local
# Enable web server
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: DEBUG   # INFO for less log, put DEBUG to view all the linky's "étiquettes" received  in the logs

# Enable Home Assistant API
api:
  reboot_timeout: 15min
  port: 6053
  password: ''

ota:
  safe_mode: true
  port: 3232
  password: ''

# ajout du composant uart pour la communication série avec la sortie TIC du compteur
uart:
  id: uart_bus
  tx_pin: GPIO1
  rx_pin: GPIO3
  baud_rate: 1200
  parity: EVEN
  data_bits: 7
  stop_bits: 1


# alias pour accéder l'instance du composant
substitutions:
  name: "TIC"
  init: 'MyTicComponent::instance(id(uart_bus));'


# déclaration du composant custom
custom_component:
  - id: my_tic
    lambda: |-
      auto my_tic = ${init}
      App.register_component(my_tic);
      return {my_tic};
# 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
    name: "Uptime Sensor"
    update_interval: 60s
    unit_of_measurement: s
    accuracy_decimals: 0
    force_update: false
    icon: mdi:timer
  - platform: custom
    lambda: |-
      auto my_tic = ${init}
      return {my_tic->sensor_IINST, my_tic->sensor_ISOUSC, my_tic->sensor_PAPP, my_tic->sensor_BASE};
    sensors:
      - name: "Intensite"
        unit_of_measurement: A
        accuracy_decimals: 0
        icon: mdi:power-plug
      - name: "Intensite souscrite"
        unit_of_measurement: A
        accuracy_decimals: 0
        icon: mdi:power-plug
      - name: "Puissance"
        unit_of_measurement: W
        accuracy_decimals: 0
        icon: mdi:power-plug
      - name: "Index"
        unit_of_measurement: kWh
        accuracy_decimals: 0
        icon: mdi:home-analytics

# déclaration du sensor texte, c'est juste l'identifiant du compteur
text_sensor:
  - platform: custom
    lambda: |-
      auto my_tic = ${init}
      return {my_tic->sensor_ADCO};
    text_sensors:
      name: "ADCO"

binary_sensor:
  - platform: status
    name: "NodeMCU Status"

# switch permettant de stopper les mises à jour
switch:
  - platform: custom
    lambda: |-
      auto my_tic = ${init}
      return{my_tic};
    switches:
      name: "Receive"

edit2 ajout des infos qui arrivent dans HA :
Capture d’écran 2021-05-03 224111

@Comperta, je n’ai pas encore pu tester mon PCB (il doit être dans un colis pour arriver chez moi) alors je peux juste te dire que je l’avais tester sur une breadboard avec le code suivant :

substitutions:
  name: teleinfo
  
esphome:
  name: ${name}
  platform: ESP32
  board: nodemcu-32s

wifi:
  networks:
  - ssid: !secret wifi_ssid
    password: !secret wifi_pass

  # Optional manual IP
  manual_ip:
    static_ip: !secret ip_teleinfo
    gateway: !secret ip_gateway
    subnet: !secret ip_subnet

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

web_server:
  port: 80

captive_portal:

# Enable logging
logger:
  baud_rate: 0

# Enable Home Assistant API
api:
  password: !secret ota_pass

ota:
  password: !secret ota_pass

# ajout du composant uart pour la communication série avec la sortie TIC du compteur
# GPIO3 = Pin Rx sur ESP32-WROOM-32D
uart:
  id: uart_bus
#  tx_pin: GPIO1
  rx_pin: GPIO3
  baud_rate: 1200
  parity: EVEN
  data_bits: 7
  stop_bits: 1

# 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: "BASE"
       sensor:
        name: "Index (Wh)"
        unit_of_measurement: "Wh"
        icon: mdi:home-analytics
     - 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() };
      }

Essaie avec ce code, si tu ne reçois rien, c’est que ce n’est pas normal…
Tiens moi au courant surtout.
Dés que je reçois la mienne, je la testerais et t’enverrais le code exact que j’aurais mis.

Hello @Sylvain_G

Ça ne fonctionne pas , ça vient peut être de mon cablage avec linky.
Je vais tenter la modifi de @telenaze (remplacer la résistance 4,7 par une 10)

Je me demande si le soucis ne vient pas de la broche RX qui est directement reliée au +3.3v au lieu d’arriver entre Q1 et R3 :

à comparer avec le schéma de la page suivante :

ou encore celui-la :

j’ai bien envie de couper le circuit et de poser un fil pour tester :slight_smile:

Effectivement, le RX ne doit pas être relié au 3v3 mais au niveau du transistor et R3.

Je viens d’essayer mais ce n’est pas mieux :frowning:

il me semble que les fils 1 et 2 qui vont vers linky sont polarisés.
Essaie d’inverser le 1 et le 2

voila mon code au cas où…

esphome:
  name: teleinfo_linky
  platform: ESP8266
  #board: esp01_1m
  board: d1_mini

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password
  manual_ip:
    static_ip: 192.168.1.101
    gateway: 192.168.1.1
    subnet: 255.255.255.0
    
time:
  - platform: homeassistant
    id: homeassistant_time
    

              
              
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:


ota:

web_server:
  port: 80

text_sensor:

  - platform: version
    name: Teleinfo ESPHome Version

  - platform: wifi_info
    ip_address:
      name: Teleinfo IP
    ssid:
      name: Teleinfo SSID
    bssid:
      name: Teleinfo BSSID
      
  - platform: template
    name: Teleinfo_uptime
    lambda: |-
      int seconds = (id(uptime_sec).state);
      int days = seconds / (24 * 3600);
      seconds = seconds % (24 * 3600); 
      int hours = seconds / 3600;
      seconds = seconds % 3600;
      int minutes = seconds /  60;
      seconds = seconds % 60;
      return { (String(days) +"d " + String(hours) +"h " + String(minutes) +"m "+ String(seconds) +"s").c_str() };
    icon: mdi:clock-start
    update_interval: 113s
    


    
# 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
  #stop_bits: 1
  
# déclaration des sensors numérique
# les sensors doivent être déclarés dans l'ordre de la fonction lambda
sensor:
  # Uptime sensor.
  - platform: uptime
    name: Teleinfo Up
    id: uptime_sec 
    
  - platform: wifi_signal
    name: "Teleinfo WiFi Signal"
    update_interval: 60s
    unit_of_measurement: dB
    accuracy_decimals: 0
    force_update: false
    icon: mdi:wifi
    
    
  - platform: teleinfo
    tags:

     - tag_name: "ADCO"
       sensor:
        name: "Adresse du compteur"
        unit_of_measurement: ""
        icon: mdi:eye
        
#     - tag_name: "BASE"
#       sensor:
#        name: "Index option Base (Wh)"
#        unit_of_measurement: "Wh"
#        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é Instantanée"
        unit_of_measurement: "A"
        icon: mdi:power-plug
        
     - tag_name: "PAPP"
       sensor:
        name: "Puissance apparente"
        unit_of_measurement: "VA"
        icon: mdi:flash
        
     - tag_name: "HCHC"
       sensor:
        name: "Heures Creuses"
        unit_of_measurement: "Wh"
        icon: mdi:flash
        id: heures_creuses
        
     - tag_name: "HCHP"
       sensor:
        name: "Heures Pleines"
        unit_of_measurement: "Wh"
        icon: mdi:flash
        id: heures_pleines
        

        
     - tag_name: "HHPHC"
       sensor:
        name: "Horaire Heures Pleines/Heures Creuses"
        unit_of_measurement: ""
        icon: mdi:calendar-clock
        
    update_interval: 2s
    historical_mode: true

  - platform: template
    name: "heures creuses kwh"
    id: heures_creuses_kwh
    unit_of_measurement: "kWh"
    accuracy_decimals: 2
    update_interval: 2s
    icon: mdi:flash
    lambda: return (( (id(heures_creuses).state)/1000.0));

  - platform: template
    name: "heures pleines kwh"
    id: heures_pleines_kwh
    unit_of_measurement: "kWh"
    accuracy_decimals: 2
    update_interval: 2s
    icon: mdi:flash
    lambda: return (( (id(heures_pleines).state)/1000.0));


    

    
binary_sensor:
  - platform: status
    name: "Teleinfo Status"

switch:
  - platform: restart
    name: "Teleinfo reboot"




Quoi ??? je me serais gourré dans le schéma ? Normalement entre le RXD et le 3.3v tu as une résistance de 10K

J’ai essayé d’inverser mais rien à faire.

@Sylvain_G pour moi il y a un soucis oui :slight_smile: rien de grave et c’est facilement rattrapable

Par contre de mon côté je ne pense pas que cela vienne du code.
Je vais tenter d’emprunter a une connaissance un module qui fonctionne pour voir :frowning: