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

Нужно заметить, в таком решении присутствует рациональное зерно, поскольку Open Source-проекты доказали свою живучесть, тогда как многие компании с проприетарными разработками бесследно исчезли, прихватив заодно свою интеллектуальную собственность.

Издание Linux.com опубликовало подготовленный Эриком Брауном обзор основных открытых проектов, которые работают над созданием софта для «умного» дома и промышленной автоматизации (в предыдущем обзоре можно было ознакомиться с открытыми RTOS и Linux OS для устройств IoT). В нем рассматривается больше двадцати открытых проектов, два из которых — AllSeen (AllJoyn) и OCF (IoTivity) — курируются Linux Foundation, но все они преследуют одну цель — создание фреймворков для работы конечных IoT-устройств типа датчиков или сенсоров с сетевыми шлюзами и облачными сервисами.

Обзор помимо значительных IoT-проектов включает и нишевые. К слову, становится все труднее провести границу между ПО для IoT и обычным программным обеспечением. Нужно также отметить, что все выбранные проекты работают по модели Open Source, созданы на ядре Linux или позаимствовали у этой ОС один или несколько компонентов. Большинство фреймворков используют Linux для построения собственной экосистемы — начиная с рабочего окружения на ПК и заканчивая облачными службами для управления сетевыми шлюзами и датчиками. Выпуск адаптированного ПО для Raspberry Pi, BeagleBone, Arduino — ещё одна отличительная черта почти всех проектов.

Конечно, в этой сфере есть мощные закрытые (запатентованные) технологии, среди которых такие корпоративные платформы, как Apple HomeKit для «умного» дома или облачная IoT-платформа для построения SaaS-приложений Microsoft Azure IoT Suite. Но даже такие платформы предлагают частично открытый доступ к коду либо инструментам разработки. Примером такого фреймворка является Verizon ThingSpace — он создан для написания приложений для управления «умным» городом. Его ядро — проприетарный продукт, но открытый API позволяет запускать ThingSpace на одноплатных компьютерах. Amazon AWS IoT — ещё один IoT-проект корпоративного уровня с частично открытым комплектом средств разработки.

Частично открытым можно признать и проект Thread Group. Его запуском ведала компания Nest, впоследствии купленная Google. Thread Group отвечает за разработку маломощной, безопасной и масштабируемой беспроводной mesh-сети на базе протокола 6LoWPAN. Что касается открытости, то ей соответствуют такие проекты Google, как Brillo или протокол обмена данными между IoT-устройствами Weave. В мае Nest выпустила открытую версию Thread — OpenThread.

Open source для IoT

AllSeen Alliance (AllJoyn). AllJoyn — открытая программная архитектура, позволяющая IoT-устройствам и приложениям взаимодействовать друг с другом. При этом речь идёт не только о взаимодействии цифровых устройств в рамках одной операционной системы, посредством протокола AllJoyn «говорить» между собой на одном языке могут устройства на разных платформах, например, Windows и Android, к тому же AllJoyn предусматривает их подключение к бытовой технике.

AllSeen Alliance насчитывает 160 участников, среди которых Qualcomm, Lenovo, LG, Symantec, Sony и Panasonic. Совместными усилиями они создают свой набор ПО на основе кода AllJoyn, который разработали и передали группе инженеры Qualcomm.

AllJoyn можно назвать наиболее распространённым фреймворком Open Source. В октябре AllSeen Alliance объединился с организацией Open Connectivity Foundation (OCF). Рабочая группа создаёт инструментарий для создания приложений и сервисов, которые могут автоматически группироваться в P2P-сеть, подключаясь к соседним IoT-устройствам по Wi-Fi или Bluetooth.

Bug Labs dweet/freeboard. Изначально (c 2007 г.) проект выпускал различного рода модульные компьютеры в стиле Lego. Электронные конструкторы состояли из базы BUGbase (в нее встроен процессор, чип Wi-Fi, Ethernet-контроллер, интерфейс USB, небольшой ЖК-экран и аккумулятор) и дополнительных элементов «периферии» — GPS-приёмника, сенсорной панели, датчика движения и пр. По мере развития аппаратных возможностей развивалась и софтверная направляющая Bug Labs, вылившись в итоге в IoT-платформу для бизнеса. В основе Bug Labs dweet/freeboard лежит модуль ПО dweet.io. Этот инструмент, по сути, представляет собой сервис для обмена сообщениями для всего, что может подключаться к Интернету.

При подключении устройства к сервису dweet.io, эта платформа увидит его и присвоит ему имя, а затем начнет пересылать данные или отправлять «двиты» (твиты между IoT-устройствами) в облако. В то же время сервис Freeboard, работающий как информационная панель на смартфоне, может отслеживать состояние окружающей среды, следить за безопасностью и потреблением электроэнергии в доме. Эти данные он получает из «двитов». Например, датчик влажности, встроенный в коробку для хранения сигар, может регулярно поставлять данные о влажности, что позволит сохранить сигары в пригодном для употребления состоянии.

DeviceHive. Эта платформа использует сетевые и облачные технологии и позволяет реализовывать решения для обмена информацией между устройствами по модели M2M (Machine-to-Machine, межмашинное взаимодействие). Инфраструктуру DeviceHive разработала компания DataArt, в её основе лежит протокол AllJoyn. Хостинг платформы может осуществляться на таких сервисах, как Azure, AWS, Apache Mesos или OpenStack. Облачная платформа DeviceHive поддерживает Apache Spark и Spark Streaming, что позволяет запускать пакетную обработку поверх данных устройств, отслеживать процессы в реальном времени и использовать машинное обучение.

DeviceHive 2.0 была дополнена шинами передачи сообщений (Apache Kafka) и узлов хранилища (Cassandra). IoT-фреймворк DeviceHive интегрирован с Ubuntu Snappy Core, что превращает этот Linux-дистрибутив в модульную платформу. Такая трансформация позволяет запускать специфические приложения в облаке DeviceHive, а адаптеры — подключать к низкоуровневой аппаратуре и проксимальным сетям.

DSA. Фреймворк Distributed Switch Architecture (DSA) предоставляет возможность управления разветвленной сетью IoT-девайсов как единым устройством, задавать пути прохождения, контролировать логику трафика и работу приложений в системе. DSA отвечает за разработку библиотеки Distributed Service Links (DSLinks), необходимой для трансляции протоколов и интеграции данных со сторонними источниками. DSA предлагает масштабируемую сетевую топологию, состоящую из нескольких DSLinks-библиотек, работающих на конечных IoT-устройствах. Суть технологии DSA можно кратко свести к введению дополнительного уровня адресации в рамках узлов/устройств всей сети.

Eclipse IoT (Kura). Некоммерческая организация Eclipse Foundation (EF) — ещё один игрок на поле IoT. В качестве инструментов разработки сообщество применяет Java-ориентированный движок Kura — он требуется для создания IoT-шлюзов и оснащен гибким пользовательским интерфейсом на базе Bootstrap, упрощающим управление шлюзами с мобильных устройств. Kura может взаимодействовать с фреймворком Apache Camel с целью обеспечить простую маршрутизацию сообщений в рамках бизнес-логики приложений. В рамках EF на базе спецификации OSGi развивается модульная платформа OM2M. В ней реализован облегченный REST API, к которому можно подключиться через множество сетевых привязок, включая протоколы HTTP и CoAP, платформа поддерживает различные форматы контента, например, XML и JSON.

EF также развивает субпроект Paho и фреймворк SmartHome. Первый основан на стандарте OASIS MQTT (Message Queue Telemetry Transport). MQTT — нетребовательный к ресурсам протокол обмена сообщениями, хорошо подходящий для подключения небольших устройств к Интернету. Eclipse Paho — реализация этого протокола со стороны клиента. Eclipse SmartHome — это фреймворк для проектирования технических решений для «умных» домов с упором на среды с разнородным оборудованием.

Kaa. Проект компании CyberVision предлагает масштабируемую, с возможностью сквозного обеспечения услуг платформу для высоконагруженных, подключенных к облаку IoT-сетей. Она включает клиент-серверную архитектуру REST (Representational State Transfer, передача репрезентативных состояний) для развёртывания сервисов, решения аналитических задач и управления данными.

Координация кластерных узлов производится на базе Apache Zookeeper. Комплект SDK Kaa включает Java, C++ и Cи. Он позволяет гибко регулировать межпроцессорное клиент-серверное взаимодействие между программами, настройки аутентификации, шифрования, а также хранение и сортировку данных. Пакет SDK включает графические схемы для обвязки специфического для IoT кода. Эти схемы определяют семантику и абстрактные функции различных групп устройств в подключённой сети.

Macchina.io. Проект предоставляет веб-ориентированное, модульное и расширяемое окружение на JavaScript и Cи для разработки сетевых приложений для IoT, работающих на одноплатных компьютерах. Macchina.io поддерживает широкий набор датчиков и технологий подключения, в том числе микроплаты Tinkerforge, сенсоры XBee ZB, ресиверы Global Navigation Satellite System (GNSS)/GPS, серийные и подключаемые GPIO-девайсы, акселерометры.

GE Predix. Predix — это PaaS-сервис промышленного гиганта General Electric, созданный для большого объема именно индустриальных данных и аналитики. Технология работы Predix предусматривает непосредственное подключение промышленных установок и систем управления технологическими процессами к Интернету через облако, в котором исполняются приложения реального времени по обработке огромного количества данных. В 2017 г. станет доступен для коммерческой реализации Predix на Azure. GE и Microsoft планируют интегрировать Predix с Azure IoT Suite и Cortana Intelligence Suite, а также с приложениями Microsoft для бизнеса, такими как Office 365, Dynamics 365 и Power BI, чтобы соединить промышленные данные с бизнес-процессами и аналитикой.

Интересные подробности о Predix: платформа проводит профилактическое обслуживание 35 000 реактивных авиадвигателей в реальном времени: они передают данные в контрольные центры, где на базе индустриальной платформы разработаны стандартные модели поведения оборудования. Если обнаруживаются еле заметные расхождения в поведении объекта от расчетов по модели, аналитические приложения позволяют спрогнозировать поломку задолго до ее возникновения.

Home Assistant. Система домашней автоматизации работает на Python 3, объединяет все домашние устройства в единую сеть и позволяет управлять ими как традиционным образом — с помощью выключателей, так и с экрана смартфона, планшета или компьютера, из любой точки планеты. Home Assistant может взаимодействовать с роутерами OpenWrt, Tomato, Netgear, DD-WRT, а также Google Chromecasts, Music Player Daemon, Logitech Squeezebox и др.

Mainspring. Это Java-ориентированный фреймворк M2MLabs для обслуживания M2M-коммуникаций, включая удаленный мониторинг и телеметрию различного оборудования, управление «умными» электросетями и парком локального оборудования: контроллерами, климатическим оборудованием, системами контроля энергоснабжения, СКУД и видеокамерами, многочисленными датчиками и др. Работу фреймворка дополняет веб-сервис на базе REST — он требуется для конфигурирования девайсов и настройки инструментов.

Node-RED. Одним из наиболее важных факторов, ограничивающих развитие IoT, является отсутствие удобных средств разработки правил взаимодействия устройств IoT. Для решения этой задачи был разработан фреймворк Node-RED, позволяющий через браузер построить схему взаимодействия устройств между собой и с внешними системами и распределить IoT-узлы. Используя JSON, отдельные узлы можно быстро развёртывать в готовую среду исполнения. Node-RED может работать на Linux-платах, с его помощью производится обмен данными с сервисами Docker, IBM Bluemix, AWS и Azure.

Open Connectivity Foundation (IoTivity). IoTivity — это открытый фреймворк для обеспечения бесшовного связывания различных устройств в соответствии c концепцией Интернета вещей. Проект распространяется под свободной лицензией Apache 2.0. Обеспечена интеграция с платформами Windows, Ubuntu, Arduino, Tizen, Android, OS X и iOS. Цель IoTivity — стать эталонным стандартом IoT. За продвижение IoTivity отвечает консорциум Open Interconnect Consortium (создан в июле 2014 г., включает более 50 участников).

Стандарт обеспечивает решение таких задач, как обнаружение устройств, управление устройствами, организация передачи данных, аутентификация, разграничение доступа и управление данными. IoTivity не привязан к конкретным технологиям организации канала связи и может использовать такие каналы передачи данных, как Bluetooth, WiFi Direct, ZigBee, Z-Wave и ANT+.

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

В рамках проекта Eclipse SmartHome инфраструктура openHAB может применяться для корпоративного использования. Eclipse SmartHome пытается привести в соответствие фрагментированную экосистему «умного» дома с общими интерфейсами API для создания пользовательских интерфейсов.

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

OpenRemote. Продукт компании OpenRemote с одноименным названием позволяет создавать мобильные приложения для «умного» дома без программирования, при этом в одном приложении могут использоваться разные технологии: Z-Wave, KNX, X10, ZigBee, управление компьютером по ssh и др. OpenRemote — это сервер, выполняющий любые команды, и конструктор интерфейсов переключателей, надписей и др., этим элементам назначаются команды, например, http-запросы на выполнение JavaScript функций на сервере Z-Wave.

OpenThread. Приобретенная Google и входящая сейчас в группу Alphabet компания Nest Labs опубликовала в мае 2015 г. исходный код библиотеки OpenThread, реализующей протокол связи для устройств Интернета вещей под названием Thread. Протокол Thread используется в разработанной в Nest Labs системе Weave, предназначенной для связи между интеллектуальной домашней техникой.

Учитывая, что Thread основывается на 6LoWPAN, который, в свою очередь, использует IEEE 802.15.4, при наличии исходного кода добавление поддержки Thread требует минимальных усилий от разработчиков устройств. При использовании OpenThread обеспечивают доступ к облаку и шифрование по алгоритму AES. Проект OpenThread является очередной попыткой предложить сфере IoT универсальный язык общения. Thread уже активно используется множеством компаний, которые разрабатывают подключаемые продукты.

Eddystone/Physical Web. Проект Google Eddystone разрабатывает кросс-платформенный формат Bluetooth LE для Bluetooth-маяков. Маяками называют Bluetooth-передатчики, отправляющие какие-то данные информационного или рекламного характера, которые могут принимать смартфоны и планшеты в радиусе действия передатчика. Например, автобусная остановка может транслировать таким образом график маршрутов, магазин — рекламные акции и предложения, музей — режим работы выставок и т. д. Сообщение, приходящее в формате оповещения, может содержать ссылку, ведущую на веб-страницу.

Важным отличием Eddystone от аналогов является поддержка нескольких так называемых «типов фреймов» (блоков загруженных данных). Предыдущие решения от Apple (iBeacon) и самой Google (The Physical Web) поддерживают только один тип, что ограничивает их функциональность. Поддержка Eddystone уже встроена в Nearby API на Android в составе Google Play Services. Формат также можно использовать в iOS в качестве библиотеки. Код Eddystone доступен на GitHub по лицензии Apache v2.0.

PlatformIO. Этот проект включает в себя утилиту командной строки, через которую можно запускать компиляцию и загрузку программ на несколько семейств микроконтроллеров (Atmel AVR, Atmel SAM, ST STM32, TI MSP430 и др.). При этом поддерживаются разные наборы библиотек: Arduino, Energia, mbed, а также нативный код для Atmel AVR, espressif, MSP430.

PlatformIO может быть востребован разработчиками, которые пишут ПО для одноплатных компьютеров на разных процессорах или архитектурах — их код будет компилироваться под разные платы. Проект имеет интегрированную среду разработки. Для работы с PlatformIO требуется скачать языковой пакет Python и текстовый редактор SublimeText. Поддерживается более 200 плат.

Thing System. Программная платформа автоматизации дома на базе Node.js. Особенность платформы в том, что она работает на базе ИИ-движка, может самообучаться и обрабатывать запросы уровня M2M не требуя вмешательства человека. Отсутствие подключения к облачным сервисам повышает безопасность платформы и конфиденциальность хранящихся в ней данных.

ThingSpeak. Данная платформа позволяет писать приложения для обработки данных, собранных с датчиков. К основным возможностям ThingSpeak можно отнести: сбор данных в реальном времени, анализ данных и их визуализация. ThingSpeak API позволяет не только отправлять, хранить и получать доступ к данным, но и предоставляет различные статистические методы их обработки.

Основу платформы составляют каналы, в которые и посылаются данные для хранения и визуализации. Каждый канал включает в себя восемь полей для любого типа данных, три поля для местоположения (широта, долгота, высота), и одно поле состояния. После регистрации в ThingSpeak своего канала в него сразу можно отправлять данные, обрабатывать их и получать к ним доступ через корпоративные приложения. Каналы поддерживают форматы данных JSON, XML и CSV.

SiteWhere. Проект позволяет бизнесу создавать решения IoT без специфичного программирования. Оборудование может быть привязано к физическим или логическим ресурсам с помощью подключаемых готовых коммерческих модулей. SiteWhere поддерживает многочисленные протоколы, такие как MQTT, JSON, AMQP, XMPP, Stomp, JMS и WebSockets при помощи опубликованных API. Данные могут быть сохранены в облаке или на локальных серверах. SiteWhere предоставляет интерфейсы для настраиваемых по событиям триггеров, поиск и аналитику, а также техподдержку для быстрой интеграции индивидуальных данных устройства в другие платформы.

Zetta. В основе Zetta лежит программная платформа Node.js, которая помогает связывать устройства с облаком для создания геораспределенной сети. Zetta сочетает интерфейсы REST, WebSockets и реактивное программирование, что подходит для сборки устройств в решение для обработки больших объёмов данных в реальном времени. Zetta служит основой таких коммерческих платформ, как Apigee.