ESPhome - how to use the HLK-LD2410S?

BTW, I tried this by cloning that repo and using the yaml board config, changing the device to an nodemcu-32s (which appears to have the same pinouts, etc, and which I have successfully used the LD2410 [non-S] module).

It crashes on startup attempting to initialize the UART:

[I][app:029]: Running through setup()...
[C][uart.arduino_esp32:077]: Setting up UART...
E (5345) task_wdt: Task watchdog got triggered. The following tasks did not reset the watchdog in time:
E (5345) task_wdt:  - loopTask (CPU 1)
E (5345) task_wdt: Tasks currently running:
E (5345) task_wdt: CPU 0: IDLE
E (5345) task_wdt: CPU 1: loopTask
E (5345) task_wdt: Aborting.

abort() was called at PC 0x400f9c74 on core 0


Backtrace:0x40083a51:0x3ffbea1c |<-CORRUPTED

again, this is with the same .yml as in the repo, except for the board: specified.

Hello.
I tried to add the component but esphome returns
binary_sensor.ld2410s: [source /config/esphome/pres-hlk2410s-1yaml.yaml:58]

Couldn’t find any component that can be used for ‘ld2410s::LD2410S’. Are you missing a hub declaration?.

do you know what i am missing ?

Hey all,
It seems that I tried everything but cannot make my LD2410s to work with my LOLIN 32.

esphome:
  name: "motion-sensor-2"
  friendly_name: Motion sensor 2
  min_version: 2024.11.0
  name_add_mac_suffix: false
  # Delay initialization to allow sensor to power up
  on_boot:
    priority: -100
    then:
    - delay: 10s

esp32:
  board: esp32dev
  framework:
    type: arduino

# Enable logging
logger:
  level: DEBUG
  logs:
    # sensor: INFO
    component: ERROR

# Enable Home Assistant API
api:

# Allow Over-The-Air updates
ota:
- platform: esphome

wifi:
  networks:
    - ssid: !secret wifi_ssid
      password: !secret wifi_password
  fast_connect: true
  power_save_mode: NONE

captive_portal:

# External component configuration
external_components:
  - source: github://NovakIrs/esphome@ld2410s
    components: [ld2410s]

debug:
  update_interval: 1s

# UART configuration for LD2410S
uart:
  id: uart_bus
  tx_pin: GPIO17  # Connects to LD2410S RX
  rx_pin: GPIO16  # Connects to LD2410S TX
  baud_rate: 115200
  parity: NONE
  data_bits: 8
  stop_bits: 1
  debug:
   direction: BOTH
   dummy_receiver: false
   after:
     delimiter: "\n"
   sequence:
     - lambda: UARTDebug::log_hex(direction, bytes, ':');

ld2410s:
  uart_id: uart_bus

binary_sensor:
  - platform: ld2410s
    has_target:
      name: Presence
    has_threshold_update:
      name: Threshold update running
  - platform: gpio
    name: "Presence Sensor"
    pin:
      number: GPIO4
      mode:
        input: true
        pullup: true
      inverted: false
    device_class: presence

sensor:
  - platform: ld2410s
    target_distance:
      name : Target Distance
    threshold_update: 
      name: Threshold update progress
  - platform: wifi_signal
    name: "Motion sensor 2 WiFi Signal"
    update_interval: 180s
text_sensor:
  - platform: ld2410s
    fw_version:
      name: Firmware version
    trigger_threshold_ts:
      name: Triggers Threshold
    trigger_hold_ts:
      name: Triggers Hold
    trigger_snr_ts:
      name: Triggers SNR
    energy_values_ts:
      name: Energy Values

number:
  - platform: ld2410s
    max_distance:
      name: Max detect distance
    min_distance:
      name: Min detect distance
    no_delay:
      name: No detect report delay
    status_reporting_frequency:
      name: Status reporting frequency
    distance_reporting_frequency:
      name: Distance reporting frequency
    trigger_selected_gate:
      name: Trigger Selected Gate
    trigger_threshold:
      name: Trigger Gate Threshold
    trigger_hold:
      name: Trigger Gate Hold
    trigger_snr:
      name: Trigger Gate SNR

select:
  - platform: ld2410s
    response_speed:
      name: Response speed

button:
  - platform: restart
    name: "ESP32 Restart"
  - platform: ld2410s
    read_all:
      name: Read configuration
    write_all:
      name: Write config changes
    factory_reset:
      name: Factory reset
    calibration:
      name: Start auto calibration
    minimal_output:
      name: Toggle minimal output

Does anybody have an idea what I did wrong?
Thanks!

I should have added that only the WiFi Signal sensor is working right now.

I just add the following:

at the beggining of LD2410S.cpp
#include “esphome/core/application.h”

and in the function send_command void LD2410S::send_command(CmdFrameT frame)

below the line while (!reply) { add App.feed_wdt();

            while (!reply) {
                App.feed_wdt();
                uint8_t ack_buffer[64];

Thanks but I’m only using ESPHome through Home assistant so I don’t have a .cpp file

Working great for me
ESPHome 2025.6.3

Though I am using

esp32:
  board: esp32dev # NodeMCU
  framework:
    type: esp-idf

Do you have your logs?