Группы света
Несколько ламп комнаты можно собрать в группу. Снаружи группа выглядит одним светильником: его видят приложение, Алиса, выключатель на стене и сценарии. Яркость, цвет и режимы этого светильника считает сам Home Assistant, поэтому свет ведёт себя одинаково, кто бы ни крутил ползунок.
Как завести группу
- Android: карточка комнаты или шторка группы → «Состав и модель группы». Сверху лампы этой комнаты, под раскрытием «Лампы других комнат»: отмеченная лампа переезжает в комнату группы и уходит из своей прежней группы. «Сохранить и расставить по кругу» заодно разложит лампы ровным кольцом вокруг их общего центра.
- Веб: панель комнаты → «Группы света»: имя, состав, «Лампы других комнат», «гасить по одной». Группу можно перевезти в другую комнату вместе с лампами.
Порядок ламп руками не задаётся: он считается из мест ламп на плане. По этому порядку лампы гаснут, и по нему же бежит огонёк в режимах.
В группе должно быть две лампы и больше. Участник, который не лампа Home Assistant (light.*), в группу света не попадает.
Своя 3D-модель
В том же окне «Состав и модель группы» — блок «3D-модель»: «Выбрать…» — из каталога или своим файлом .glb, потом «Заменить…» и «Убрать». Без модели в объёме видны только лампы. С моделью группа выглядит люстрой под потолком, если лампы висят высоко, иначе — торшером на полу. Модель группы задаётся только в приложении.
Виртуальный светильник
На каждую группу в Home Assistant ставится пакет, и в нём живёт светильник light.homer_<группа>, например light.homer_living у гостиной. Приложение помнит его в группе как светильник-прокси и шлёт команды ему, а не лампам по отдельности.
Без прокси лестницы нет
Если у группы не задан светильник-прокси, приложение крутит лампы напрямую, мимо лестницы, и «яркость 20 %» снова означает 20 % на каждой лампе. Правка состава в приложении и вебе прокси сохраняет.
Если состав поменяли, а светильник группы в HA собран со старым, карточка группы показывает плашку «Светильник группы в HA — со старым составом». Ползунок в приложении уже ведёт новый состав сам, а Алиса и сценарии HA управляют прежними лампами, пока пакет группы не пересоберут — см. Как ставятся пакеты.
Лестница диммирования
Обычная группа на малой яркости светит всеми лампами тускло. Лестница делает иначе: тускнеем все вместе, а у нижнего края гасим лампы по одной. Одна горящая лампа даёт по-настоящему тусклый свет, какого не дают пять ламп на минимуме.
- Суммарный поток непрерывен: пять ламп по 20 % светят столько же, сколько четыре по 25 %, поэтому гашение лампы не читается рывком.
- Голое «включи» зажигает группу на полную, а не на последнюю яркость.
- Лампа, которую лестница только что зажгла, получает цвет остальных и не вспыхивает белой среди цветных.
- Цвет и температура взаимно исключают друг друга: команда с цветом сбрасывает температуру, и наоборот. Команда без слова о цвете цвет не трогает.
Гасить по одной
Переключатель «Гасить лампы по одной» решает, работает ли лестница:
| Что будет внизу ползунка | |
|---|---|
| Включён | Лампы гаснут по очереди, группа светит тусклее, чем может одна лампа |
| Выключен | Все лампы горят одинаково, ползунок крутит только яркость |
Люстре нужен второй вариант: гаснущие в ней по очереди лампы выглядят перегоревшими. Когда переключатель выключен, карточка группы не показывает ряд точек и счёт «горит 3 из 5».
Где он стоит: в Android — под карточкой группы в комнате, в вебе — в редакторе групп комнаты. Настройка хранится в плане, а её зеркало (input_boolean.homer_<группа>_fade_by_lamp) приложение и сайдкар отправляют в Home Assistant при каждой правке. Менять зеркало прямо в Home Assistant бесполезно: следующая правка в приложении его перезапишет.
Режимы группы и сцены Алисы
У светильника группы восемнадцать режимов. Это закрытый список сцен «Дома с Алисой»: свои имена добавить нельзя, переименовывать нельзя, иначе плитка пропадёт из приложения Яндекса. Те же режимы, с теми же именами, есть на карточке комнаты в приложении: оно шлёт один вызов в Home Assistant по домашней сети, интернет для этого не нужен.
| Как выглядит | Режимы |
|---|---|
| Ровный свет, без анимации | Чтение (95 %, 4000 K) |
| Плавный подъём один раз | Рассвет (до 40 % за полторы минуты) |
| Медленное дыхание яркости | Закат, Ночь, Отдых, Ужин, Кино, Океан |
| Неровное мерцание, как пламя | Романтика, Свеча, Джунгли |
| Резкая пульсация красным | Тревога |
| Огонёк по кругу ламп, синий и красный, с белой вспышкой | Сирена |
| Огонёк по кругу со сменой цветов | Алиса, Фантазия, Гирлянда, Неон, Вечеринка |
- Любая другая команда — яркость, цвет, выключение, другой режим — останавливает анимацию сама. Свет остаётся таким, каким его выставила новая команда.
- Режимы рисуют светом, а не освещают: лестница в них не участвует.
- «Сирена» сама остановится примерно через 83 минуты: столько шагов Home Assistant отводит циклу.
- «Циркадного» режима нет и быть не может: в протоколе Яндекса такой сцены нет, это функция ламп самого Яндекса.
Шаг огонька — полсекунды
Zigbee не светодиодная лента: каждая команда идёт по сети и подтверждается. Шаг быстрее 0,4 с превращается в очередь, и круг разъезжается.
Свет во всём доме
Кроме групп, у дома есть один светильник на все лампы: «Свет во всём доме» (light.homer_house). Он нужен для режимов вроде «Вечеринки» на всю квартиру и для «выключи везде».
- Состав берётся по метке Home Assistant
homer_house. Её ставит сайдкар каждой лампе плана: лампа, поставленная на план, входит в группу за несколько секунд, снятая — выходит. - «Гасить по одной» у него выключено: на весь дом это значило бы гасить комнаты по очереди.
- В приложении это карточка «Свет во всём доме» на обзоре дома, над пресетами: тумблер и те же режимы, что у комнат. Ползунка нет намеренно: двинуть «уровень всего дома» значит выровнять гостиную и ванную под одну яркость.
- У Алисы светильник дома — отдельное устройство со всеми режимами.
Одна лампа может входить сразу в группу комнаты и в свет всего дома. Тогда команда одному светильнику первым делом останавливает анимацию у другого. Пока во всём доме «Вечеринка», гостиная показывает режим «Вечеринка» и запирает ползунки, а «Вернуть управление» в гостиной останавливает и вечеринку во всём доме.
Одна посылка вместо команды каждой лампе
Для групп можно завести нативную группу zigbee2mqtt (light.homer_living_zigbee, light.homer_house_zigbee). Тогда:
- если команда идёт всем лампам группы, она уходит одной групповой посылкой Zigbee: лампы срабатывают разом, а не волной, и мёртвая лампа не задерживает соседей;
- если лестница зажигает не всех, команда идёт по лампам, как обычно;
- если групповой светильник недоступен, тоже по лампам.
Состав групп описан в tools/ha-package/zigbee-groups.json, сами группы в z2m создаёт python tools/z2m-groups.py apply. Утилита только добавляет участников и чужие группы не трогает. Номер группы 901 занят служебной группой z2m, поэтому у групп Homer номера 902 и дальше.
Память ламп после выключателя
Лампы Tuya TS0505B, погашенные плавно, запоминают минимальную яркость. Включение из Home Assistant это не замечает, а вот выключатель на стене поднимает лампу на запомненном 1 % — свет выходит тусклым.
Пакет homer_lamp_memory чинит это двумя способами:
- Перевзвод. Когда лампа погасла и переход закончился, Home Assistant возвращает ей в память последнюю яркость, не зажигая. Выключатель потом зажигает лампу как было, даже без Home Assistant.
- Откат. Сенсор
sensor.homer_lamp_memoryпомнит, какой лампу сделала последняя команда — от Алисы, приложения, сайдкара, сценария. Если лампа загорелась или сменила яркость без команды, автоматизация через пару секунд возвращает запомненное. Лампа без записи поднимается до полной яркости, только если засветилась ниже 10 %.
Цена отката
Яркость, выставленная мимо Home Assistant (фронтенд z2m, mosquitto_pub, пульт с прямой привязкой, действие «MQTT» в сценарии), будет откатываться. Такой путь надо вести через Home Assistant.
Состав пакета — Zigbee-лампы дома. Новую лампу в него дописывают руками, в список &lamps и в таблицу адресов перевзвода.
Что получает Алиса
Физические лампы группы с общим светильником к Алисе не попадают: иначе «свет в гостиной» зажигал бы их вперемешку с лестницей. Алиса видит один светильник группы и свет всего дома. Остальное про выдачу — на странице Хомер через Алису.
Как ставятся пакеты
Пакеты групп генерируются из конфига дома, руками их не правят:
python tools/ha-package.py дом.json # показать, что получится
python tools/ha-package.py дом.json --write ha # записать в ha/Получается пакет на каждую группу и один на весь дом. Раскатка в Home Assistant — tools/deploy-ha.py, затем перезагрузка шаблонов, скриптов, input_text и input_boolean или перезапуск Home Assistant.
Перед перезагрузкой
Home Assistant → Настройки → Система → Действия → «Проверить конфигурацию». Ошибка в шаблоне пакета роняет весь запуск Home Assistant, а не один файл.