Hoy vamos a añadir un básico a nuestro sistema domótico e integrar sensores de presencia en HA para generar auomatizaciones.
Índice
¿Qué son y para qué sirven?
Como su propio nombre indica, los sensores de presencia tienen la capacidad de detectar si una zona está o no ocupada. Ojo, no los confundas con los sensores de movimiento. Esto últimos detectan movimiento a su alrededor y pueden ser útiles para generar una automatización (por ejemplo, encende la luz de un pasillo o una escalera). Sin embargo, se quedan cortos cuando no se producen movimientos llamativos aunque la estancia esté ocupada (por ejemplo, mientras ves tranquilamente una película o duermes).
Aquí es donde integrar sensores de presencia en HA aporta un «plus», ya que utilizan sensores más sensibles (como infrarrojos avanzados, ultrasonidos o microondas) que les permite captar señales sutiles como la respiración o el calor corporal. Como siempre, las aplicaciones dependen de tu imaginación, pero algunos usos comunes son:
- Mantener las luces encendidas mientras estás en el baño, aunque no haya movimiento.
- Regular la temperatura e iluminación de una estancia cuando está ocupada (por ejemplo, en el estudio en que trabajas).
- Todos los usos de un sensor de movimiento clásico (automatizaciones, seguridad, eficiencia energética…).
Sonoff SNZB-06P
Si quieres integrar sensores de presencia en HA buenos, bonitos y baratos, el Sonoff SNZB-06P es buena opción. Se trata de un sensor zigbee, alimentado por un USB-C que funciona con ondas milimétricas.
Además, el SNZB-06P tiene tres niveles de sensibilidad y un alcance de detección de hasta 4 metros. También ofrece múltiples opciones de instalación, como fijación magnética, adhesivo 3M o tornillos, permitiéndote colocarlo en cualquier lugar donde lo necesites.
🎁 En su página web, con el código 'AGUACATECSONOFF' obtendrás un descuento del 10%!!


Para vincularlo con Zigbee2MQTT basta con alimentarlo en el modo «Permitir unirse» para que se vincule automáticamente. Una vez integrado, búscalo en Configuración > Dispositivos y servicios > Integraciones > MQTT > Dispositivos. Desde aquí podrás administrar las opciones que ofrece, que en este momento son:
- Occupancy sensitivity. En este desplegable puedes seleccionar el nivel de sensibilidad en la detección (alto, medio o bajo).
- Occupancy timeout. Indica en este campo el número de segundos que deben pasar sin detectar presencia para considerar que no hay nadie (el mínimo es 15 segundos).
⚠️ Si observas que tu sensor se queda "atascado" y siempre detecta presencia, prueba a configurar el nivel de sensibilidad en "Bajo". Verifica también que se generan falsos positivos como consecuencia de la interferencia con otros elementos (aire acondicionado, ventiladores, mascotas, etc.)
Sensor LD2410C
Si por lo contrario eres de los que les gusta construir tus propios dispositivos, el sensor de presencia LD2410C es una magnífica opción para integrar sensores de presencia en HA, ya que es muy barato y pequeño.
Requisitos previos
Para integrar sensores de presencia en HA usando el LD2410C previamente necesitas:
- Un sensor LD2410C.
- Una placa ESP32. En mi caso voy a utilizar una ESP32 S3 N16R8 de las que he usado anteriormente para crear asistentes locales. Puede parecerte algo desproporcionado (con razón), pero quiero aprovechar toda su potencia y número de pines para crear un dispositivo multisensor. Otra buena opción, si quieres un dispositivo compacto, es utilizar una ESP32 C3 Super Mini.
- Un cable USB-C para alimentar la placa de DATOS (con un cable de carga no vas a poder instalar el software).
- Haber instalado ESPHome en Home Assistant.




🥑 Si estás empezando con ESPHome, te recomiendo que veas el taller de la academia para sacarle el máximo partido!
Conexión del sensor
El primer paso es conectar el sensor a nuestra placa ESP32. Como siempre lo primero que te recomiendo es que consultes el ‘pinout’ (o distribución de pines) de la placa. En mi caso voy a utilizar una placa ESP32 S3 N16R8 y este es su ‘pinout’.

⚠️ En la placa tendrás que aplicar una pequeña soldadura para unir el circuito indicados como ‘IN-OUT‘ (para habilitar la salida de 5V). Si te fijas de cerca, tiene una pequeña endidura que impide el contacto del circuito. Te he marcado la situación con un círculo rojo en la imagen anterior del ‘pinout’. Si no ves el puente, es que ya viene hecho internamente.
Por otro lado, el sensor tiene el siguiente aspecto, que nos lleva al siguiente esquema de conexión.
- VCC irá conectado al pin de alimentación 5v de la placa.
- GND irá conectado al pin GND (‘ground’ o tierra) de la placa.
- RX irá conectado al GPIO18 de la placa.
- TX irá conectado al GPIO17 de la placa.
- No realizaremos ninguna conexión al pin OUT.
⚠️ Habitualmente el pin RX del sensor va conectado al pin TX de la placa, y viceversa (conexión cruzada). No obstante, si tu sensor no te da valores prueba a cambiarlos (TX con TX, RX con RX).

Cuando termines de realizar las conexiones, te quedará algo así.

Configuración de ESPHome
Ahora tenemos que ‘flashear’ la placa con ESPHome y la configuración correspondiente, que vamos a extraer directamente de la documentación ESPHome sobre el componente LD2410. Para ello sigue estos pasos:
- Conecta la placa a tu ordenador a través del puerto USB-C.
- En Home Assistant, accede al complemento de ESPHome desde el menú lateral y pulsa en “New device”. Pulsa en “Continue” y dale un nombre (por ejemplo, “Sensor de presencia”).
- Pulsa en “Next” y a continuación selecciona la opción “ESP32-S3” como tipo de dispositivo. Verás que en el fondo se ha creado un nuevo dispositivo.
- Pulsa en “Skip” y haz clic en el enlace “Edit” del bloque correspondiente al dispositivo que acabas de crear.
- Añade las siguientes líneas al final del código (y adapta los pines de la placa si no has usado los mismos que yo).
captive_portal: uart: id: ld2410_uart tx_pin: GPIO18 rx_pin: GPIO17 baud_rate: 256000 parity: NONE stop_bits: 1 ld2410: 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 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 switch: - platform: ld2410 engineering_mode: name: "engineering mode" bluetooth: name: "control bluetooth" 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 button: - platform: ld2410 factory_reset: name: "factory reset" restart: name: "restart" query_params: name: query params 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
- Cuando hayas terminado de editar el código pulsa en “Save” e “Install”. Selecciona la opción “Manual download” y espera a que el código se compile.
- Cuando termine, selecciona la opción “Modern format” para descargar el fichero ‘.bin’ correspondiente.
- Ahora ve a la página de ESPHome y pulsa en “Connect”. En la ventana emergente selecciona tu placa y pulsa en “Conectar”.
- Ahora pulsa en “Install” y selecciona el fichero ‘.bin’ obtenido en el paso 7. De nuevo, pulsa en “Install”.
- Vuelve a Home Assistant y ve a Configuración > Dispositivos y servicios. Lo normal es que tu dispositivo haya sido descubierto y aparezca en la parte superior, esperando únicamente a que pulses el botón de “Configurar”. De lo contrario pulsa en el botón de “Añadir integración”, busca “ESPHome” e introduce la IP de tu placa en el campo ‘Host’. Como siempre, te recomiendo que asignes una IP fija en tu router para evitar fallos en el futuro si esta cambia.
Calibración del sensor
Una vez integrado el sensor vamos a calibrarlo para que funcione lo mejor posible. Ten en cuenta que la calibración es única para cada sensor y habitación, por lo que para llevarla a cabo tienes que colocarla en su ubicación final (y repetir el proceso por cada sensor/estancia).
Hecho esto, en Home Assistant ve a Configuración > Dispositivos y servicios > Integraciones > ESPHome > Dispositivos y pulsa sobre tu sensor. Como verás, tienes un montón de entidades y controles a tu disposición, por lo que voy a intentar explicarlo de la forma más sencilla posible.
Antes de nada, ten en cuenta que el sensor detecta energía de movimiento, entendido como el concepto tradicional (que verás bajo la entidad «Move Energy»), y energía de presencia (tu respiración, movimientos leves, etc), que permite al sensor detectarte aunque no te muevas (bajo la entidad «Still Energy»).

El sensor LD2410C funciona por rangos (o «gates»), que representan zonas concéntricas desde el sensor hasta su límite de alcance, y puedes ajustar la sensibilidad de detección para cada uno de los rangos. Configurar distintos rangos sirve para tener distintas áreas de sensibilidad y cada rango o «gate» se incrementa respecto al anterior en una distancia aproximada de 0,75m (el Gate 0 cubre de 0 a 0.75m, el Gate 1 de 0.75m – 1.5m, y así sucesivamente).
💡 Por ejemplo, imagínate que tienes el sensor en tu mesilla de noche. Cabría esperar que en un rango corto (hasta 1 metro) te interese aumentar la sensibilidad de la energía de presencia ("Still energy") para que te detecte mientras duermes, así como la sensibilidad de la energía de movimiento ("Move energy") en un rango medio (1 a 3 metros) para que detecte cuando entras a la habitación.
Por contra, te puede interesar reducir la sensibilidad en rangos más amplios (más de 3 metros) para que no genere falsos positivos al pasar por el pasillo.
Si vuelves a Configuración > Dispositivos y servicios > Integraciones > ESPHome > Dispositivos y pulsas sobre tu sensor, encontrarás que te aparecen en el apartado «Diagnóstico» con estado desconocido. Para visualizar sus valores (y poder calibrarlo) tienes que activar la opción «engineering mode» en el apartado de «Configuración» (puedes desactivarlo una vez calibrado).

Ahora ya puedes ver el valor que toma tanto la energía de movimiento como la energía de presencia. Como puedes observar, el sensor cuenta con 8 rangos predefinidos, pero puedes elegir hasta cuál quieres considerar para detectar presencia.
Por ejemplo, puedes limitar la detección de energía de presencia a los 2 primeros «gates» (1,5m) y la energía de movimiento a 4 «gates» (3m). Esto se hace a través de las siguientes entidades que aparecen bajo el bloque de configuración.

Además, puedes ajustar la sensiblidad para cada tipo de energía y rango para evitar falsos positivos. Por ejemplo, imagínate que quieres evitar que el sensor detecte presencia si una cortina se mueve levemente con la brisa. Esto se hace ajustando los umbrales o «threshold» de cada rango, desde las entidades correspondientes en el bloque de «Configuración».

Por último, también puedes ajustar el «timeout» o tiempo que debe pasar sin detectar movimiento o presencia para que el sensor considere que la estancia no está ocupada.

Agradecimientos
Para elaborar esta entrada nos hemos apoyado en este video de nuestro amigo Jonatan Castro, en el que lo explica muy bien. Échale un ojo! 😄