Основы построения сети Z-WAVE
Типы устройств Z-Wave
Контроллеры и периферийные устройства
В маркетинговых целях принято говорить, что сеть Z-Wave имеет ячеистую (mesh) структуру, но это не совсем так. На самом высоком уровне сеть представляет собой «звезду» с некоторыми допущениями. Во-первых, центр у такой структуры может быть распределенным. T.е. в сети может быть больше одного контроллера, к которому сходятся маршруты от периферийных исполнительных устройств и датчиков. Во-вторых, ячеистую сеть между собой образуют только периферийные устройства, не включая контроллер. Центральная роль в сети (в том числе функции маршрутизации) тоже отводится контроллеру: без него сеть не может существовать. Поэтому две эти группы устройств стоит рассмотреть отдельно.
Контроллеры и их роль
Сеть Z-Wave в обязательном порядке имеет ровно один центральный контроллер. Его роль — сообщать присоединяемым устройствам уникальный идентификатор сети Home ID и присваивать номер узла Node ID. Уникальный идентификатор сети «жестко» прописывается производителем в памяти контроллера (вернее, в чипе на плате Z-Wave, который содержит информацию о том, что устройство может выполнять роль центрального контроллера, и уникальный номер сети) и контролируется отраслевым консорциумом Z-Wave Alliance. Собственно, принадлежность к сети и адрес внутри нее определяются соответственно идентификатором Home ID и номером Node ID.
Если контроллер в качестве Home ID использует значение, предустановленное производителем, то это центральный контроллер. Если мы присоединяем контроллер к уже существующей сети, то он получит статус вторичного контроллера и будет использовать тот Home ID, который ему сообщит центральный контроллер. Тем не менее, заводское значение Home ID у контроллера не перезаписывается, и его всегда можно будет использовать для построения новой сети, если возникнет такая необходимость. Структура типа «звезда» в построении сети определяется еще и тем, что контроллер — единственное устройство в сети Z-Wave, которое хранит и по необходимости обновляет полные таблицы маршрутизации. Таблицы фактически представляют собой графы связей в сети, а также содержат информацию о последнем удачно использованном маршруте сообщений для каждой точки, который и используется по умолчанию. Вторичные контроллеры тоже хранят карту сети, но получают ее только от центрального контроллера, причем с некоторым опозданием. Об этой задержке важно помнить, поскольку отправляемые сообщения содержат информацию для пересылающих устройств о маршруте, который должно пройти сообщение.
Контроллеры: хранят Home ID; присваивают Node ID; строят и хранят карту маршрутов сети.
Типы периферийных устройств
Периферийные устройства: получают Home ID и Node ID от контроллера в процессе добавления; могут знать адреса (Node ID) соседних модулей.
Модули с постоянным питанием
Модули с постоянным питанием от электросети — та часть сети Z-Wave, которая создает ячеистую структуру и участвует в маршрутизации. Модули могут держать радиочип постоянно включенным и поэтому используются контроллером для пересылки команд и укрепления связности сети. Кроме того, постоянно включенные модули «знают» своих соседей и могут обновлять данные о них. Именно эти устройства увеличивают ограниченную мощность радиосигнала сети и зону покрытия. Постоянное питание имеют как правило встраиваемые реле и диммеры, поэтому мощность работающих радиомодулей на порядки меньше коммутируемой нагрузки и в абсолютных величинах обычно не превышает 0.4 Вт. Задача этих устройств в сети Z-Wave — постоянно слушать радиоэфир и, при полученииадресованной им команды, переправлять ее дальше в зависимости от прописанного маршрута.
Модули с постоянным питанием: постоянно включен радиомодуль, знают «соседей» и передают им сообщения, участвуют в построении сети Z-Wave; обычно это реле, диммеры, шаттеры и термостаты; потребляют до 0.4 Вт.
«Слушающие» модули с питанием от батарей
Модули с питанием от батарей не участвуют в передаче сигналов сети Z-Wave и являются конечными точками в топологии. «Слушающие» модули экономят заряд своей батареи за счет того, что меньшую половину времени держат радиомодуль включенным, а большую — выключенным. При этом получается, что устройство работает с небольшой задержкой, т.к. получает (и, соответственно, выполняет) команды только в период, когда радиомодуль включен. Тем не менее, мы можем быть уверены, что приняв команду, устройство выполнит ее в течение 1–2 с. Работа с автономным питанием в сети Z-Wave подразумевает наличие «почтового ящика» у контроллера для каждого устройства. В нем хранятся отложенные и предназначенные к отправке устройству команды. Их отправка произойдет, когда начнется сеанс связи с устройством. Достаточно несколько раз в течение пары секунд отправить эти команды, чтобы попасть в период, когда модуль «слушает». В таком формате работают исполнительные устройства, к которым сложно подключить постоянное питание. Классический пример — приводы дверных замков, для которых важно совместить мощное исполнительное устройство и автономную схему питания. Типичное время работы на одном заряде батареи – порядка 2–3 месяцев. Все автономные устройства отчитываются об уровне заряда батареи, так что ее разряд не станет неожиданностью для пользователя.
«Слушающие» модули с автономным питанием раз в две секунды включают радиомодуль, не участвуют в построении сети Z-Wave; обычно это дверные замки и другие автономные приводы; работают от одного заряда батареи больше месяца.
«Спящие» модули с питанием от батарей
«Спящие» модули с питанием от батарей не участвуют в передаче сигналов сети Z-Wave и являются конечными точками в ее топологии. Модули экономят заряд своей батареи за счет того, что примерно раз в полчаса включают радиомодуль, а все остальное время держат его выключенным. Кроме того, они отключают многие свои функции и переводят процессор в режим пониженного энергопотребления. Поэтому устройство отвечает с большой задержкой, т.к. получает (и, соответственно, выполняет) команды только в период, когда радиомодуль включен. Он включается на определенное короткое время (около нескольких секунд) и только после получения сигнала Wake-Upот контроллера. Мы можем рассчитывать только на то, что после срабатывания некоторых датчиков (определенных производителем) модуль проснется и отправит отчет контроллеру. Для некоторых функций период отправки отчета может достигать получаса. Работа модулей с автономным питанием в сети Z-Wave подразумевает наличие у контроллера «почтового ящика» для каждого устройства. В этом хранятся отложенные и предназначенные к отправке устройству команды. Отправка всех этих команд произойдет, когда начнется сеанс связи с устройством. В случае со «спящими» устройствами нужно довольно долго ждать сообщения об их «пробуждении» и попытаться быстро отправить эти команды, чтобы попасть в период, когда модуль «слушает». Большинство производителей предусматривают принудительное «пробуждение» модуля кнопкой для быстрой отправки ему настроек и команд. В таком формате выполняются датчики, к которым сложно подключить постоянное питание. Пример — датчик протечки: обычно важным считается отправка сообщения «протечка», а дополнительные данные о температуре, влажности и заряде батареи отправляются редко по расписанию «пробуждений». Типичное время работы “спящего” модуля на одном заряде батареи – от года и больше. Все автономные устройства отчитываются об уровне заряда батареи, так что ее разряд не станет неожиданностью для пользователя.
«Спящие» модули с автономным питанием: примерно раз в час включают радиомодуль для отправки отчетов (по срабатыванию датчика отправляют моментально), не участвуют в построении сети Z-Wave; обычно это датчики движения, протечки, освещенности, открытия двери/окна и т.д.; работают больше года от одного заряда батареи.
Основы обмена информацией между модулями
Для правильной настройки сети полезно знать в общих чертах, какие сообщения отправляют модули контроллеру и наоборот. Это поможет лучше понять структуру сети и принципы ее настройки.
Добавление в сеть/исключение из сети
- В первую очередь для добавления в сеть (иначе говоря, для того чтобы модуль определял себя как часть сети с конкретным контроллером), модуль должен получить Node ID и Home ID.
Home ID — идентификационный номер контроллера, уникальный для каждого устройства. Получив этот ключ, модуль уже считается принадлежащим сети.
Node ID — порядковый номер модуля, его адрес в сети. Контроллер следит за тем, чтобы адреса не дублировались и выдает их, как правило, по порядку. - Далее, для отправки сообщений через подключенный модуль нужно обновить карту сети. Для этого достаточно отправить модулю команду опроса «соседей» с постоянным питанием. Только что подключенный модуль отправляет специальные команды «эхо» всем вокруг и ждет подтверждений. Каждый ответ-подтверждение получения будет содержать Node ID отправителя и позволит понять, с какими модулями мы можем связаться напрямую. Эта информация собирается и отправляется контроллеру для обновления карты сети.
- Теперь модуль будет отвечать на команды контроллера (после получения Home ID), распознавать свой адрес (Node ID) и в случае с модулями с постоянным питанием передавать сообщения по сети соседям (список соседей есть у контроллера). После этого контроллер отправляет конфигурационные параметры модулю, прописывает его в своей базе данных и отображает в интерфейсе; мы видим сообщение об успешном добавлении модуля в сеть Z-Wave.
Принципы маршрутизации сообщений в сети
Отправка сообщений в сети Z-Wave отражает её контроллероцентричную структуру типа «звезда». Принцип маршрутизации обозначается как «определяемый источником» (Source Routing).
- Таблица маршрутизации хранится только в одном месте — на центральном контроллере. Модулям в явном виде и полностью таблица маршрутизации недоступна. Модули с постоянным питанием знают только «соседей». Доступ к таблице маршрутизации имеют только вторичные контроллеры: одна из их важнейших функций как раз и заключается в том, чтобы периодически скачивать таблицу с центрального контроллера, но менять её сами не могут.
- При такой централизации возникает вопрос: как сообщения отправляются по сложным маршрутам? Маршрут записывается в явном виде в сообщении, т.е содержит цепочку адресов модулей, через которые надо переслать команду. Эта цепочка составляется контроллером и также используется в обратном порядке для получения ответа от модуля.
- Маршрут выбирается из нескольких возможных простейшим способом — используется последний сработавший маршрут (LWR, Last Working Route). В случае ошибки или отсутствия подтверждения после нескольких попыток передачи контроллер заново запускает процесс опроса соседей всех устройств через специальные команды Explorer Frames, перестраивает карту сети и обновляет маршруты.
Основные преимущества использования Source Routing
- Предсказуемость: маршрут управляется только контроллером, центральный контроллер в системе только один.
- Гарантия отсутствия петель: если бы путь в mesh-сети выбирали модули, то существовал бы риск замыкания маршрута в бесконечную петлю.
- Надежность: модули максимально освобождены от вычислительной работы при пересылке сообщений. Кроме того, модуль может быстро и легко определить одно из двух действий — принять и выполнить команду или передать ее дальше.
Длительность передачи сообщений в типичной сети Z-Wave по результатам тестов Z-Wave Alliance такова:
- Прямой маршрут от контроллера до модуля в прямой видимости — 170 мс.
- Маршрут от контроллера до модуля через репитеры — 350–1270 мс.
Перестройка маршрута с Explorer Frames и отправка команды — 4000 мс.
Типы сообщений в сети Z-Wave
По типу команды
Чтобы лучше понимать, какие команды доступны модулю, важно различать типы команд.
- GET
Запрос. Отправляется по инициативе контроллера, чтобы получить данные от датчика. В ответ датчик отправляет контроллеру числовые данные.
GET — это показания датчиков в соответствии с выставленными параметрами, например значение температуры от Qubino On/Off Thermostat. - SET
Команда. Отправляется по инициативе контроллера, чтобы установить значение некоторого параметра модуля. В ответ модуль отправляет контроллеру подтверждение.
SET — это команда управления модулем, например включения реле Qubino Flush 1 Relay - REPORT
Отчет. Отправляется по инициативе датчика при его срабатывании или важном изменении показаний сенсоров. Датчик отправляет контроллеру числовые данные. Отчеты бывают двух видов: BINARY/NOTIFICATION — двоичный, срабатывание; MULTILEVEL — значение, показания сенсора.
REPORT — это показания датчиков в соответствии с выставленными параметрами либо сигнализация о срабатывании, например от датчика Philio PST-02.
По типу адресации
Singlecast
Команда от одного контроллера/модуля к другому конкретному модулю. Например, при включении определенного реле по маршруту отправляется команда именно этого типа.
Singlecast — команда одному модулю, с маршрутом, с подтверждением.
Multicast
Команда от одного контроллера/модуля нескольким модулям напрямую. Отправляется при использовании ассоциаций, не требует подтверждения, не маршрутизируется.
Multicast — команда нескольким модулям в прямой доступности, без маршрута, без подтверждения. Вслед за отправкой с контроллера команды Multicast каждому модулю можно отправлять команду Singlecast.
Broadcast
Команда всем модулям напрямую. Используется очень редко при опросе сети с использованием Explorer Frames.
Broadcast — работает как Multicast, при штатной работе не отправляется.