Control de iluminación inteligente con el detector de presencia Senvolon KL MZ: luz solo cuando realmente se necesita
Las automatizaciones de iluminación programadas por hora tienen muy a menudo un problema fundamental: ignoran la realidad. En una tarde nublada de noviembre, la habitación suele estar ya oscura, mientras que en una tarde soleada de verano a las 21:00 todavía no se necesita luz artificial.
La contramedida obvia, usar la puesta de sol como disparador en lugar de una hora fija, solo desplaza el problema. Aunque la hora de la puesta de sol varía con la estación y por eso parece dinámica, en el fondo sigue siendo un reloj calculado. No sabe nada de una capa de nubes densa, de la orientación norte de la habitación o de las persianas bajadas. Se limita a estimar la luminosidad en lugar de medirla realmente.
El control solo se adapta realmente a la necesidad cuando evalúa la luz que llega de verdad a su habitación y la combina con una segunda pregunta: ¿está usted presente?
Esto es exactamente lo que permite el sensor de luminosidad integrado del detector de presencia KL MZ: de forma local, sin nube y con integración directa en Home Assistant.
Requisitos previos
Se necesitan los siguientes componentes:
- El detector de presencia KL MZ se integra fácilmente en su WiFi y permite el acceso directo a través del navegador web.
- Home Assistant (versión 2024.1 o posterior; se recomienda como HA OS / Supervised).
- Broker MQTT Mosquitto: instalado e iniciado como complemento oficial de Home Assistant.
-
Una luz regulable y conmutable: cualquier lámpara compatible con HA (Zigbee, Z-Wave, WiFi). Importante: esta guía utiliza niveles de brillo (brightness_pct) y el modo de luz nocturna. Ambos requieren una luz regulable. Con un simple interruptor de encendido/apagado la automatización también funciona en principio, pero entonces se omiten los escalones de brillo y usted elimina las líneas de brightness_pct.
Guía paso a paso
Paso 1: configurar el broker MQTT Mosquitto
- En Home Assistant, vaya a Ajustes → Complementos → Tienda de complementos.
- Busque «Mosquitto broker», instale el complemento e inícielo.
- Active la opción «Iniciar al arrancar» para que el broker esté disponible también después de reiniciar HA.
- Home Assistant detecta automáticamente el broker local y ofrece la integración MQTT. Si no es así: Ajustes → Dispositivos y servicios → Añadir integración → «MQTT». Broker: localhost, puerto: 1883.
Consejo de seguridad: cree un usuario MQTT propio en el complemento de Mosquitto (o en los usuarios de HA), en lugar de utilizar conexiones anónimas o su cuenta principal. Así los accesos quedan claramente separados y una futura resolución de problemas resulta más sencilla.
Importante: ¿qué dirección de broker debe introducir en el sensor? El sensor es un dispositivo independiente en la red y siempre debe usar la dirección de red real de su host de HA (por ejemplo, 192.168.1.100), nunca localhost. Desde el punto de vista del sensor, localhost apuntaría al propio sensor, no a Home Assistant. Esto se aplica independientemente de si HA funciona como HAOS o en un contenedor Docker. Solo la comunicación interna de HA con el broker pasa por localhost. Esto afecta a la integración MQTT del paso 1, no a la configuración del sensor del paso 2.
Paso 2: conectar el Senvolon KL MZ con MQTT
- Abra la aplicación web del sensor en el navegador (por ejemplo, http://[IP del sensor]). Si su router admite resolución de nombres, también puede usar el nombre de host (por ejemplo, http://hostname.fritz.box).
- Vaya a los ajustes de Conexiones.
- Seleccione el tipo de conexión «Broker MQTT».
- Introduzca los siguientes valores:
- Servidor: dirección IP del host de HA (por ejemplo, 192.168.1.100), no localhost.
- Puerto: 1883.
- Usuario / contraseña: las credenciales MQTT del paso 1.
- Tema principal: define el tema (topic) bajo el que se publican los datos (por ejemplo, wohnzimmer_praesenz).
- IMPORTANTE: active sin falta el interruptor «Home Assistant» al final de la página. Solo cuando esté activo se habilita MQTT Discovery.
- Guarde los ajustes con «Guardar» para que surtan efecto.
Por qué el tema principal es tan importante: este nombre forma parte directamente de todos los topics MQTT (por ejemplo, tele/wohnzimmer_praesenz/STATE). Cambiarlo más adelante significa que hay que ajustar todas las automatizaciones. Así que piense bien el nombre desde el principio.
Comprobación de estado: puede verificar directamente en el menú de configuración del sensor si la conexión se ha establecido correctamente. Abajo a la izquierda se muestra el estado actual de la conexión. Si aparece «desconectado», no hay conexión con el broker y no se transmiten datos a Home Assistant.
Paso 3: verificar la detección automática (MQTT Discovery) en Home Assistant
Con la configuración MQTT correcta y el interruptor de HA activado, el detector de presencia es encontrado y configurado automáticamente por Home Assistant.
- Vaya a Ajustes → Dispositivos y servicios → MQTT → pestaña Dispositivos.
- El sensor Senvolon debería aparecer allí como dispositivo, con todas las entidades ya creadas.
- Verifique los ID de entidad relevantes para esta automatización en Herramientas de desarrollo → Estados:
- binary_sensor.wohnzimmer_praesenz_presence (presencia: activada/desactivada)
- sensor.wohnzimmer_praesenz_illuminance (valor de lux, numérico)
Paso 4: crear dos umbrales de lux como ayudantes ajustables
Creamos deliberadamente dos umbrales: uno para encender y otro más alto para apagar. El motivo es la llamada histéresis. Con un único umbral, la luz parpadearía cada segundo al atardecer en cuanto la luminosidad medida oscilase alrededor de ese valor. Más sobre esto en el recuadro más abajo.
Ambos valores los creamos como ayudantes numéricos. Así podrá reajustarlos más adelante cómodamente desde el panel, sin ningún cambio de código.
Vaya a Ajustes → Dispositivos y servicios → Ayudantes → Crear ayudante → Número y cree dos ayudantes. Mantenga los nombres de los ayudantes en alemán tal como aparecen: Home Assistant deriva de ellos los ID de entidad que usa el código.
Ayudante 1: umbral de encendido
- Nombre: Lux EIN-Schwelle Wohnzimmer
- Mínimo: 0 / Máximo: 1000
- Paso: 10
- Unidad: lx
- Valor predeterminado: 200
Ayudante 2: umbral de apagado
- Nombre: Lux AUS-Schwelle Wohnzimmer
- Mínimo: 0 / Máximo: 1000
- Paso: 10
- Unidad: lx
- Valor predeterminado: 400
¿Por qué dos umbrales en lugar de uno? Si ENCENDIDO y APAGADO tuvieran el mismo valor (por ejemplo, 200 lx), se produciría un bucle infinito: la luz se enciende → la propia lámpara eleva la luminosidad medida por encima de 200 lx → la luz se apaga de nuevo → la habitación queda oscura → la luz se enciende otra vez. Con una separación entre el encendido (por debajo de 200 lx) y el apagado (por encima de 400 lx) se evita este efecto.
Paso 5: crear la automatización «Luz ENCENDIDA»
Vaya a Ajustes → Automatizaciones → Crear automatización → Empezar con el editor e inserte el siguiente código YAML:
alias: "Salón: encender la luz con presencia y oscuridad"
description: >
Enciende la luz cuando el detector de presencia Senvolon detecta presencia Y
el valor de lux cae por debajo del umbral de encendido. En caso de oscuridad
absoluta se utiliza un modo de luz nocturna que cuida la vista.
triggers:
- trigger: state
entity_id: binary_sensor.wohnzimmer_praesenz_presence
to: "on"
id: presence_detected
- trigger: numeric_state
entity_id: sensor.wohnzimmer_praesenz_illuminance
below: input_number.lux_ein_schwelle_wohnzimmer
for:
minutes: 1
id: lux_dropped
# Antirrebote: las fluctuaciones breves de luminosidad se ignoran.
conditions:
- condition: state
entity_id: binary_sensor.wohnzimmer_praesenz_presence
state: "on"
- condition: numeric_state
entity_id: sensor.wohnzimmer_praesenz_illuminance
below: input_number.lux_ein_schwelle_wohnzimmer
- condition: state
entity_id: light.deckenlampe_tv
state: "off"
# Lógica:
# La luz solo se enciende si hay alguien presente, la habitación está lo bastante
# oscura y la luz está actualmente apagada.
actions:
- choose:
- conditions:
- condition: numeric_state
entity_id: sensor.wohnzimmer_praesenz_illuminance
below: 15
sequence:
- action: light.turn_on
target:
entity_id: light.deckenlampe_tv
data:
brightness_pct: 15
transition: 2
default:
- action: light.turn_on
target:
entity_id: light.deckenlampe_tv
data:
brightness_pct: 80
transition: 1
mode: single
La lógica detrás de esto: la luz solo se enciende si se cumplen ambas condiciones (hay presencia + la habitación está oscura), sin importar qué evento se produzca primero.
El modo «luz nocturna» sin horas fijas
La luz solo se enciende cuando está oscuro. Pero ¿qué brillo debería tener realmente? Si a las 03:00 de la madrugada se levanta a por un vaso de agua, un brillo del 80 % resulta como un foco de interrogatorio.
Como estamos construyendo un control de brillo inteligente, simplemente usamos el valor de lux del sensor Senvolon para distinguir entre «crepúsculo» y «noche profunda», sin ninguna hora fija. Eso es justo lo que hace el bloque choose anterior:
- Escenario A (atardecer / nublado): el valor de lux está por debajo del umbral de encendido (por ejemplo, 200 lx), pero todavía queda algo de luz residual. La luz se enciende al 80 %.
- Escenario B (oscuridad absoluta / noche): la habitación está completamente oscura (por debajo de 15 lx). El sistema reconoce la noche profunda y enciende la luz solo al 15 % para cuidar la vista.
Paso 6: crear la automatización «Luz APAGADA»
alias: "Salón: apagar la luz por ausencia o luz diurna suficiente"
description: >
Apaga la luz cuando ya no se detecta presencia O el valor de lux sube
por encima del umbral de apagado más alto.
triggers:
- trigger: state
entity_id: binary_sensor.wohnzimmer_praesenz_presence
to: "off"
id: no_presence
- trigger: numeric_state
entity_id: sensor.wohnzimmer_praesenz_illuminance
above: input_number.lux_aus_schwelle_wohnzimmer
for:
minutes: 2
id: lux_sufficient
# Margen: los picos breves de luminosidad no provocan el apagado.
conditions: []
actions:
- action: light.turn_off
target:
entity_id: light.deckenlampe_tv
mode: single
¿Por qué el umbral más alto y el for: 2min?
El apagado solo actúa cuando la luminosidad medida supera el umbral de apagado (por ejemplo, 400 lx), y únicamente si este estado se mantiene durante dos minutos. Así se evita que un pico breve de luminosidad o la propia lámpara apaguen la luz de forma abrupta. El apagado por ausencia (no_presence), en cambio, se produce de inmediato, ya que aquí no hay motivo para esperar.
Paso 7: crear una tarjeta de panel para reajustar
Para que el esfuerzo de los dos ayudantes también dé sus frutos, creamos una pequeña tarjeta de Lovelace. Muestra ambos umbrales para ajustarlos, además del valor de lux actual y el estado de presencia, lo cual es ideal para el ajuste fino posterior. Simplemente abra su panel, haga clic en Añadir tarjeta > Manual e inserte lo siguiente:
type: vertical-stack
cards:
- type: entities
title: Control de iluminación por valor de lux
entities:
- entity: input_number.lux_ein_schwelle_wohnzimmer
name: Umbral de encendido
- entity: input_number.lux_aus_schwelle_wohnzimmer
name: Umbral de apagado
- entity: sensor.wohnzimmer_praesenz_illuminance
name: Luminosidad actual
- entity: binary_sensor.wohnzimmer_praesenz_presence
name: Presencia
- type: entities
title: Luz
entities:
- entity: light.deckenlampe_tv
name: Lámpara de techo
Consejo de ajuste: observe durante un día qué valor de lux muestra la tarjeta cuando siente que la luz es realmente necesaria. Ese es su valor de encendido. Fije el umbral de apagado considerablemente más alto (regla general: el doble) para mantener suficiente margen.
¿Por qué el valor nocturno no es también un ayudante? Es una decisión deliberada. En esta guía trabaja con tres límites de lux: el umbral de encendido, el umbral de apagado y el límite nocturno (el below: 15 del bloque choose de la automatización de encendido, que alterna entre el 80 % y el 15 % de brillo). Los dos primeros los calibra de forma empírica durante varios días, por lo que están como ayudantes en el panel.
El límite nocturno («prácticamente oscuridad total»), en cambio, casi nunca se reajusta, por lo que, para simplificar, se mantiene fijo dentro de la automatización.
Como regla general: los valores que ajusta con regularidad, extráigalos a ayudantes. Los valores puramente estructurales, que nunca cambian, pueden quedarse directamente en el YAML. A estos pertenecen el límite nocturno o los tiempos de antirrebote (for: 1min y for: 2min). En teoría, también podría haber escrito los tres valores directamente en la automatización. Los ayudantes solo le compran comodidad de uso, sin tener que abrir el editor cada vez.
¿Quiere ajustar el valor nocturno con más frecuencia? Entonces cree simplemente un tercer ayudante siguiendo el mismo patrón y sustituya below: 15 por below: input_number.lux_nacht_schwelle_wohnzimmer.
Consejos y solución de problemas
La luminosidad no se puede calibrar mediante un offset: a diferencia de la temperatura, la humedad y la presión atmosférica, el sensor no ofrece un offset de corrección para la luminosidad. Si su sensor mide sistemáticamente demasiado claro o demasiado oscuro, no lo compense con un offset, sino directamente a través de los propios umbrales de lux. Precisamente para eso están los ayudantes en el panel.
La automatización de lux reacciona con lentitud: la presencia se notifica de inmediato, pero el valor de lux por MQTT se envía por defecto solo cada 5 minutos (intervalo de envío). Para el control de iluminación esto suele ser poco crítico, porque la luz diurna cambia de todos modos despacio. Si lo prefiere más reactivo, puede reducir el intervalo de envío en la configuración MQTT del sensor.
Falsas alarmas por objetos que interfieren: el sensor de radar puede detectar movimientos de ventiladores o aires acondicionados. Hay disponibles cuatro zonas para excluir interferencias. Además de la definición manual, también es posible la detección automática. Sin embargo, antes de activar «Establecer zonas de interferencia», asegúrese de que no haya absolutamente ninguna persona en el área de detección.
Optimizar el tiempo de retardo (DELAY): el tiempo de retardo determina durante cuánto tiempo se mantiene la presencia después de abandonar una zona. Gracias a la tecnología de radar FMCW de 60 GHz, que registra incluso los movimientos más pequeños como la respiración, también se detectan de forma fiable las personas completamente quietas o dormidas. Los tiempos de retardo extremadamente largos, como en los detectores infrarrojos clásicos, son innecesarios; valores entre 15 y 30 segundos suelen ser suficientes.
La luz parpadea o cambia constantemente: esto casi siempre es un problema de umbrales o de ubicación. Compruebe si los umbrales de encendido y apagado tienen suficiente separación y si la lámpara controlada ilumina directamente el sensor. En caso de duda, debería reubicar el sensor o aumentar la separación entre los umbrales.
El sensor no aparece en HA: compruebe si el interruptor «Home Assistant» en la aplicación web del sensor se ha activado y guardado. Eche un vistazo al menú de configuración del broker MQTT del sensor: si el estado abajo a la izquierda indica «desconectado», algo está bloqueando la comunicación. Compruebe además en el registro de Mosquitto si la conexión desde el sensor se estableció correctamente.
Conclusión
Con nuestro detector de presencia KL MZ y Home Assistant se obtiene un control de iluminación que actúa de forma realmente inteligente y dinámica. No ofrece luz artificial innecesaria durante el día, ni un apagado abrupto al estar sentado en silencio, sí una suave luz nocturna en la más completa oscuridad y, gracias a los dos umbrales, tampoco un parpadeo molesto al atardecer. Todo esto funciona 100 % de forma local.
Descubra más sobre nuestros detectores de presencia y sus funciones avanzadas, desde la vigilancia de estancias por zonas hasta el seguimiento de varias personas, directamente en nuestra página de producto.