Как работает IoT: анализ технических решений. Часть 2

Вторая часть посвящена средствам сбора и анализа данных, реализации серверной части IoT-проекта и практическим решениям.
Читать 5 минут
Поделиться

Аналитики Gartner опубликовали ТОП-10 стратегический ИТ-трендов 2019. Отдельно было отмечено, что половина из них будет развиваться в тесном взаимодействии с интернетом вещей. К следующему поколению IoT компания отнесла создание интернета автономных вещей, цифровых двойников, интеллектуальных граничных технологий, иммерсивных технологий и интеллектуальных пространств.*

«К примеру, искусственный интеллект в виде автоматизированных вещей и дополненного интеллекта используется вместе с IoT, периферийными вычислениями и цифровыми двойниками для создания высокоинтегрированных интеллектуальных пространств, — пишет в пресс-релизе Дэвид Кэрли, вице-президент Gartner. — Этот тренд формируется в течение уже некоторого времени вокруг таких направлений, как умные города, цифровые рабочие места, умный дом и интеллектуальные предприятия. Мы полагаем, что рынок вступает в период ускоренной разработки полноценных интеллектуальных пространств, когда технология будет становиться неотъемлемой частью нашей повседневной жизни…»

Copyright (c) 2018, Eclipse Foundation, Inc. | Made available under a Creative Commons Attribution 4.0 International License (CC BY 4.0).

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

На что обратить внимание?

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)**.
Copyright (c) 2018, Eclipse Foundation, Inc. | Made available under a Creative Commons Attribution 4.0 International License (CC BY 4.0).
  • Другой вариант размещения серверной логики — это виртуальные машины или реальные сервера. Для такого размещения целесообразно применять контейнеризацию используя 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


Опубликовано 07 февраля 2020
Автор Анна Терехина
Поделиться