Problème code Esp32 et Pitinfo 1.4, pas de remonté du Linky

Bonjour à tous,

Malgré mes recherches et tentatives de différents codes je n’arrive toujours pas à remonter les infos de mon Linky.
J’utilise un Pitinfo 1.4 couplé à un Esp32-dev. sur un Linky en mode standard avec un abo de base (pas de Tempo ou HC).

Ma config:

## System Information

version | core-2023.5.3
-- | --
installation_type | Home Assistant OS
dev | false
hassio | true
docker | true
user | root
virtualenv | false
python_version | 3.10.11
os_name | Linux
os_version | 6.1.25
arch | x86_64
timezone | Europe/Paris
config_dir | /config

<details><summary>Home Assistant Community Store</summary>

GitHub API | ok
-- | --
GitHub Content | ok
GitHub Web | ok
GitHub API Calls Remaining | 4999
Installed Version | 1.32.1
Stage | running
Available Repositories | 1289
Downloaded Repositories | 37

</details>

<details><summary>Home Assistant Cloud</summary>

logged_in | false
-- | --
can_reach_cert_server | ok
can_reach_cloud_auth | failed to load: timeout
can_reach_cloud | ok

</details>

<details><summary>Home Assistant Supervisor</summary>

host_os | Home Assistant OS 10.1
-- | --
update_channel | stable
supervisor_version | supervisor-2023.04.1
agent_version | 1.5.1
docker_version | 23.0.3
disk_total | 30.8 GB
disk_used | 10.6 GB
healthy | true
supported | true
board | ova
supervisor_api | ok
version_api | ok
installed_addons | File editor (5.6.0), Samba share (10.0.1), ESPHome (2023.5.1), Terminal & SSH (9.7.0), Let's Encrypt (4.12.8), InfluxDB (4.6.0), Z-Wave JS UI (1.13.0), Mosquitto broker (6.2.1), Duck DNS (1.15.0), Z-Wave JS (0.1.80), MyElectricalData (0.8.16)

</details>

<details><summary>Dashboards</summary>

dashboards | 3
-- | --
resources | 31
views | 14
mode | storage

</details>

<details><summary>Recorder</summary>

oldest_recorder_run | 9 mai 2023 à 05:24
-- | --
current_recorder_run | 18 mai 2023 à 09:29
estimated_db_size | 339.87 MiB
database_engine | sqlite
database_version | 3.40.1

</details>

voici le code utilisé actuellement:

captive_portal:
  
uart:
  id: uart_bus
  rx_pin: GPIO23
  baud_rate: 9600
  parity: EVEN
  data_bits: 7

teleinfo:
  id: esp_teleinfo
  update_interval: 60s
  historical_mode: false

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

sensor:
  - platform: wifi_signal
    name: "Signal wifi"
    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
    tag_name: "IINST"
    name: "Intensité"
    unit_of_measurement: "A"
    icon: mdi:current-ac

  - platform: teleinfo
    tag_name: "PAPP"
    name: "Puissance"
    unit_of_measurement: "VA"
    icon: mdi:flash

  - platform: teleinfo
    tag_name: "HP"
    id: hp
    unit_of_measurement: "kWh"
    device_class: "energy"
    state_class: "total_increasing"
    name: "Teleinfo index_hp_kwh"
    accuracy_decimals: 3 
    filters:
      - multiply: 0.001
    icon: mdi:gauge

button:
  - platform: restart
    name: "Teleinfo Restart"

text_sensor:
  - platform: teleinfo
    tag_name: "PTEC"
    name: "Tarif actuel"
    icon: mdi:clock-time-nine-outline
  - platform: template
    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 voici ce que cela donne dans le Log:

[10:28:07][C][logger:301]: Logger:
[10:28:07][C][logger:302]:   Level: DEBUG
[10:28:07][C][logger:303]:   Log Baud Rate: 0
[10:28:07][C][logger:305]:   Hardware UART: UART0
[10:28:07][C][uart.arduino_esp32:124]: UART Bus 0:
[10:28:07][C][uart.arduino_esp32:126]:   RX Pin: GPIO23
[10:28:07][C][uart.arduino_esp32:128]:   RX Buffer Size: 256
[10:28:07][C][uart.arduino_esp32:130]:   Baud Rate: 9600 baud
[10:28:07][C][uart.arduino_esp32:131]:   Data Bits: 7
[10:28:07][C][uart.arduino_esp32:132]:   Parity: EVEN
[10:28:07][C][uart.arduino_esp32:133]:   Stop bits: 1
[10:28:07][C][uptime.sensor:031]: Uptime Sensor 'Uptime Sensor'
[10:28:07][C][uptime.sensor:031]:   Device Class: 'duration'
[10:28:07][C][uptime.sensor:031]:   State Class: 'total_increasing'
[10:28:07][C][uptime.sensor:031]:   Unit of Measurement: 's'
[10:28:07][C][uptime.sensor:031]:   Accuracy Decimals: 0
[10:28:07][C][uptime.sensor:031]:   Icon: 'mdi:timer'
[10:28:07][C][template.text_sensor:020]: Template Sensor 'Uptime'
[10:28:07][C][template.text_sensor:020]:   Icon: 'mdi:clock-start'
[10:28:07][C][teleinfo:189]: TeleInfo:
[10:28:07][C][status:034]: Status Binary Sensor 'Teleinfo Status'
[10:28:07][C][status:034]:   Device Class: 'connectivity'
[10:28:07][C][teleinfo_sensor:012]:   Teleinfo Sensor 'Intensité'
[10:28:07][C][teleinfo_sensor:012]:     State Class: ''
[10:28:07][C][teleinfo_sensor:012]:     Unit of Measurement: 'A'
[10:28:07][C][teleinfo_sensor:012]:     Accuracy Decimals: 0
[10:28:07][C][teleinfo_sensor:012]:     Icon: 'mdi:current-ac'
[10:28:07][C][teleinfo_sensor:012]:   Teleinfo Sensor 'Puissance'
[10:28:07][C][teleinfo_sensor:012]:     State Class: ''
[10:28:07][C][teleinfo_sensor:012]:     Unit of Measurement: 'VA'
[10:28:07][C][teleinfo_sensor:012]:     Accuracy Decimals: 0
[10:28:07][C][teleinfo_sensor:012]:     Icon: 'mdi:flash'
[10:28:07][C][teleinfo_sensor:012]:   Teleinfo Sensor 'Teleinfo index_hp_kwh'
[10:28:07][C][teleinfo_sensor:012]:     Device Class: 'energy'
[10:28:07][C][teleinfo_sensor:012]:     State Class: 'total_increasing'
[10:28:07][C][teleinfo_sensor:012]:     Unit of Measurement: 'kWh'
[10:28:07][C][teleinfo_sensor:012]:     Accuracy Decimals: 3
[10:28:07][C][teleinfo_sensor:012]:     Icon: 'mdi:gauge'
[10:28:07][C][restart.button:017]: Restart Button 'Teleinfo Restart'
[10:28:07][C][teleinfo_text_sensor:009]:   Teleinfo Text Sensor 'Tarif actuel'
[10:28:07][C][teleinfo_text_sensor:009]:     Icon: 'mdi:clock-time-nine-outline'
[10:28:07][C][captive_portal:088]: Captive Portal:
[10:28:07][C][mdns:108]: mDNS:
[10:28:07][C][mdns:109]:   Hostname: linky
[10:28:07][C][ota:093]: Over-The-Air Updates:
[10:28:07][C][ota:094]:   Address: 192.168.0.5:3232
[10:28:07][C][ota:097]:   Using Password.
[10:28:07][C][api:138]: API Server:
[10:28:07][C][api:139]:   Address: 192.168.0.5:6053
[10:28:07][C][api:141]:   Using noise encryption: YES
[10:28:07][C][wifi_signal.sensor:009]: WiFi Signal 'Signal wifi'
[10:28:07][C][wifi_signal.sensor:009]:   Device Class: 'signal_strength'
[10:28:07][C][wifi_signal.sensor:009]:   State Class: 'measurement'
[10:28:07][C][wifi_signal.sensor:009]:   Unit of Measurement: 'dB'
[10:28:07][C][wifi_signal.sensor:009]:   Accuracy Decimals: 0
[10:28:07][C][wifi_signal.sensor:009]:   Icon: 'mdi:wifi'
[10:28:09][D][api:102]: Accepted 192.168.0.224
[10:28:09][D][api.connection:959]: Home Assistant 2023.5.3 (192.168.0.224): Connected successfully
[10:28:38][D][sensor:094]: 'Signal wifi': Sending state -44.00000 dB with 0 decimals of accuracy
[10:28:44][D][text_sensor:064]: 'Uptime': Sending state '0s'
[10:28:50][D][sensor:094]: 'Uptime Sensor': Sending state 50.36100 s with 0 decimals of accuracy
[10:29:38][D][sensor:094]: 'Signal wifi': Sending state -43.00000 dB with 0 decimals of accuracy
[10:29:44][D][text_sensor:064]: 'Uptime': Sending state '50s'
[10:29:50][D][sensor:094]: 'Uptime Sensor': Sending state 110.36800 s with 0 decimals of accuracy
[10:30:38][D][sensor:094]: 'Signal wifi': Sending state -43.00000 dB with 0 decimals of accuracy
[10:30:44][D][text_sensor:064]: 'Uptime': Sending state '1m 50s'
[10:30:50][D][sensor:094]: 'Uptime Sensor': Sending state 170.36800 s with 0 decimals of accuracy

et ce que cela donne dans une carte:
Capture

Est ce mon code qui est faux?

Bonjour
Pour rigoler, bien sûr que ton code est faux… :sweat_smile:

Je n’ai jamais eu le pitinfo, mais piex tu t’assirer qu’il est bien alimenté avec le 3.3v (esp)?

La TIC est bien en standard sur ton lynky? Car je vois du 9600 bds sur ton code, 7 buts, even… Mais il y a un bit de stop! :thinking:

Il est en 3.3v sur l’esp32.
9600 pour le mode standard (apparemment)

Apparement??? C’est affiche sur le linky, dans le menu…

…mais sans bit de stop, cela ne decodera pas la trame!!

En mode standard, il fait déclarer la liaison ainsi :

Que pour linky en standard…
En historique la liaison est a 1200 b/s

Attention les libellés ne sont par identiques également !!!

Je suis bien en standard sur le Linky.
pour le bit d’arrêt, je dois rajouter une ligne?

Pourquoi sur le GPIO23 ?
et pas sur le GPIO3, le standard pour RX :

voici le modèle d’Esp32 (commandé sur Amazon):

ESP32 NodeMCU Module WLAN WiFi Dev Kit C Development Board

esp32

Mon autre module (sonde type Dallas) fonctionne sur GPIO23

Envoi des photos du montage ou schéma pour check.

Je pense aussi qu’il faut te connecter au GPIO3.

Salut j’utilise pour ma part l’uart physique n°2
soit GPIO 16, et ça fonctionne pilpoil
fait une recherche sur le forum de memoire il y a un membre qui a fait la compilation de toutes les configurations possibles ( Mono / Tri historique / standard )

recherche avec TIC linky…

EDIT
regardes la
tu devrais trouver ton bonheur
attention c’est a adapter en fonction de ton installation ( mono/tri histo.standard)
je t’encourage a y aller de proche en proche ( un sensor a la fois )

Merci pour vos réponses.
Je regarde en fin de journée et vous redis.

Bonne journée

Cela à l’air de fonctionner en rajoutant : stop_bits: 1
Capture
A voir dans le temps.

Merci pour votre aide :+1:

1 « J'aime »