Téléinfo via wifi

tu utilise quel ESP32, parce que le brochage est peut être différent.
ex esp wroom 32

le 3v3 et le gnd ne sont pas sur la même ligne.

J’utilise ces ESP32

Avec ce schéma de brochage :

J’ai pris le même que @Sylvain_G .
J’avoue ne pas comprendre pourquoi cela ne fonctionne pas.

Ok, donc le brochage est bon.
dans mon code, je n’ai pas " stop_bits: 1" (la ligne est commentée) cela vient peur être de là.

@Comperta, prend une photo de l’arrière du PCB, apparemment je me suis planté sur un routage, ça devrait être ça :

au lieu de ça :

Voir le raccordement du RXD et les routes bleues sont sous le PCB

Donc il faudrait couper la route entre RXD et borne de gauche de la R3 et faire un pont entre RXD et borne de droite de R3.

Il n’y a pas de sens pour les fils I1 et I2, c’est juste présence ou absence d’une sinusoide.
D’ou le besoin d’avoir un optocoupleur avec « double » diodes pour garder les parties positives et négatives de celle-ci.

Salut Makai.

Mais si j’ai lu dans différents poste, en utilisant utility meter, je ne peux pas choisir une remise à 0 toutes les semaines, jours ,mois et années?

Est ce bien cela?

Tu peux choisir les périodes de remise à niveau avec l’attribut cycle : Utility Meter - Home Assistant
Tu as quarter-hourly, hourly, daily, weekly, monthly, bimonthly, quarterly and yearly

C’est ce que j’ai fais (cf ma photo plus haut) en soudant un câble directement sur la R3 ;-).

Mais j’ai toujours rien qui remonte , je dois avoir un autre soucis quelque part

Merci @telenaze j’ai tenté , mais toujours rien.

Vous avez un moyen pour tester les composants ? J’en ai peut être « grillé » un ?

@Comperta, il faut aussi que tu coupes la piste sur le PCB qui relie la borne gauche de R3 à la broche RXD.

As tu mis a jour le pcb dans EAD ?

@McFly, normalement oui.

J’ai reçu mes PCBs montés (merci @Duncan-Valleix). J’essaie de les modifier demain et je vous envoie les photos des modifs. J’y mettrai aussi le code que je flasherai dans L’ESP32.

Désolé pour le délai mais c’est un peu le cirque ici. Je ne vous oublie pas @Pbranly & @Comperta :wink:

1 « J'aime »

De nouvelles du PCB et de ces modifications pour qu’il soit fonctionnel (ne concerne que les PCB v1.0, la v2.0 étant corrigée)

Tout d’abord il faut couper la liaison entre la borne RXD et la borne gauche de R3 :
image

Vous pouvez la couper au cutter en y allant doucement ou pour être sûr, comme j’ai fait, un perçage avec un petit foret.

Ensuite il faut faire un pont entre la borne de droite de R3 et la borne RXD :

Et voici ce que cela donne :

Attention, il n’y a pas de jonction entre la piste verticale à gauche du trait rouge et le point de soudure (voir trait rouge). J’ai un peu cramé le vernis (Je suis pas très doué en soudure).

Ensuite si vous êtes sur un compteur Linky comme moi, il faut remplacer la résistance R1 par une résistance d’une valeur de 1kOhms au lieu de 4.7kOhms.
@Comperta & @Pbranly, je peux vous en fournir si vous n’en avez pas.

Et voici le code que j’ai uploadé sur mon ESP32 :

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() };
      }

Important, fixer l’adresse IP de votre ESP via votre box (dans le DHCP, associer la MAC adresse de l’ESP à une adresse IP que vous utiliserez comme secret ip_teleinfo.

Et victoire :champagne:, je vois des logs passer :

Je tiens à remercier @Duncan-Valleix pour ces soudures et je m’excuse auprès de @Comperta et @Pbranly pour avoir essuyé les plâtres. N’hésitez surtout pas à me contacter pour le SAV.

Merci Sylvain.
Je vois ça demain.
Question de naïf: les secrets sont à mettre ou ? Dans le même fichier secrets de HA ?
Merci d’avance
Philippe

Ps: une résistance de 1 K j’ai !

@Pbranly le secret se place au niveau du répertoire Esphome, ce n’est pas le même que HA :wink:

Dans ESPHome, il faut cliquer sur les 3 petits points en haut à droite de la fenêtre. Tu verras « secret editor » (*je crois de mémoire *), et tu pourras renseigner tes secrets.

Trouvé !
Il faut laisser entre guillemets ou pas chaque champs ?
Ce n’est jamais clair dans les docs !

Je vais en commander cette semaine. Si cela intéresse du monde faites moi signe. Si il y a des modifications a apporter n’hésitez pas non plus.

Pour ma part je ne suis pas chez moi avant dimanche prochain, je verrais pour changer la résistance R1 à ce moment là :slight_smile: