[Перевод] Подключаем устройства Intel для интернета вещей к Microsoft Azure IoT Suite

Если подключить устройства для IoT, основанные на микроконтроллерах Intel, к PAAS-решению Microsoft Azure IoT Suite, получится среда для реализации бесчисленного множества проектов в области интернета вещей. Сегодня мы расскажем об особенностях Azure IoT Suite и поговорим о том, как связывать с этим набором облачных служб Intel Edison, Intel Curie и шлюзы от Intel.

cfc6454f9de1e2e5d20af1dd38563b8f.jpg

Azure IoT Suite и Microsoft Azure


Azure — это открытая, гибкая облачная вычислительная платформа корпоративного класса. Она представляет собой постоянно развивающийся комплекс интегрированных сервисов, таких, как службы аналитики, средства для работы с базами данных и сетевые инструменты. Azure поддерживает работу с мобильными системами и хранилищами данных, позволяет создавать сложные веб-проекты. Одна из особенностей Azure — возможность быстрого масштабирования. То есть, если проекту, на некотором этапе его развития, понадобится больше мощности, он её получит.

Microsoft предлагает набор инструментов Azure IoT Suites, который является частью предварительно сконфигурированных IoT-решений компании, построенных на базе Azure. Такой подход упрощает, в частности, безопасное подключение «вещей» к облаку.

Широкий набор протоколов, который поддерживает Azure и набор IoT-сервисов из Azure IoT Suites позволяют быстро создавать приложения для интернета вещей. IoT-сервисы дают разработчику возможность собирать данные с устройств, анализировать потоки информации в реальном времени, хранить большие наборы данных и работать с ними, производить анализ и визуализацию как данных в реальном времени, так и исторических сведений.

Сервисы, о которых мы говорим, включают в себя следующее:

  • Azure IoT Hub — точка подключения для IoT-устройств.
  • Azure Machine Learning — система машинного обучения.
  • Azure Stream Analytics –средство обработки потоковой информации.
  • Azure Notification Hubs — концентраторы уведомлений.
  • Microsoft Power BI — набор средств бизнес-аналитики.

Их можно комбинировать с другими возможностями Azure, такими, как хранилища BLOB-объектов и когнитивные сервисы, что позволяет, например, строить интеллектуальные IoT-приложения.

Azure IoT Hub — это среда для организации двунаправленного обмена данными между устройствами и облаком. Данный сервис предоставляет такие возможности, как управление устройствами и их идентификацию, обеспечение безопасности. Он поддерживает протоколы MQ Telemetry Transport (MQTT), HTTP и Advanced Message Queuing Protocol (AMQP). Azure IoT Hub предоставляет полный доступ к устройству через собственный реестр. Он поддерживает аутентификацию устройств и безопасный двунаправленный обмен данными между ними и облаком. Сервис так же можно интегрировать с собственным реестром устройств с помощью службы удостоверений, можно создавать идентификаторы устройств и организовывать защищённые каналы связи.

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

Azure Machine Learning даёт разработчику графические инструменты для построения моделей машинного обучения. Система поддерживает специализированные пакеты R и Python. Предварительно подготовленные алгоритмы позволяют добавлять в систему собственный код и строить модели, соответствующие нуждам конкретного проекта.

Azure Stream Analytics предоставляет возможности обработки потоков данных в реальном времени. Речь идёт о миллионах событий в секунду. Это позволяет сравнивать и согласовывать множество потоков, работать с данными, используя SQL, создавать информационные панели, настраивать напоминания.

Azure Notifications Hub предоставляет универсальный интерфейс для отправки push-уведомлений на мобильные устройства.

Power BI — это облачная служба, которая, в тесном взаимодействии с другими инструментами Microsoft, позволяет визуализировать и анализировать данные с помощью мощных и гибких средств. Например, Azure Stream Analytics может поставлять данные Power BI, после чего они, в реальном времени, выводятся на информационную панель, предназначенную для дальнейшей работы с поступившей в систему информацией.

Способы взаимодействия Azure и удалённых устройств


Как уже было сказано, Azure IoT Hub поддерживает протоколы HTTP, AMQP, и MQTT. Взаимодействие между устройствами Intel (да и любыми другими IoT-устройствами) и Azure должно осуществляться только с использованием этих протоколов.

MQTT это нетребовательный к ресурсам способ обмена сообщениями (Message Oriented Middleware, MOM), основанный на модели издатель — подписчик. Протокол разработан для связи между устройствами в условиях, когда объём передаваемых данных невелик.

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

Клиент может действовать в роли подписчика и получать сообщения, опубликованные в некоторой теме. Если клиент играет роль издателя, он публикует сообщения, так же указывая тему. В контексте IoT, устройства, для приёма или отправки сообщений, подключаются к центральному MQTT-брокеру по TCP.

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

AMQP — ещё один популярный способ обмена сообщениями. Протокол поддерживает модель, основанную на запросах, а также, как и MQTT, модель издатель — подписчик. Кроме того, сообщения могут обрабатываться в рамках транзакций. AMQP работает поверх TCP и предоставляет средства для надёжной доставки сообщений.

Протокол AMQP, кроме того, благодаря использованию AMQP-серверов, позволяет организовывать связь между самыми разными клиентскими системами, созданными на базе различных аппаратных и программных платформ.

С точки зрения IoT, например, это означает, что некие сенсоры, генерирующие данные, могут отправлять их AMQP-серверу (в необработанном или обработанном виде), а эти данные затем передаются другим системам для мониторинга и анализа.

Azure IoT Hub предоставляет вспомогательные SDK для работы с устройствами, рассчитанные на Linux, Windows, операционные системы реального времени. Это значительно упрощает развёртывание соответствующих клиентов на различных устройствах и подключение их к Azure IoT Hub. Однако, применение SDK необязательно. Производители устройств могут использовать соответствующие API для того, чтобы встраивать в свои изделия программные модули, необходимые для подключения к платформе Azure. Например, это JavaScript-API для платы Intel Edison или оптимизированные C-библиотеки для Linux-устройств. Вышеупомянутые SDK можно найти здесь.

Вот схема взаимодействия IoT-устройств с Azure IoT Hub.

66e6625eb3fd3bd6e67fa38cb541a01a.jpg

Подключение IoT-устройств Intel к Azure IoT Hub с использованием протоколов AMQP или MQTT

Подключение платы Intel Edison к Azure IoT Hub


Для того, чтобы подключить Intel Edison к Microsoft Azure IoT Hub, можно воспользоваться одной из библиотек (на C, на JavaScript для Node.js, или на Java) из Azure IoT SDK. Для целей разработки и отладки нужно будет загрузить подходящую IDE. Например, Intel XDK IoT Edition подойдёт для JavaScript, Intel System Studio IoT Edition можно использовать для разработки на C и C++. Java-программисты могут работать в среде Intel System Studio IoT Edition, которая рассчитана на Java. Если планируется писать для Edison Arduino-скетчи, можно взять Arduino IDE.

После того, как выбор сделан, соответствующие библиотеки из Azure IoT SDK можно интегрировать в собственный код, подключить устройство к облаку и организовать обмен данными. Например — передавать в Azure показатели датчиков.

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

  1. В разделе Выбор устройства нужно щёлкнуть по значку Intel Edison.
  2. В разделе Выбор платформы — по значку Linux.
  3. В разделе Выбор языка надо выбрать ту закладку, которая соответствует нужному языку программирования. Здесь доступны C, C#, JavaScript и Java.

Система сгенерирует код для заданного устройства, платформы и языка. В переменной connectionString должно находиться значение, соответствующее учётной записи разработчика в Azure IoT Hub. О параметрах, которые должны присутствовать в этой переменной, можно узнать на портале Azure.

Для того, чтобы взаимодействовать с датчиками и актуаторами, подключёнными к Edison, Intel предоставляет библиотеку Libmraa. Эта библиотека создаёт уровень абстракции поверх поддерживаемого аппаратного обеспечения. В результате можно организовать удобную работу с устройствами, подключёнными к плате. Например, читать показания датчиков. Кроме того, библиотека подходит для создания приложений, рассчитанных на разные платформы.

После того, как показания датчиков были прочитаны, их можно передать в Azure IoT Hub с использованием протоколов AMQP или MQTT. Обычно данные конвертируют в некий удобный для работы формат, вроде JSON, и пересылают с использованием клиентской библиотеки Azure IoT Hub. Если у устройства есть такая возможность, оно может подключиться напрямую к интернету и к Azure IoT Hub посредством Wi-Fi или по Ethernet. Ещё один вариант — подключение к шлюзу Intel, который, в свою очередь, связан с Azure.

Подключение вычислительного модуля Intel Curie к Azure IoT Hub


Модуль Intel Curie использует интегральную систему Intel Quark. Это — экономичное решение для создания носимых устройств, потребительской и промышленной электроники. В Intel Curie встроен 6-осевой комбинированный сенсор, объединяющий гироскоп и акселерометр, энергоэффективный Bluetooth-передатчик. Это делает Curie идеальным выбором для создания устройств, которые должны быть постоянно включены, например — приборов для контроля физической формы и показателей жизнедеятельности организма.

Для того, чтобы приступить к прототипированию устройств и созданию приложений, можно использовать соответствующую Arduino-совместимую плату — Genuino 101 (Arduino 101). Такие платы поставляются вместе с Intel Curie. Для разработки Arduino-скетчей используется Arduino IDE. Здесь, в частности, можно создать приложение, которое будет получать сведения с датчиков, подключённых к плате.

Эти сведения можно передать в Azure IoT Hub. Один из вариантов подключения к интернету устройств, основанных на Intel Curie, заключается в следующем. Устройство соединяется по Bluetooth со смартфоном, который, в свою очередь, подключён к интернету через сотовую сеть или по Wi-Fi. В результате данные с устройства можно передать в Azure. Существуют специальные библиотеки поддержки Bluetooth для Intel Curie. Они значительно облегчают взаимодействие с другими устройствами, поддерживающими Bluetooth.

Ещё один вариант подключения платы к Azure заключается в работе с облачным сервисом через шлюз Intel для интернета вещей.
Способы взаимодействия Intel Curie с Azure не исчерпываются вышеперечисленными вариантами. Так, например, можно подключить Curie к интернету напрямую, использовав плату расширения Wi-Fi. Способ подключения устройства к интернету зависит от особенностей конкретного проекта.

Программная экосистема Intel Curie постоянно развивается, в частности, ведется работа над ОС реального времени для этого модуля. На этой странице можно узнать подробности и подписаться на новости проекта.

Подключение шлюзов Intel к Azure IoT Hub


Шлюзы Intel для интернета вещей применяются, в основном, в ситуациях, когда устройства не могут напрямую подключиться к Azure IoT Hub. Такое случается при несовместимости поддерживаемых протоколов, или если данные с устройств нужно, перед отправкой в облако, обработать, например — отфильтровать или оперативно проанализировать на месте их сбора. Кроме того, шлюз может использоваться в тех случаях, когда к сетям передачи данных предъявляются особые требования, например, касающиеся безопасности.

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

Подобные устройства обычно используют узкоспециализированные протоколы, такие, как ZigBee или ZWave. Напрямую к Azure IoT Hub эти устройства не подключить, а вот с помощью шлюза можно собрать с них данные и отправить в облако с использованием подходящего протокола.

Для организации связи шлюзов Intel с Azure IoT Hub можно воспользоваться одной из библиотек Azure IoT SDK. В частности, доступны библиотеки для C, C++, Python, JavaScript, Java. Настройка шлюза на работу с Azure очень похожа на подключение к облаку Intel Edison.

О разработке IoT-приложений с использованием Azure IoT Hub и сервисов Azure


Когда данные с устройства оказались в Azure IoT Hub, можно начать работать с ними. Например — визуализировать. Обычно другие сервисы Azure используют данные из Azure IoT Hub для дальнейшей обработки.

Скажем, можно создать сервис Azure Stream Analytics, обращение к которому производится после того, как данные поступили в Azure IoT Hub. Этот сервис будет использовать заданные правила для фильтрации и обработки поступивших от устройства данных, используя SQL-подобные запросы и выводя результаты в хранилище (например, в Azure Blob), передавая их Azure Event Hubs или даже в Power BI для визуализации.

Azure Event Hubs работает как центральный узел обработки данных, где множество обработчиков событий могут получать сообщения от главного сервиса и выполнять требуемые действия. Например, обработчики событий могут вызывать сервис Azure Machine Learning для анализа отфильтрованных данных и прогнозирования на их основе неких будущих показателей, а другой обработчик может обращаться к Azure Notification Hub для отправки уведомлений на мобильные устройства.

Итоги


Мы рассказали о наборе сервисов Microsoft Azure IoT Suite и о том, как подключать к ним устройства Intel для интернета вещей
Когда данные оказываются в облаке, приходит время работать с ними. В частности, благодаря обширной интегрированной инфраструктуре, можно быстро создавать IoT-приложения, комбинируя различные сервисы Azure и реализуя IoT-проекты любой сложности.

Комментарии (0)

© Habrahabr.ru