Показаны сообщения с ярлыком управление освещением. Показать все сообщения
Показаны сообщения с ярлыком управление освещением. Показать все сообщения

понедельник, 28 мая 2018 г.

Lazy MQTT: FAQ

О чем это


В этой статье собираются заметки, советы и решения проблем для программы Lazy MQTT (Play market), о которой я упоминал ранее в статье про умный дом. Это MQTT-клиент с огромными возможностями по оформлению и обработке сообщений для просмотра состояния и управления устройствами по MQTT.

У программы две версии: бесплатная (с рекламой) и платная (без рекламы). Вторая отличается еще поддержкой виджетов, в остальном они одинаковые и настройки можно переносить из одной в другую. Если нравится программа - напишите отзыв в Play Market, если хотите дополнительно отблагодарить автора - купите платную версию :)

Начало


1) Где получить больше информации о программе?
- в программу встроено общее описание с примерами (Меню->Помощь)
- в окне редактирования скрипта есть подсказка по встроенным функциям и переменным
- в программе есть демо-настройки
- в форуме 4PDA можно задать вопрос

2) Как экспериментировать с настройками или настроить программу для работы на другом устройстве?
- поддерживается 10 независимых наборов настроек, между которыми можно переключаться (Меню->Установках->Слот настроек)
- настройки можно экспортировать в текстовый формат и импортировать обратно для бэкапирования и переноса между устройствами (см. Меню->Настройки)

3) Как восстановить демо-настройки?
- Меню->Настройки->Импорт демо. Не забудьте предварительно переключить слот настроек на свободный в Установках, чтобы не потерять свои текущие настройки

4) С чего начать?
- посмотрите встроенное описание (Меню->Помощь)
- посмотрите примеры в Демо-настройках
- сделайте новую страницу (Меню->Страницы...->+) или используйте существующие
- добавляйте плитки. Если включить Меню->Режим дизайна, то плитки можно перемещать и менять их размеры пальцем

5) Как узнать причину ошибки (ошибка соединения, не работает скрипт и др.)?
- см. Меню->Текст последней ошибки

Оформление интерфейса


1) Каковы возможности по оформлению?
- плитки могут быть любого размера и располагаться в любом месте
- у плитки настраиваются цвета, текст заголовка/подвала, основой текст, иконка
- плитка может иметь два состояния с независимым оформлением (включена-выключена)
- плитки могут быть (полу-)прозрачными
- плитки могут перекрываться

2) Не хватает встроенных иконок. Что делать?
- при долгом нажатии на кнопку выбора иконки можно выбрать любую картинку на устройстве

3) Как задать цвет иконки отличный от цвета текста?
- можно сделать 2 Украшения:
а) основное украшение с цветом для текста
б) родитель для первого украшения с иконкой и цветом для нее

4) Что означают цвета точек на плитках?
- эти точки - статус данных и MQTT-соединения. Их можно отключать (Статус данных у Плитки)
- нет точки: изменено условие показа точки (Статус данных у Плитки) или у Плитки не указаны Данные, соединенные с каким-либо сервером 
- черный: устанавливается соединение
- светло-зеленый: соединение установлено, данные после этого не приходили
- зеленый: после соединения данные уже приходили
- красный и темно-красный - ошибка соединения
- желтый: после нажатия на плитку и отправки данных на сервер не получено подтверждение отправки. Например из-за плохого интернет-соединения

5) Как сделать радио-кнопки (несколько переключателей, когда выбор одного выключает все остальные)?
- сделайте несколько плиток, одна рядом с другой
- сделайте Данные к ним, у которых скрипт на отправку управляет сразу всеми этими Данными (например, данные d1, d2, d3. При активации d2 скрипт сбрасывает значения d1 и d3. Визуально значения обычно привязаны к статусу on-off)

6) Как к одной плитке подключить несколько слайдеров вo всплывающем окошке и отправлять их данные сразу по кнопке "Отправить"?
- сделать отдельную страницу со слайдерами (несколько плиток, у каждой слайдер) и плиткой "Отправить"
- при клике на плитку на основной странице открывается страница со слайдерами (в скриптах есть команда page="имя страницы" - переход на страницу)
- при клике на "Отправить" отправляются данные и происходит переход на основную страницу
- похожий пример есть в Демо, на странице с деревенским домом, у двери кнопка домофона

7) Возможно ли сделать шкалу на слайдере?
- cейчас шкалу можно сделать, если добавить на плитку со слайдером картинку с прозрачным фоном, на которой нарисована шкала, и подогнать настройкой ее размер и размер плитки, чтобы ровно ложилась на слайдер

8) Можно ли сделать промежуточный статус украшения, кроме 2-х существующих (on-off)?
- поверх основной плитки сделайте еще одну плитку (т.е. у нее z-координата д.б. больше)
- у новой плитки поставьте Данные, у которых нет скрипта на отправку и нет соединения - в этом случае она не будет хватать нажатия на нее, а пропускать их ниже себя
- у новой плитки поставьте одно украшение прозрачное, чтобы ее не было видно, а второе -  промежуточное, как вы хотите
- в скрипте основной плитки управляйте статусом Данных новой плитки, чтобы переключать ее Украшение
- вуаля, у вас есть три состояния

Работа с данными


1) Как расположить данные из нескольких источников на одной плитке?
- eсть Данные с именами d1 и d2
- создаем для общих данных новый элемент Данных my_data (к серверу подсоединять не требуется)
- у d1 и d2 указываем скрипт на прием, в котором пишем
my_data="data1:"+d1+"\ndata2:"+d2
- создаем плитку и указываем у нее Данные my_data. Все. Это один из вариантов

2) Если из скрипта отправляется сразу несколько сообщений с QoS=0, то почему до сервера доходит только одно из них?
- клиент не успевает послать сообщения и, вероятно, отбрасывает их, так как QoS=0 означает, что не очень-то и важно. Решение - поставить у Данных, которые отправляют такие сообщения, QoS=1

3) В скрипте управляют статусом данных (status="on"...), однако, статус сам сбрасывается. Что не так?
- проверьте флаг Авто "on" в Данных. Если он включен, то статус ставится автоматически. Если вы ставите его вручную, то выключите "Авто"

Скрипты


1) Как округлить число?
- Math.round(x)
- описание встроенных JavaScript функций и вообще языка: см. Rhino

2) Как написать скрипт, чтобы при изменении полученных данных с 0 на 1, было сообщение?
- скрипт:
if(this.my_old_data===undefined) my_old_data=null // нужно, если my_old_data - переменная
if(val==1 && my_old_data==0) notify('Заголовок', 'Текст', 'A')
my_old_data=val
- здесь my_old_data - имя переменной JS (значения переменных сохраняются между вызовами скриптов). Если существуют Данные с именем my_old_data, то значение my_old_data будет сохраняться и при выходе из программы (потому что значения Данных сохраняются)

3) При проверке моей переменной, пока она еще не определена, получаю ошибку ReferenceError: "zz" is not defined

if(val!=zz) zz=val // ошибка ReferenceError: "zz" is not defined
Перед проверкой значения переменной надо проверить, определена ли она:
if(this.zz===undefined) zz=null // если не определена, то определяем zz с пустым значением
if(val!=zz) zz=val // ошибки нет

Соединения


1) На плитке постоянно меняется цвет точки - то красная, то зеленая. Данные то отправляются, то пишет "нет соединения". Что происходит?
- это симптомы неверной настройки, когда несколько MQTT-клиентов, подключающихся к одному серверу имеют одинаковые Client ID (Имя Клиента). Client ID должен быть уникальным в пределах сервера. Client ID настраивается:
a) в Установках->Имя Клиента (предпочтительный способ)
б) в Соединении->Имя Клиента (следует использовать только если по какой-то причине вам нужно создать несколько Соединений к одному серверу, чтобы указать у них разные имена. В противном случае уберите имя из Соединения и используйте первый способ)

Режим работы с MQTT сервером


Lazy MQTT автоматически соединяется с сервером, если соединение потеряно, и специально следить за этим не нужно. Она также замечательно работает в сеансовом режиме (когда ее периодически запускают для просмотра или управления) и при обновлении содержимого виджетов по-расписанию.
При работе в постоянном режиме есть нюансы.
Lazy MQTT не будет поддерживать соединение с сервером, если устройство, на котором она запущена, засыпает (экономия батареи в первую очередь). Сервер в этом случае автоматически разорвет соединение по истечении таймаута (keep alive) умноженного на 2-3. По-умолчанию это порядка минут. Это не имеет значения, потому что программа, когда ей нужно, соединится сама. Имеет значение другое: даже если соединение есть, но устройство спит, сообщения не будут доходить сразу (ведь клиент спит). И тут возникает множество вариантов: сообщения QoS=0 могут вообще не прийти, когда программа спит, QoS>0 придут при просыпании программы, если соединение не было разорвано или даже если было, но у соединения сброшен флаг "Чистая сессия". В чистой сессии гарантированно придут retained-сообщения.

Отсюда выводы:
- Lazy MQTT на засыпающем устройстве нельзя использовать как устройство экстренного оповещения
- все сообщения о состоянии (именно состоянии), которые различные датчики и устройства посылают на MQTT-сервер, по-хорошему должны быть retained (потому что это их суть: если это состояние, то оно сохраняется до изменения, а не до момента прихода сообщения). Однако, многие устройства в этом плане поступают как попало. Решением может быть программа на сервере, которая автоматически перепубликует такие сообщения с флагом retained

Тогда возникает вопрос, на что влияет "время работы сервиса" в Установках Lazy MQTT, если работа программы при спящем телефоне все равно не возможна?
Указанное время работы позволяет не выгружать программу и ее настройки из памяти, поэтому повторный запуск происходит моментально. Кроме этого, если устройство не спит или часто просыпается, то сообщения приходить будут. И последнее: для устройства, которое постоянно не спит (например, панель управления на стене, которая никогда не выключается), режим с постоянной работой позволяет получать все сообщения сразу.

Lazy MQTT (платная версия) на спящем устройстве можно настроить для периодической проверки сообщений. Для этого нужно:
- создать виджет, в данных плиток виджетов должны быть указаны те Данные, которые для вас важны
- настроить время обновления виджетов в Установках
- при желании, поставить флаг "Будить устройство" там же (если его не ставить, то обновления будут происходить, если телефон разбудила какая-то другая программа)

О "Чистой сессии"
Если у соединения сброшен флаг "Чистая сессия", то сообщения будут приходить, даже если устройство спало или соединения не было. Приходить они будут, когда соединение появится и программа проснется. Это позволяет не пропускать сообщения, с одной стороны. С другой, такие задержанные сообщения могут прийти в программу не в том порядке, в котором они изначально появились. А это значит, что состояние устройства, например, может быть отображено неверно. Тут надо экспериментировать с вашим сервером.


Другое


1) Приложение само закрывается через какое-то время или не обновляет виджет
- приложение само не закрывается. Его может закрыть другое приложение или система. Этим грешат всякие экономщики батареи - нужно им сказать, чтобы они не трогали Lazy MQTT. Как их выключить - зависит от системы. Например, опция может называться Умное питание. На MUIU может быть так: заходим в настройки телефона, затем вкладка все приложения, находим Lazy MQTT, заходим в настройки приложения и ставим флаг "Разрешить Автозапуск". Не ясно как флаг с таким названием влияет на закрытие приложения, но помогает. Здесь статья на эту тему. Здесь список экономщиков от разных производителей телефонов и как их найти.

пятница, 15 декабря 2017 г.

Управление освещением в квартире и другая электрика: техническое устройство

В этой статье я хочу описать техническое устройство реально работающей на конец 2017 года системы в моей квартире. Это не конец, планов много, это текущее состояние.


Светодиоды

Весь свет сделан на мощных светодиодных лентах теплого белого света с типоразмером светодиодов 5050, мощностью не менее 12 Вт/м, напряжением 12 и 24 В. В спальне (в гостиной планируется так же) кроме белой установлена мощная RGB лента на 24 В.
В ванной и туалете ленты в профилях, светят под 45 градусов к полу.

Фотоаппарат снизил общую яркость, чтобы было видно профиль

Реальная освещенность

В остальных местах ленты спрятаны на полочках и свет не прямой, а отражение от белого потолка. Свет не такой яркий, как от мощных люстр, но по моему опыту - сначала непривычно, а потом хватает, нет желания ставить ленты еще (техническая возможность есть). Более того, я часто включаю свет не на полную яркость.

Фотоаппарат снизил общую яркость


Блоки питания

Несколько безвентиляторных блоков питания мощностью 200-250 Вт на 24 В. Соответственно, ленты на 12 В включены последовательно по два одинаковых куска.


Диммеры

Несколько четырехканальных DALI-диммеров с током до 5 А на канал (при 24 В дает 120 Вт на канал)


Настенные выключатели

Все без фиксации, часть - переделанные из обычных с фиксацией, часть - заводские "для жалюзи". Все выключатели подключены к шине DALI через четырехканальные адаптеры "контакт->DALI".

Подробнее про DALI, ленты, питание, диммеры, выключатели см. Освещение на протоколе DALI и его компоненты


Сервер


Назначение сервера

Для управления освещением с помощью выключателей достаточно сконфигурировать DALI-диммеры (может понадобиться спец. устройство). Для расширенного функционала нужен сервер, который умеет слушать шину DALI, отправлять по ней команды и общаться с внешним миром. Устройство системы таково, что в случае сбоя сервера выключатели и свет будут продолжать работать.
Сервер должен обладать следующим функционалом:
  • конфигурирование устройств DALI вручную
  • управление освещением DALI вручную и автоматизированно (например, по движению в кадре камеры)
  • удаленное управление освещением с помощью программ типа "умный дом"
  • удаленное управление освещением со смартфона
  • просмотр состояния устройств и датчиков как локально, так и удаленно
  • расширение функционала добавлением камер, датчиков, управляемых устройств


Устройство сервера

Готового сервера с указанным функционалом я не нашел. Существуют различные шлюзы DALI-USB, DALI-Ethernet, но они обладают целым рядом недостатков: они не умеют слушать шину, т.е. не могут реагировать на нажатия, например, выключателя. Программы для управления могут не позволять организовать дистанционное управление светом (т.е. могут работать только мышкой). При этом, все они имеют неадекватно высокую цену (я покупал самый дешевый вариант DALI-USB, который делает финский умелец, для опытов и чтобы с чего-то начать, и стоил он как три Raspberri Pi 3).

Поэтому было решено написать программу самостоятельно, и спаять самодельный адаптер DALI<->GPIO (некоторые подробности его работы см. в Raspberry Pi 3, работа с GPIO в Linux и DALI). Подробнее см. Программа DALI Controller.

Оборудование сервера состоит из Raspberry Pi 3 и самодельного DALI<->GPIO-адаптера. Питание 5 В сервер получает от эффективного DC-DC преобразователя, который подключен к блоку питания светодиодных лент на 24 В.
Шина DALI требует блока питания, он также самодельный (см. Простой блок питания шины DALI), питается от 24 В.
Raspberry подключен к домашней сети по Wi-Fi (возможно подключение по Ethernet), и имеет доступ в Internet.
К Raspberry по GPIO подключены 2 датчика типа DHT-22 (температура и влажность, улица и дом).


Программное обеспечение

На Raspberry под управлением Raspbian (это такой Linux для Raspberry) работают:
  • самописный сервер DALI Controller
  • MQTT-брокер (прием и отправка MQTT-сообщений)
  • программа MajorDoMo ("Умный Дом") с WEB-интерфейсом, доступным с других компьютеров
Кроме этого, программа, которая раз в 10 минут снимает кадр с камеры (отслеживание сосулек ;) и публикует его в MQTT.


Как это работает

Вот схема, на которой показаны программные и аппаратные средства системы:


Пользователь может управлять системой через браузер (WEB UI), программу MQTT-клиент (например, на смартфоне) и настенные выключатели (Wall switch).
Выключатели подключены к шине DALI (DALI line) и напрямую адресуют диммеры, поэтому свет будет работать даже при сбое сервера.

Изменение состояния светильников отслеживает программа DALI Controller, прослушивая шину DALI и команды через MQTT, и публикует их состояние в MQTT.
В MQTT же публикуется температура и влажность с датчиков, кадры с камер, состояние противообледенительного нагревательного кабеля крыши балкона.
Эти состояния затем видны в браузере и любых MQTT-клиентах (в т.ч. на смартфоне).

Управление светом и другими устройствами осуществляется путем посылки MQTT-сообщения (из браузера через "Умный Дом" или любой MQTT-клиент, в т.ч. со смартфона).

четверг, 14 декабря 2017 г.

Управление освещением в квартире и другая электрика: что сделано

Здесь я хочу описать реально работающую на конец 2017 года систему, которую я сделал в своей квартире. Это не конец, планов много, это текущее состояние.


Квартира

3 комнаты, гостиная-кухня, длинный коридор, прихожая, ванная, туалет, балкон. План виден на снимке экрана мобильного приложения ниже.


Освещение

В одной из комнат, коридоре и на балконе освещения пока нет. В остальных местах - мощные светодиодные ленты, подключенные к диммерам, питание 24 В от нескольких безвентиляторных блоков питания.

Фотоаппарат снижает общую яркость из-за засветки потолка

Все диммеры подключены к шине DALI, на все белые ("теплый белый") ленты есть настенные выключатели (на прихожую - две штуки, из разных мест. На коридор, кухню тоже планируется по два). В спальне, кроме белого освещения, есть RGB (управления RGB с выключателей не планируется, сделаю "цвет рассвета" утром). Все светильники можно не только включать, но и управлять их яркостью с выключателей. Это, кстати, позволяет ограничиться одним источником света и одной кнопкой управления там, где ранее устанавливались люстры с несколькими лампами и несколькими выключателями, или люстра и торшеры.

Свет в мастерской и малиновый свет в спальне


Другая электрика

Балкон на последнем этаже, накрыт покатой крышей, на которой для предотвращения образования сосулек установлен нагревательный кабель. Кабель подключен через Wi-Fi выключатель.


На стене дома со стороны улицы установлен датчик температуры и влажности (типа DHT-22). Такой же датчик находится в квартире.


Управление

Управлять электронным хозяйством хочется не только с выключателей, но и удаленно (со смартфона, планшета, компьютера). Зачем управлять светом удаленно - опишу ниже. Кроме того, хочется видеть статус некоторых устройств (температуру на улице, по крайней мере) и, возможно, изображения с камер, если такие имеются.
Для централизации управления организован сервер на Raspberry Pi 3, все состояния устройств публикуются на внутренний MQTT-сервер, через него же устройствами можно управлять.

Что такое и зачем MQTT? Это небольшое хранилище сообщений, специально разработанное для общения и управления умными устройствами. По сути очень похоже на мессенджер. Для Android существует множество программ, которые позволяют настроить управление и отображение статуса через протокол MQTT. Для компьютеров существует несколько систем управления умным домом, большинство из них также понимают этот протокол.

Какая информация доступна на сервере?
  • состояние всех источников света
  • температура и влажность на улице и в квартире (обновление каждые 10 минут, настраивается)
  • состояние нагревательного кабеля на крыше балкона. Если он включен, то доступна текущая потребляемая мощность и напряжение сети 220 В
  • фотография с камеры, показывающая состояние края крыши балкона (для отслеживания появления сосулек, позволяет также оценить погоду, обновление каждые 10 минут, настраивается)
Чем можно управлять через сервер?
  • посылать в DALI любые команды управления освещением. Наиболее актуально: вкл./выкл., включить неярко, выбрать цвет и яркость для RGB-лент
  • вкл./выкл. обогрева крыши балкона
Чем можно управлять с настенных выключателей (даже при неработающем сервере)?
  • включить, выключить свет (однократное нажатие); увеличить, уменьшить яркость (удерживание)
  • вкл./выкл. обогрева крыши балкона
Благодаря наличию сервера, подключенного к DALI, ничто не мешает настроить сценарии для отдельных выключателей (например, в прихожей сделать кнопку "выключить освещение везде")


Опыт использования системы с удаленным управлением

Каждый слышал слова "умный дом", но, по-моему, никто точно не знает, ни что это такое, ни зачем это надо, ни как этим заинтересовать других. Поэтому удел таких систем сейчас - энтузиасты, которые в меру своих потребностей и интереса собирают самостоятельно нечто, и потом оценивают, что получилось.
Если бы меня полгода назад спросили, зачем управлять светом со смартфона, я бы не смог ответить. Зачем современному человеку, который всю жизнь включает свет выключателями, управление со смартфона? Это просто неудобно - его надо носить все время с собой? Вместо одной клавиши на стене нужно разблокировать телефон, запустить программу?
Лучше обстоит дело с управлением с голоса: если дом будет понимать, что от него просят и делать это... Но такие системы только начинают появляться, и на сегодняшний день, работающей по всей квартире (микрофоны в каждом помещении?) при приемлемой цене, с русским языком - я не знаю такой.
Сейчас более реалистичный вариант - управление светом по присутствию человека - анализом движения с камер или датчиков движения. Такая система не работает или работает плохо, если человек не движется, и она может быть только дополнением к другим.

Возвращаемся к управлению с телефона.

Самодельное приложение для Android.
Свет включен в двух местах

В спальне глухие ролл-шторы, чтобы зимой не мешало уличное освещение, летом - белые ночи. То есть в спальне темно всегда. Спать я ложусь, когда на улице уже темно, да и позднее всех домашних. Как завершение дня выглядит в обычной квартире?
  • пошел включить свет в комнате (условно - кабинете), в которой сидел с компьютером или телевизором
  • пошел выключил компьютер (после света, потому что иначе выключатель искать в темноте)
  • пошел включить свет в коридоре (или сразу в ванной, но тогда по коридору шел в полутьме, свет от кабинета только)
  • умылся, выключил свет в ванной, пошел включить в спальне, пошел (в полутьме) выключить в коридоре и кабинете
  • разделся, выключил свет в спальне, в темноте ощупью нашел кровать (или сходил включил прикроватный светильник, потом вернулся выключить общий свет)
Как этот же процесс выглядит у меня?
  • с телефона или компьютера включил свет (можно неярко) в кабинете, коридоре, прихожей или ванной и в спальне - в общем сразу осветил весь путь
  • выключил компьютер/телевизор (в кабинете светло)
  • пошел в ванну, потом в спальню (еще светло)
  • разделся, лег в кровать (не ощупью, все еще светло)
  • выключил свет везде с телефона
Неоспоримое достоинство удаленного управления, о котором я узнал только начав пользоваться: не надо ходить туда-обратно из-за света, не надо ходить на ощупь и биться ногой о кровать! При выходе из квартиры не надо вспоминать, везде ли выключил свет - это можно посмотреть и исправить с телефона будучи уже на улице.
Если ночью приспичило попить воды, то с телефона же, прямо с постели, включаю неяркий (чтобы глаза не резало спросонья) свет по пути на кухню.

Актуальная именно для меня вещь - управление обогревом крыши от сосулек. Особенно, если я в дальних странах в отпуске. Всегда держать обогрев включенным накладно. Включать надо только если есть снег и температура на улице крутится около нуля (в других случаях сосульки не образуются). Я на телефоне вижу температуру воздуха (реальную, у моего дома), а также изображение края крыши и могу включить или выключить обогрев только когда необходимо.

понедельник, 10 апреля 2017 г.

Освещение на протоколе DALI и его компоненты

см. ранее Дружелюбная квартира. Постановка задачи

Не помню уже, как я наткнулся на описание протокола DALI: управление освещением, открытый стандарт, соединение любой топологией, двумя проводами, по которым передается и управление, и маломощное питание (выключателей и т.п.). У всех принимающих устройств (регуляторов мощности освещения - диммеров) свой адрес.
И что важно, недорогое оборудование можно купить, и описание протокола и электрических схем, хотя и не всех, найти можно. У многих "открытых" стандартов есть своя особенность: документацию к ним публиковать запрещено, ее можно только купить, например, у "некоммерческой" организации IEC (издевка "демократического общества"). Поэтому внизу статьи полезные ссылки.

Источники света можно использовать разные, я прицеливаюсь на мощные светодиодные ленты и светодиодные лампы, если света от лент, расположенных на полочке под потолком и светящих в него, не хватит. Проверка в прихожей: лента 14 Вт/м, 5 метров, брошена буквой "Г" за карниз (т.е. только отраженный свет), светит достаточно ярко.



Что нужно для организации освещения на светодиодных лентах или низковольтных лампах? Лампы, блоки питания (вход 220 вольт, выход - постоянное напряжение, подходящее для ламп), диммеры (включение/выключение и управление яркостью по сигналу управления), выключатели (для ручного управления).

После небольшого изучения светодиодных лент, блоков питания, DALI-диммеров и кнопок, я выбираю следующие компоненты:
  1. недорогие светодиодные ленты "теплый белый" (warm white, WW), 14.4 Вт/м, 12 или 24 вольта;
  2. в спальне и гостиной хочется менять цвет освещения (кроме обычного, белого, скажем, цвет рассвета...) - светодиодные ленты WW+RGB (теплый белый + красный + зеленый + синий) суммарная мощность 28.8 Вт/м или 2 ленты (WW и RGB) на 24 вольта каждая
  3. блоки питания 24 вольта
  4. мощные DALI-диммеры постоянного тока (constant current) порядка 480 ватт при 24 вольтах, на 4 канала
Почему именно 24 вольта? Больше всего лент и лампочек в продаже на 12 вольт, гораздо меньше на 24 (кроме четырехцветных WW+RGB - их я видел только на 24) и еще меньше на 36. Однако, при выборе 24 вольта мы получаем: 
  • более мощные чем 12 вольт блоки питания, которые можно купить все еще без вентиляторов
  • подключение лент или ламп на 24 вольта, а также и на 12, соединяя их последовательно по 2 одинаковых штуки (ключевое слово - одинаковых). Да, одноцветные ленты на 12 вольт можно подключить к блоку питания 24 вольта, если разрезать их на 2 одинаковых отрезка и соединить последовательно (плюс первого к минусу второго, минус первого и плюс второго - к блоку питания или диммеру). Такое нельзя проделать с многоцветными лентами, потому что в них плюсовой провод общий, один на все каналы
  • диммеру постоянного тока почти все равно, каким напряжением он управляет, у него ограничение по току. Поэтому один и тот же диммер работает как с 12, так и с 24 вольтами, однако, во втором случае максимальная мощность подключенных ламп в 2 раза больше первого!
Нужно обратить внимание, что если я выбрал управление DALI, то и приобретаемые компоненты должны его поддерживать. Лентам и блокам питания протокол не интересен, а диммеры общаются с выключателями по DALI.
Почему диммеры по 4 канала? Так дешевле: 4-х канальный DALI-диммер имеет 4 адреса, поэтому работает так же, как 4 одноканальных. Одна независимо включаемая точка освещения одного цвета - это один канал (т.е. 3-х цветная RGB - это три канала), а сколько будет диммеров - один, два или три - не важно. Важно, сколько каналов. Лучше, однако, RGB-ленту подключать к идентичным каналам (т.е. к одному многоканальному диммеру или, если нескольким, то одинаковым), потому что кривая яркости канала может варьироваться по моделям.

Немного о функционале диммера. Его основное назначение - установка яркости ламп в соответствие с заданным значением (в DALI яркость задается числом от 0 до 254). У него также могут быть настройки, определяющие скорость нарастания или спада яркости при ее изменении, минимальная и максимальная яркость, яркость при включении питания. Настройки можно изменить с помощью устройства DALI мастер-контроллер, которое для обычной работы системы вообще-то не требуется. Кроме этого, у диммера может быть миниатюрный экран и кнопки для установки некоторых параметров вручную, что позволяет частично настроить его без мастер-контроллера и использовать. В диммерах бывает и дополнительный функционал, типа "Push dimming", который позволяет включать и выключать свет без интерфейса DALI. Хотя его наличие как-будто излишне, потому что можно просто подавать или не подавать питание на лампу, вообще не имея диммера.

Остались выключатели. Для DALI есть выбор выключателей, как правило, сенсорных, которые позволяют не только включать, но и управлять яркостью. Есть даже модели с выбором цвета освещения.
Однако, для экономии (и из-за нелюбви к сенсорным кнопкам), я приобретаю заметно более дешевые устройства, к которым на входе подключается кнопочный контакт, а на выходе имеем DALI:

Аккумулятор здесь для сравнения размера, питание коробочка получает от шины DALI. Итого, одна коробочка на 4 контакта. Есть несколько видов такого устройства "DALI Push Switch": управляющие адресами или группами DALI и т.п.
На первое нажатие свет включается, на втрое - выключается. На первое долгое нажатие - плавно увеличивает яркость, на второе долгое - уменьшает. Адрес диммера для управления выставляется вручную внутри коробочки (настраивается первый адрес, остальные 3 должны идти вслед за ним. В диммере же, как правило, адрес каждого канала настаивается независимо).
Единственно - нужны контакты без фиксации (которые сами возвращаются в исходное положение после отпускания кнопки). Например, без фиксации бывают кнопки для управления жалюзи:


04.2017 продолжение на подходе...

Ссылки:
1. Microchip AN1465 (pdf) - схема адаптера DALI<->GPIO и простого блока питания DALI, описание электрических сигналов DALI, тайминги, алгоритм кодирования, программы на C
2. Rayzig - самый полный список команд DALI, но с неинформативным описанием каждой команды, и описание формата фрейма
3. Rayzig.pdf - включает описание части протокола, в частности, процедуру назначение адресов устройств ("DALI address setting explained")
4. python-dali - программа на python, включает множество команд DALI и ответов (ответных фреймов) к ним
5. WAGO DALI/DSI Master Module - позволяет расшифровать часть специальных команд и ответов к ним
6. Beckhoff DALI-Commands - хорошее описание фрейма и команд, но нет специальных команд
7. NXP Motorola (DALI) Unit Using the MC68HC908KX8 - частичное описание DALI, в приложении список команд, программы на C
8. NEC DALI 78K0/Ix2 Series - схема адаптера, описание электрических сигналов DALI, программы на C
9. NXP AN10760 - pdf, описание таймингов, список команд, программы на C