Реализация стандартного профиля ZigBee Home Automation на базе платформы Ember. Часть 1
Кластеры и профили ZigBee
Спецификация профиля определяет набор стандартных устройств и все параметры, необходимые для их совместной работы на разных уровнях взаимодействия. На уровне стека протоколов ZigBee регламентируются, например, такие характеристики, как способы задания идентификационных параметров сети, режимы образования сети, режимы защиты данных. Совместимость на уровне стека позволяет устройствам работать в одной сети и обмениваться между собой сообщениями. Однако этого недостаточно для того, чтобы эти устройства понимали друг друга на уровне приложения. Для обеспечения совместимости на уровне приложения требуется некий стандартный язык общения между беспроводными устройствами одного и того же назначения. Для реализации этой задачи была разработана библиотека ZigBee-кластеров (ZCL-ZigBee Cluster Library) [2]. Этот документ вводит понятие стандартных типов устройств, стандартных команд для этих устройств, специфицирует наборы стандартных атрибутов, диапазоны значений этих атрибутов и типы данных для задания значений атрибутов. Набор связанных атрибутов и команд, определяющих свойства объекта и методы работы с ним, получил название кластер. Например, для стандартного устройства «лампочка» определен кластер «включить/выключить»(On/Off), содержащий следующие атрибуты и команды:
- стандартный атрибут — состояние (горит/не горит);
- стандартные команды — включить, выключить, изменить состояние на противоположное.
Кластер оказывается разделенным на две части — серверную и клиентскую. Две его части находятся на разных устройствах (рис. 1). Сервером является узел, который хранит значение атрибута (в нашем случае это лампочка), а клиентом — устройство, которое генерирует команду на изменение или считывание атрибута (в нашем примере это выключатель).
Одно и то же устройство может содержать клиентские части одних кластеров и серверные части других. Например, выключатель в нашем примере может дополнительно содержать серверную часть кластера “On/Off switch configuration” (конфигурация выключателя), при помощи которого он будет получать информацию о режимах своей работы от конфигурирующего устройства (рис. 2).
Большинство кластеров поддерживают механизм передачи отчетов. Отчеты — это сообщения, регулярно передаваемые одним из устройств в сети на узел сбора данных, которые несут в себе информацию о текущем значении какого-либо атрибута одного из кластеров этого устройства. Отчеты отсылаются через определенные интервалы времени или после изменения значения какого-либо атрибута.
Профиль Home Automation
Профиль Home Automation специфицирует стандартные типы устройств домашней автоматизации и стандартные типы сообщений, определяющие протокол взаимодействия между ними. Он регламентирует работу таких механизмов, как устройства управления осветительным оборудованием, системами кондиционирования, отопления, вентиляции и т. д., а также предусматривает возможность взаимодействия с другими стандартными ZigBee-профилями. Так, взаимодействие с профилем Smart Energy позволяет обеспечить беспроводную связь между устройствами домашней автоматизации и измерительной аппаратурой инфраструктуры коммунальной службы, занимающейся учетом потребления воды, газа, электрической энергии.
Списки некоторых кластеров и стандартных устройств, используемых в профиле Home Automation, представлены соответственно в таблицах 1 и 2.
Кластеры общего назначения | |
Basic | Базовый |
Power configuration | Настройка параметров питания/мощности |
Device Temperature Configuration | Температура устройства |
Identify | Идентификация |
Groups | Групповые настройки |
Scenes | Сценарий |
On/Off | Вкл./выкл. |
On/off switch configuration | Настройка состояний вкл./выкл. |
Level control | Управление уровнем |
Alarms | Тревога |
Time | Время |
Освещение | |
Color control | Управление цветом |
Жалюзи | |
Shade Configuration | Настройка параметров жалюзи |
Отопление, вентиляция, кондиционирование | |
Pump Configuration and Control | Настройка и управление насосами |
Thermostat | Термостат |
Fan Control | Управление вентилятором |
Thermostat User Interface Configuration | Интерфейс пользователя для настройки термостата |
Устройства общего назначения | |
On/Off Switch | Переключатель |
Level Control Switch | Включатель с регулировкой уровня |
On/Off Output | Исполнительное реле |
Level Controllable Output | Исполнительное устройство с регулировкой уровня |
Scene Selector | Устройство управления сценариями |
Configuration Tool | Инструмент настройки |
Remote Control | Пульт управления |
Combined Interface | Устройство комбинированное интерфейсное |
Range Extender | Расширитель зоны охвата |
Mains Power Outlet | Сетевая розетка |
Освещение | |
On/Off Lig | Лампочка вкл./выкл. |
Dimmable Light | Лампочка-диммер |
Color Dimmable Light | Цветная лампочка-диммер |
On/Off Light Switch | Переключатель |
Dimmer Switch | Переключатель-диммер |
Color Dimmer Switch | Переключатель-«диммер» с регулировкой цвета |
Light Sensor | Датчик освещенности |
Occupancy Sensor | Датчик присутствия |
Жалюзи | |
Shade | Жалюзи |
Shade Controller | Устройство управления жалюзи |
Каждое устройство подробно описано в спецификации профиля. В описании имеется перечень обязательно и опционально поддерживаемых кластеров, а также перечень функциональных особенностей устройства.
ZigBee-узел способен выполнять функции нескольких стандартных устройств. Например, на одном узле беспроводной сети могут быть реализованы «датчик освещенности» и «переключатель света». В этом случае считается, что приложение узла имеет две конечные точки. Данные, полученные ZigBee-узлом, адресуются одному или другому устройству в зависимости от указанного адреса конечной точки.
Программные средства компании Ember для разработки приложений, поддерживающих стандартные профили ZigBee
Компания Ember к своим приемопередатчикам предлагает набор программных средств для разработки устройств, реализующих стандартные профили ZigBee. Процесс разработки с использованием этого набора для системы на кристалле EM250 показан на рис. 3.
Набор включает в себя следующие компоненты:
- Стек EmberZNet — встраиваемая библиотека EmberZNet, реализующая все уровни стека ZigBee PRO.
- Каркас приложений — исходные коды демонстрационных проектов, входящие в состав пакета EmberZNet, которые содержат реализацию всех стандартных устройств и кластеров профиля Home Automation. Существует механизм отключения-подключения необходимых кластеров при помощи директив препроцессора. Пакет EmberZNet содержит семь готовых проектов с соответствующими настройками конфигурационных файлов для устройств следующих типов: термостат, температурный сенсор, лампочка-диммер и переключатель лампочки-диммера, электрическая розетка, нагреватель/охладитель, пульт управления.
- Application Builder — программа-генератор конфигурационных файлов [3]. Эта программа, используя каркас приложений, определяет, какие порции исходных кодов будут входить в проект для реализации требуемых стандартных операций, а какие нет. Результатом работы программы Application Builder являются конфигурационные заголовочные файлы и файлы проекта для соответствующего компилятора, в зависимости от используемой аппаратной платформы.
- xIDE for EM250 — интегрированная отладочная среда (IDE) для кристалла EM250, которая содержит менеджер проекта, редактор текста, ассемблер, компилятор, линковщик и отладчик.
Как уже говорилось, спецификация любого стандартного профиля определяет множество параметров, в соответствии с которыми должны быть сконфигурированы беспроводные устройства, работающие в одной ZigBee-сети и имеющие общий профиль приложения. Таким образом, сложность разработки в основном состоит в том, чтобы правильно задать все конфигурационные параметры. Предлагается два варианта решения данной задачи:
- Использовать примеры готовых проектов и модифицировать их в среде xIDE.
- С помощью программы Application Builder задать конфигурацию нового устройства и cгенерировать новый проект для xIDE.
Остановимся более подробно на втором варианте. Основное окно программы Application Builder (рис. 4) содержит 3 вкладки: ZCL cluster configuration, Stack configuration и HAL configuration. Вкладка ZCL cluster configuration позволяет производить настройки уровня приложения (тип ZigBee-устройства, кластеры, атрибуты). Во вкладке Stack configuration задается конфигурация стека (параметры, определяющие политику безопасности устройства, настройки радиоинтерфейса физического уровня, установки конечной точки, временные интервалы энерго сберегающих режимов для спящих устройств). Вкладка HAL configuration определяет настройки уровня аппаратной абстракции стека EmberZNet (выбор микросхемы приемопередатчика, для которой разрабатывается проект, конфигурирование входов и выходов, режим работы последовательного порта, выбор набора команд интерфейса командной строки).
Текущая конфигурация и настройки могут быть сохранены в конфигурационном файле с расширением .isc. Т.е. при желании их можно загрузить в Application Builder и вновь использовать. После того как все конфигурационные параметры определены, посредством нажатия кнопки Generate генерируются два заголовочных файла с расширением .h и два файла проекта для среды разработки xIDE с расширениями .xip и xiw. Итоговый проект реализует все основные операции в сети ZigBee PRO, такие как образование сети, присоединение к сети, ретрансляция данных и прочее. Он также выполняет все операции, связанные с функционированием ZigBee-кластеров: формирование, обработка стандартных ZCL-команд, запись, изменение и чтение атрибутов, отправка и прием отчетов.
Кроме того, проект содержит интерфейс командной строки, позволяющий управлять устройством через последовательный порт. С помощью этого интерфейса пользователь может сформировать и отправить любую стандартную ZCL-команду. Это позволяет изучать ZCL-команды путем ввода их через последовательный интерфейс, наблюдая, что при этом происходит.
Дальнейшая разработка проекта сводится к добавлению пользовательского кода, относящегося непосредственно к разрабатываемому приложению, в среде xIDE for EM250, в том числе кода, интерпретирующего значения атрибутов кластеров в соответствии с функциональными особенностями разрабатываемого устройства.
Итак, процесс разработки приложений, реализующих стандартный профиль ZigBee, состоит из следующих шагов:
- задание конфигурации (при помощи Application Builder);
- генерация заголовочных фалов (при помощи Application Builder);
- добавление пользовательского кода в среде xIDE for EM250;
- компиляция исходных кодов со встраиваемой библиотекой EmberZNet.
Заключение
Устройства, разработанные описанным выше способом, могут быть использованы совместно с устройствами других производителей, поддерживающих профиль Home Automation. Однако право использовать логотип ZigBee на упаковке производитель получает только после того, как данная продукция пройдет сертификацию на соответствие технологии. Сертифицирующие организации тестируют устройства на совместимость с Zigbee PRO путем проверки их способности работать совместно в одной сети с устройствами-эталонами, выполненными на базе платформ, получивших статус Golden Suite. Платформа Ember имеет такой статус. Поэтому ее использование при разработке устройств позволяет пройти сертификацию на соответствие спецификации ZigBee PRO быстро и без проблем.
- ZigBee Home Automation Public Application Profile, October 27, 2007, www.zigbee.org.
- ZigBee Cluster Library Specification, October 19, 2007, www.zigbee.org.
- Introducing AppBuilder. Application Note 5056. 23 September 2008, 120-5056-000B