SIG Mesh или свой протокол? Как подключать Bluetooth-устройства к шлюзу
Своя реклама, прямой BLE, собственная сеть или SIG Mesh: протокол и сертификация — разные вопросы. Почему стандартные модели важны для шлюза Matter и какие есть ограничения.
В предыдущей статье мы запустили Matter-половину шлюза, обойдясь одним компьютером и телефоном. Теперь очередь второй половины: на каком протоколе шлюз должен общаться с Bluetooth-устройствами?
Раньше наши устройства работали по собственному рекламному протоколу Bluetooth и управлялись из нашего же приложения. Эта схема долго работала без сбоев. Поэтому в самом начале проекта в команде прозвучал вопрос: а нужен ли нам вообще SIG Mesh?
Вопрос заслуживает отдельной статьи, потому что «обойтись без SIG Mesh» можно двумя совершенно разными способами, а последствия у них разные.
Что значит «обойтись»?
Вариант первый: не использовать протокол SIG Mesh. Устройства остаются на проприетарном рекламном протоколе, и шлюз говорит на нём же.
Вариант второй: использовать протокол SIG Mesh, но не проходить квалификацию Bluetooth SIG. С технической стороны следуем стандарту, просто не регистрируемся в SIG и ничего ему не платим.
Первое — технический выбор, второе — вопрос соответствия требованиям. Многие споры заходят в тупик именно потому, что эти два вопроса смешивают. Сначала разберёмся с технологией, а квалификацию оставим на потом.
Четыре способа связать устройства со шлюзом
| Подход | Покрытие | Число устройств | Совместимость | Безопасность | Трудозатраты |
|---|---|---|---|---|---|
| Проприетарная реклама | Только вокруг шлюза, без ретрансляции | Жёсткого лимита нет | Только ваши собственные изделия | Всё на вас | Небольшие |
| Прямые BLE-соединения (каждое устройство подключается к шлюзу) | Только вокруг шлюза | Ограничено числом одновременных соединений, обычно около десятка | Средняя | Стандартное шифрование | Средние |
| Самодельная проприетарная mesh-сеть | Ретрансляция возможна | Зависит от реализации | Только ваши собственные изделия | Всё на вас | Очень большие |
| SIG Mesh | Ретрансляция, покрытие всего дома | Сотни узлов без проблем | Работает между разными производителями | Стандартное шифрование и защита от повторов | Средние, в основном внутри SDK чипа |
Проприетарная реклама — самый простой вариант: чтобы включить лампу, шлюз рассылает команду, и устройство её выполняет. Но ретрансляции нет. Если шлюз стоит в гостиной, лампа в спальне может его просто не услышать. Привязку устройств к сети, шифрование и защиту от повторов придётся проектировать и поддерживать самим.
Прямые BLE-соединения работают так же, как телефон с беспроводными наушниками. Шифрование стандартное, но шлюз способен держать лишь ограниченное число соединений одновременно, а это и близко не покрывает десятки выключателей и ламп в обычном доме.
Самодельная проприетарная mesh-сеть — это изобретение SIG Mesh заново. Борьба с лавиной ретранслируемых пакетов, дедупликация сообщений, ротация ключей, защита порядковых номеров от повторного воспроизведения: каждый из этих пунктов — ловушка. В первые годы многие производители строили собственные mesh-сети, но большинство из них с тех пор перешли на SIG Mesh.
SIG Mesh — стандарт Bluetooth SIG. Устройства ретранслируют сообщения друг за друга и покрывают весь дом, модель безопасности уже готова, а главное — определён стандартный набор моделей устройств.
Главная ценность SIG Mesh: стандартные модели
SIG Mesh описывает, как представлять и как управлять распространёнными устройствами вроде выключателей и ламп:
| Модель SIG Mesh | Устройство | Аналог в Matter |
|---|---|---|
| Generic OnOff | Выключатели, розетки | On/Off Light |
| Light Lightness | Лампы с регулировкой яркости | Dimmable Light |
| Light CTL | Лампы с регулировкой цветовой температуры | Color Temperature Light |
| Light HSL | Цветные лампы | Extended Color Light |
Для шлюза эта таблица имеет огромное значение. В Matter есть типы устройств, которые соответствуют этим моделям почти один к одному, поэтому трансляция получается очень прямой. С проприетарным протоколом это соответствие пришлось бы описывать самим и пересматривать при появлении каждого нового типа устройств.
Стандартные модели дают ещё два преимущества:
- Шлюз и устройства могут быть на чипах разных производителей. У нас шлюз построен на модуле Silicon Labs, а устройства — на чипах Telink. Пока обе стороны придерживаются стандартных моделей, они работают вместе, и мы не привязаны к одному поставщику чипов.
- Проще выйти в другие экосистемы. Например, Bluetooth Mesh у Xiaomi построен на SIG Mesh, и шаблоны ламп и выключателей там используют те же модели. Версию для Xiaomi можно будет сделать позже, переиспользовав большую часть прикладного кода и заменив по сути лишь слой привязки к сети и аутентификации.
Чего стоит SIG Mesh
SIG Mesh — не бесплатный подарок; просто бо́льшую часть платы за него уже внёс кто-то другой.
Протокол сложный. Привязка устройств идёт через обмен ключами по ECDH, сообщения шифруются на сетевом и транспортном уровнях, есть сегментация, порядковые номера и IV Index. Всё это уже реализовано в SDK производителя чипа и прошло тестирование SIG. На стороне устройства пользуйтесь SDK и не пишите своё.
Размер сети ограничен. SIG Mesh пересылает сообщения лавинной ретрансляцией, поэтому чем больше узлов в одной зоне, тем теснее становится эфир. Ориентировочно сеть лучше всего работает при нескольких сотнях узлов и меньше. Коммерческое освещение с тысячами точек нужно делить по этажам или зонам на несколько сетей и шлюзов.
Шлюз может хранить лишь ограниченное число узлов. Об этом легко забыть:
- Официальная прошивка шлюза от Telink по умолчанию хранит до 200 узлов, а при включённой удалённой привязке (remote provisioning) — 110. Четырёхклавишный выключатель считается одним узлом, а не четырьмя.
- Если строить шлюз на стеке Zephyr от Nordic, конфигурация по умолчанию допускает всего 8 узлов, а список защиты от повторов вмещает лишь 10 записей. Оставьте всё как есть, и сообщения от 11-го устройства начнут теряться.
Двухсот узлов для дома более чем достаточно, но эти цифры стоит проверить ещё на этапе проектирования.
Устройство принадлежит только одной сети. Одну и ту же лампу нельзя одновременно вести через наш шлюз и через хаб Xiaomi. Поддержка обеих экосистем означает две версии изделия с раздельной привязкой.
Можно ли пропустить квалификацию SIG?
Вернёмся ко второму смыслу исходного вопроса: использовать SIG Mesh без квалификации Bluetooth SIG.
С технической точки зрения разницы нет. Устройства работают нормально и взаимодействуют с другими устройствами SIG Mesh. Риски лежат в другом:
| Риск | Подробности |
|---|---|
| Патентная лицензия | Патентная лицензия SIG распространяется только на квалифицированные изделия |
| Каналы продаж | Amazon и другие площадки, крупные розничные сети и зарубежные дистрибьюторы часто требуют идентификатор квалификации Bluetooth |
| Санкции SIG | SIG уведомляет о неквалифицированных изделиях и требует пройти квалификацию или снять их с продажи |
| Товарный знак | Нельзя использовать название и логотип «Bluetooth» на упаковке и в маркетинге |
Распространённое заблуждение: возврат к проприетарному протоколу не освобождает от квалификации SIG. Любому изделию с Bluetooth для продажи нужна квалификация, с Mesh или без него. Без Mesh вы просто пропускаете специфичные для Mesh тесты.
Хорошая новость в том, что квалификация не всегда означает повторное тестирование. Если вы используете стек, уже прошедший квалификацию у производителя чипа, и не меняете его квалифицированные части, можно сослаться на их квалификацию, подать декларацию и оплатить взнос. Если Bluetooth-часть выключателей, ламп и беспроводных кнопок устроена одинаково, они могут использовать один проект и один взнос на всех.
Учтите также, что радиосертификация вроде SRRC, CE и FCC — это требование закона, отдельное от квалификации SIG. Без неё изделие нельзя легально продавать. О стоимости и порядке сертификации расскажет одна из следующих статей.
А где на стороне шлюза живёт Mesh?
На устройствах использование SDK производителя чипа не вызывает споров. На шлюзе же стек Mesh может располагаться в одном из трёх мест:
| Подход | Как работает | Плюсы и минусы |
|---|---|---|
| Реализовать Mesh в программе шлюза | Использовать собственный Bluetooth Linux-платы для приёма и отправки рекламных пакетов Mesh | На один чип меньше, но придётся написать тысячи строк кода стека и самим проходить квалификационные тесты |
| Bluetooth-модуль как сопроцессор | Стек Mesh работает на модуле, а основная программа отправляет ему команды по UART | Проверенный стек, можно сослаться на квалификацию производителя; лишний модуль |
| Модуль как обычный Bluetooth-контроллер | Модуль работает по стандартному HCI, а Mesh крутится в Linux (например, в BlueZ) | Готовая прошивка модуля, но разработка под Windows невозможна |
Мы выбрали второй вариант: Bluetooth-модуль как сопроцессор. Самая сложная и самая чувствительная к квалификации часть Mesh остаётся на стороне производителя чипа, а нам достаются только последовательные команды и трансляция в Matter. Модуль какого производителя лучше всего подходит на роль сопроцессора, расскажем в следующей статье.
Вместо заключения
Итак, можно ли обойтись без SIG Mesh?
- Не использовать протокол SIG Mesh: можно, но вы теряете ретрансляцию, стандартную безопасность и совместимость между производителями, а квалификация Bluetooth всё равно нужна.
- Использовать SIG Mesh без квалификации: на функциональности это не скажется, но экспорт, онлайн-площадки и крупные розничные каналы фактически закрыты.
Для нас главная ценность SIG Mesh не в слове «стандарт». Это набор моделей устройств, которые почти один к одному ложатся на Matter. Благодаря этому слой трансляции в шлюзе остаётся простым, а выбор чипов — свободным.
Если ваши устройства всё ещё работают на проприетарном протоколе и вы подумываете перейти на SIG Mesh или уже строите шлюз Bluetooth Mesh, буду рад пообщаться: linktr.ee/weiyii