Датчик присутствия человека отличается от обычного датчика движения тем, что «видит» и неподвижного человека: вы сидите за столом или читаете на диване — свет не гаснет. У нас дома пять таких датчиков в Home Assistant: два mmWave-радара, два комбинированных PIR + радар и ещё один mmWave. Ниже — чем отличаются типы, какие настройки мы выставили, две готовые автоматизации для включения света и монитора и четыре грабли с цифрами, которые в описаниях датчиков не пишут.

- Датчик присутствия или датчик движения
- Наши датчики присутствия
- Настройка датчика присутствия
- Грабля 1: зону обнаружения программно не сузить
- Грабля 2: проценты батареи врут на аккумуляторах
- Грабля 3: датчик «замерзает» без unavailable
- Грабля 4: радар на улице ловит ветки
- Датчик присутствия для включения света
- Монитор по присутствию — с защитой от зависшего датчика
- Что выбрать
Датчик присутствия или датчик движения
- PIR (инфракрасный датчик движения) реагирует на движение тёплого тела. Экономный, живёт на батарейках месяцами, но если человек замер — через какое-то время считает, что в комнате пусто.
- mmWave-радар (обычно 24 ГГц) замечает даже дыхание и мелкие движения, поэтому видит сидящего человека. Почти всегда питается от сети: радар работает непрерывно.
- PIR + радар — комбинированный: часть времени работает как PIR, часть — как радар. Выглядит компромиссом, но у него своя грабля (ниже).
Наши датчики присутствия
| Датчик (как его видит Home Assistant) | Тип | Подключение | Питание | Где |
|---|---|---|---|---|
| Wenzhi «Human presence sensor» | mmWave 24 ГГц | Zigbee2MQTT | сеть | кухня |
| Wenzhi «Human presence sensor» | mmWave 24 ГГц | Zigbee2MQTT | сеть | открытая терраса |
| HOBEIAN «PIR 24Ghz human presence sensor» | PIR + радар 24 ГГц | Zigbee2MQTT | 2×AA | прихожая (проход) |
| Tuya TS0601 | mmWave | ZHA | сеть | кабинет |
| Tuya TS0601 | PIR + радар | ZHA | батарейки | санузел — сейчас выпал из сети |
Все — на Zigbee, в двух сетях: Zigbee2MQTT на канале 11 и ZHA на канале 25, а Wi-Fi жёстко на 6-м канале, чтобы не мешал. Почему две сети и как развести Zigbee и Wi-Fi — в статье Zigbee2MQTT или ZHA.
Настройка датчика присутствия
В Zigbee2MQTT настройки радара видны на странице устройства в веб-интерфейсе и меняются прямо там. Наши текущие значения:
| Параметр | mmWave, кухня | mmWave, терраса | Что делает |
|---|---|---|---|
radar_sensitivity | 5 | 6 | чувствительность радара |
minimum_range | 0,3 м | 0 | ближняя граница зоны |
maximum_range | 3,6 м | 5 м | дальняя граница зоны |
detection_delay | 0,1 с | 0,1 с | задержка перед «есть человек» |
fading_time | 30,5 с | 60 с | сколько ждать перед «никого нет» |
Кроме присутствия, эти датчики отдают расстояние до человека в метрах и освещённость в люксах — последнее удобно, чтобы не включать свет днём.
Комбинированный датчик в прихожей настроен иначе: режим motion_detection_mode = only_pir (есть ещё pir_and_radar и only_radar), чувствительность к движению 6, к неподвижному человеку 2, дистанция 1,8 м, fading_time 15 с, индикатор выключен.
Zigbee2MQTT удобнее ZHA для Tuya-радаров. Тот же тип датчика в ZHA (кабинет) показывает пять числовых параметров без подписей — у нас это 8, 10, 405, 100 и 45500, — и догадаться, что из них дальность, а что задержка, можно только по документации. В Zigbee2MQTT параметры подписаны и в нормальных единицах.
Грабля 1: зону обнаружения программно не сузить
В проходе нам нужно было, чтобы комбинированный датчик реагировал на 2 м, а не на все 5 м. Проверяли проходами:

pir_and_radarи дистанция 2 м — срабатывает за 4–5 м: PIR срабатывает сам по себе, прошивка объединяет PIR и радар по «ИЛИ»;only_pirи чувствительность от 3 до 1 — всё равно 4–5 м: в PIR-режиме настройка дистанции не применяется;only_radar— дистанция работает, но непрерывный радар на батарейках долго не живёт.
Итог — вернули only_pir и смирились. Рабочие способы сузить зону только физические: заклеить часть линзы, наклонить датчик или запитать его от USB и включить only_radar. Если вам важна точная зона — сразу берите mmWave с питанием от сети: у него minimum_range и maximum_range действительно работают.
Грабля 2: проценты батареи врут на аккумуляторах
Шкала заряда в датчике рассчитана на две щелочные батарейки — 2 × 1,5 = 3,0 В. На никель-металлгидридных аккумуляторах (2 × 1,2 = 2,4 В) вместо плавного разряда получается такое:
- со 2 апреля по 26 июля 2026 года — почти четыре месяца ровно 100 %;
- с 27 июля — «качели» 100 → 50 → 100: напряжение проседает в момент передачи данных.
На щелочных батарейках в режиме only_pir две недели подряд было ровно 100 % — расход вообще не виден. Наше правило: на щелочных батарейках смотреть на наклон графика (сколько процентов в сутки), на аккумуляторах — только на дату, когда начались ежедневные просадки. Это и есть сигнал менять.
Грабля 3: датчик «замерзает» без unavailable
Самая коварная: датчик может зависнуть в последнем состоянии — например, «есть человек», — и Home Assistant не пометит его недоступным. Свет или монитор так и останутся включёнными. Поэтому в нашей автоматизации для кабинета «живость» датчика проверяется отдельно: обновлялся ли у него уровень сигнала (LQI) за последние 10 минут. Если нет — автоматизация ничего не трогает и пишет в Telegram.
Грабля 4: радар на улице ловит ветки
mmWave на открытой террасе реагирует на качающиеся ветки и листья. Поэтому там fading_time 60 секунд и страховка в автоматизации: свет выключается через 10 минут, даже если датчик продолжает считать, что кто-то есть.
Датчик присутствия для включения света
Наша автоматизация для террасы. Включает свет, если кто-то появился и освещённость ниже 90 лк, выключает через минуту после ухода, а на случай ложных срабатываний — через 10 минут в любом случае:
alias: "Терраса: свет по присутствию"
triggers:
- trigger: state
entity_id: binary_sensor.terrace_presence
to: "on"
id: turn_on
- trigger: state
entity_id: binary_sensor.terrace_presence
to: "off"
for: "00:01:00"
id: turn_off
- trigger: state
entity_id: light.terrace
to: "on"
for: "00:10:00"
id: safety_off
actions:
- choose:
- conditions:
- condition: trigger
id: turn_on
- condition: numeric_state
entity_id: sensor.terrace_illuminance
below: 90
sequence:
- action: light.turn_on
target: {entity_id: light.terrace}
- conditions:
- condition: trigger
id: [turn_off, safety_off]
- condition: state
entity_id: light.terrace
state: "on"
sequence:
- action: light.turn_off
target: {entity_id: light.terrace}
mode: restartОбратите внимание на mode: restart и на for у триггера выключения: без них свет будет гаснуть, пока человек ещё на месте. Почему — разобрали на тесте в статье автоматизация в Home Assistant.
Монитор по присутствию — с защитой от зависшего датчика
Вторая автоматизация сложнее. Монитор в кабинете включён, пока человек в комнате, и выключается через минуту после ухода. Если датчик пропал или «замёрз», автоматизация не трогает розетку и присылает уведомление. Розетке даётся три попытки, а каждые 5 минут и при запуске Home Assistant состояние сверяется заново:
alias: "Монитор по присутствию"
triggers:
- trigger: state
entity_id: binary_sensor.office_presence
to: "on"
id: presence
- trigger: state
entity_id: binary_sensor.office_presence
from: "on"
to: "off"
for: {minutes: 1}
id: presence
- trigger: state
entity_id: binary_sensor.office_presence
to: [unavailable, unknown]
for: {minutes: 2}
id: sensor_lost
- trigger: template
value_template: >-
{% set l = states.sensor.office_presence_lqi %}
{{ l is none or (now() - l.last_reported) > timedelta(minutes=10) }}
id: sensor_lost
- trigger: time_pattern
minutes: /5
id: reconcile
- trigger: homeassistant
event: start
id: reconcile
actions:
- variables:
tid: "{{ trigger.id | default('manual') }}"
pres: "{{ states('binary_sensor.office_presence') }}"
sensor_ok: >-
{% set l = states.sensor.office_presence_lqi %}
{{ pres in ['on','off'] and l is not none
and (now() - l.last_reported) < timedelta(minutes=10) }}
want: >-
{% if not sensor_ok %}keep
{% elif pres == 'on' %}on
{% elif now() - states.binary_sensor.office_presence.last_changed >= timedelta(minutes=1) %}off
{% else %}keep{% endif %}
- if:
- condition: template
value_template: "{{ tid == 'sensor_lost' and not sensor_ok }}"
then:
- action: notify.example_telegram
data:
message: "Датчик присутствия не отвечает — монитор управляется вручную."
- condition: template
value_template: >-
{{ want in ['on','off'] and states('switch.monitor_plug') in ['on','off']
and states('switch.monitor_plug') != want }}
- repeat:
sequence:
- action: "switch.turn_{{ want }}"
continue_on_error: true
target: {entity_id: switch.monitor_plug}
- wait_template: "{{ is_state('switch.monitor_plug', want) }}"
timeout: "00:00:15"
until:
- condition: template
value_template: "{{ is_state('switch.monitor_plug', want) or repeat.index >= 3 }}"
mode: singleНазвания объектов и способ уведомления в примерах условные — подставьте свои. Как настроить отправку в Telegram и почему не стоит полагаться на общее notify.notify — в статье про уведомления Home Assistant.
Что выбрать
- Комната, где сидят подолгу (кабинет, кухня, гостиная) — mmWave от сети. Видит неподвижного человека, зона настраивается.
- Проход, коридор — PIR или PIR + радар на батарейках. Сидеть там никто не будет, а точную зону придётся настраивать наклоном и шторкой.
- Улица — радар с большим
fading_timeи обязательной страховкой по времени. - Аккумуляторы вместо батареек — можно, но не верьте процентам.
Если Home Assistant ещё не стоит — начните с установки Home Assistant.
Данные — наш Home Assistant 2026.10 с Zigbee2MQTT и ZHA, замеры с апреля по октябрь 2026 года. Проверено 21 октября 2026 года.








