Аналитики Gartner опубликовали ТОП-10 стратегический ИТ-трендов 2019. Отдельно было отмечено, что половина из них будет развиваться в тесном взаимодействии с интернетом вещей. К следующему поколению IoT компания отнесла создание интернета автономных вещей, цифровых двойников, интеллектуальных граничных технологий, иммерсивных технологий и интеллектуальных пространств.*
«К примеру, искусственный интеллект в виде автоматизированных вещей и дополненного интеллекта используется вместе с IoT, периферийными вычислениями и цифровыми двойниками для создания высокоинтегрированных интеллектуальных пространств, — пишет в пресс-релизе Дэвид Кэрли, вице-президент Gartner. — Этот тренд формируется в течение уже некоторого времени вокруг таких направлений, как умные города, цифровые рабочие места, умный дом и интеллектуальные предприятия. Мы полагаем, что рынок вступает в период ускоренной разработки полноценных интеллектуальных пространств, когда технология будет становиться неотъемлемой частью нашей повседневной жизни…»
Средства сбора и анализа данных
На что обратить внимание?
NodeRED
Продукт компании IBM —популярное решение для быстрого прототипирования IoT-сервисов. NodeRED позволяет организовать процесс сбора данных с устройств, реализовать логику их обработки, а также содержит средства для создания дашбоардов. Учитывая большое количество доступных модулей и простоту разработки, может использоваться как основной компонент при создании минимально жизнеспособного продукта (MVP).
Freeboard
Решение помогает быстро создавать информационные панели для отображения данных с устройств. Может быть использован при прототипировании сервисов и создании MVP.
Apache NiFi
NiFi — это программный проект с открытым кодом. ETL/ELT-инструмент умеет работать со множеством систем, причем не только класса Big Data и Data Warehouse. NiFi — хорошо масштабируемая распределенная система с гарантированной доставкой, backpressure (умением хранить данные до выгрузки их другими, более медленными системами) и балансировкой нагрузки. Такая функциональность хорошо подходит для IoT-приложений, которые часто работают в условиях нестабильного сетевого окружения.
Eclipse Mosquitto
Mosquitto — сервер MQTT с открытым исходным кодом, лицензией EPL/EDL. Совместим с MQTT версий 3.1.1 и 3.1.
HiveMQ
Отказоустойчивый брокер сообщений с поддержкой кластеризации. Полностью совместим с протоколом MQTT версий 3.1, 3.1.1 и 5.0, в том числе в распределенном режиме.
Для каждой задачи применяются свои технологии. Например, для быстрого прототипирования и проверки гипотез имеет смысл использовать NodeRED и Freeboard, а для создания промышленных решений — NiFi, AWS IoT или Azure IoT.
Выбор провайдера и реализация серверной части
Реализация серверной логики возможна на одном из двух направлений. Его выбор мы делаем только после общения с заказчиком:
- Для реализации серверной логики обработки запросов от конечных устройств в облачной платформе, Microsoft предлагает использовать Azure IoT Hub. Для этих же целей можно воспользоваться сервисом от Amazon — AWS.Напомним, что Azure IoT Hub — это среда для организации двунаправленного обмена данными между устройствами и облаком. Сервис помогает идентифицировать и управлять устройствами, обеспечивает безопасность за счет шифрования и подписывания передаваемых данных. Кроме того, Azure IoT Hub поддерживает все описанные в предыдущей статье протоколы, предоставляет локальное хранилище и выделенную очередь сообщений для каждого подключенного устройства. Такая возможность позволяет безопасно работать с сообщениями и избавиться от лишней работы по созданию отдельных очередей отправки информации на устройства. Все вышесказанное также справедливо и для AWS IoT. Он помогает безопасно подключать устройства, собирать и анализировать данные (даже локально при отсутствии подключения к интернет), предлагает широкий набор инструментов для разработчиков. (В ноябре 2017 года Amazon объявил о выходе шести новых сервисов: AWS IoT 1-Click, AWS IoT Device Management, AWS IoT Device Defender, AWS IoT Analytics, Amazon FreeRTOS и AWS Greengrass ML Inference)**.
- Другой вариант размещения серверной логики — это виртуальные машины или реальные сервера. Для такого размещения целесообразно применять контейнеризацию используя Docker. Docker — платформа, которая «упаковывает» приложение, его зависимости, middleware и прочее в так называемый «контейнер». После чего разработчик может развернуть контейнер на любом сервере, где установлен Docker. Делается это буквально одной командой за доли секунды. Такая возможность платформы решает сразу несколько задач. В первую очередь, процесс запуска приложения на сервере многократно упрощается. Во вторую, какие-либо проблемы в контейнеризированном приложении никак не повлияют на сам сервер, так же, как и специфические настройки сервера не повлияют на приложение. Лучшей платформой при таком размещении будет Kubernetes как система управления контейнерами, в том числе контейнерами Docker.
Клиентское приложение
В создании клиентского приложения нет каких-то уникальных решений свойственных только IoT. Оно может быть реализовано в виде сайта или мобильного приложения, которое работает с серверной частью и отображает данные, собранные с конечных устройств.
Как применить на практике IoT-решение?
С учетом описанных выше технологий и сервисов в Программные технологии реализованы следующие проекты:
- Агрегирование и обработка данных с маячков iBeacon для оптимизации выставочного пространства. Проект разработан по заказу Emerging Internet Technologies Group (подразделение IBM) для международной компании по производству мебели класса люкс. Подробнее о задаче и реализации можно узнать здесь.
- Сбор данных с протезов с последующей визуализацией информации для отслеживания их функциональных свойств. Проект разработан с использованием протокола MQTT, сервера Eclipse Mosquitto и инструмента сбора данных Node-Red по заказу компании «Моторика». Подробнее о задаче и ее реализации можно узнать здесь.
- Визуализация данных с датчиков моторного катера и GPS навигатора для обеспечения безопасности участников мировой гонки SilverHook Powerboat Racing. Проект разработан по заказу Emerging Internet Technologies Group (подразделение IBM). Задача реализована с применением платформы IBM IoT, сервера Eclipse Mosquitto и протокола MQTT, подробнее о ней можно узнать здесь.
Особенности реализации проектов в Программные технологии
На что обратить внимание при оценке IoT-проекта?
В Программные технологии мы даем оценку реализации той части системы, где идет работа с данными, полученными от IoT-устройств. В зависимости от требований к проекту эту часть системы можно представить веб-приложением, развернутым в облаке или на серверах заказчика.
Первое, что стоит выяснить по IoT-проекту, — есть ли у заказчика ограничения в выборе протокола и сервера. От этого зависит дальнейшая архитектура, выбор инструментов и стоимость всего проекта.
Что уточняем:
- Какие протоколы используются на стороне заказчика?
- Можно ли получать данные с устройств по протоколу MQTT?
- Если в проекте необходимо определять местоположение или считывать информацию внутри помещения, выясняем: есть ли ограничения на использование iBeacon и Eddystone?
Почему это важно? Применение протоколов, не подходящих для IoT-проектов, может привести к увеличению сроков разработки и расходов при эксплуатации решения. О таких перспективах лучше заранее предупредить заказчика.
На что еще стоит обратить внимание?
Важно понять, как должна работать система: в облаке или локально?
Если речь идет о размещении в облаке, в качестве универсального решения можно предложить Azure IoT Hub или AWS IoT. Это даст определенные преимущества: готовая инфраструктура с протоколами, настроенными на взаимодействие с конечными устройствами и базами данных; балансировка нагрузки и так далее (подробнее об этом мы писали в предыдущей статье).
Если заказчику интереснее локальное размещение, предлагаем приложение, которое ставится на реальный или виртуальный сервер в той же сети, куда поступают данные по выбранному протоколу. Возможно, для решения такой задачи подойдет Kubernetes (если он соответствует остальным требованиям к проекту).
Следующим шагом переходим к уточнению требований по функционалу и оценке разработки приложения.
Ссылки на источники:
* Gartner опубликовал исследование ТОП-10 стратегических трендов в ИТ на 2019 год:
https://www.gartner.com/doc/3891569
** Информация о сервисах AWS IoT и Azur IoT с сайтов производителей:
https://aws.amazon.com/ru/iot/
https://azure.microsoft.com/ru-ru/services/iot-central/
*** Примеры IoT-проектов разработанных в Аксмор:
https://programmingtech.ru/projects/?catIds=608