Эта статья посвящена автоматизации освещения в моей квартире, которая является одной из самых популярных в моем умном доме. Автоматизация работает следующим образом: после срабатывания триггера (в моем случае - нажатие на zigbee кнопку от Xiaomi), если хотя бы один светильник или лампочка включены, то создается временная сцена, которая сохраняет текущее состояние освещения и выключает свет во всей квартире. При повторной активации триггера, свет снова включается, сохраняя конфигурацию освещения.
Небольшая анимация для наглядности
В моем примере автоматизация сделана на коленке. В будущем я планирую ее доработать чтобы все устройства с доменом "light." сохранялись во временную сцену автоматически. Теперь ближе к сути.
Триггеры автоматизации
Не вижу смысла заострять внимание на тригеррах т.к. триггером автоматизации могут служить любые события или состояния устройств, объектов и сущностей. Просто оставлю этот кусок кода для большей наглядности.
А вот так это выглядит в режиме конструктора
Реализация логики работы
Первым делом в блоке action мы проверяем условия по всем приборам освещения с помощью оператора ветвления. В случае, если один из светильников включен, то мы вызываем службу scene.create и задаем ей уникальный id (имя) и указываем объекты (лампочки) состояние которых нужно сохранить.
Тоже самое, но в режиме конструктора
Дальше мы просто выключем все лампочки при помощи службы light.turn_off
Тоже самое, но в режиме конструктора
В случае, если свет выключен, мы просто активируем ранее сохраненную сцену
Вот и все, чем я хотел поделиться. Большое спасибо за прочтение, обнял