Adjusting LD2410C presence sensitivity

Heya :wave:
I’m using the LD2410C but having trouble increasing the sensitivity. I want presence to be detected when someone is far away. I can see at gates 6 & 7 there is detection but the presence binary sensor says clear. I’ve even set the thresholds for these gates to be very lower and I can see that the detection “energy” is over the threshold but still not presence detected.

Any ideas?

See these screenshots:

I also read the datasheet but still not sure what I need to change:

Sensitivity
Only when the detected target energy value (range 0~100) is greater than the sensitivityvaluewillit be determined that the target exists, otherwise it will be ignored. The sensitivity value can be set from 0 to 100. The sensitivity of each range gate can be
independently set, so that the detection in different distance ranges can be precisely adjusted, local
accurate detection or filtering of interference sources in specific areas. In addition, if the sensitivity of a certain distance gate is set to 100, the effect of not recognizingthe target under the distance gate can be achieved. For example, if the sensitivity of distancegate3and distance gate 4 is set to 20, and the sensitivity of other distance gates is set to 100, it is possibleto detect only the human body within the range of 2.25-3.75m from the

Be sure to also check the max move distance and max still distance settings. For tuning the rest:

Off the shelf: Use the graphic tool to visualise thresholds while moving through the room.

DIY: You can also turn on engineering mode and build a similar dashboard for yourself. The below one relies on plotly graph custom card.

views:
  - title: Woonkamer
    type: sections
    sections:
      - cards:
          - features:
              - type: numeric-input
                style: buttons
            type: tile
            entity: number.motion_sensor_g0_move_threshold
            features_position: bottom
            vertical: true
            grid_options:
              columns: 4
              rows: 3
            show_entity_picture: false
            hide_state: true
            name: 0 move
          - features:
              - type: numeric-input
                style: buttons
            type: tile
            entity: number.motion_sensor_g1_move_threshold
            features_position: bottom
            vertical: true
            name: 1 move
            hide_state: true
            grid_options:
              columns: 4
              rows: 3
          - features:
              - type: numeric-input
                style: buttons
            type: tile
            entity: number.motion_sensor_g2_move_threshold
            features_position: bottom
            vertical: true
            name: 2 move
            hide_state: true
            grid_options:
              columns: 4
              rows: 2
          - features:
              - type: numeric-input
                style: buttons
            type: tile
            entity: number.motion_sensor_g3_move_threshold
            features_position: bottom
            vertical: true
            name: 3 move
            hide_state: true
            grid_options:
              columns: 4
              rows: 2
          - features:
              - type: numeric-input
                style: buttons
            type: tile
            entity: number.motion_sensor_g4_move_threshold
            features_position: bottom
            vertical: true
            name: 4 move
            hide_state: true
            grid_options:
              columns: 4
              rows: 2
          - features:
              - type: numeric-input
                style: buttons
            type: tile
            entity: number.motion_sensor_g5_move_threshold
            features_position: bottom
            vertical: true
            name: 5 move
            hide_state: true
            grid_options:
              columns: 4
              rows: 2
          - features:
              - type: numeric-input
                style: buttons
            type: tile
            entity: number.motion_sensor_g6_move_threshold
            features_position: bottom
            vertical: true
            name: 6 move
            hide_state: true
            grid_options:
              columns: 4
              rows: 2
          - features:
              - type: numeric-input
                style: buttons
            type: tile
            entity: number.motion_sensor_g7_move_threshold
            features_position: bottom
            vertical: true
            name: 7 move
            hide_state: true
            grid_options:
              columns: 4
              rows: 2
          - features:
              - type: numeric-input
                style: buttons
            type: tile
            entity: number.motion_sensor_g8_move_threshold
            features_position: bottom
            vertical: true
            name: 8 move
            hide_state: true
            grid_options:
              columns: 4
              rows: 2
          - type: custom:plotly-graph
            title: Woonkamer energy
            refresh_interval: 1
            hours_to_show: current_day
            layout:
              height: 300
              margin:
                l: 25
                r: 25
                t: 25
                b: 25
              showlegend: true
              legend:
                x: 0
                'y': 1
              xaxis:
                dtick: 1
                type: number
                fixedrange: true
                range:
                  - 0
                  - 8
              yaxis:
                dtick: 10
                fixedrange: true
                range:
                  - 0
                  - 100
            entities:
              - entity: ''
                name: Move Threshold
                mode: lines
                line:
                  shape: spline
                  width: 2
                  color: purple
                x:
                  - 0
                  - 1
                  - 2
                  - 3
                  - 4
                  - 5
                  - 6
                  - 7
                  - 8
                'y':
                  - >-
                    $ex
                    hass.states["number.motion_sensor_g0_move_threshold"].state
                  - >-
                    $ex
                    hass.states["number.motion_sensor_g1_move_threshold"].state
                  - >-
                    $ex
                    hass.states["number.motion_sensor_g2_move_threshold"].state
                  - >-
                    $ex
                    hass.states["number.motion_sensor_g3_move_threshold"].state
                  - >-
                    $ex
                    hass.states["number.motion_sensor_g4_move_threshold"].state
                  - >-
                    $ex
                    hass.states["number.motion_sensor_g5_move_threshold"].state
                  - >-
                    $ex
                    hass.states["number.motion_sensor_g6_move_threshold"].state
                  - >-
                    $ex
                    hass.states["number.motion_sensor_g7_move_threshold"].state
                  - >-
                    $ex
                    hass.states["number.motion_sensor_g8_move_threshold"].state
              - entity: ''
                name: Move Energy
                mode: lines
                line:
                  shape: spline
                  width: 2
                  color: blue
                x:
                  - 0
                  - 1
                  - 2
                  - 3
                  - 4
                  - 5
                  - 6
                  - 7
                  - 8
                'y':
                  - $ex hass.states["sensor.motion_sensor_g0_move_energy"].state
                  - $ex hass.states["sensor.motion_sensor_g1_move_energy"].state
                  - $ex hass.states["sensor.motion_sensor_g2_move_energy"].state
                  - $ex hass.states["sensor.motion_sensor_g3_move_energy"].state
                  - $ex hass.states["sensor.motion_sensor_g4_move_energy"].state
                  - $ex hass.states["sensor.motion_sensor_g5_move_energy"].state
                  - $ex hass.states["sensor.motion_sensor_g6_move_energy"].state
                  - $ex hass.states["sensor.motion_sensor_g7_move_energy"].state
                  - $ex hass.states["sensor.motion_sensor_g8_move_energy"].state
              - entity: ''
                name: Still Threshold
                mode: lines
                line:
                  shape: spline
                  width: 2
                  color: green
                x:
                  - 0
                  - 1
                  - 2
                  - 3
                  - 4
                  - 5
                  - 6
                  - 7
                  - 8
                'y':
                  - >-
                    $ex
                    hass.states["number.motion_sensor_g0_still_threshold"].state
                  - >-
                    $ex
                    hass.states["number.motion_sensor_g1_still_threshold"].state
                  - >-
                    $ex
                    hass.states["number.motion_sensor_g2_still_threshold"].state
                  - >-
                    $ex
                    hass.states["number.motion_sensor_g3_still_threshold"].state
                  - >-
                    $ex
                    hass.states["number.motion_sensor_g4_still_threshold"].state
                  - >-
                    $ex
                    hass.states["number.motion_sensor_g5_still_threshold"].state
                  - >-
                    $ex
                    hass.states["number.motion_sensor_g6_still_threshold"].state
                  - >-
                    $ex
                    hass.states["number.motion_sensor_g7_still_threshold"].state
                  - >-
                    $ex
                    hass.states["number.motion_sensor_g8_still_threshold"].state
              - entity: ''
                name: Still Energy
                mode: lines
                line:
                  shape: spline
                  width: 2
                  color: yellow
                x:
                  - 0
                  - 1
                  - 2
                  - 3
                  - 4
                  - 5
                  - 6
                  - 7
                  - 8
                'y':
                  - >-
                    $ex
                    hass.states["sensor.motion_sensor_g0_still_energy"].state
                  - >-
                    $ex
                    hass.states["sensor.motion_sensor_g1_still_energy"].state
                  - >-
                    $ex
                    hass.states["sensor.motion_sensor_g2_still_energy"].state
                  - >-
                    $ex
                    hass.states["sensor.motion_sensor_g3_still_energy"].state
                  - >-
                    $ex
                    hass.states["sensor.motion_sensor_g4_still_energy"].state
                  - >-
                    $ex
                    hass.states["sensor.motion_sensor_g5_still_energy"].state
                  - >-
                    $ex
                    hass.states["sensor.motion_sensor_g6_still_energy"].state
                  - >-
                    $ex
                    hass.states["sensor.motion_sensor_g7_still_energy"].state
                  - >-
                    $ex
                    hass.states["sensor.motion_sensor_g8_still_energy"].state
            raw_plotly_config: true
            layout_options:
              grid_columns: 48
              grid_rows: auto
          - features:
              - type: numeric-input
                style: buttons
            type: tile
            entity: number.motion_sensor_g0_still_threshold
            features_position: bottom
            vertical: true
            grid_options:
              columns: 4
              rows: 3
            show_entity_picture: false
            hide_state: true
            name: 0 Still
          - features:
              - type: numeric-input
                style: buttons
            type: tile
            entity: number.motion_sensor_g1_still_threshold
            features_position: bottom
            vertical: true
            name: 1 Still
            hide_state: true
            grid_options:
              columns: 4
              rows: 3
          - features:
              - type: numeric-input
                style: buttons
            type: tile
            entity: number.motion_sensor_g2_still_threshold
            features_position: bottom
            vertical: true
            name: 2 Still
            hide_state: true
            grid_options:
              columns: 4
              rows: 2
          - features:
              - type: numeric-input
                style: buttons
            type: tile
            entity: number.motion_sensor_g3_still_threshold
            features_position: bottom
            vertical: true
            name: 3 Still
            hide_state: true
            grid_options:
              columns: 4
              rows: 2
          - features:
              - type: numeric-input
                style: buttons
            type: tile
            entity: number.motion_sensor_g4_still_threshold
            features_position: bottom
            vertical: true
            name: 4 Still
            hide_state: true
            grid_options:
              columns: 4
              rows: 2
          - features:
              - type: numeric-input
                style: buttons
            type: tile
            entity: number.motion_sensor_g5_still_threshold
            features_position: bottom
            vertical: true
            name: 5 Still
            hide_state: true
            grid_options:
              columns: 4
              rows: 2
          - features:
              - type: numeric-input
                style: buttons
            type: tile
            entity: number.motion_sensor_g6_still_threshold
            features_position: bottom
            vertical: true
            name: 6 Still
            hide_state: true
            grid_options:
              columns: 4
              rows: 2
          - features:
              - type: numeric-input
                style: buttons
            type: tile
            entity: number.motion_sensor_g7_still_threshold
            features_position: bottom
            vertical: true
            name: 7 Still
            hide_state: true
            grid_options:
              columns: 4
              rows: 2
          - features:
              - type: numeric-input
                style: buttons
            type: tile
            entity: number.motion_sensor_g8_still_threshold
            features_position: bottom
            vertical: true
            name: 8 Still
            hide_state: true
            grid_options:
              columns: 4
              rows: 2
          - features:
              - type: toggle
            type: tile
            entity: switch.motion_sensor_engineering_mode
            features_position: bottom
            vertical: true
            grid_options:
              columns: 3
              rows: 3
            name: Engineering mode
            hide_state: true
        column_span: 4
    badges:
      - type: entity
        show_name: false
        show_state: true
        show_icon: true
        entity: binary_sensor.motion_sensor_presence
      - type: entity
        show_name: false
        show_state: true
        show_icon: true
        entity: sensor.motion_sensor_still_distance
      - type: entity
        show_name: false
        show_state: true
        show_icon: true
        entity: sensor.motion_sensor_still_energy
      - type: entity
        show_name: false
        show_state: true
        show_icon: true
        entity: binary_sensor.motion_sensor_still_target
    header:
      card:
        type: markdown
        text_only: true
        content: '# Woonkamer'
title: Beweging

You might be interested in this dashboard setup.

I’ve also had issues with presence clearing when the energy value for a particular gate is still over the set threshold, though, as per LD2410 Still Target reporting as Clear even though ≥ 1 gate has energy over threshold

Thank you @Edwin_D, they are both set to max (8), visible in my first screenshot.

Off the shelf: Use the graphic tool to visualise thresholds while moving through the room.

Yes, I’ve used the app, it’s OK, TBH the HA cards are better though.

DIY: You can also turn on engineering mode and build a similar dashboard for yourself. The below one relies on plotly graph custom card.

I have not more or less in my screenshots, it’s not as nice without graphs but I can still see that 2x of the gate thresholds are exceeded and yet presence is still not detected.

You might be interested in this dashboard setup.

That is very cool but I’m not having trouble visualising the problem, I think it’s clear that 2x of the gate thresholds are exceeded and yet presence is still not detected.

I’ve also had issues with presence clearing when the energy value for a particular gate is still over the set threshold, though, as per LD2410 Still Target reporting as Clear even though ≥ 1 gate has energy over threshold

Ahh so you have the same problem as me!

1 Like

I’ve adjusted all the gates and still presence is clear even though the gates are over the thresholds. No idea at this point.

I’ve had the same issue. I think that once still presence has cleared, moving presence has to be triggered to retrigger still presence.

You might want to try adjusting moving gate thresholds, though in my case I wasn’t able to get it perfect at longer distances and ended up adding another sensor to the room.

1 Like