From d85fb496ab14cb128265dbeac602fa83149ce918 Mon Sep 17 00:00:00 2001 From: Regev Brody Date: Wed, 16 Aug 2023 02:31:39 +0300 Subject: [PATCH] Modify documentation for ld2410 (#2680) Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com> --- components/binary_sensor/gpio.rst | 2 + components/sensor/bh1750.rst | 2 + components/sensor/images/ld2410-card.png | Bin 0 -> 64027 bytes components/sensor/ld2410.rst | 734 ++++++++++++++++++++--- 4 files changed, 640 insertions(+), 98 deletions(-) create mode 100644 components/sensor/images/ld2410-card.png diff --git a/components/binary_sensor/gpio.rst b/components/binary_sensor/gpio.rst index 96bbca3be..65aefcb12 100644 --- a/components/binary_sensor/gpio.rst +++ b/components/binary_sensor/gpio.rst @@ -1,3 +1,5 @@ +.. _gpio-binary-sensor: + GPIO Binary Sensor ================== diff --git a/components/sensor/bh1750.rst b/components/sensor/bh1750.rst index 3c5326afc..b571bef6e 100644 --- a/components/sensor/bh1750.rst +++ b/components/sensor/bh1750.rst @@ -1,3 +1,5 @@ +.. _BH1750: + BH1750 Ambient Light Sensor =========================== diff --git a/components/sensor/images/ld2410-card.png b/components/sensor/images/ld2410-card.png new file mode 100644 index 0000000000000000000000000000000000000000..c5a6b1d3e4447b38a0184a2a01de8c9284897cfe GIT binary patch literal 64027 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 UUVI2R|Mq~+ZGDXrb*te20kH(n761SM literal 0 HcmV?d00001 diff --git a/components/sensor/ld2410.rst b/components/sensor/ld2410.rst index 8dbcc3652..0a032b55e 100644 --- a/components/sensor/ld2410.rst +++ b/components/sensor/ld2410.rst @@ -11,8 +11,8 @@ Component/Hub The ``ld2410`` sensor platform allows you to use HI-LINK LD2410 motion and presence sensor (`datasheet and user manual `__) with ESPHome. -The :ref:`UART ` is required to be set up in your configuration for this sensor to work. +The :ref:`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. .. figure:: images/ld2410.jpg @@ -24,59 +24,265 @@ Use of hardware UART pins is highly recommended, in order to support the out-of- .. code-block:: yaml # Example configuration entry - uart: - tx_pin: REPLACEME - rx_pin: REPLACEME - baud_rate: 256000 - parity: NONE - stop_bits: 1 - ld2410: - timeout: 150s - max_move_distance : 6m - max_still_distance: 0.75m - g0_move_threshold: 10 - g0_still_threshold: 20 - g1_move_threshold: 10 - g1_still_threshold: 20 - g2_move_threshold: 20 - g2_still_threshold: 21 - g3_move_threshold: 30 - g3_still_threshold: 31 - g4_move_threshold: 40 - g4_still_threshold: 41 - g5_move_threshold: 50 - g5_still_threshold: 51 - g6_move_threshold: 60 - g6_still_threshold: 61 - g7_move_threshold: 70 - g7_still_threshold: 71 - g8_move_threshold: 80 - g8_still_threshold: 81 - - -.. note:: - - For UART configuration, ``baud_rate``, ``parity`` and ``stop_bits`` **must be** respectively ``256000``, ``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. Configuration variables: ************************ -The configuration is made up of three parts: The central component, individual sensors, -and binary sensors. +- **uart_id** (*Optional*, :ref:`config-id`): Manually specify the ID of the :ref:`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*, :ref:`config-id`): Manually specify the ID for this :doc:`ld2410` component if you need multiple components. + +Binary Sensor +------------- + +The ``ld2410`` binary sensor allows you to use your :doc:`ld2410` to perform different +measurements. + +.. code-block:: yaml + + 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 :ref:`Binary Sensor `. +- **has_moving_target** (*Optional*): If true a moving target is detected. + All options from :ref:`Binary Sensor `. +- **has_still_target** (*Optional*): If true a still target is detected. + All options from :ref:`Binary Sensor `. +- **out_pin_presence_status** (*Optional*): When in :ref:`engineering mode`, indicates whether the OUT pin indicates presence or not, otherwise ``false``. + OUT pin indication depends on the :ref:`light function` configuration. Might need latest firmware to work. + All options from :ref:`Binary Sensor `. +- **ld2410_id** (*Optional*, :ref:`config-id`): Manually specify the ID for the :doc:`ld2410` component if you are using multiple components. + +Sensor +------ + +The ``ld2410`` sensor allows you to use your :doc:`ld2410` to perform different +measurements. + +.. code-block:: yaml + + 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 + +.. _ld2410-sensors: + +Configuration variables: +************************ + +- **light** (*Optional*, int): When in :ref:`engineering mode`, indicates the light sensitivity, otherwise ``unknown``. + Value between ``0`` and ``255`` inclusive. Though it seems that the value ``85`` is the lowest value at complete darkness. + All options from :ref:`Sensor `. +- **moving_distance** (*Optional*, int): Distance in cm of detected moving target. + All options from :ref:`Sensor `. +- **still_distance** (*Optional*, int): Distance in cm of detected still target. + All options from :ref:`Sensor `. +- **moving_energy** (*Optional*, int): Energy for moving target. + Value between ``0`` and ``100`` inclusive. + All options from :ref:`Sensor `. +- **still_energy** (*Optional*, int): Energy for still target. + Value between ``0`` and ``100`` inclusive. + All options from :ref:`Sensor `. +- **detection_distance** (*Optional*, int): Distance in cm of target. + All options from :ref:`Sensor `. +- **gX** (*Optional*): Energies for the Xth gate (X => 0 to 8). + - **move_energy** (*Optional*, int): When in :ref:`engineering mode`, the move energy of the gate, otherwise ``unknown``. + Value between ``0`` and ``100`` inclusive. + All options from :ref:`Sensor `. + - **still_energy** (*Optional*, int): When in :ref:`engineering mode`, the still energy of the gate, otherwise ``unknown``. + Value between ``0`` and ``100`` inclusive. + All options from :ref:`Sensor `. +- **ld2410_id** (*Optional*, :ref:`config-id`): Manually specify the ID for the :doc:`ld2410` component if you are using multiple components. + +Switch +------ + +The ``ld2410`` switch allows you to control your :doc:`ld2410`. + +.. code-block:: yaml + + switch: + - platform: ld2410 + engineering_mode: + name: "engineering mode" + bluetooth: + name: "control bluetooth" + +.. _ld2410-engineering-mode: + +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 :ref:`Switch `. +- **bluetooth** (*Optional*): Turn on/off the bluetooth adapter. Defaults to ``true``. + All options from :ref:`Switch `. +- **ld2410_id** (*Optional*, :ref:`config-id`): Manually specify the ID for the :doc:`ld2410` component if you are using multiple components. + + +.. _ld2410-number: + +Number +------ + +The ``ld2410`` number allows you to control the configuration of your :doc:`ld2410`. + +.. code-block:: yaml + + 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 + +.. _ld2410-light-threshold: + +Configuration variables: +************************ - **timeout** (*Optional*, int): Time in seconds during which presence state will stay present - after leaving. Defaults to ``5s``. -- **max_move_distance** (*Optional*, int): Maximum distance for movement detection. - Value between ``0.75m`` and ``6m`` inclusive. Defaults to ``4.5m``. -- **max_still_distance** (*Optional*, int): Maximum distance for still detection. - Value between ``0.75m`` and ``6m`` inclusive. Defaults to ``4.5m``. -- **gX_move_threshold** (*Optional*, int): Threshold for the Xth gate for motion detection (X => 0 to 8). - Above this level for the considered gate (distance), movement detection will be triggered. Defaults to ``see table below``. -- **gX_still_threshold** (*Optional*, int): Threshold for the Xth gate for still detection. (X => 0 to 8). - Above this level for the considered gate (distance), still detection will be triggered. Defaults to ``see table below``. + after leaving. Defaults to ``5s`` + All options from :ref:`Number `. +- **light_threshold** (*Optional*, int): Sets the light threshold for the :ref:`light function`. + Value between ``0`` and ``255`` inclusive. Defaults to ``128``. + All options from :ref:`Number `. +- **max_move_distance_gate** (*Optional*, int): Maximum distance gate for movement detection. + Value between ``2`` and ``8`` inclusive. Defaults to ``8``. + All options from :ref:`Number `. +- **max_still_distance_gate** (*Optional*, int): Maximum distance gate for still detection. + Value between ``2`` and ``8`` inclusive. Defaults to ``8``. + All options from :ref:`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`` and ``100`` inclusive. See default values below. + All options from :ref:`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`` and ``100`` inclusive. See default values below. + All options from :ref:`Number `. +- **ld2410_id** (*Optional*, :ref:`config-id`): Manually specify the ID for the :doc:`ld2410` component if you are using multiple components. .. list-table:: Default values for gate threshold :widths: 25 25 25 @@ -95,86 +301,418 @@ and binary sensors. - 40 - 40 * - 3 - - 40 + - 30 - 40 * - 4 - - 40 - - 40 + - 20 + - 30 * - 5 - - 40 - - 40 + - 15 + - 30 * - 6 - - 30 - 15 + - 20 * - 7 - - 30 - 15 + - 20 * - 8 - - 30 - 15 + - 20 -Sensor +Button ------ -The ``ld2410`` sensor allows you to use your :doc:`ld2410` to perform different -measurements. +The ``ld2410`` button allows you to perfrom actions on your :doc:`ld2410`. .. code-block:: yaml - sensor: + button: - platform: ld2410 - 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 + factory_reset: + name: "factory reset" + restart: + name: "restart" + query_params: + name: query params Configuration variables: ************************ -- **moving_distance** (*Optional*): Distance of detected moving target. - All options from :ref:`Sensor `. -- **still_distance** (*Optional*): Distance of detected still target. - All options from :ref:`Sensor `. -- **moving_energy** (*Optional*): Energy for moving target. - All options from :ref:`Sensor `. -- **still_energy** (*Optional*): Energy for still target. - All options from :ref:`Sensor `. -- **detection_distance** (*Optional*): Distance in cm of target. - All options from :ref:`Sensor `. +- **factory_reset** (*Optional*): This command is used to restore all configuration values to their original values. + All options from :ref:`Button `. +- **restart** (*Optional*): Restart the device. + All options from :ref:`Button `. +- **query_params** (*Optional*): Refresh all sensors values of the device. + All options from :ref:`Button `. +- **ld2410_id** (*Optional*, :ref:`config-id`): Manually specify the ID for the :doc:`ld2410` component if you are using multiple components. -Binary Sensor -------------- +Text Sensor +----------- -The ``ld2410`` binary sensor allows you to use your :doc:`ld2410` to perform different -measurements. +The ``ld2410`` text sensor allows you get information about your :doc:`ld2410`. + +.. code-block:: yaml + + text_sensor: + - platform: ld2410 + version: + name: "firmware version" + mac_address: + name: "mac address" + +Configuration variables: +************************ + +- **version** (*Optional*): The firmware version. + All options from :ref:`Text Sensor `. +- **mac_address** (*Optional*): The bluetooth mac address. Will be set to ``unknown`` when bluetooth is off. + All options from :ref:`Text Sensor `. +- **ld2410_id** (*Optional*, :ref:`config-id`): Manually specify the ID for the :doc:`ld2410` component if you are using multiple components. + +Select +----------- + +The ``ld2410`` select allows you control your :doc:`ld2410`. + +.. code-block:: yaml + + 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 + +.. _ld2410-light-function: + +Configuration variables: +************************ + +- **distance_resolution** (*Optional*): Control the gates distance resolution. Can be ``0.75m`` or ``0.2m``. Defaults to ``0.75m``. + All options from :ref:`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 :ref:`UART Component ` configuration. + All options from :ref:`Select `. +- **light_function** (*Optional*): If set, will affect the OUT pin value, based on :ref:`light threshold`. Can be ``off``, ``low`` or ``above``. Defaults to ``off``. + All options from :ref:`Select `. +- **out_pin_level** (*Optional*): Control OUT pin ``away`` value. Can be ``low`` or ``high``. Defaults to ``low``. + All options from :ref:`Select `. +- **ld2410_id** (*Optional*, :ref:`config-id`): Manually specify the ID for the :doc:`ld2410` component if you are using multiple components. + +Automations +----------- + +``bluetooth_password.set`` Action +********************************* + +This is an :ref:`Action ` for setting the bluetooth password. + +.. code-block:: yaml + + - bluetooth_password.set: + id: my_ld2410 + password: "HiLink" + +Configuration variables: + +- **id** (**Required**, :ref:`config-id`): The ID of the :doc:`ld2410` component to set. +- **password** (**Required**, string, :ref:`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: + +.. code-block:: yaml + + ld2410: + id: my_ld2410 + + api: + services: + - service: 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 :ref:`light function` taken +under account, you can set up a :ref:`GPIO Binary Sensor `: .. code-block:: yaml binary_sensor: - - platform: ld2410 - has_target: - name: Presence - has_moving_target: - name: Moving Target - has_still_target: - name: Still Target + - platform: gpio + pin: REPLACEME + name: gpio out pin presence + device_class: presence -Configuration variables: -************************ -- **has_target** (*Optional*): If true target detect either still or in movement. - All options from :ref:`Binary Sensor `. -- **has_moving_target** (*Optional*): If true a moving target is detected. - All options from :ref:`Binary Sensor `. -- **has_still_target** (*Optional*): If true a still target is detected. - All options from :ref:`Binary Sensor `. +Calibration Process +------------------- +In order to calibrate your ``ld2410`` sensor perform the following: + +1. Enable :ref:`engineering mode`. +2. Monitor the ``gX_move_energy`` and ``gX_still_energy`` :ref:`sensors`. +3. Change the :ref:`thresholds` and repeat step 2 until satisfaction. +4. Disable :ref:`engineering mode`. + +Home Assistant Card +******************* + +For easy calibration process you can use the following custom manual card. + +.. code-block:: yaml + + 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_distance_detection_cm' + name: distance + - type: entity + entity: 'sensor.DEVICE_moving_distance_cm' + name: move + - type: entity + entity: 'sensor.DEVICE_still_distance_cm' + 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' + name: gpio presence + state_color: true + - type: entity + entity: 'binary_sensor.DEVICE_presence' + name: presence + state_color: true + - type: entity + entity: 'binary_sensor.DEVICE_movement' + name: movement + state_color: true + - type: entity + entity: 'binary_sensor.DEVICE_still' + 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: + +.. figure:: images/ld2410-card.png + :align: center See Also --------