Skip to content

Группы света ​

Несколько ламп комнаты можно собрать в группу. Снаружи группа выглядит одним светильником: его видят приложение, Алиса, выключатель на стене и сценарии. Яркость, цвет и режимы этого светильника считает сам 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 чинит это двумя способами:

  1. Перевзвод. Когда лампа погасла и переход закончился, Home Assistant возвращает ей в память последнюю яркость, не зажигая. Выключатель потом зажигает лампу как было, даже без Home Assistant.
  2. Откат. Сенсор 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, а не один файл.