
Bluetooth Low Energy (BLE) — это беспроводная технология, доступная на устройствах на базе Android, iOS, Windows и Linux. Она предназначена для обеспечения связи между главным контроллером, обычно смартфоном или планшетом, и интеллектуальными устройствами.
Интеллектуальные устройства (или говоря современным языком смарт девайсы) присутствуют практически везде и включают в себя повседневные объекты интернет вещей (IoT), таких как: освещение, системы отопления, бытовые приборы, сигнализация доступа, датчики, метки местоположения (Bluetooth beacon) и носимые устройства. Используя технологию BLE Mesh, эти интеллектуальные устройства могут подключаться к беспроводной сети и управляться удаленно, что позволяет разрабатывать умные дома, автоматизировать здания, сенсорные сети, а также интеллектуальные отрасли и смарт города.
Обзор
Сеть BLE — это сеть из 32 766 интеллектуальных устройств, хотя большинство сетей намного меньше. Сообщения, отправленные и полученные в этой сети, инициируют заранее определенные события, которые происходят в «участвующих» устройствах. Любое устройство BLE, работающее на BT4.0 или выше, может поддерживать сети BLE при условии, что на нем установлена соответствующая прошивка.
Распределенная сеть (Mesh) BLE использует метод управляемого потока для передачи сообщений на подключенные устройства, которые называются узлами (рисунок ниже). Он отправляет сообщение, называемое широковещательной рассылкой или рекламой BLE, тем узлам, которые находятся в пределах досягаемости. Принимающие узлы ретранслируют или перенаправляют это сообщение другим узлам в пределах своего диапазона. Как только соответствующий узел получает сообщение, инициируется заранее определенное событие.
Сообщения не передаются безоговорочно. Узлы ретранслируют сообщение до истечения его времени жизни (message time-to-live TTL), где TTL определяет количество ретрансляций или «прыжков», которое может выполнить сообщение. TTL уменьшается на единицу при достижении каждого узла ретрансляции. Узлы ретрансляции будут только пересылать сообщения, у которых TTL больше единицы, чтобы избежать бесконечного каскада сообщений. Кроме того, каждый узел в сетке поддерживает кэш своих самых последних сообщений, и входящие сообщения, которые уже были получены, отбрасываются и не ретранслируются дальше.
Mesh BLE, использующие ретрансляционные узлы, гораздо более надежны, чем другие типы сетей, которые используют узлы в качестве маршрутизаторов. Поскольку ретрансляционные узлы получают широковещательные сообщения от любого узла в пределах диапазона, и эта избыточность поддерживает работу сети, даже если промежуточный узел выходит из строя или удаляется из сети, тогда как узлы маршрутизатора могут быть единственной точкой отказа. Узлы ретрансляции также обеспечивают лучшую масштабируемость и улучшенную производительность.
Периодически с каждого узла может отправляться контрольное сообщение, указывающее, что оно все еще активно. Использование сообщения «сердцебиения», чтобы увидеть, как далеко каждый узел находится от других узлов, с точки зрения количества «прыжков», необходимых для его достижения, позволяет оптимизировать TTL и установить значение не превышающее необходимое.
Терминология
Хотя все узлы в распределенной сети BLE могут передавать и принимать сообщения, некоторые узлы имеют дополнительные конкретные цели. «Ретрансляционный» узел (relay) может ретранслировать полученное сообщение. «Узел с низким энергопотреблением» (low-power) большую часть времени проводит в состоянии низкого энергопотребления, и радиостанция выключена, чтобы продлить срок службы батареи. «Друг» (friend) работает в сочетании с узлом с низким энергопотреблением, сохраняя, а затем пересылая сообщения, когда он опрашивается узлом с низким энергопотреблением.
«Прокси-узел» — это устройство, которое использует устаревшее соединение Bluetooth для взаимодействия с другими устройствами в сетке BLE; в свою очередь, он может пересылать сообщения на другие узлы через другие соединения или рекламу, если функция ретрансляции также включена. Ожидается, что смартфоны будут типом узлов, которые будут использовать прокси-узлы для передачи сообщений просто потому, что телефон не может использовать режим ретрансляции. Режим ретрансляции требует, чтобы передатчик включался 100% времени, что не разрешено производителем телефона.
Спецификация Mesh позволяет узлу находиться в нескольких режимах, таких как relay, proxy и friend. Маловероятно, что узел, использующий режим низкого энергопотребления, будет использовать любой другой режим.
Сообщения отправляются и принимаются с использованием парадигмы публикации / подписки (рисунок ниже). Публикация включает в себя отправку сообщений от одного узла группе из одного или нескольких других узлов. Подписка настраивает узел так, чтобы он мог получать сообщения от 0 или более точек. Узел имеет список подписки, который содержит адреса публикации, на которые он подписан, так что он может выбирать или отфильтровывать полученные сообщения.
Каждое сообщение состоит из кода операции и полезной нагрузки, или контента. Код операции диктует поведение на принимающей стороне. Исходящие сообщения в сетке BLE шифруются как сетевым ключом, так и ключом приложения. Сетевой ключ обеспечивает безопасность для всей связи внутри mesh сети BLE. Ключ приложения обеспечивает разделение обязанностей и аутентификацию, чтобы гарантировать, что модель поведения в предполагаемом устройстве будет выбрана правильно, например, сообщение, отправленное для включения лампочки, не должно открывать дверь. К тому времени, когда приложение получает свое сообщение, оно уже полностью расшифровано и передается в виде открытого текста.
Инициализация (provisioning) узла
Когда сетевое устройство BLE включается впервые, оно не «инициализируется». То есть оно не имеет адреса или какой-либо другой информации о конфигурации. Чтобы стать частью mesh сети, ему должна быть предоставлена эта информация. Как только устройство инициализируется, как правило, смартфоном, оно называется узлом и имеет однонаправленный адрес, публикует информацию, список подписей, а также ключи сети и приложений, среди прочего. Инициализация обновляет записи в постоянной базе данных конфигурации устройства. Каждый узел будет иметь один или несколько элементов, которые в свою очередь имеют одну или несколько моделей, которые ускоряют конкретное поведение для этого узла.
Поставщик (provisioner) — это единственный объект в сети, который знает обо всех ее участниках. Это также единственное устройство, которое умеет программировать адрес публикации и списки подписей каждого узла. Ни один отдельный узел не знает всей сети. Поставщик не нужен для работы сети, но он необходим для добавления или удаления узлов из сети. Таким образом, не существует центральной точки отказа, которая может привести к выходу из строя всей сети. Однако, если устройство-поставщик повреждено или потеряно, никто больше не знает все узлы в сети; все они должны быть повторно проинициализированы другим устройством.
В качестве примера рассмотрим офис с 50 лампами и 20 выключателями. Только провайдер (поставщик) знает адреса узлов всех 70 устройств. Провайдер может создать групповые адреса для каждой области офиса, а затем установить адреса публикации в выключателях и адреса подписи в индикаторах на основе групповых адресов. Например, когда состояние выключателя освещения меняется с выключенного на включенное, публикуется групповой адрес, и включаются лампочки, подписанные приложением.
Реализация распределенной сети BLE
Реализация распределенной сети BLE может показаться изнурительной, но процесс может быть значительно упрощен. Такие производители, как Laird Connectivity, предлагают модули BLE, которые запускают процесс разработки сети. Модули BLE имеют встроенный язык сценариев, управляемый событиями, smartBASIC, встроенный в их прошивку, который используется разработчиками продукта для упрощения интеграции модулей BLE.
Небольшой видео обзор для тех, кто знает английский:
Используя только несколько встроенных функций и событий, можно написать приложение для реализации сети Bluetooth Low Energy с использованием модуля Laird BLE. При первом запуске сети BLE базовый стек будет видеть, что устройство не подготовлено и запускает процесс маяка. Это предупреждает пользователя, который активирует устройство, делая его узлом. В противном случае функция запуска позволяет узлу участвовать в ячеистой сети и прослушивать входящие сообщения, на которые он будет либо реагировать, либо ретранслировать далее.
Когда входящее сообщение полностью дешифруется базовым стеком, оно вызывает предопределенное событие, и приложения вызовет нужный обработчик, написанный пользователем, который определяет поведение для этого события. Такой сценарий проверяет код операции в сообщении и определяет, какие действия следует предпринять, например, включить свет, запустить стиральную машину, или включить домашнюю сигнализацию или даже отправить информацию в облако.
Программируемые модули BLE, такие как BL652 и BL654 от Laird Connectivity, обеспечивают безопасные беспроводные механизмы для сетей IoT. Они имеют широкий спектр настраиваемых интерфейсов и промышленные температурные рейтинги, а также есть полнофункциональный комплект разработки для начала работы с BLE. Эффективные системы управления энергопотреблением BL652 и BL654, которые имеют размеры 10 x 14 мм и 10 x 15 мм соответственно, обеспечивают работу без хоста для автоматизированных сценариев использования.
Выводы
Реализация ячеистой сети BLE позволяет пользователю подключать устройства интернет вещей (IoT) в интеллектуальной беспроводной сети. Сеть является гибкой, масштабируемой, устойчивой и надежной. Использование имеющихся в продаже модулей BLE значительно упрощает процесс внедрения, позволяя данным интеллектуальным сетям быстрее запускаться и работать.