Как стать автором
Обновить

Intel Edison. Работа с облаком Intel IoT Analytics: регистрация и отправка данных

Время на прочтение 9 мин
Количество просмотров 13K
cloud IoT

В статье дается краткое описание облака Intel IoT Analytics, предназначенное для сбора данных и управления устройств. Рассмотрена практическая работа с облаком на примере Intel Edison (Intel Edison. Первый запуск).

Прошли те времена, когда от устройства не требовалось умение взаимодействия с сетью. Управление, мониторинг, теперь должны выполняться не только в непосредственной близости, а удаленно. Потребовалось получать данные и управлять устройствами через сеть Интернет. На данный момент уже разработано большое количество устройств и управлять ими по отдельности оказалось достаточно трудно реализуемой задачей.

Для унификации потребовался некоторый универсальный посредник, промежуточный слой для работы с устройством. Так появился новый тип взаимодействия Machine-to-Cloud(M2C), взаимодействия устройства с облаком.

Устройство взаимодействует с облаком, по средством стандартизованного протокола. Облако реализует все логику сбора, хранения, управления данных. Также позволяет отправлять команды на устройства для управления им. Облако является универсальным “клеем” для самых разных устройств, непохожих друг на друга. Пользователь взаимодействует с облаком через веб-интерфейс или публичное API. Ниже пойдет речь об облаке Intel IoT Analytics и взаимодействия с ним Intel Edison.

На текущий момент облако функционирует в бета-режиме.
В функциональные возможности облака Intel IoT Analytics, входит:
  • Сбор данных от датчиков
  • Управление устройством. Получение управляющих команд
  • Отображение графиков данных на портале
  • Создание правил за слежением устройства
  • Загрузка данных с портала для последующего хранения и анализа у “себя”
  • Поддержка REST API

Облако взаимодействует с устройствами по протоколу REST. Поэтому можно обеспечить работу с облаком для любого устройства, которое поддерживает Ethernet и SSL(все данные отправляются только в зашифрованном виде). Портал http://dashboard.us.enableiot.com обеспечивает базовый минимум просмотра данных и управления устройством. Разработчики могут сделать свою панель мониторинга и управления устройством используя протокол REST, для получения данных от облака Intel IoT Analytics.

Командные на устройство передаются по протоколам WebSocket и MQTT. В связи с тем, что большинство устройств не имеют публичного IP адреса(располагаются за МСЭ или NAT), то для отправки команд на устройство будем использовать WebSocket.

Данные с Intel Edison будут оправляться по Wi-Fi.

Создание структуры данных
Для обмена данными с устройством используются компоненты двух типов:
  • Sensor(датчик) — получение данных от датчиков, например текущая температура
  • Actuator — управляющий компонент, позволяет формировать команды устройству, например включить или выключить освещение в комнате

Прежде чем создавать датчик или управляющий компонент, необходимо создать Тип компонента.

Тип компонента описывает:
  • тип передаваемых данных(числовые значение, температура +21; булевский тип, включено или выключен кондиционер)
  • Минимальное и максимальное значение
  • Отображаемая единица: кг, м, дюймы

На портале уже создано несколько базовых типов: температура, влажность, переключатель. Каждый тип имеет свою версию. После изменения любого свойства типа, добавляется +0.1 к версии. Т.е. если для типа Температура V1.0 зададим нижнее граничное значение, то автоматически будет создана новая версия V1.1.

Датчики привязываются к устройствами, которые в свою очередь объедены на портале под административной учетной записью.

На портале http://dashboard.us.enableiot.com создается учетная запись администратора. Дополнительно для доступа к данным других лиц, Администратор может создать учетные записи двух типов Только просмотр и Администратор.

На портале регистрируется устройство Intel Edison c уникальным ID. Для каждого устройства задаются дополнительные атрибутивные поля. Устройств может быть несколько. К каждому устройству привязывается компонент. Компонент является датчиком для отправки данных в облако или управляющим объектом.

Концептуально структура данных выглядит так:
Intel IoT Analytics

Для каждого компонента определяется его тип:
Intel IoT Analytics

Отправка и получение данных осуществляется в JSON формате
Пример:

POST dashboard.us.enableiot.com/v1/api/data:deviceId 
{
"accountId": ”",
"data": [
{
"componentId": ”",
"on": 1412456872000,
"value":"1.23"
}
],
"on": 1412456872000
}

Для демонстрации возьмем стенд из предыдущего поста Intel Edison. Первый запуск. Будем отправлять в облако данные с датчиков: температура, атмосферное давление, уровень влажности почвы в горшке с цветком.

Практическая часть состоит из трех этапов:
  1. Создание учетной записи на портале Intel IoT Analytics. Создание типов датчиков
  2. Настройка Intel Edison и регистрация устройства на портале
  3. Написание Arduino-кода

Создание учетной записи на портале Intel IoT Analytics. Создание типов датчиков
1. Выполним регистрацию на портале Intel IoT Analytics. Можно использовать OAuth:

Intel IoT Analytics

2. Укажем свое название облака:

Intel IoT Analytics

3. Панель управления. Пока нет ни одного устройства:

Intel IoT Analytics

4. Теперь требуется выполнить регистрацию типов датчиков на портале. Перейдем в раздел Account. Для начала уже зарегистрировано несколько типов датчиков.

Intel IoT Analytics

5. Откроем датчик Temperature:

Intel IoT Analytics

Укажем минимальную температуру 0, максимальную 40:

Intel IoT Analytics

Сохраним изменения. И после сохранения, автоматически добавится инкремент к версии датчика.

Intel IoT Analytics

6. Создадим новый датчик Add a New Catalog Item. Атмосферное давление.

Для упрощения задания краевых значений, воспользуемся информацией с meteovesti.ru. Самое высокое давление было зарегистрировано на севере Западной Сибири, на метеостанции Агата, 31 декабря 1968 года 812,4 мм.рт.ст. На суше самое низкое давление (приведенное к уровню моря) отмечено во время урагана 2 сентября 1935 года во Флориде-Кис, в США 669,3 мм.рт.ст.

Переведем в паскали:
1 паскаль [Па] = 7.50063755419211E-03 миллиметр ртутного столба (0°C) [мм рт.ст.]
Получается нижняя граница [Па] 669,3 мм.рт.ст. / 0,0075 = 89 240
верхняя граница [Па] 812,4 мм.рт.ст. / 0,0075 = 108 320

Заполним поля:

Intel IoT Analytics

7. И третий датчик - влажность почвы. Значение указывается в процентах. Где 0 - соответствует состояние абсолютной сухости. 100 - датчик погружен в воду.

В отличие от выше указанных типов Float и Integer, укажем тип Percentage. Название типа не должно содержать пробелов.

Intel IoT Analytics

На этом работу с порталом закончим, позже к нему вернемся.

Настройка Intel Edison и регистрация устройства на портале
В качестве устройства выступает демонстрационный стенд на Intel Edison из предыдущего поста Intel Edison. Первый запуск.

Для отправки данных Intel Edison использует агент, работающий на уровне Linux. Последнюю версию агента можно загрузить по ссылке Agent from the IoT GitHub site. Рекомендуется обновить т.к. в последней версии появилась возможность взаимодействовать по WebSocket

Через встроенный модуль Wi-Fi, Intel Edison будет взаимодействовать с облаком. Далее требуется подключиться к устройству по терминальному доступу.

Для связи Intel Edsion с Интернетом, потребуется настроить доступ устройства по Wi-Fi
Используя PuTTY, настроим сеть на Edison. Потребуется подключить два порта MicroUSB Intel Edison, к компьютеру. По одному будет подаваться питание, второй для доступа по PuTTY.

Запустим PuTTY, выберем “Serial” порт “COM11”, укажем скорость “115200”.
Если ни каких данных на экране не будет, нажать на Enter, появится авторизация.
Логин умолчанию “root”.

Intel IoT Analytics

Прошивка до последней версии Intel Edison
Рекомендуется обновить Intel Edison, до последней версии прошивке . Инструкцию и бинарные файлы прошивки доступны по адресу Flashing Intel Edison (wired) - Windows.

2. Для первоначальной настройки выполним команду:
# configure_edison --setup
2.1 Укажем новый пароль. 8 -32 символа:

Intel IoT Analytics

2.2 Зададим имя устройства Intel Edison, - edison_habr(не менее 5 символов), и ответим утвердительно на вопрос подключению к Wi-Fi:

Intel IoT Analytics

2.3 В течение 10 секунд будет произведено сканирование точек доступа. По результатам сканирование необходимо выбрать точку доступа для подключения:

Intel IoT Analytics

Выбираем точку доступа под номером 5 - “FSB”:

2.4 Указываем пароль и получаем IP адрес по DHCP:

Intel IoT Analytics

2.5 Теперь по адресу 192.168.1.44 можно зайти и увидеть страницу:

Intel IoT Analytics

Настройка сети на этом этапе завершается.

3. Выполним тест для агента iotkit:

# iotkit-admin test

Intel IoT Analytics

Тест подключения к облаку пройден успешно.

4. Узнаем ID устройства по команде.

# iotkit-admin device-id

Intel IoT Analytics

Команда на изменения ID устройства на произвольный:

# iotkit-admin set-device-id YOUR_DEVICE_ID

5. Регистрация устройства
5.1 Для регистрации перейдем на портал dashboard.us.enableiot.com, раздел My account, вкладка Details
Получим код из строки Activation Code:

Intel IoT Analytics

5.2 Перейдем на Intel Edison и выполним регистрацию устройства командой:

# iotkit-admin activate [код активации с портала]

Intel IoT Analytics

5.3 Вернемся на портал dashboard.us.enableiot.com, раздел Devices. В списке устройств появится Intel Edison.

Intel IoT Analytics

Выбрав устройство, откроется страница редактирования параметров. И в поле Status - изменило значение на active.

Intel IoT Analytics

6. Выполним регистрацию датчиков
6.1 Регистрация датчиков выполняется командой # iotkit-admin register [имя_датчика] [тип_датчика]. Выполним команды:
# iotkit-admin register temperature1 temperature.v1.1
# iotkit-admin register pressure1 pressure.v1.0
# iotkit-admin register moisturevalue1 moisturevalue.v1.0

Intel IoT Analytics

Командой iotkit-admin observation, отправим первое тестовое значений - 21:

# iotkit-admin observation temperature1 21

6.2 Теперь на портале отображаются подключенные датчики:

Intel IoT Analytics

Команды для управления агентом
# systemctl start iotkit-agent - запуск агента
# systemctl stop iotkit-agent - остановка агента
# systemctl restart iotkit-agent - перезапуск агента
# systemctl status iotkit-agent - узнать текущее состояние агента

Написание Arduino-кода
Остался заключительный этап, загрузка Arduino скетча.

Рассмотрим команды для работы с iotkit-agent:

Для любого скетча используемого Intel Cloud, необходимо взять библиотеку <../Wire/Wire.h> из стандартной среды Arduino arduino.cc, и IoTkit, aJSON, из iotkit-samples.

Подключим необходимые библиотеки:
#include <IoTkit.h> // include IoTkit.h to use the Intel IoT Kit
#include <Ethernet.h> // must be included to use IoTkit
#include <aJSON.h>

Переменная доступа к IoTkit:

// create an object of the IoTkit class IoTkit iotkit;

Инициализация:


void setup() {
iotkit.begin(); // call begin on the IoTkit object before calling any other methods
}

Отправка данных осуществляется методом - send, где temperature1 - имя датчика, tempvalue - значение температуры в int
iotkit.send(" temperature1", tempvalue);

Полный листинг кода:

//LCD 
#include <Wire.h>
#include <LCD.h>
#include <LiquidCrystal_I2C.h>
#define LCD_I2C_ADDR    0x20 // Define I2C Address where the PCF8574T is
#define BACKLIGHT     7
#define LCD_EN  4
#define LCD_RW  5
#define LCD_RS  6
#define LCD_D4  0
#define LCD_D5  1
#define LCD_D6  2
#define LCD_D7  3
LiquidCrystal_I2C       lcd(LCD_I2C_ADDR,LCD_EN,LCD_RW,LCD_RS,LCD_D4,LCD_D5,LCD_D6,LCD_D7);
//BMP085 Barometric Pressure & Temp Sensor
#include <Wire.h>
#include <Adafruit_BMP085.h>
Adafruit_BMP085 bmp;

//for Intel Cloud
#include <IoTkit.h>    // include IoTkit.h to use the Intel IoT Kit
#include <Ethernet.h>  // must be included to use IoTkit
// create an object of the IoTkit class
IoTkit iotkit;
float temperature1;
int pressure1;
int moisturevalue1;

void setup() {  
  iotkit.begin();
  Serial.begin(9600);
  bmp.begin();
  //init LCD
  lcd.begin (20,4);
  lcd.setBacklightPin(BACKLIGHT,NEGATIVE); // init the backlight
  lcd.setBacklight(HIGH); // Backlight on
  lcd.home ();                  // go home
  lcd.setCursor ( 0, 0 );        
  lcd.print("Edison. Habrahabr");
}

void loop() {
  lcd.setCursor ( 0, 1 );  
  lcd.print("Tempera. = ");
  lcd.print(bmp.readTemperature());
  lcd.print(" *C");
  //
  lcd.setCursor ( 0, 2 );        
  lcd.print("Pressure = ");
  lcd.print(bmp.readPressure());
  lcd.print(" Pa");
  //
  lcd.setCursor ( 0, 3 );        
  lcd.print("Moisture Value = ");
  lcd.print(analogRead(0));
  //read
  temperature1=bmp.readTemperature();
  pressure1=bmp.readPressure();
  moisturevalue1=analogRead(0);
  //Console and Send to Intel Cloud
  Serial.println("Sensors");
  Serial.print("temperature1=");
  Serial.println(temperature1);
  iotkit.send("temperature1", temperature1);
  delay(2000); 
  Serial.print("pressure1=");
  Serial.println(pressure1);
  iotkit.send("pressure1", pressure1);
  delay(2000); 
  Serial.print("moisturevalue1=");
  Serial.println(moisturevalue1);
  moisturevalue1=20;
  iotkit.send("moisturevalue1", moisturevalue1);
  delay(2000);               // wait for a second
}


Перейдем на страницу Charts (dashboard.us.enableiot.com/ui/dashboard#/chart), где можно просмотреть показания датчиков в режиме реального времени.

Intel IoT Analytics

Подведем краткий итог. Используя облако Cloud Intel IoT Analytics, разработчики устройств могут легко отправлять данные со своего устройства. Форматы REST и JSON достаточно популярны. Функции доступа API опубликованы на Github. Сервис всегда доступен в сети Интернет, а значит, не требуется развертывать свой сервер для сбора и хранения данных. С Cloud Intel IoT Analytics может взаимодействовать практически любое устройство с поддержкой Ethernet и SSL, по стандарту REST API.

Ссылки
  1. github.com - enableiot
  2. Edison Getting Started Guide - Windows
  3. Flashing Intel Edison (wired) - Windows
  4. Cloud Intel IoT Analytics
  5. Intel Internet of Things (IoT) Developer Kit IoT Cloud-Based Analytics User Guide November 2014

Оглавление
  1. Intel Edison. Первый запуск
  2. Intel Edison. Работа с облаком Intel IoT Analytics: регистрация и отправка данных
  3. Intel Edison. Работа с облаком Intel IoT Analytics: создание правил и отправка уведомлений
  4. Intel Edison. Облако Intel IoT Analytics: отправка SMS и RESTful клиент на ASP.NET
Теги:
Хабы:
+5
Комментарии 7
Комментарии Комментарии 7

Публикации

Истории

Ближайшие события

Московский туристический хакатон
Дата 23 марта – 7 апреля
Место
Москва Онлайн
Геймтон «DatsEdenSpace» от DatsTeam
Дата 5 – 6 апреля
Время 17:00 – 20:00
Место
Онлайн
PG Bootcamp 2024
Дата 16 апреля
Время 09:30 – 21:00
Место
Минск Онлайн
EvaConf 2024
Дата 16 апреля
Время 11:00 – 16:00
Место
Москва Онлайн