HLK-LD2450 Initial experiments to connect to HomeAssistant

how did you rework the still detection algorithem ? can you explain to me

What do you mean? Could you share more?

Hi,

can you please recommend a simple 3D print model for a esp32 C3 / C6 + LD2450 combo. Does not have to be the nicest. If there is space for another sensor, e.g. light, that is not a problem at all.

Thank you.


I put mine in a plastic empty air freshner case

Hi,

Have you tried updating your ESP32 + LD2450 to ESPHome 2025.8? I removed the throttle line, but after the update, all entities show an “unknown” status. Any idea what might be going on?

I have the same problem after the 2025.8 update?

esp32-c3+ld2450 no longer shows parameters like the user above.

I updated mine to ESPHome 2025.8.0 with no issues. Are you using the ESPHome LD2450 component or a custom one?

Here is my yaml:

substitutions:
  name: esp32-c3-1
  friendly_name: ESP32-C3-1
  espID: esp32_c3_1

esphome:
  name: ${name}
  friendly_name: ${friendly_name}

esp32:
  board: esp32-c3-devkitm-1
  framework:
    type: esp-idf

logger:

api:
  encryption:
    key: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

ota:
  - platform: esphome

esp32_ble_tracker:
  scan_parameters:
    active: true

bluetooth_proxy:
  active: true

wifi:
  networks:
  - ssid: !secret wifi_ssid
    password: !secret wifi_password
  ap:
    ssid: ${name}
    password: "xxxxxxxxxxxxx"

uart:
  id: uart_ld2450
  tx_pin: GPIO7
  rx_pin: GPIO6
  baud_rate: 256000
  parity: NONE
  stop_bits: 1

ld2450:
  id: ld2450_radar
  uart_id: uart_ld2450
  #throttle: 1000ms

binary_sensor:
  - platform: ld2450
    ld2450_id: ld2450_radar
    has_target:
      name: Presence
    has_moving_target:
      name: Moving Target
    has_still_target:
      name: Still Target
  - platform: status
    name: ${espID} Online
    id: ink_ha_connected

number:
  - platform: ld2450
    ld2450_id: ld2450_radar
    presence_timeout:
      name: "Timeout"
    zone_1:
      x1:
        name: Zone-1 X1
      y1:
        name: Zone-1 Y1
      x2:
        name: Zone-1 X2
      y2:
        name: Zone-1 Y2
    zone_2:
      x1:
        name: Zone-2 X1
      y1:
        name: Zone-2 Y1
      x2:
        name: Zone-2 X2
      y2:
        name: Zone-2 Y2
    zone_3:
      x1:
        name: Zone-3 X1
      y1:
        name: Zone-3 Y1
      x2:
        name: Zone-3 X2
      y2:
        name: Zone-3 Y2

switch:
  - platform: ld2450
    ld2450_id: ld2450_radar
    bluetooth:
      name: "Bluetooth"
    multi_target:
      name: Multi Target Tracking"

select:
  - platform: ld2450
    ld2450_id: ld2450_radar
    baud_rate:
      name: "Baud rate"
    zone_type:
      name: "Zone Type"

button:
  - platform: ld2450
    ld2450_id: ld2450_radar
    factory_reset:
      name: "LD2450 Factory Reset"
      entity_category: "config"
    restart:
      name: "LD2450 Restart"
      entity_category: "config"
  - platform: restart
    icon: mdi:power-cycle
    name: ${espID} ESP Reboot
    entity_category: diagnostic

text_sensor:
  - platform: ld2450
    ld2450_id: ld2450_radar
    version:
      name: "LD2450 Firmware"
    mac_address:
      name: "LD2450 BT MAC"
    target_1:
      direction:
        name: "Target-1 Direction"
    target_2:
      direction:
        name: "Target-2 Direction"
    target_3:
      direction:
        name: "Target-3 Direction"
  - platform: version
    name: "Version"
  - platform: wifi_info
    ip_address:
      name: ${espID} ESP IP Address
      entity_category: "diagnostic"
      disabled_by_default: True
      icon: mdi:ip-network
    mac_address:
      name: ${espID} ESP MAC
      entity_category: "diagnostic"
      icon: mdi:ip-network
      disabled_by_default: True
    ssid:
      name: "ESP Connected SSID"
    bssid:
      name: "ESP Connected BSSID"

sensor:
  - platform: ld2450
    ld2450_id: ld2450_radar
    target_count:
      name: Presence Target Count
  - platform: ld2450
    ld2450_id: ld2450_radar
    still_target_count:
      name: Still Target Count
  - platform: ld2450
    ld2450_id: ld2450_radar
    moving_target_count:
      name: Moving Target Count
  - platform: ld2450
    ld2450_id: ld2450_radar
    target_1:
      x:
        name: Target-1 X
      y:
        name: Target-1 Y
      speed:
        name: Target-1 Speed
      angle:
        name: Target-1 Angle
      distance:
        name: Target-1 Distance
      resolution:
        name: Target-1 Resolution
    target_2:
      x:
        name: Target-2 X
      y:
        name: Target-2 Y
      speed:
        name: Target-2 Speed
      angle:
        name: Target-2 Angle
      distance:
        name: Target-2 Distance
      resolution:
        name: Target-2 Resolution
    target_3:
      x:
        name: Target-3 X
      y:
        name: Target-3 Y
      speed:
        name: Target-3 Speed
      angle:
        name: Target-3 Angle
      distance:
        name: Target-3 Distance
      resolution:
        name: Target-3 Resolution
    zone_1:
      target_count:
        name: Zone-1 All Target Count
      still_target_count:
        name: Zone-1 Still Target Count
      moving_target_count:
        name: Zone-1 Moving Target Count
    zone_2:
      target_count:
        name: Zone-2 All Target Count
      still_target_count:
        name: Zone-2 Still Target Count
      moving_target_count:
        name: Zone-2 Moving Target Count
    zone_3:
      target_count:
        name: Zone-3 All Target Count
      still_target_count:
        name: Zone-3 Still Target Count
      moving_target_count:
        name: Zone-3 Moving Target Count
  - platform: uptime
    name: ${espID} ESP Uptime
    id: sys_uptime
    update_interval: 60s
    disabled_by_default: True
    entity_category: "diagnostic"
  - platform: wifi_signal 
    name: ${espID} RSSI
    id: wifi_signal_db
    update_interval: 60s
    entity_category: "diagnostic"

Hi,

thank you for your response. I am using the esphome component not the custom one.

esphome:
  name: pritomnost
  friendly_name: pritomnost

esp32:
  board: esp32-c3-devkitm-1
  framework:
    type: esp-idf

logger:

api:
  encryption:
    key: "xxx"

ota:
  platform: esphome
  password: "xxx"

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password
  fast_connect: On
  output_power: 8.5

  ap:
    ssid: "pritomnost"
    password: "xxx"

captive_portal:

network:
  enable_ipv6: true
  min_ipv6_addr_count: 2

uart:
  id: uart_ld2450
  tx_pin: GPIO20
  rx_pin: GPIO21
  baud_rate: 256000
  parity: NONE
  stop_bits: 1


ld2450:
  id: ld2450_radar
  uart_id: uart_ld2450
  #throttle: 1000ms

binary_sensor:
  - platform: ld2450
    ld2450_id: ld2450_radar
    has_target:
      name: Presence
    has_moving_target:
      name: Moving Target
    has_still_target:
      name: Still Target

number:
  - platform: ld2450
    ld2450_id: ld2450_radar
    presence_timeout:
      name: "Timeout"
    zone_1:
      x1:
        name: Zone-1 X1
      y1:
        name: Zone-1 Y1
      x2:
        name: Zone-1 X2
      y2:
        name: Zone-1 Y2
    zone_2:
      x1:
        name: Zone-2 X1
      y1:
        name: Zone-2 Y1
      x2:
        name: Zone-2 X2
      y2:
        name: Zone-2 Y2
    zone_3:
      x1:
        name: Zone-3 X1
      y1:
        name: Zone-3 Y1
      x2:
        name: Zone-3 X2
      y2:
        name: Zone-3 Y2

select:
  - platform: ld2450
    ld2450_id: ld2450_radar
    baud_rate:
      name: "Baud rate"
    zone_type:
      name: "Zone Type"

text_sensor:
  - platform: ld2450
    ld2450_id: ld2450_radar
    version:
      name: "LD2450 Firmware"
    mac_address:
      name: "LD2450 BT MAC"
    target_1:
      direction:
        name: "Target-1 Direction"
    target_2:
      direction:
        name: "Target-2 Direction"
    target_3:
      direction:
        name: "Target-3 Direction"

sensor:
  - platform: ld2450
    ld2450_id: ld2450_radar
    target_count:
      name: Presence Target Count
  - platform: ld2450
    ld2450_id: ld2450_radar
    still_target_count:
      name: Still Target Count
  - platform: ld2450
    ld2450_id: ld2450_radar
    moving_target_count:
      name: Moving Target Count
  - platform: ld2450
    ld2450_id: ld2450_radar
    target_1:
      x:
        name: Target-1 X
      y:
        name: Target-1 Y
      speed:
        name: Target-1 Speed
      angle:
        name: Target-1 Angle
      distance:
        name: Target-1 Distance
      resolution:
        name: Target-1 Resolution
    target_2:
      x:
        name: Target-2 X
      y:
        name: Target-2 Y
      speed:
        name: Target-2 Speed
      angle:
        name: Target-2 Angle
      distance:
        name: Target-2 Distance
      resolution:
        name: Target-2 Resolution
    target_3:
      x:
        name: Target-3 X
      y:
        name: Target-3 Y
      speed:
        name: Target-3 Speed
      angle:
        name: Target-3 Angle
      distance:
        name: Target-3 Distance
      resolution:
        name: Target-3 Resolution
    zone_1:
      target_count:
        name: Zone-1 All Target Count
      still_target_count:
        name: Zone-1 Still Target Count
      moving_target_count:
        name: Zone-1 Moving Target Count
    zone_2:
      target_count:
        name: Zone-2 All Target Count
      still_target_count:
        name: Zone-2 Still Target Count
      moving_target_count:
        name: Zone-2 Moving Target Count
    zone_3:
      target_count:
        name: Zone-3 All Target Count
      still_target_count:
        name: Zone-3 Still Target Count
      moving_target_count:
        name: Zone-3 Moving Target Count

button:
  - platform: ld2450
    ld2450_id: ld2450_radar
    factory_reset:
      name: "Factory Reset"
      entity_category: config
    restart:
      name: "Restart Device"
      entity_category: config

switch:
  - platform: ld2450
    ld2450_id: ld2450_radar
    bluetooth: { name: "Bluetooth" }
    multi_target: { name: "Multi Target Tracking" }

I notice you have fast_connect set. Is your wifi network hidden?
I see that someone has raised an issue with behaviour changes with wifi so it may be worth testing that and check that your ESP32 board is successfully connecting to your wifi network.

No issues with the wifi connection.

How are you confirming that your ESP32 board is connecting to your wifi successfully?

If you add the following sensors, do they display values? If they show as unknown, then your ESP32 board is not connecting to your wifi network:

text_sensor:
  - platform: wifi_info
    ip_address:
      name: ESP IP Address
      entity_category: "diagnostic"
      icon: mdi:ip-network
    mac_address:
      name: ESP MAC
      entity_category: "diagnostic"
      icon: mdi:ip-network
    ssid:
      name: "ESP Connected SSID"
    bssid:
      name: "ESP Connected BSSID"

sensor:
  - platform: wifi_signal 
    name: RSSI
    id: wifi_signal_db
    update_interval: 60s
    entity_category: "diagnostic"

I checked the logs. But it stopped reporting data from a ld2450.

Are you able to test that the LD2450 is receiving enough power and working?
You can use the HLKRadarTool app on your phone to connect to the LD2450 via bluetooth and from there you can check that the sensor is working and detecting motion.
If it is working via the app but not in HA, then my suggestion is to downgrade to the previous version of ESPHome to get the sensor back up and working again.

I have a number of LD2450 sensors running with one using the ESPHome LD2450 component and another one based on the Screek code and both are working fine after upgrading to ESPHome 2025.8.0

Yes, i can connect to the LD2450 via BT and the sensor works. I found this in the log:

[00:31:37][C][ld2450:199]: LD2450:
[00:31:37][C][ld2450:199]:   Firmware version: 0.00.00000000
[00:31:37][C][ld2450:199]:   MAC address: unknown

It doesn’t look like the ESP32 board is communicating with the LD2450.
I would suggest downgrading to ESPHome 2025.7.x and verifying that all is working correctly.
Then you will know that the issue is with the ESPHome 2025.8 update.

There is definitely something wrong with the ESP32-C3 Super Mini when using ESPHome 2025.8+. I even tried switching to an ESP32-C6, and that worked without any issues.

I try, and works fine

I switched the GPIO pins from 19 and 20 to 4 and 5, and now it works.

I have an esp32d with LD2450. This is my first time working with esp32. I can see the LD2450 in the HLink app, but I can’t get it to work in HA.

I have tried several configurations, resulting in various error messages. For example, the received data is too long.

I tried this configuration and adjusted the board and pins:

And also this bin file, but via web ESPHome.

https://www.screek.io/1u/firmware/ota/#how-to-use

Can anyone point me in the right direction?

take a look heer:https://github.com/53l3cu5/ESP32_LD2450/tree/main

1 Like