Print Friendly, PDF & Email

Характерной особенностью Z-Wave является жесткая стандартизация от физического уровня, до уровня приложения. То есть стек протокола Z-Wave покрывает все уровни по классификации OSI, что позволяет обеспечивать совместимость устройств разных производителей при создании гетерогенных сетей.

Физический и канальный уровни

На физическом уровне (Physical Layer — PHY) передача данных Z-Wave осуществляется на частотах от 865 до 956 МГц, в диапазонах предусмотренных для соответствующей страны (региона). Модуляция FSK (частотная манипуляция) для скоростей передачи 42 кбит/с и 9.6 кбит/с или GFSK (частотная манипуляция с фильтром Гаусса) для скорости передачи 100 кбит/с. Скорость передачи — 100 кбит/с, 42 кбит/с и 9.6 кбит/с (для совместимости со старыми устройствами). Предельная мощность передачи 1 мВт (серия 300), 1,8 мВт (серия 400), 2,5 мВт (серия 500). Выделенные частоты для некоторых стран: 

  • 869,0 МГц (Россия)
  • 868,42 МГц (страны CEPT, Китай, Сингапур, ЮАР, ОАЭ)
  • 908,42 МГц (США, Канада, Мексика)
  • 921,42 МГц (Австралия, Бразилия, Новая Зеландия)
  • 868,1 МГц (Малайзия)
  • 865,2 МГц (Индия)
  • 919,82 МГц (Гонконг)
  • 951-956 МГц (Япония)

Полный перечень текущих частот и стандартов можно найти здесь.

Используемый в Z-Wave диапазон частот позволяет достигать очень хороших показателей «дальнобойности» по сравнению с такими конкурирующими технологиями как WiFi или Bluetooth, которые используют более высокие частоты, имеющие худшую проникающую способность. Это значит, что именно Z-Wave более удобен в больших домах и квартирах с толстыми стенами, где сигнал Bluetooth может просто «не пробивать» через препятствия. Отрицательной стороной этой медали является то, что именно Z-Wave наиболее подвержен атакам злоумышленников, находящихся вблизи, но не внутри дома, оснащенного Z-Wave оборудованием. Отсюда и проистекает особенное внимание к проблемам защищенности Z-Wave, которые были описаны ранее.

Канальный уровень протокола (Data Link Layer — DLL) включает два подуровня — управления доступом к среде (Media Access Layer — MAC) и управления логической связью (Logical link control — LLC), между которыми могут включаться так называемые адаптационные подуровни (adaptation layers) — маршрутизация по ячейкам (Mesh routing), сегментация и сборка (Segmentation and Reassebly), шифрование (Encryption) — возникающие вследствие использования различных функций на более высоких уровнях стека протокола (сетевой, транспортный, сеансовый). На MAC-подуровне действует асинхронный полудуплексный протокол с подтверждением передачи пакетов. Он оптимален для приложений, действующих в реальном времени, но не зависящих критически от времени исполнения. Протокол поддерживает взаимодействие по-запросу для обслуживания узлов с автономным питанием (от батареек). Пакеты данных MAC-протокола (MAC Protocol Data Units — MPDU) с целью повышения пропускной способности имеют всего один небольшой заголовок, который, однако, включает и несколько полей, используемых на более высоких уровнях стека.

К функциям MAC-подуровня относятся: выбор каналов, разрешение коллизий, контроль целостности, подтверждение доставки пакетов и повторная передача. Для выполнения таких функций в передаваемых пакетах данных содержатся специальные служебные поля, а сами пакеты могут передаваться в запросах разного типа (тип запроса также задается одним из служебных полей). На этом подуровне протокола Z-Wave используются пакеты с контролем целостности данных (на основе контрольной суммы) и адресацией получателя и отправителя. В качестве получателя может использоваться multicast- адрес или broadcast (в этом случае пакет принимается всеми участниками сети с включенным радио-модулем).

Каждая сеть (домен) Z-Wave определяется уникальным 32-битным параметром Home ID (по сути это уникальный идентификатор домена), который генерируется при создании сети генератором случайных чисел или назначается Sigma Designs (для старых контроллеров). На одной территории может сосуществовать несколько сетей Z-Wave с разными Home ID. При этом они не будут друг друга видеть и друг с другом взаимодействовать. Благодаря обязательному требованию скважности (не более 1% времени находиться в состоянии передачи), эти сети не мешать работе друг друга.

Для обеспечения маршрутизации сообщений у каждого узла в сети есть свой уникальный (в рамках конкретной сети) 8-битный идентификатор Node ID, который присваивается первичным контроллером при включении устройства в сеть. Также при включении в сеть включаемое устройство запоминает Home ID первичного контроллера для дальнейшего общения. Всего каждая сеть Z-Wave может содержать до 232 устройств.

Подуровеь управления логической связью (LLC) предназначен для обеспечения связи канального и сетевого уровней протокола. На нем обеспечивается инкапсуляция при многоканальной передаче (Multi-Channel encapsulation). Это необходимо, поскольку на физическом уровне для обеспечения быстрой и надежной передачи данных используется одновременно три канала.

До 2012 года описания физического и канального уровней протокола Z-Wave не были публично доступны. Энтузиасты по всему миру занимались реверс-инжинирингом этого протокола, например, в таком известном проекте как OpenZWave. В 2012 году владелец технологии Z-Wave компания Sigma Designs опубликовала полные описания данных уровней, и физический и канальный уровни (а также частично и транспортный уровень) протокола Z-Wave вошли в международный стандарт ITU-T G.9959 (рекомендации сектора стандартизации электросвязи Международного союза электросвязи). Описания других уровней протокола Z-Wave были опубликованы в 2016 году.

Сетевой уровень

Относительно недавно (в 2016 году) в открытом доступе были опубликованы описания сетевого и транспортного уровней протокола Z-Wave, описывающие маршрутизацию, сегментацию, шифрование. Именно эти уровни покрыты множеством патентов Sigma Designs и обеспечивают стабильность работы больших сетей Z-Wave.

Сеть с ячейстой топологиейВ обычной беспроводной сети с центральным контроллером (такой, например, как сеть WiFi) требуется, чтобы этот контроллер имел возможность установления непосредственной связи с каждым узлом или устройством сети. В сетях Z-Wave такое ограничение отсутвтует. Z-Wave — это ячеистая сеть (mesh network), где каждый узел знает окружающие его узлы и может направлять через них пакеты. При этом каждый отдельный узел может работать как повторитель. То есть, если какой-то из узлов не доступен контроллеру напрямую, то через цепочку узлов-повторителей он может проложить маршрут (route) к нужному узлу (на пути следования может содержаться до 4 узлов повторителей). Использование маршрутизации по ячейкам (Mesh routing) позволяет успешно обходить препятствия, не позволяющие определенным узлам взаимодействовать напрямую. Broadcast и multicast пакеты не маршрутизируются. Учитывая предельные расстояния между устройствами 10-30 метров (до 100 метров для устройств 700 серии) в прямой видимости (зависит от антенн), можно сказать, что предельная дальность доставки пакета в сети Z-Wave составляет 40-120 метров (до 400 метров для устройств 700 серии). Естественно при прохождении перекрытий и стен мощность сигнала существенно падает, что приводит и к уменьшению дальности передачи. На практике 4 этажный дом с общей площадью в 500-1000 квадратных метров — это предел одной сети протокола Z-Wave с качественной передачей данных. Дополнительным ограничителем тут служит невозможность включения в одну сеть более 232 устройств.

Переустройства планировки, перестановки мебели и другие изменения в обстановке, а также выход из строя отдельных узлов могут привести к появлению нерабочих маршрутов. Для этого их нужно периодически обновлять. Первичный контроллер может это делать профилактически раз в неделю или по запросу пользователя. Но в протоколе Z-Wave есть и другое средство для замены нерабочих маршрутов рабочими, появившееся начиная с версии протокола 4.5 (под версией протокола принято понимать номер версии SDK для разработчиков, которые распространяет Sigma Designs). Если узел не смог достучаться до точки назначения, он посылает всем соседям, которые могут участвовать в пересылке пакетов между другими участниками сети (к ним не относятся спящие и часто слушающие узлы), специальный пакет Explore Frame. Те в свою очередь распространяют его дальше по сети, пока какой-нибудь узел не скажет, что искомый узел нашёлся у него в прямой видимости. Таким образом отправитель найдёт новый маршрут и запомнит его в своих таблицах. Данный метод менее экономный, чем централизованное обновление маршрутов всей сети: для обхода умершего узла требуется, чтобы каждый узел обновил каждый маршрут, идущий через нерабочий, путём посылки Explorer Frame. Кроме того, использование Explorer Frame занимает около 0,5-1 секунды, и на это время сеть забивается этими пакетами. Вывод простой: необходимо обновлять маршруты после изменения топологии сети и перестановок мебели или использовать только устройства, основанные на версиях протокола 4.5x, 6.x и более поздних (версия 4.5 вышла после версии 5.0, которая не поддерживала Explore Frame).

Транспортный и сеансовый уровни

На данных уровнях Z-Wave реализуется шифрование (определяются короткие сеансы с одноразовым ключом) и обеспечивается сегментация и сборка при передаче больших блоков данных. Некоторые источники относят сюдя также и функции подтверждения доставки и повторнай отправки в случае, если пакет не был доставлен до получателя, контроля целостности данных (на основе контрольной суммы) и использования multicast или broadcast вещания, которые, однако, согласно стандарта ITU-T G.9959 являются функциями канального уровня стека протокола.

В силу того, что по своей природе протокол Z-Wave является асинхронным, на транспортном уровне имеется подуровень сегментации и сборки (Segmentation and Reassembly — SAR). На этом подуровне обеспечивается разбиение поступающих данных (датаграмм) на пакеты. которые по своему размеру соответствуют допустимой длине пакета на MAC-подуровне (MAC Protocol Data Units — MPDU). Соотвественно на принимающей стороне из принятых MPDU-пакетов происходит обратная сборка в датаграммы канального уровня (Data Link Protocol Data Unit — DLPDU).

Формат пакетов на различных уровнях протокола Z-Wave

Уровень приложения

Z-Wave также определяет алгоритм интерпретации команд, получаемых на уровне приложения. Данный уровень описан набором классов команд (Command Classes). Для некоторых Классов существует несколько вариантов интерпретации команд, которые зависят от класса устройства (Device Class), определяющего тип устройства. Все команды в Z-Wave предельно компактно упакованы. Это нужно для уменьшения размера пакета, что положительно влияет на занимаемое в эфире время, а также на уменьшение потерь при передаче. Z-Wave предназначен для передачи коротких команд без открытия сессии, то есть совсем не приспособлен для потоковой передачи данных.

  • Commad Classes (классы команд). Все данные уровня приложения передаются в виде коротких пакетов вида: « Command Class ID • Command ID • <специфические данные для команды> ». Сначала идёт класс команды, потом команда в этом классе, далее данные специфичные для этой команды. Благодаря строгому стандарту, описывающему классы команд, устройства разных производителей могут понимать друг друга без каких-либо проблем.
  • Device Class (класс устройства). Каждое реальное устройство характеризуется своим функциональным типом или классом устройства (Device Class). Каждый такой класс определяет обязательные классы команд, поддерживаемые устройством, и способы интерпретации этих команд. Например, команды класса команд Basic могут совершенно по-разному интерпретироваться для различных устройств: для двухпозиционного реле команда Basic Set 0 выключает, а Basic Set 1...99 или 255 включают реле, в то время как для термостата эти же команды могут интерпретироваться как устанавливаемая температура в единицах или 1/10 градусов Цельсия, то есть от 0 до 255 или от 0 до 25.5 градусов, соответственно. Все остальные классы команд чётко прописаны вплоть интерпретации каждой команды. Список поддерживаемых каждым конкретным устройством классов команд содержится в пакете описания устройства (Node Information Frame — NIF). Этот пакет приходит первичному контроллеру при включении нового устройства в сеть, а также при нажатии один или три раза на кнопку (у большинства устройств, см. документацию к конкретному устройству). Благодаря ему первичный котроллер и взаимодействующее с ним ПО может определить класс устройства (Device Class) и список его возможностей.