Датчик присутствия и таймер света: откуда берётся задержка выключения
После последнего обнаружения датчик может ещё сохранять занятое состояние. Как учитывать holdTime и не складывать таймеры случайно.
Человек вышел из комнаты, а свет ещё горит. Причина может находиться в настройках самого датчика и в автоматизации, которая отдельно ждёт перед выключением. Чтобы настроить поведение осмысленно, полезно проследить время от последнего обнаружения до изменения состояния, затем от изменения состояния до команды свету.
Что сообщает OccupancySensing
В справочнике Google Home поле occupancy описывает обработанное состояние присутствия. Параметр holdTime задаёт задержку в секундах перед переходом в незанятое состояние после последнего обнаружения, а holdTimeLimits содержит допустимые пределы и значение по умолчанию. Наличие этих параметров у конкретного прибора и доступ к ним в приложении проверяются отдельно.
Тип сенсора указывается собственными полями. Для PIR и ультразвуковых сенсоров также предусмотрены отдельные задержки переходов и параметры обработки обнаружений. Такая модель показывает, что переданное состояние уже может быть результатом временной обработки внутри устройства. Обобщённая карточка "присутствие" не раскрывает все эти настройки автоматически.
Из этой схемы нельзя вывести одинаковую чувствительность и возможности всех датчиков. Она описывает интерфейс обмена, конструкция сенсора и алгоритм производителя требуют собственной документации. Поддержка OccupancySensing сама по себе не обещает, что устройство распознает неподвижного человека в любом месте комнаты.
Где складывается ожидание
Рассмотрим редакционный пример: правило включает свет по занятому состоянию и выключает его после того, как незанятое состояние сохранялось установленное время. Если датчик сначала выдерживает свой holdTime, автоматизация начинает собственный отсчёт уже после него. Для владельца весь промежуток выглядит как одна задержка, хотя настройки находятся в разных местах.
Перед изменением параметров запишите исходную логику. Что запускает таймер, какое событие его отменяет и кто отправляет команду выключения? Если новое обнаружение приходит во время ожидания, поведение должно быть предусмотрено самим правилом, иначе свет может погаснуть после возвращения человека. Справочник атрибутов датчика не определяет реализацию таймеров конкретного приложения.
Для первого разбора выберите обычную безопасную комнату и наблюдайте за состоянием в интерфейсе отдельно от лампы. Отметьте момент последнего обнаружения, перехода в незанятое состояние и выключения света, насколько это позволяет приложение. Это условная процедура проверки, численные задержки и результаты для конкретной модели заранее неизвестны.
Настройка под использование комнаты
Проверьте разные обычные действия: проход через комнату и длительное пребывание в зоне, где установлен сенсор. Полученные наблюдения помогут понять, какое поведение следует изучить дальше, но их нельзя переносить на другую расстановку мебели без проверки. Расположение и возможности конкретного прибора задают пределы такого сценария.
Меняйте по одному таймеру и сохраняйте прежнее значение, чтобы можно было вернуться к исходной логике. Если настройка holdTime недоступна, используйте документированные возможности платформы, оставляя аппаратное поведение отдельным условием. Полезно также сохранить ручной способ управления светом, понятный любому человеку дома.
Для важных проходов и ситуаций, где внезапная темнота создаёт риск, сценарий требует дополнительного обдумывания и подходящего оборудования. Универсального значения задержки документация API не задаёт. В настройках должно быть видно, какое событие считается достаточным основанием для выключения и как человек может изменить это действие вручную.
Источник и права
Исходник: OccupancySensingTrait.Attributes, Google, документация Google Home Developers. Язык оригинала: английский. Режим: сокращённый перевод и редакционная адаптация. Использованы разделы Public properties: occupancy, holdTime, holdTimeLimits, occupancySensorType, задержки PIR и ultrasonic.
Текст оригинала опубликован по Creative Commons Attribution 4.0 International. Материал переведён на русский, сокращён и перестроен; программные примеры и тестовые задания опущены, добавлены пояснения и бытовые ситуации редакции. Адаптацию подготовило издание команды sentibox. Google и участники OpenThread не проверяли и не одобряли эту публикацию. Оригинальная схема редакции также доступна по CC BY 4.0.