Найти в Дзене
Мой умный дом

Сохраняем состояние освещения в Home assistant

Оглавление
Обложка статьи
Обложка статьи

Эта статья посвящена автоматизации освещения в моей квартире, которая является одной из самых популярных в моем умном доме. Автоматизация работает следующим образом: после срабатывания триггера (в моем случае - нажатие на zigbee кнопку от Xiaomi), если хотя бы один светильник или лампочка включены, то создается временная сцена, которая сохраняет текущее состояние освещения и выключает свет во всей квартире. При повторной активации триггера, свет снова включается, сохраняя конфигурацию освещения.

Небольшая анимация для наглядности

Пример работы автоматизации по триггеру
Пример работы автоматизации по триггеру

В моем примере автоматизация сделана на коленке. В будущем я планирую ее доработать чтобы все устройства с доменом "light." сохранялись во временную сцену автоматически. Теперь ближе к сути.

Триггеры автоматизации

Не вижу смысла заострять внимание на тригеррах т.к. триггером автоматизации могут служить любые события или состояния устройств, объектов и сущностей. Просто оставлю этот кусок кода для большей наглядности.

Триггеры автоматизации в yaml
Триггеры автоматизации в yaml

А вот так это выглядит в режиме конструктора

Триггеры в режиме конструктора
Триггеры в режиме конструктора

Реализация логики работы

Первым делом в блоке action мы проверяем условия по всем приборам освещения с помощью оператора ветвления. В случае, если один из светильников включен, то мы вызываем службу scene.create и задаем ей уникальный id (имя) и указываем объекты (лампочки) состояние которых нужно сохранить.

Проверяем условие включены ли лампочки
Проверяем условие включены ли лампочки

Тоже самое, но в режиме конструктора

Проверяем условие включены ли лампочки (режим конструктора)
Проверяем условие включены ли лампочки (режим конструктора)
Создание сцены в режиме конструктора
Создание сцены в режиме конструктора

Дальше мы просто выключем все лампочки при помощи службы light.turn_off

Выключаем свет везде
Выключаем свет везде

Тоже самое, но в режиме конструктора

Выключение света в режиме конструктора
Выключение света в режиме конструктора

В случае, если свет выключен, мы просто активируем ранее сохраненную сцену

Активация ранее сохраненной сцены
Активация ранее сохраненной сцены
Активация ранее сохраненной сцены (режим конструктора)
Активация ранее сохраненной сцены (режим конструктора)

Вот и все, чем я хотел поделиться. Большое спасибо за прочтение, обнял