LD2410 Sensor¶
Component/Hub¶
The ld2410
sensor platform allows you to use HI-LINK LD2410 motion and presence sensors with ESPHome.
There are three variants with similar communication protocols:
LD2410 (datasheet and user manual)
LD2410B (datasheet and user manual)
LD2410C (datasheet and user manual)
The UART is required to be set up in your configuration for this sensor to work, parity
and stop_bits
must be respectively NONE
and 1
.
Use of hardware UART pins is highly recommended, in order to support the out-of-the-box 256000 baud rate of the LD2410 sensor.
# Example configuration entry
ld2410:
Configuration variables:¶
uart_id (Optional, ID): Manually specify the ID of the UART Component if you want to use multiple UART buses.
throttle (Optional, int): Time in milliseconds to control the rate of data updates. Defaults to
1000ms
.id (Optional, ID): Manually specify the ID for this LD2410 Sensor component if you need multiple components.
Binary Sensor¶
The ld2410
binary sensor allows you to use your LD2410 Sensor to perform different
measurements.
binary_sensor:
- platform: ld2410
has_target:
name: Presence
has_moving_target:
name: Moving Target
has_still_target:
name: Still Target
out_pin_presence_status:
name: out pin presence status
Configuration variables:¶
has_target (Optional): If true target detect either still or in movement. All options from Binary Sensor.
has_moving_target (Optional): If true a moving target is detected. All options from Binary Sensor.
has_still_target (Optional): If true a still target is detected. All options from Binary Sensor.
out_pin_presence_status (Optional): When in engineering mode, indicates whether the OUT pin indicates presence or not, otherwise
false
. OUT pin indication depends on the light function configuration. Might need latest firmware to work. All options from Binary Sensor.ld2410_id (Optional, ID): Manually specify the ID for the LD2410 Sensor component if you are using multiple components.
Sensor¶
The ld2410
sensor allows you to use your LD2410 Sensor to perform different
measurements.
sensor:
- platform: ld2410
light:
name: light
moving_distance:
name : Moving Distance
still_distance:
name: Still Distance
moving_energy:
name: Move Energy
still_energy:
name: Still Energy
detection_distance:
name: Detection Distance
g0:
move_energy:
name: g0 move energy
still_energy:
name: g0 still energy
g1:
move_energy:
name: g1 move energy
still_energy:
name: g1 still energy
g2:
move_energy:
name: g2 move energy
still_energy:
name: g2 still energy
g3:
move_energy:
name: g3 move energy
still_energy:
name: g3 still energy
g4:
move_energy:
name: g4 move energy
still_energy:
name: g4 still energy
g5:
move_energy:
name: g5 move energy
still_energy:
name: g5 still energy
g6:
move_energy:
name: g6 move energy
still_energy:
name: g6 still energy
g7:
move_energy:
name: g7 move energy
still_energy:
name: g7 still energy
g8:
move_energy:
name: g8 move energy
still_energy:
name: g8 still energy
Configuration variables:¶
light (Optional, int): When in engineering mode, indicates the light sensitivity, otherwise
unknown
. Value between0
and255
inclusive. Though it seems that the value85
is the lowest value at complete darkness. All options from Sensor.moving_distance (Optional, int): Distance in cm of detected moving target. All options from Sensor.
still_distance (Optional, int): Distance in cm of detected still target. All options from Sensor.
moving_energy (Optional, int): Energy for moving target. Value between
0
and100
inclusive. All options from Sensor.still_energy (Optional, int): Energy for still target. Value between
0
and100
inclusive. All options from Sensor.detection_distance (Optional, int): Distance in cm of target. All options from Sensor.
gX (Optional): Energies for the Xth gate (X => 0 to 8).
move_energy (Optional, int): When in engineering mode, the move energy of the gate, otherwise
unknown
. Value between0
and100
inclusive. All options from Sensor.still_energy (Optional, int): When in engineering mode, the still energy of the gate, otherwise
unknown
. Value between0
and100
inclusive. All options from Sensor.
ld2410_id (Optional, ID): Manually specify the ID for the LD2410 Sensor component if you are using multiple components.
Switch¶
The ld2410
switch allows you to control your LD2410 Sensor.
switch:
- platform: ld2410
engineering_mode:
name: "engineering mode"
bluetooth:
name: "control bluetooth"
Configuration variables:¶
engineering_mode (Optional): enable/disable engineering mode. Defaults to
false
. Notice this requires more resources and is not recommended to be enabled when not necessary. All options from Switch.bluetooth (Optional): Turn on/off the bluetooth adapter. Defaults to
true
. All options from Switch.ld2410_id (Optional, ID): Manually specify the ID for the LD2410 Sensor component if you are using multiple components.
Number¶
The ld2410
number allows you to control the configuration of your LD2410 Sensor.
number:
- platform: ld2410
timeout:
name: timeout
light_threshold:
name: light threshold
max_move_distance_gate:
name: max move distance gate
max_still_distance_gate:
name: max still distance gate
g0:
move_threshold:
name: g0 move threshold
still_threshold:
name: g0 still threshold
g1:
move_threshold:
name: g1 move threshold
still_threshold:
name: g1 still threshold
g2:
move_threshold:
name: g2 move threshold
still_threshold:
name: g2 still threshold
g3:
move_threshold:
name: g3 move threshold
still_threshold:
name: g3 still threshold
g4:
move_threshold:
name: g4 move threshold
still_threshold:
name: g4 still threshold
g5:
move_threshold:
name: g5 move threshold
still_threshold:
name: g5 still threshold
g6:
move_threshold:
name: g6 move threshold
still_threshold:
name: g6 still threshold
g7:
move_threshold:
name: g7 move threshold
still_threshold:
name: g7 still threshold
g8:
move_threshold:
name: g8 move threshold
still_threshold:
name: g8 still threshold
Configuration variables:¶
timeout (Optional, int): Time in seconds during which presence state will stay present after leaving. Defaults to
5s
All options from Number.light_threshold (Optional, int): Sets the light threshold for the light function. Value between
0
and255
inclusive. Defaults to128
. All options from Number.max_move_distance_gate (Optional, int): Maximum distance gate for movement detection. Value between
2
and8
inclusive. Defaults to8
. All options from Number.max_still_distance_gate (Optional, int): Maximum distance gate for still detection. Value between
2
and8
inclusive. Defaults to8
. All options from Number.gX (Optional): Thresholds for the Xth gate (X => 0 to 8).
move_threshold (Required, int): Threshold for the gate for motion detection. Above this level for the considered gate (distance), movement detection will be triggered. Value between
0
and100
inclusive. See default values below. All options from Number.still_threshold (Required, int): Threshold for the gate for still detection. Above this level for the considered gate (distance), still detection will be triggered. Value between
0
and100
inclusive. See default values below. All options from Number.
ld2410_id (Optional, ID): Manually specify the ID for the LD2410 Sensor component if you are using multiple components.
Gate |
Default Move threshold |
Default Still threshold |
---|---|---|
0 |
50 |
0 |
1 |
50 |
0 |
2 |
40 |
40 |
3 |
30 |
40 |
4 |
20 |
30 |
5 |
15 |
30 |
6 |
15 |
20 |
7 |
15 |
20 |
8 |
15 |
20 |
Text Sensor¶
The ld2410
text sensor allows you to get information about your LD2410 Sensor.
text_sensor:
- platform: ld2410
version:
name: "firmware version"
mac_address:
name: "mac address"
Configuration variables:¶
version (Optional): The firmware version. All options from Text Sensor.
mac_address (Optional): The bluetooth mac address. Will be set to
unknown
when bluetooth is off. All options from Text Sensor.ld2410_id (Optional, ID): Manually specify the ID for the LD2410 Sensor component if you are using multiple components.
Select¶
The ld2410
select allows you to control your LD2410 Sensor.
select:
- platform: ld2410
distance_resolution:
name: "distance resolution"
baud_rate:
name: "baud rate"
light_function:
name: light function
out_pin_level:
name: out pin level
Configuration variables:¶
distance_resolution (Optional): Control the gates distance resolution. Can be
0.75m
or0.2m
. Defaults to0.75m
. All options from Select.baud_rate (Optional): Control the serial port baud rate. Defaults to
256000
. Once changed, all sensors will stop working until a fresh install with an updated UART Component configuration. All options from Select.light_function (Optional): If set, will affect the OUT pin value, based on light threshold. Can be
off
,low
orabove
. Defaults tooff
. All options from Select.out_pin_level (Optional): Control OUT pin
away
value. Can below
orhigh
. Defaults tolow
. All options from Select.ld2410_id (Optional, ID): Manually specify the ID for the LD2410 Sensor component if you are using multiple components.
Automations¶
bluetooth_password.set
Action¶
This is an Action for setting the bluetooth password.
- bluetooth_password.set:
id: my_ld2410
password: "HiLink"
Configuration variables:
id (Required, ID): The ID of the LD2410 Sensor component to set.
password (Required, string, templatable): The password to set. Case sensitive. Must be exactly 6 characters long. Default password is
HiLink
.
To change the password from HA you can use the following example config:
ld2410:
id: my_ld2410
api:
actions:
- action: set_ld2410_bluetooth_password
variables:
password: string
then:
- bluetooth_password.set:
id: my_ld2410
password: !lambda 'return password;'
OUT pin¶
In order to monitor the presence indicated by the component, with the light function taken under account, you can set up a GPIO Binary Sensor:
binary_sensor:
- platform: gpio
pin: GPIOXX
name: gpio out pin presence
device_class: presence
Calibration Process¶
In order to calibrate your ld2410
sensor perform the following:
Enable engineering mode.
Monitor the
gX_move_energy
andgX_still_energy
sensors.Change the thresholds and repeat step 2 until satisfaction.
Disable engineering mode.
Home Assistant Card¶
For easy calibration process, you can use the following custom manual card.
type: vertical-stack
title: 'DEVICE'
cards:
- type: horizontal-stack
cards:
- type: entities
entities:
- entity: 'switch.DEVICE_engineering_mode'
name: engineering mode
- type: vertical-stack
cards:
- type: entities
entities:
- entity: 'number.DEVICE_timeout'
name: timeout
- entity: 'number.DEVICE_max_move_distance_gate'
name: max move distance gate
- entity: 'number.DEVICE_max_still_distance_gate'
name: max still distance gate
- entity: 'select.DEVICE_light_function'
name: light function
- entity: 'number.DEVICE_light_threshold'
name: light threshold
- type: horizontal-stack
cards:
- type: entity
entity: 'sensor.DEVICE_detection_distance'
name: distance
- type: entity
entity: 'sensor.DEVICE_moving_distance'
name: move
- type: entity
entity: 'sensor.DEVICE_still_distance'
name: still
- type: horizontal-stack
cards:
- type: entity
entity: 'sensor.DEVICE_move_energy'
name: move energy
- type: entity
entity: 'sensor.DEVICE_still_energy'
name: still energy
- type: horizontal-stack
cards:
- type: entity
entity: 'binary_sensor.DEVICE_gpio_out_pin_presence_status'
name: gpio presence
state_color: true
- type: entity
entity: 'binary_sensor.DEVICE_presence'
name: presence
state_color: true
- type: entity
entity: 'binary_sensor.DEVICE_moving_target'
name: movement
state_color: true
- type: entity
entity: 'binary_sensor.DEVICE_still_target'
name: still
state_color: true
- type: conditional
conditions:
- entity: 'switch.DEVICE_engineering_mode'
state: 'on'
card:
type: vertical-stack
cards:
- type: horizontal-stack
cards:
- type: entity
entity: 'sensor.DEVICE_light'
name: light
- type: entity
entity: 'binary_sensor.DEVICE_out_pin_presence_status'
name: out pin presence
state_color: true
- type: horizontal-stack
cards:
- type: entity
entity: 'sensor.DEVICE_g0_move_energy'
name: 'g0'
- type: entity
entity: 'number.DEVICE_g0_move_threshold'
name: ' '
- type: entity
entity: 'sensor.DEVICE_g0_still_energy'
name: ' '
- type: entity
entity: 'number.DEVICE_g0_still_threshold'
name: ' '
- type: horizontal-stack
cards:
- type: entity
entity: 'sensor.DEVICE_g1_move_energy'
name: 'g1'
icon: ' '
- type: entity
entity: 'number.DEVICE_g1_move_threshold'
name: ' '
icon: ' '
- type: entity
entity: 'sensor.DEVICE_g1_still_energy'
name: ' '
icon: ' '
- type: entity
entity: 'number.DEVICE_g1_still_threshold'
name: ' '
icon: ' '
- type: horizontal-stack
cards:
- type: entity
entity: 'sensor.DEVICE_g2_move_energy'
name: 'g2'
icon: ' '
- type: entity
entity: 'number.DEVICE_g2_move_threshold'
name: ' '
icon: ' '
- type: entity
entity: 'sensor.DEVICE_g2_still_energy'
name: ' '
icon: ' '
- type: entity
entity: 'number.DEVICE_g2_still_threshold'
name: ' '
icon: ' '
- type: horizontal-stack
cards:
- type: entity
entity: 'sensor.DEVICE_g3_move_energy'
name: 'g3'
icon: ' '
- type: entity
entity: 'number.DEVICE_g3_move_threshold'
name: ' '
icon: ' '
- type: entity
entity: 'sensor.DEVICE_g3_still_energy'
name: ' '
icon: ' '
- type: entity
entity: 'number.DEVICE_g3_still_threshold'
name: ' '
icon: ' '
- type: horizontal-stack
cards:
- type: entity
entity: 'sensor.DEVICE_g4_move_energy'
name: 'g4'
icon: ' '
- type: entity
entity: 'number.DEVICE_g4_move_threshold'
name: ' '
icon: ' '
- type: entity
entity: 'sensor.DEVICE_g4_still_energy'
name: ' '
icon: ' '
- type: entity
entity: 'number.DEVICE_g4_still_threshold'
name: ' '
icon: ' '
- type: horizontal-stack
cards:
- type: entity
entity: 'sensor.DEVICE_g5_move_energy'
name: 'g5'
icon: ' '
- type: entity
entity: 'number.DEVICE_g5_move_threshold'
name: ' '
icon: ' '
- type: entity
entity: 'sensor.DEVICE_g5_still_energy'
name: ' '
icon: ' '
- type: entity
entity: 'number.DEVICE_g5_still_threshold'
name: ' '
icon: ' '
- type: horizontal-stack
cards:
- type: entity
entity: 'sensor.DEVICE_g6_move_energy'
name: 'g6'
icon: ' '
- type: entity
entity: 'number.DEVICE_g6_move_threshold'
name: ' '
icon: ' '
- type: entity
entity: 'sensor.DEVICE_g6_still_energy'
name: ' '
icon: ' '
- type: entity
entity: 'number.DEVICE_g6_still_threshold'
name: ' '
icon: ' '
- type: horizontal-stack
cards:
- type: entity
entity: 'sensor.DEVICE_g7_move_energy'
name: 'g7'
icon: ' '
- type: entity
entity: 'number.DEVICE_g7_move_threshold'
name: ' '
icon: ' '
- type: entity
entity: 'sensor.DEVICE_g7_still_energy'
name: ' '
icon: ' '
- type: entity
entity: 'number.DEVICE_g7_still_threshold'
name: ' '
icon: ' '
- type: horizontal-stack
cards:
- type: entity
entity: 'sensor.DEVICE_g8_move_energy'
name: 'g8'
icon: ' '
- type: entity
entity: 'number.DEVICE_g8_move_threshold'
name: ' '
icon: ' '
- type: entity
entity: 'sensor.DEVICE_g8_still_energy'
name: ' '
icon: ' '
- type: entity
entity: 'number.DEVICE_g8_still_threshold'
name: ' '
icon: ' '
Then replace all instances of DEVICE
with your device name
The result: