Чаще сети IoT локальные и состоят из совсем мелких гаджетов. Хотя могут быть крупными с большим количеством устройств. Все они — беспроводные, поэтому разработчики вкладывают много сил в то, чтобы безопасность не была под вопросом. Почти все IoT-устройства питаются от батареек. Проблема таких сетей для разработчиков в том, что каждый производитель использует свои термины.
Bluetooth. Dotdot. z-Wave. Zigbee PRO. У всех этих протоколов есть собственный прикладной уровень. А теперь — подробности.
Профайл Bluetooth — это набор правил использования протокола, а еще — набор определений типов и ролей девайсов. Устройства разных производителей и классов будут переносимы с точки зрения сетевого протокола и поведения. Производители получают требования по качественному поведению устройств. Гаджеты определенного профайла работают функционально одинаково со стороны Bluetooth.
Классический Bluetooth представлял собой замену проводам. И профайлы были типа hands-free, headset, для стерео-музыки, фтп-передача файлов, передача визиток. Все это ходовые операции для смартфона 2002-го года. Позже поняли, что по потреблению он слишком дорогой. Сделали BLE — Bluetooth Low Energy. Здесь можно только читать и писать атрибуты.
На BLE работают многие устройства Healthcare, современные гаджеты, которые работают с телефоном. Таких моделей примерно 80.
В Zigbee есть ZCL: Zigbee Cluster Library. В исходном виде — объектная модель кластеров, описание структур данных, в которых есть понятие атрибута. У последнего есть тип, он хранит значение. Есть понятие чтения и записи, локально и удаленно. Есть понятие команд. Этих кластеров много, их постоянно добавляют.
Устройства двух ролей: клиентский и серверный тип. На устройстве может быть реализована любая роль. ZCL —это и модель данных, и протокол. Такое двоичное представление. Изначально неподалеку были профайлы Zigbee. А теперь они развиваются без прочной связи друг с другом. Сейчас актуальна 7-я ZCL.
Application-профайл представлял собой описание бездны устройств определенного назначения. Например, выключателя. Устройству задается: набор обязательных кластеров, набор опциональных кластеров и роли. Еще профайл описывает правила comissioning. Дополнительное описание поведения Zigbee-устройств.
Всего было не более 5-ти профайлов. Самые актуальные — Home Automationл и Smart Energy. Последний — это счетчики и похожие на них вещи. Например, специально обученный человек может пройти по коттеджному поселку и с помощью авторизованного устройства снять показания с таких счётчиков удалённо, не нужно подходить к каждому и смотреть на дисплей. Много внимания здесь вложено в защищенность.
Google сделал Thread. Это IPv6 через радио, на котором работает Bluetooth. Но у него нет прикладного уровня. Про Dotdot подробнее мы писали в своем блоге.
ZCL DotDot и ZCL Zigbee — это несовместимые вещи из одной спецификации. Бридж из Dotdot в Zigbee должен быть на прикладном уровне. Есть Dotdot-реализация поверх Thread-a. Позже хотят сделать Dotdot поверх WiFi. В Китае, например, очень любят WiFi. Если вы понимаете, о чем мы.
Это, очень похожая на ZCL, абстракция command-классов. Проприетарная штукенция. Устройства могут быть в двух ролях. Набор меньше, чем у ZCL, но для Home Automation достаточно. У него порядочно большая установленная база.
У одного устройства одновременно может быть несколько command-классов. Есть понятие их версии. Еще есть понятие девайс-класса. Очень похоже на то, что в Zigbee-профайле. SDK у них закрыт, а command-классы давались в исходниках. Некоторые классы были описаны в стандарте.
Подробнее можно посмотреть в видеозаписи митапа. Здесь шуточки, инсайты: их можно услышать только от человека, который работает долго и много знает по этой теме.