Print Friendly, PDF & Email

Как уже говорилось, логика работы устройств ZigBee (лампа, выключатель света, линия ввода/вывода, термостат) реализуется объектами приложения (Application Objects). Каждый объект приложения адресуется через свою конечную точку (endpoint) с определенным адресом. При этом для взаимодействия с одним объектом может использоваться целый набор различных атрибутов. Например, программная реализация термостата может включать атрибуты для температуры, минимальной температуры, максимальной температуры и допустимого отклонения. В спецификации ZigBee вводится понятие «кластер» (cluster) как средство группировки атрибутов по их назначению.

Кластер — это совокупность атрибутов и набора команд, которые предназначены для манипуляции этими атрибутами. То есть кластер является базовым функциональным блоком и задает определенную часть функциональности всего устройства, «по кирпичакам» собираемую из разных функциональных блоков. Общая функциональность устройства ZigBee определяется его типом и набором используемых кластеров. В структуре кластера выделяют две составляющих, отвечающих, соответственно, за прием или передачу команд (обе этих функции могут использоваться в приложениях ZigBee):

  • Кластер ввода (Input Cluster) или Серверный кластер (Server Cluster);
  • Кластер вывода (Output Cluster) или Клиентский кластер (Client Cluster).

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

Кластер вывода используется для отправки команд и получения ответов на них из соответствующего кластера ввода. Обычно это могут быть простые команды чтения/записи данных (атрибутов).

Для обеспечения совместимости устройств разных производителей в спецификация ZigBee введено понятие типа устройства (ZigBee Device Type) и определен набор стандартных типов устройств (например, Dimmable Light). В контексте спецификации тип устройства — это программный примитив, который определяет функциональность устройства. Сама эта функциональность затем предопределяет и набор кластеров, включаемых в соответствующий тип. Каждый такой кластер отвечает за определенную часть функционала (а-ка, Level Control) устройства. Типу устройства обычно соответствуют обязательные и опциональные кластеры, то есть устройство может быть построено с разными функциональными возможностями в зависимости от используемого набора опциональных кластеров. Каждый узел в ZigBee сети может содержать как одно, так и несколько разных типов устройств, каждому из которых будет соответствовать соответствующее приложение (ZDO), доступное чекрез свою конечную точку. В соответствии с требованиями спецификации ZigBee 3.0, любой узел должен поддерживать специальный стандартный тип устройства ZigBee Base Device (для этого типа не требуется выделения своей конечной точки), который обеспечивает выполнение базовых сетевых операций и поддерживает среду исполнения для использования других типов.

Кроме набора стандартных типов устройств существует и набор стандартных кластеров различного функционального назначения. Весь этот набор кластеров собран вместе в составе библиотеки ZigBee Cluster Library (ZCL), которую в новых редакциях стандарта стали называть уже универсальным языком для интернета вещей и переименовали в dotdot. Разработчики ZigBee устройств могут использовать программные примитивы из библиотеки ZCL в своих приложениях. Сама библиотека подробно описывается в отдельной спецификации.

Кластеры и типы устройств характеризуют внутреннюю программную архитектуру ZigBee-гаджета. Для определения свойств и функций всего физического устройства в целом вводится понятие Профиля приложения (ZigBee Application Profile). По сути, профиль приложения (или Профиль ZigBee) — это набор описаний, которые совокупно описывают устройство как программное приложение. Он является своего рода соглашением между различными устройствами о форматах и назначении передаваемых между ними сообщений. Профиль определяет порядок и формат передачи данных при выполнении соответствующих функций физическим устройством ZigBee. Профиль включает одну или несколько конечных точек (endpoints), каждая из которых привязана к своему кластеру и соответствующему набору атрибутов. Профиль описывает логические компоненты и их интерфейсы, определяя, в том числе, набор устройств различного типа, которые отвечают на поступающие команды и возвращают запрашиваемые данные в соответствии с исполняемыми функциями. В конечном счете, профиль не является каким-либо программным кодом. Но, например, именно профиль ZigBee Light Link (ZLL) делает возможным взаимодействие беспроводного выключателя одного производителя со светильником другого производителя.

Профили приложений ZigBee

Структура профиля ZigBee

Различают три типа профилей ZigBee: публичные (public или standart), частные (private) и опубликованные (published), которые по сути также являются частными.

Публичные профили описываются в спецификациях, которые разрабатывает и публикует ZigBee Alliance. Состав таких профилей постоянно обновляется. В системах домашней автоматизации получили распространение профили ZigBee Home Automation и ZigBee Light Link.

Профили приложений ZigBee

Частные профили создаются самими производителями устройств ZigBee и используются проприетарно. Если же производитель решает опубликовать описание своего частного профиля, то такой профиль и становится опубликованным (published).

Все профили имеют свой уникальный идентификатор (Profile ID). Такой идентификатор от ZigBee Alliance получают даже частные профили, создаваемые сторонними производителями.

Ниже приведен пример структуры профиля ZigBee Home Automation с двумя конечными точками для простого выключателя света.

Пример структуры ZigBee профиля Home Automation

Физическое устройство ZigBee может поддерживать сразу несколько профилей приложений. Кроме того, специальный профиль ZigBee Device Profile (ZDP), предназначенный для первичного распознавания устройств и обеспечения базовых сетевых функций, поддерживается всеми устройствами ZigBee.