[Help] Landis+Gyr E360-3P (ORES Wallonia Belgium) P1 port - ESPHome ESP32-C6 - Header found but telegram never parsed

Hardware:

  • Smart meter: Landis+Gyr E360-3P (triphasé / 3-phase)
  • Grid operator: ORES (Wallonia, Belgium)
  • P1 port: activated by ORES (paid activation)
  • Microcontroller: Waveshare ESP32-C6 Zero
  • Cable: standard straight RJ12 cable
  • RTS/Pin2: bridged directly to +5V (Pin1) on RJ12 connector
  • RX signal: Pin5 of RJ12 → GPIO2 of ESP32-C6 (with inverted: true)
  • Power: ESP32 powered via USB (not from P1 port)
  • ESPHome version: 2026.3.1

What works:
ESP32 boots, connects to WiFi :white_check_mark:
GPIO14 outputs 3.3V (RTS confirmed active) :white_check_mark:
Signal received on GPIO2 (confirmed with multimeter) :white_check_mark:
DSMR component finds the telegram header (/) every second :white_check_mark:

Problem:
The telegram header is found but the telegram is never fully parsed. No sensor values appear in Home Assistant — all remain unknown.
The only moment it was found is when i used the 7N2:

uart:
  id: uart_bus
  rx_pin:
    number: GPIO2
    inverted: true
    mode:
      input: true
      pullup: true
  baud_rate: 115200
  data_bits: 7
  parity: NONE
  stop_bits: 2
  rx_buffer_size: 4096

But the norm says it is a 8n1 (DSMR 5B) so i’m a bit lost.

Logs:

[V][dsmr:155]: Header of telegram found
[V][dsmr:155]: Header of telegram found
[V][dsmr:155]: Header of telegram found

…repeating every second, no parse, no values.
With dsmr_custom external component, got this error before increasing buffer:

With dsmr_custom external component, got this error before increasing buffer:
[E][dsmr_custom:346]: Error: Plain telegram larger than buffer (1500 bytes). Discarding.
This suggests the telegram from this meter is larger than 1500 bytes.

Current YAML:

uart:
  id: uart_bus
  rx_pin:
    number: GPIO2
    inverted: true
    mode:
      input: true
      pullup: true
  baud_rate: 115200
  data_bits: 8
  parity: NONE
  stop_bits: 1
  rx_buffer_size: 4096

dsmr:
  uart_id: uart_bus
  receive_timeout: 500ms
  crc_check: false
  max_telegram_length: 4096

Things already tried:

  • Multiple UART configs: 115200 8N1, 9600 7E1, 9600 7E2, 8E1 — both inverted and non-inverted
  • receive_timeout from 200ms to 5000ms
  • max_telegram_length up to 4096
  • rx_buffer_size up to 4096
  • crc_check: false
  • dsmr_custom external component
  • Pull-up enabled/disabled

Question:
Has anyone successfully read P1 data from a Landis+Gyr E360-3P with ORES in Wallonia using ESPHome? What is the correct UART configuration and are there any known quirks with this meter?
The meter firmware version shown on screen is 50221.

With weak esp32 internal pullup voltage rises too slowly.
Try with 1k or 2.2kΩ external pull-up to 3.3V.
And enable uart debug on esphome to capture data what you actually receive.

I imagine that the intern pull-up resistance activated with INPUT_PULLUP mode is not enough ?

That’s what I wrote…

thanks a lot.
it was effectively that.
I used a 4.7kΩ and it work perfectly.

You are welcome!
Be aware, it has to be pulled up to 3.3V, not 5V.