Сегодня мы поговорим о такой интересной и актуальной теме как протоколы (стандарты) для организации IoT сетей. Сам термин IoT сегодня на слуху у всех и является очевидным трендом технического развития во всех отраслях народного хозяйства — это и домашнее хозяйство, ЖКХ, промышленность, сельское хозяйство и т. д.

С другой стороны, для неподготовленного человека термин IoT (интернет вещей) мало о чём говорит содержательно. Что же это такое и о чём идёт речь? Всё очень просто: интернет вещей — это совокупность всех современных «умных» вещей (а это уже сейчас чуть ли не все окружающие нас вещи от телевизоров до зубных щёток) в сочетании со связывающими их сетями.

Именно об этом мы и поговорим в этой статье — об IoT сетях и популярных протоколах, использующихся для их построения.

Не только интернет

Безусловно, Интернет — это сеть сетей и обойти его вниманием невозможно ни в одной статье о современных IoT технологиях, но в данном случае использование интернета отходит на второй план и основное внимание мы уделим более «мелким» решениям по организации связи между различными устройствами, датчиками, актуаторами, счётчиками и т. п. оборудованием.

Мы рассмотрим 5 основных типов IoT сетей:

  • Проводные сети и каналы связи (Ethernet, RS-485, 1-Wire, CAN, KNX и т. д.)
  • «Бытовые» беспроводные сети (Wi-Fi, Bluetooth)
  • Специализированные беспроводные сети (LoRa, ZigBee, Z-Wave и т. п.)
  • IoT сети поверх сотовых сетей (NB-IoT и т. п.)
  • Спецсети и радиоканал (433 МГц, nRF24 и т. д.)

Как вы видите из представленного списка, вариантов организации IoT сетей существует огромное множество, а если учесть ещё большее количество протоколов для организации взаимодействия между умными вещам, а также техническую смекалку разработчиков IoT систем, то становится понятно, что на практике мы имеем невероятный «зоопарк» из IoT решений.

Важно также понимать, что большинство IoT решений являются гибридными — сбор, транспортировка, хранение, обработка и визуализация данных обычно проходят в разных по типу сетях и то, что поступило по беспроводным каналам с датчиков, может обрабатываться и предаваться далее по проводным сетям.

Теперь попробуем разобраться во всём этом разнообразии.

Проводные сети и каналы связи

Несмотря на то, для организации IoT в основном используются (и обычно подразумеваются при обсуждении) беспроводные сети, нет никаких запретов на использование проводных соединений (сетей) для создания IoT решений и систем.

Королём тут, безусловно, выступает Ethernet, как массовая, универсальная и отработанная десятилетиями технология (стандарт). В рамках этой технологии работают популярные протоколы TCP/IP, UDP, HTTP, HTTPS, FTP и множество других, применяемых, в том числе, и в IoT решениях. Важно также понимать, что ни одно беспроводное IoT решение не обходится без использования проводного Ethernet — на той или иной стадии передачи данных, их, как правило, приходится транспортировать на большие расстояния и альтернативы Ethernet (читай интернету) тут нет.

Несколько особняком стоят специализированные проводные решения для организации сбора и передачи IoT данных, это популярные стандарты RS-485, 1-Wire, CAN, KNX и т. д. и т. п. — числа им нет, за время существования индустрии высоких технологий подобных стандартов накопилось огромное множество.

Бытовые беспроводные сети

Под «бытовыми беспроводными сетями» мы в основном подразумеваем всем привычный и повсеместно распространённый Wi-Fi. Это универсальный транспорт для передачи любой информации и любых данных, в том числе и IoT данных.

Повсеместное распространение Wi-Fi делает его очень заманчивым решением для организации IoT сетей передачи данных. Практическое воплощение этой возможности мы видим на примере работы современных бытовых приборов, наподобие телевизоров, умных холодильников и т. п. оборудования.

Однако для организации сетей сбора информации с датчиков и счётчиков в сфере ЖКХ Wi-Fi не очень подходит в силу некоторых своих особенностей — неконтролируемости инфраструктуры (частных роутеров), небольшого радиуса действия (до 100 метров), большого потребления энергии Wi-Fi устройствами и проблематичности создания автономных долгоживущих батарейных датчиков и счётчиков и т. п. проблем.

Сюда же можно отнести и некоторые другие IoT решения, например, Bluetooth. Эта технология нашла широкое применение в умных гаджетах, фитнес-трекерах и подобном оборудовании.

Специализированные беспроводные сети

Существуют также специализированные беспроводные сети (LoRa, ZigBee, Z-Wave и т. п.), специально разработанные для создания IoT сетей сбора данных с датчиков и счётчиков, построения т. н. умного дома и подобных применений.

Каждое подобное решение подразумевает определённые стандарты на используемые частоты передачи сигналов, протоколы взаимодействия между устройствами и т. д. И снова необходимо отметить, что подобных систем (стандартов) существует огромное множество. О некоторых из них мы подробно поговорим в этой статье чуть ниже.

IoT сети поверх сотовых сетей

Ярким и набирающим популярность подобным решением является сеть NB-IoT. Основной смысл этой технологии в том, что владелец IoT системы (например, ЖКХ компания, обслуживающая сеть счётчиков воды или электричества) избавляется от необходимости строить свою собственную сеть сбора информации со счётчиков с базовыми станциями, серверами и т. п., а вместо этого перекладывает все эти заботы на плечи компании сотового оператора. Каждый прибор (счётчик) снабжается SIM-картой и после включения просто начинает передавать данные в «облако» сотового оператора, откуда ЖКХ компания может получать эти данные и использовать в своей работе, например, для тарификации расхода ресурсов.

Достоинства такого подхода налицо, из недостатков нужно отметить зависимость работы системы от сторонней компании и необходимость оплаты услуг сотового оператора.

Спецсети и радиоканал

Ну и последним типом IoT сетей являются спецсети (различные проприетарные нестандартные решения) и даже просто передача данных по радиоканалу на различных частотах и с использованием различных протоколов. В качестве примера можно привести популярные устройства, работающие в диапазоне 433 МГц (различные китайские пульты управления и игрушки) и популярные модули nRF24, используемые в DIY и бытовых устройствах (например, компьютерных мышках).

Решений тут тоже множество, но это очень специализированные и нестандартные вещи, которые имеют ограниченную область использования и свои недостатки, например, большинство пультов 433 МГц не имеют никакой защиты и шифрования передаваемых данных.

Популярные протоколы для IoT

Теперь, после обзора и ознакомления с основными принципами построения IoT сетей, мы переходим к более подробному рассмотрению популярных IoT протоколов (стандартов) и начнём мы с LoRa и LoRaWAN.

LoRaWAN

LoRaWAN — это технология (совокупность технологий), которая предназначена для организации сетей сбора данных и телеметрии с датчиков и счётчиков (и в некоторых случаях даже управления ими) во всех отраслях народного хозяйства. Это очень популярный стандарт, который используется и для сбора данных с датчиков в ЖКХ и для контроля сельскохозяйственного производства и в промышленности. В основном подобные сети строятся на основе базовой станции, обслуживающей беспроводные датчики (счётчики) в радиусе около километра от базы. В зависимости от застройки и рельефа местности LoRaWAN сеть может обслуживать площадь диаметром от сотен метров до десятков километров.

Далее данные с датчиков агрегируются на на базовых станциях и по различным каналам отправляются в «облако» для дальнейшей обработки и хранения. Схематично это можно представить так.

На физическом уровне для передачи сигналов между датчиками и базовой станцией LoRaWAN использует технологию LoRa. LoRa — это стандарт модуляции беспроводного сигнала (используется линейно частотная модуляция), который обеспечивает большую дальность связи (сотни метров и километры) и при этом потребляет мало энергии, что позволяет использовать автономные батарейные датчики и счётчики ресурсов.

Технические подробности. LoRa (Long Range) — это энергоэффективный вид модуляции сигнала (линейная частотная модуляция). Для работы LoRa обычно используются разрешённый в России и свободный частотный диапазон 868 МГц (LoRa может работать также в частотном диапазоне 433 МГц и некоторых других), ширина канала 125 кГц (тоже может изменяться от 7,8 до 500 кГц), максимальная скорость передачи данных 5 кб/с.

Из недостатков LoRa как физического уровня передачи сигнала можно назвать низкую скорость работы — это максимум 5 кб/с. В результате LoRa может применяться только для передачи небольших объёмов телеметрической информации.

Но не смотря на то, что LoRa как технология, очень хороша, существует ещё проблема построения самой сети передачи данных и для решения этой проблемы был создан стандарт LPWAN (Low-Power Wide-Area Network) который добавляет к базовому физическому уровню L1 сетевой модели OSI канальный уровень и протокол передачи данных. LPWAN является базовым вариантом использования LoRa технологии для построения энергоэффективных сетей передачи данных и телеметрии.

А LoRaWAN (Long Range wide-area networks), в свою очередь, добавляет новые улучшенные спецификации и протокол в стандарт LPWAN. Коротко это можно представить в виде следующей иерархии:

  • LoRa — это стандарт модуляции сигнала и физический уровень беспроводной передачи данных.
  • LPWAN — это объединение стандарта LoRa с канальным уровнем передачи данных и соответствующий протокол сетевого взаимодействия.
  • LoRaWAN — это улученные спецификации и протокол передачи данных для LPWAN сетей.

Теперь давайте поговорим о принципах работы LoRaWAN. Центром и главной частью системы является т. н. «сервер» (на схеме выше обозначен большим синим прямоугольником с облаком). Именно он управляет всеми частями системы — базовыми станциями (шлюзами), конечными устройствами и т. д.

Базовых станций в конкретной конфигурации может быть несколько и сигнал от некоторых датчиков может приходить («ловиться») на несколько шлюзов. LoRaWAN сервер как определяет всю логику работы системы, так и настройки её отдельных частей. Например, если какой-то датчик «виден» нескольким шлюзам, то именно сервер решает с какого шлюза эти данные будут поступать в систему.

Если взаимодействие с оконечными устройствами происходит беспроводным образом по LoRa стандарту, то связь между шлюзами и LoRaWAN сервером, а также между LoRaWAN сервером и серверами приложений может осуществляться по разным каналам, как правило по проводному Ethernet.

LoRaWAN поддерживает 3 класса оконечных устройств:

Класс A — энергоэффективные батарейные устройства. В основном только передают информацию шлюзам, но имеют «окно» для эпизодического приёма информации.

Класс B — то же самое, что и устройства класса A, но плюс ещё имеют режим приёма данных по расписанию.

Класс C — Постоянно «онлайн» и постоянно готовы для приёма данных и команд. Использование батарейного питания для устройств этого класса либо затруднено, либо невозможно вовсе.

Безопасность LoRaWAN обеспечивается индивидуальными для оконечных устройств и сетевыми идентификаторами, а также шифрованием передаваемых данных при помощи алгоритма AES (с соответствующим менеджментом ключей).

К достоинствам и преимуществам LoRaWAN можно отнести:

  • Большое количество обслуживаемых оконечных устройств
  • Возможность применения в сфере ЖКХ
  • Энергоэффективность и длительный срок работы датчиков от батарей
  • Большая дальность связи
  • Использование свободного диапазона частот

Существенных недостатков для своей сферы применения LoRaWAN практически не имеет, что подтверждается широкой популярностью этой технологии.

MQTT

MQTT (Message Queue Telemetry Transport) — это протокол, разработанный для эффективных межмашинных взаимодействий (М2М) и широко применяющийся сегодня в сфере IoT (т. н. «интернета вещей»).

Основной его особенностью является реализация схемы взаимодействия между устройствами «клиент-брокер». Смысл этой схемы заключается в том, что к брокеру в любой момент может подключиться клиент (в данном случае «издатель») и «опубликовать» свои данные, одновременно, к этому же брокеру может подключиться другой клиент и «забрать» данные, опубликованные издателем. Это очень упрощённое изложение работы схемы клиент-брокер, приведённое здесь для лучшего понимания вопроса. По-другому это можно назвать реализацией схемы многие-ко-многим.

Физически протокол MQTT работает на прикладном уровне сетевой модели поверх TCP (TCP/IP), является компактным (бинарным) и приспособлен для работы на маломощных устройствах (контроллерах). Также он хорошо оптимизирован для работы на неустойчивых каналах связи и на каналах с небольшой пропускной способностью. Также нужно отметить, что MQTT имеет режим гарантированной доставки сообщения и поддерживает несколько уровней качества обслуживания QoS (Quality of Service).

Работа по протоколу MQTT осуществляется по следующей схеме: клиенты публикуют свои данные «сообщения» на определённую тему (в терминологии протокола «topic») или «подписываются» на нужные им сообщения и получают их. Саму логику работы с данными осуществляет брокер, клиентам достаточно подписаться или опубликовать данные — всё остальное он сделает за них.

Синтаксически «топик» — это строка символов в кодировке UTF8, разделённых знаком «/», а совокупность всех топиков имеет иерархическую структуру «дерева». Типичный пример топика:

/home/room/temp

Подписчик может получать как конкретные данные, подписавшись на соответствующий топик, так и данные сразу из нескольких топиков, для этого существуют специальные «wildcard» символы. Они бывают двух типов: одноуровневые «+» и многоуровневые «#».

Например:

/home/+/temp

в этом случае клиент получит данные о температуре из всех комнат

/home/room/#

а в этом случае он получит данные со всех датчиков в комнате.

Сами сообщения, которыми обмениваются клиенты и брокер, могут быть разными, основные из них: установить соединение (connect), разорвать соединение (disconnect), опубликовать данные (publish), подписаться на топик (subscribe), отписаться от топика (unsubscribe).

Каждое сообщения протокола MQTT содержит 2 байта конфигурации:

1-й байт: запрос на подключение, подтверждение подписки, запрос ping, флаг дублирования, инструкции для сохранения сообщений, информацию об уровне QoS.

2-й байт: данные о длине сообщения.

Немного подробнее об уровнях качества обслуживания в MQTT:

Уровень 0. Самый простой способ: отправитель передаёт сообщение один раз, получатель не подтверждает его получение.

Уровень 1. Отправитель отправляет сообщение до тех пор, пока не получит подтверждение об успешной доставке.

Уровень 2. Медленный и самый надёжный способ: гарантируется, что приёмник получит сообщение один раз.

Безопасность в MQTT может обеспечиваться несколькими способами: аутентификация имя/пароль, контроль доступа через Client ID, подключение через TLS/SSL.

Работать MQTT брокеры могут как в локальной сети, обслуживая её локальные потребности в передаче данных, так и в интернете, осуществляя транспортировку и распределение данных на глобальном уровне.

Подводя итог обзора протокола MQTT можно выделить следующие его достоинства:

  • лёгкость и компактность
  • возможность работы на маломощных контроллерах
  • оптимизированность для работы в сфере IoT
  • оптимизация для работы на неустойчивых каналах связи
  • приспособленность для работы на каналах с небольшой пропускной способностью
  • режим гарантированной доставки сообщений QoS
  • возможность безопасной работы с шифрованием

В заключение стоит отметить, что MQTT — это один из самых популярных протоколов для сферы IoT и применяется повсеместно, для него существует множество реализаций клиентов и брокеров для различных платформ.

CoAP

CoAP (Constrained Application Protocol) — это ещё один популярный протокол для IoT, он почти так же популярен как MQTT, но имеет свои отличительные особенности и несколько другой шаблон применения.

CoAP является протоколом прикладного уровня, но вместо TCP, как в случае MQTT, работает поверх UDP, а идеологически похож на популярный протокол HTTP и является его компактной и упрощённой реализацией. Также, в целях большего соответствия специфическим задачам коммуникации IoT устройств, он сделан бинарным и хорошо работает на «слабых» микроконтроллерах.

Его родство с HTTP также говорит о том, что это протокол взаимодействия точка — точка или, другими словами, клиент — сервер, что кардинально отличает его от MQTT и предполагает соответствующие паттерны использования.

Также стоит отметить, что работа через UDP значительно уменьшает объём передаваемых данных и скорость передачи сообщений.

Для программиста работа с протоколом CoAP похожа на работу с HTTP. Здесь также серверы предоставляют свои ресурсы по URI адресам, а клиенты обращаются к ним, используя привычные методы GET, PUT, POST, DELETE. Ответы сервера в CoAP аналогичны ответам в HTTP и состоят из трёх цифр (успешно, ошибка и т. д.).

Пример типичного CoAP GET запроса:

coap://127.0.0.1/resource

В протоколе СоАР имеется четыре вида сообщений: Confirmable, Non-confirmable, Acknowledgement, Reset. Сообщения передаются в бинарном виде, каждое имеет заголовок в 4 байта, токен, опции и собственно полезную часть с данными. CoAP также поддерживает многоадресную рассылку (multicast) для посылки сообщений сразу нескольким устройствам.

Как известно, сам по себе протокол UDP не поддерживает гарантированную доставку сообщения, но в IoT приложениях очень часто требуется подтверждение доставки. Эту проблему протокол CoAP решает на своём уровне — в нём есть возможность указать, что сообщение требует подтверждения успешной доставки.

Безопасность в CoAP обеспечивает DTLS (Datagram Transport Layer Security) — этот протокол добавляет UDP возможность защитить передаваемые сообщения от просмотра и подделки.

Отметим достоинства протокола CoAP для использования в сфере IoT:

  • лёгкость и компактность по сравнению с HTTP
  • возможность работы на контроллерах
  • оптимизированность для работы в IoT
  • режим гарантированной доставки сообщений
  • возможность безопасной передачи сообщений с DTLS

LwM2M

LwM2M (Lightweight Machine-to-Machine) — это универсальный, специально разработанный для применения в сфере IoT протокол межмашинного взаимодействия. Слово Lightweight в названии говорит о том, что это «лёгкий» протокол, оптимизированный для работы на «слабых» устройствах.

Изначально LwM2M создавался как продвинутая надстройка с большими возможностями над протоколом CoAP, который мы рассмотрели выше (в последних спецификациях предусматривается работа CoAP через MQTT и HTTP, а также в сетях LTE-M, NB-IoT и LoRaWAN).

Соответственно, LwM2M наследует все преимущества CoAP (компактность, бинарный формат, работу на слабых контроллерах и т. д.) и добавляет в этот арсенал множество дополнительных возможностей ориентированных на применение в IoT приложениях, главные из которых это объектная модель ресурсов и возможность их создания, поиска, обновления и настройки, загрузка прошивок и т. д. На уровне абстракций протокол оперирует объектами, экземплярами объектов и ресурсами, что логично и отлично подходит для сферы применения LwM2M. В протоколе определены как стандартные объекты (сервер, устройство, обновление прошивки и т. д.), так и есть возможность создания пользовательских объектов с необходимыми вам свойствами.

LWM2M имеет отличные возможности для работы и управления IoT устройствами, например, контроль подключения устройств, удалённые действия на них, обновление прошивок и т. д., то есть решает множество проблем и позволяет автоматизировать наиболее распространённые технические действия в IoT.

LwM2M работает как в сетях, требующих для своей работы IP адрес, так и в сетях NIDD (Non-IP Data Delivery) не требующих IP адреса.

Весь функционал LwM2M можно разделить на две части: управление устройствами и управление работой приложений (конфигурация и отчёты). В управление устройствами входит управление их загрузкой, конфигурацией, обновлением ПО и обработка ошибок.

В целом можно сказать, что протокол LwM2M является одним из самых продвинутых и перспективных для использования в сфере IoT. Кратко перечислим его основные достоинства:

  • лёгкость и компактность
  • возможность работы на маломощных контроллерах
  • оптимизированность для работы в сфере IoT
  • режим гарантированной доставки сообщений
  • возможность безопасной передачи данных
  • объектная модель представления ресурсов
  • регламентация рутинных операций для IoT устройств
  • управление оконечными устройствами
  • работа через различные протоколы и в различных IoT сетях
  • поддержка работы в сетях с IP адресацией и и без IP адресации
  • стандартизация всех аспектов работы с IoT устройствами
  • перспективность для использования в долгосрочных проектах
  • практическое использование многими компаниями

Как вы видите, список достоинств у этой технологии чрезвычайно широк и перспективность LwM2M в сфере IoT не вызывает никакого сомнения.

Заключение

В этой статье мы рассмотрели широкий спектр вопросов организации IoT сетей и подробно познакомились с наиболее популярными и перспективными протоколами для этой сферы LoRaWAN, MQTT, CoAP и LwM2M. Надеемся, что наша статья поможет вам разобраться в такой обширной и актуальной теме как построение современных IoT сетей.

Более подробно узнать о беспроводных стандартах связи вы можете из нашей статьи Беспроводные стандарты связи для автоматизации снятия показаний счетчиков воды.