Отправляем и визуализируем данные с платы Intel Galileo/Edison в облаке Azure

Дата публикации: 03.09.2015


Речь пойдет немного о процессе подключения Intel Galileo & Edison к Microsoft Azure, отправке простых данных и их визуализации с помощью сервисов Azure.

Начнём с Galileo. О Galileo много писали в блоге Intel (раз, два), много раз писали наши коллеги (например, Сергей Байдачный), поэтому сконцентрируюсь только на практической части, опробованной нами на наших и Intel-хакатонах.

Для того, чтобы подключить Galileo к компьютеру, есть несколько опций — Ethernet, USB и отладочный 6-пиновый кабель. Самым простым и доступным является подключение по Ethernet.
Проблемой является то, что по умолчанию сеть на Galileo не настраивается, и увидеть ее даже после подключения кабелем не получится.
Есть два решения этой проблемы:

  • Подключить Galileo к роутеру, который раздаст ей IP-адрес (по Ethernet или Wi-Fi). Это самый удобный и функциональный способ — плата сможет выходить в интернет.
  • Подключить плату к компьютеру и раздать ей IP-адрес с помощью собственного DHCP-сервера. Можно использовать OpenDHCPServer. Для его настройки необходимо сконфигурировать интерфейс, к которому будет подключаться Galileo, на статический адрес (например, 192.168.0.1) и добавить этот адрес для прослушки в конфигурацию OpenDHCPServer, после чего запустить его как сервис либо standalone. В этом случае для того, чтобы плата увидела интернет, нужно проводить дополнительные настройки.

После получения IP-адреса можно подключиться к плате по SSH. Если у вас Edison, то всё проще – достаточно вызвать ./configure

На Galileo по умолчанию установлен образ Yocto Linux, который имеет свою специфику, но поставить на него необходимое ПО можно. Можно еще поставить Windows 8. Windows 10 для Galileo&Edison нет.

Для этого нужно подключиться по SSH.

Мы будем использовать Putty.

  • Первым шагом надо определить IP-адрес машины. Если подключили к роутеру, можно посмотреть на администраторской панели роутера, какой IP-адрес был роздан DHCP. Если OpenDHCPServer, то в консоли увидите, что IP роздан.
  • Вводим нужные данные.



Логин root, пароля по умолчанию нет.

Начинаем настраивать экосистему. Будем использовать Python и устанавливать Azure SDK for Python, но вы можете установить любой другой доступный SDK либо самостоятельно написать необходимый код.

Загружаем Azure SDK for Python:

git clone https://github.com/Azure/azure-sdk-for-python.git
   cd azure-sdk-for-python/
   python setup.py install

 

Устанавливаем актуальную дату:

rdate -s time.nist.gov

 

(надо выполнять, чтобы не получить ошибки 401ExpiredToken: при отправке сообщения в очередь Azure)

Устанавливаем и обновляет необходимый софт:

opkg update
opkg install openssl
opkg install curl

 

Устанавливаем менеджер пакетов PIP — он понадобится для удобного управления модулями Python.
Процесс установки может быть достаточно долгим (около 5-10 минут), при этом может быть не виден. Не обрывайте его.

curl https://bootstrap.pypa.io/get-pip.py -k | python

Создадим файл для нашего примера. Данная очередь предназначена для тестирования.

from azure.servicebus import ServiceBusService,Message, Queue
import base64
 
service_namespace = 'demostand-ns'
key_name = 'AuthRead'
key_value = 'ax2UKT7ppf0ti8uslO8p+HSF4qfprqLKTdY893Io+to='
 
queue_name = 'galileo'
message = Message(base64.b64encode('Hello World'))
 
sbs = ServiceBusService(service_namespace,
shared_access_key_name=key_name,
shared_access_key_value=key_value)
 
sbs.send_queue_message(queue_name,message)

 

Если вы хотите создать новую очередь, вам нужно создать новый аккаунт Microsoft Azure и очередь Service Bus Queue. В пространстве имен можно создавать другие очереди и др.



Перейдите на страницу созданной очереди.



Нажмите «Сведения для подключения».

Для того, чтобы взаимодействовать с очередью, нам нужно создать правило доступа. Нажмите на «Щелкните здесь для настройки».

Введите в нижний блок название правила fullaccess, после чего выберите уровень доступа «Управление» — полный доступ к очереди. Нажмите «Сохранить».



Снова нажмите на «Сведения для подключения» и скопируйте название и ключ доступа.

Теперь вы можете заменить тестовые значения в коде на новые значения из вашей собственной очереди.

Для того, чтобы запустить пример, понадобится установить модуль:

pip install python-dateutil

 

Теперь можно выполнить пример:

python 1.py

 

Пример будет посылать простые сообщения в очередь.

Аналогично происходит создание Event Hub (гораздо более подходящий для маленьких сообщений механизм для сбора сообщения).

Для управления и доступа к Event Hubs используется собственный механизм безопасности.

Пример для отсылки сообщений в Event Hub на Python лежит на Github.

Вы можете получить их из приложения с помощью API, из Service Bus Explorer либо Stream Analytics — удобного сервиса для потоковой обработки данных. Т.е., вместо того, чтобы самостоятельно реализовывать механизм забора данных в (около)реальном времени из источника (в данном случае очереди), простой их обработки (например, агрегации или усреднения за какой-то период) и дальнейшей передачи, можно подключить Stream Analytics как готовый сервис.

Stream Analytics можно создать с помощью инструкции.

SQL-скрипт, который будет усреднять значения температуры, внутри Stream Analytics, ниже. Он состоит из двух скриптов – один из них берет поток и передает его в SQL Server (конфигурируется в качестве Output с соответствующим названием) для истории и в PowerBI для визуализации.

SELECT
    DateAdd(second,-5,System.TimeStamp) as WinStartTime,
    system.TimeStamp as WinEndTime,
    DeviceId,
    Avg(Temperature) as AvgTemperature,
    Count(*) as EventCount
INTO outputbi
FROM input
GROUP BY TumblingWindow(second, 5), DeviceId

SELECT
    DateAdd(second,-5,System.TimeStamp) as WinStartTime,
    system.TimeStamp as WinEndTime,
    DeviceId,
    Temperature as Temperature,
    Count(*) as EventCount
INTO outputsql
FROM input
GROUP BY TumblingWindow(second, 5), DeviceId


Подставив вместо имеющихся данных по Event Hub ваши данные, вы сможете перенаправить поступающий поток данных от устройства туда, куда вам необходимо — в другую очередь Event Hub, в хранилище (например, в виде JSON) и др.

Оттуда вы можете достать эти данные и обработать их с помощью любых средств — например, HDInsight, либо визуализировать их с помощью Excel либо PowerBI.

Например, PowerBI:


Или Azure SQL:



Или даже Excel:

Автор статьи: Александр Белоцерковский