Для расширения функционала управления освещением квартиры было решено сделать DALI<->GPIO-адаптер и написать собственный сервер.
Почему не использовать уже готовые решения, что должен уметь сервер, подробнее про адаптер и протокол MQTT описано в статье Управление освещением в квартире и другая электрика: техническое устройство (раздел «Устройство сервера»).
Здесь описывается устройство и функционал программы (сервера) DALI Controller.
Окружение программы
Сервер должен работать на низкопроизводительном компьютере Raspberry, прослушивать шину DALI и посылать в нее команды через GPIO. В качестве операционной системы выступает Raspbian (один из вариантов Linux для Raspberry). Для удаленного управления сервером поддерживается сетевое подключение.
Выбор инструментов и технологий
Для работы с GPIO в Raspbian существует несколько различных third-party библиотек. В качестве надежной (работа с GPIO по DMA, что резко снижает зависимость от загрузки процессора и прерываний) и продуманной, будет использоваться C-библиотека pigpio (подробнее про нее см. Raspberry Pi 3, pigpio, шина DALI и программа для работы с ней). Причем, в режиме работы — демон (вместо линковки).
Управление освещением — настройка шины DALI, адресация, группы сценарии USB — Tridonic
Сервер должен поддерживать управление из консоли, командной строки и через MQTT, а также публиковать статус устройств по MQTT.
Сначала ядро программы было написано C, но в какой-то момент я понял, что развитие программы тормозится неудобной организацией межпоточного взаимодействия. Вместо концентрации на функционале программы приходится прилагать много сил, чтобы реализовать это на C. Я решил посмотреть другие варианты и, наконец, попробовать Golang. Это был мой первый подход к языку, и после небольшого исследования возможностей я понял:
- Go имеет встроенные решения для эффективной многопоточности
- на Go можно писать под Raspbian
- из Go можно вызывать C-код и линковать C-библиотеки
- Go компилируется в эффективный код
- для Go существует множество сторонних библиотек
Больше про Go см. Использование C-библиотек из Golang 1.8 с callback-функцией и cross-компиляция.
Устройство программы
Сервер состоит из нескольких модулей, которые работают параллельно:
- прослушивание шины DALI для перехвата команд, отправляемых другими устройствами (выключателями) и ответов на команды. Используется для логирования, отслеживания изменения статусов устройств, запуска настраиваемых на событие JavaScript-скриптов
- JavaScript-интерпретатор для настраиваемых скриптов
- MQTT-клиент для получения команд управления и публикации статусов
- псевдографическая цветная консоль, показывающая лог, список и статусы устройств, прогресс выполнения долгих команд. Имеет поле для ручного ввода команды
- встроенная помощь по всем командам DALI и другим командам сервера
- отправка команд в шину DALI (полученных как параметры запуска приложения, через MQTT, ручным вводом в консоли или из JavaScript)
- дополнительно: модуль опроса устройств DHT-22 (датчик температуры и влажности) с публикацией в MQTT
Видеоурок 1. DALI — управление в режиме Broadcast.
На снимке экрана видно:
- лог команд (в скобках указан источник команды: шина DALI, MQTT или JavaScript)
- иногда возникающие ошибки опроса уличного датчика DHT-22 (слишком длинные провода до него)
- список устройств с DALI-адресом и статусом. Видно, что часть устройств на шине не имеют имени (они пока не используются)
Это снимок самодельного мобильного приложения, работающего по MQTT. Оно общается с сервером DALI Controller для показа статуса устройств и управления ими.
Работа программы
При запуске программа опрашивает устройства, чтобы выяснить их начальный статус. Затем статус отслеживается путем анализа команд, которые посылаются этому устройству (в том числе путем нажатия настенных выключателей). Любое изменение статуса публикуется по MQTT и все заинтересованные MQTT-клиенты (в т.ч. мобильные приложения) сразу же отражают это изменение у себя.
При управлении (светом) из мобильного приложения (или другого MQTT-клиента), сервер получает команду по MQTT и отправляет ее в шину DALI, отражая, если нужно, изменение статуса.
Консоль программы позволяет, при необходимости, вводить команды вручную. Обычно это требуется при подключении новых устройств для их конфигурирования.
В работе всей этой кухни есть интересная особенность. В арсенале DALI нет команды «переключить светильник». Есть различные варианты «включить» и «выключить», а «переключить» — нет. Это значит, что настенный выключатель должен помнить последнюю команду, которую он посылал, чтобы при следующем нажатии посылать обратную.
Да, возможен вариант, когда выключатель отслеживает или опрашивает реальное состояние устройства перед решением, что же ему посылать. Но дешевые выключатели этого точно не делают (про дорогие я не осведомлен).
Представьте картину:
- включаем свет выключателем (он отправляет команду «вкл» и запоминает факт, что свет включился)
- выключаем из мобильного приложения
- хотим снова включить его выключателем, но ничего не происходит. Поскольку выключатель помнит, что свет включен, он пошлет команду «выкл». И чтобы свет все-таки включить, нужно нажать выключатель еще раз (он снова пошлет обратную команду — теперь уже «вкл»)
Для устранения этой неприятной ситуации в сервере используется возможность написать JavaScript на событие.
Что делает скрипт:
- при получении команды по шине DALI запускается скрипт
- если команда послана настенным выключателем (а в данный момент все команды, пришедшие по DALI, от выключателей) и она включает или выключает свет, то команда сверяется с текущим статусом светильника (его правильный статус помнит сервер)
- если команда от выключателя пытается «повторить» уже существующее состояние света, но скрипт тут же самостоятельно посылает этому устройству обратную команду
Работа этого скрипта устраняет проблему с нажатие выключателя, при котором ничего не происходит. Эта ситуация реально видна на снимке экрана выше:
10:52:43 on спальня (dali)
10:52:43 off спальня (scr)
первая строка — по шине DALI получена команда «включить свет в спальне». Однако скрипт видит, что свет уже включен, а значит нажатием выключателя требовалось его выключить, и он сам посылает новую команду «выключить свет в спальне». Это вторая команда с источником «(scr)» (что означает JavaScript).
Выглядит как «костыль». Но на самом деле, это «костыль» не к серверу, а к недостатку протокола DALI: с одной стороны, он имеет множество команд управления светом, а с другой, сделать простейший выключатель без памяти состояния (или необходимости аппаратной и программной имплементации приемной части интерфейса) не позволяет.
Несколько месяцев использования освещения в такой конфигурации, с активным использованием как настенных выключателей, так и мобильного приложения, показывают 100% отсутствие ошибок типа «нажал — ничего не происходит».
Источник: friendflat.blogspot.com
Управление светильниками по протоколу DALI с помощью Arduino
DALI (Digital Addressable Lighting Interface) – протокол, предназначенный для управления осветительными приборами. Протокол был разработан австрийской компанией Tridonic и основан на манчестерском кодировании: каждый бит данных кодируется перепадом от низкого сигнала к высокому или наоборот.
DALI сеть состоит из контроллера и подключенных к нему осветительных приборов. Передача данных идет на скорости 1200бит/с. Напряжение для логической единицы составляет 16±6,5В, а для логического нуля 0±4,5В. Шина DALI всегда находится под напряжением 16В, в противном случае все осветительные приборы, подключенные к шине, переходят в аварийный режим и включаются.
Питание шины обеспечивает контроллер. К одной шине подключается до 64 светильников. Устройства можно объединять в 16 групп и задавать до 16 сцен освещения. Яркость каждого осветительного прибора регулируется от 0 до 254.
Список команд можно посмотреть здесь.
Инициализация новых светильников
До начала работы каждому светильнику должен быть присвоен адрес от 1 до 63 (short address). У новых светильников короткий адрес как правило не задан, поэтому управлять конкретным светильником не получится. Такие светильники реагируют только на широковещательные команды.
Для того чтобы назначить короткий адрес светильнику нужно его инициализировать. У каждого светильника есть случайный адрес, состоящий из 24 бит (3 раза по 8 бит). 24 битный адрес может принимать значения от 1 до 16777216. Вероятность подключения светильников с одинаковыми адресами минимален и составляет один случай из 1 из 266144.
Процесс инициализации заключается в следующем:
- от контроллера дважды передается широковещательная команда INITIALISE (0b1010010100000000) с интервалом не более 100мс, которая переводит все светильники в режим инициализации;
- от контроллера дважды передается широковещательная команда RANDOMISE (0b1010011100000000) с интервалом не более 100мс, после которой все светильники присваивают себе новый случайный адрес;
- от контроллера передается значение случайного адреса (24бит) тремя сообщениями по 8 бит (0b10110001HHHHHHHH, 0b10110011MMMMMMMM, 0b10110101LLLLLLLL);
- от контроллера передается широковещательная команда COMPARE (0b1010100100000000);
- если контроллер фиксирует ответное сообщение, значит есть светильники с меньшими адресами; таким образом запрашиваемый адрес снижается до тех пор, пока светильники перестанут отвечать;
- если ответ от светильника не был получен, адрес увеличивается на одну единицу и таким образом определяется светильник с наименьшим случайным адресом;
- после определения адреса светильника контроллер задает светильнику короткий адрес (0b10110111AAAAAAAA) и посылает команду WITHRAW (0b1010101100000000), которая исключает светильник из процесса поиска;
- далее контроллер переходит к поиску следующего светильника с большим случайным адресом;
- после завершения процесса инициализации контроллер посылает команду TERMINATE (0b1010000100000000), и светильники выходят из режима инициализации.
Источник: habr.com
Система управления освещением DALI: полное руководство
Хотите вывести управление освещением на новый уровень? Ознакомьтесь с нашим полным руководством по системе управления освещением DALI! В этом руководстве мы покажем вам, как настроить и использовать систему DALI для точного управления освещением. Кроме того, мы будем включать в себя советы и рекомендации, которые помогут максимально эффективно использовать вашу систему. Так что, будь вы новичок или эксперт, это руководство поможет вам!
Что такое система управления освещением DALI?
Как работает DALI?
Система DALI работает, отправляя команды через шину DALI на уникальные адреса светодиодных драйверов, которые контролируют конечный световой поток. Система в основном состоит из трех компонентов: источника питания шины DALI, устройств ввода управления и ПРА.
Давайте разберемся в компонентах системы DALI и в том, как они работают в гармонии.
Автобус DALI
Система DALI состоит из неполяризованного DALI автобус который является ядром всей сети. Двухпроводная шина передает командные сигналы от контроллеров ввода / приложений к принимающим устройствам (драйверам светодиодов).
Двусторонний протокол не только используется для управления освещением, но также помогает:
- Настройка всей системы освещения
- Выяснение того, какой светильник в здании неисправен
- Получение информации о текущих условиях освещения всех светильников
Блок питания DALI подает напряжение 16 В.
Устройства управления
Устройства управления делятся на два типа; контроллер приложения и устройство ввода. Кроме того, устройства управления могут совместно использовать функции обоих компонентов.
Контроллеры приложений
Контроллер приложения получает информацию, принимает решения и отправляет окончательные команды устройствам на принимающей стороне. Эти контроллеры могут обрабатывать информацию из различных источников, таких как устройства ввода, устройства внешней шины, ПРА и другие контроллеры.
Эти компоненты регулируют весь трафик данных в шинной системе.
Устройства ввода
Устройства управления вводом отправляют в систему освещения в режиме реального времени генерируемые пользователем команды. Эти простые устройства могут включать:
Датчики уровня освещенности: Такие компоненты определяют уровень освещенности в любой комнате или пространстве и регулируют цвета выходящего света для поддержания оптимального освещения. Датчики уровня освещенности лучше всего работают в тех случаях, когда необходимо идеальное сочетание дневного и искусственного света.
Датчики движения PIR / датчики присутствия: Такое устройство DALI включает лампы / группы освещения, обнаруживая движение.
Кнопки / ползунки: Используется для простых операций, таких как включение / выключение света или группы огней. Сюда также входят такие устройства, как цветные колеса.
Пластины регулятора яркости: Используется для регулировки затемнения
Таблички контроллера сцены: Используется для управления и настройки сцен
Системы управления зданием: Помогает управлять и контролировать освещение всего здания
Механизм управления
Принимающая сторона системы состоит из управляющего механизма, который в основном представляет собой DALI. Светодиодные драйверы которые обеспечивают светом лампы. Драйвер светодиодов DALI принимает команды от приложений / контроллеров ввода и подает на лампу требуемый ток. Сети DALI поддерживают различные драйверы светодиодов и балластные системы.
Адреса Дали
Каждому драйверу светодиода назначается уникальный адрес, который используется для управления этим драйвером. Адресные функции открывают новые горизонты управляемости. Мы можем сгруппировать несколько светильников и посылать им команды одновременно, или мы можем управлять отдельными светильниками.
Адреса позволяют гибко настраивать сцены и группировать. Мы также можем назначить определенные контроллеры устройств ввода, такие как датчики и переключатели, определенным осветительным приборам в соответствии с приложениями.
Каковы преимущества использования систем DALI?
Протоколы DALI предоставляют множество преимуществ, и мы перечислили их ниже.
- DALIаварийное освещение: Протоколы DALI предлагают аварийное освещение DALI (самопроверка), который уведомляет вас, когда какой-либо фитинг в системе не работает или неисправен. Это полезно для поддержки обширных проектов. Вместо того, чтобы просить команду технического обслуживания проверить каждую комнату на каждом этаже здания, интегрированная система управления зданием может быть подключена к DALI, и вы сможете определить аварийную ситуацию за несколько секунд.
- Двусторонняя система: Благодаря свойству двунаправленности сигналы отправляются туда и обратно, что позволяет устройствам в сети беспрепятственно обмениваться данными.
- Быстрая перенастройка: Одна из лучших особенностей устройств DALI заключается в том, что их можно легко и быстро настроить, если систему переместят в другое здание или другое пространство.
- Топология шины: Компоненты DALI могут быть подключены в любой топологии, например, звезда, дерево, шлейфовая линия и т. Д. (Подробнее об этом в разделе ниже, «как можно подключить Дали?»)
- Уменьшение длины кабеля: Источник питания шины 16 В используется для подачи питания на все подключенные соединения, что снижает потребность в отдельных источниках питания. DALI предлагает гибкую топологию и не имеет полярности, что приводит к снижению стоимости кабеля и повышению эффективности.
- Масштабируемость: Одна сеть DALI ограничена 64 устройствами. Вы можете распределить каждое устройство по 16 группам и 16 сценам. Для масштабных проектов мы можем управлять несколькими отдельными сетями DALI через общие системы управления. Только DALI может предложить такой обширный контроль.
- Переключение предустановок освещения: Вы можете загружать различные предустановки освещения в систему DALI и переключаться между ними с помощью одной кнопки. Например, вы можете создать индивидуальное освещение для вечеринок или встреч и переключаться между ними, когда захотите.
Где используются системы освещения DALI?
Система DALI используется для управления освещением в большие коммерческие и жилые площади там, где требуется автоматизация освещения. DALI обеспечивает гибкость управления как отдельными, так и сгруппированными системами освещения. Все это осуществляется центральным блоком управления, который дает вам доступ ко всем светильникам в здании.
Многие коммерческие предприятия предпочитают эту систему освещения. С помощью этого интеллектуального управления на одном этаже можно установить несколько систем освещения, настроенных в соответствии с требованиями отдельных офисов. Деловые центры, коммерческие офисы и производственные здания имеют уникальные потребности в освещении.
Эффективная система управления, такая как DALI, может обеспечить целостный контроль и удовлетворить эту уникальность. Его интеллектуальная двусторонняя связь дает вам возможность видеть систему освещения здания с высоты птичьего полета.
В наши дни домовладельцы также проявляют большой интерес к отличной управляемости DALI. В наши дни преобладает культура работы на дому, и если кто-то хочет преобразовать часть пространства из спальни в домашний офис, он может сделать это без дополнительных проводов и хлопот. Просто выберите различные конфигурации для конкретного светильника, и все готово.
Система DALI может быть установлена в существующую осветительную установку. Но из опыта видно, что лучше всего работает новая установка. Таким образом, вы можете избежать использования предыдущих схем управления и проводки. Это дает пользователю более простую, эффективную и чистую установку проводки.
Как DALI по сравнению с 1-10 В?
Драйверы DALI и 0 / 1-10V используются для регулировки яркости и управления. Светодиодные фонари. DALI использует цифровой подход, в то время как драйвер 1-10 В использует аналоговую систему. Подробное сравнение приводится ниже. Начнем с понимания основ.
Как работает драйвер 0-10В и 1-10В?
Типичный драйвер 0-10 В посылает аналоговый сигнал постоянного напряжения на светодиодную лампу. Уровень напряжения определяет светоотдачу. Яркость уменьшается до 0% при нулевом напряжении и достигает максимальной мощности, т. Е. 100% при 10 вольт.
1–10 В работает аналогично драйверу 0–10 В, но минимальное напряжение снижается только до 1 В. Это дает минимум 10% от исходной яркости. Чтобы пройти дальше, нужно выключить свет. Эта функция обеспечивает более плавный переход затемнения, давая вам больший контроль над атмосферой в помещении.
Как работает система освещения DALI?
«Digital Addressable Lighting Interface-DALI», проще говоря, цифровой диммер. Он обменивается данными с драйвером светодиода в цифровом виде, отправляя сигналы для выполнения команд. Контроллер DALI управляется через программное обеспечение. Мы уже обсуждали детальную работу схем управления освещением DALI выше.
Источник: ru.rclite.com