Содержание


Создание монитора приложений IBM Bluemix с дистанционным управлением на базе Raspberry Pi 2

Использование Node.js в проекте «Интернета вещей», где устройства и приложения соединяются посредством технологии IBM IoT Foundation

Comments

Сегодня много говорят об «Интернете вещей» (Internet of Things - IoT), вокруг которого появляется масса новых терминов и поднимаются облака опасений, неуверенности и сомнений (fear, uncertainly, and doubt – FUD), что препятствует усвоению простых идей. Не дайте себя запугать. Как JavaScript-разработчик, вы уже обладаете всеми навыками, необходимыми для исследования увлекательного мира IoT-разработки. Это руководство поможет вам познакомиться с ним на практическом проекте.

После краткого введения в некоторые основные модели IoT и IBM Internet of Things Foundation (IoT Foundation) мы с вами реализуем две из них. Мы напишем программу действующей удаленной вещи— устройства Raspberry Pi 2— для мониторинга приложения, размещенного в IBM Bluemix. А также напишем приложение, которое можно запускать из командной строки ПК для удаленного включения и выключения функции мониторинга Raspberry Pi 2. Устройства и приложения будут поддерживать связь через IoT Foundation. Мы также развернем в Bluemix графическое приложение, способное визуализировать статистические данные, полученные от монитора (или мониторов; их можно развернуть сколько угодно). Все это мы сделаем путем программирования на Node.js.

Для этого потребуются:

  • Пример кода. Загрузите и распакуйте его в свой компьютер.
  • Устройство Raspberry Pi 2.
  • Учетная запись Bluemix, связанная с вашим IBM ID.
  • Интерфейс командной строки Cloud Foundry (CLI).
  • Знакомство с операциями командной строки Linux®.
  • Git, установленный и работающий на Linux-компьютере.

Три модели IoT

Что можно сделать с помощью сети взаимодействующих интеллектуальных устройств? На ум приходят три возможных модели из этой области безграничных возможностей: мониторинг, дистанционное управление и связь между вещами.

Мониторинг

Рисунок 1 иллюстрирует концепцию сбора данных вещами (устройствами) IoT.

Рисунок 1. Мониторинг через IoT
Мониторинг посредством IoT
Мониторинг посредством IoT

На рисунке 1 устройства собирают данные с помощью встроенных датчиков или других входов и отправляют их через Интернет в целях контроля, сбора, хранения и анализа информации ожидающими приложениями.

Примеры функций контроля:

  • датчик движения для подсчета количества шагов;
  • пульсометр и более сложный биометрический датчик, способный постоянно контролировать другие жизненно важные показатели. Накопленные данные могут использоваться в медицинских исследованиях или для дополнительного автономного анализа;
  • автомобиль или самолет-беспилотник может сообщить свое географическое положение, расход топлива, ускорение и другие параметры;
  • интеллектуальная печь может сообщать свою текущую температуру, внутреннюю температуру приготавливаемого мяса (с помощью термометра для мяса) и время до готовности;
  • интеллектуальные бесконтактные датчики положения, расположенные по периметру дома, могут посылать сигналы для включения видеокамеры, света или других средств сигнализации.

В примере из этого руководства используется удаленное устройство Raspberry Pi 2 для контроля функционирования приложения, размещенного в Bluemix.

Дистанционное управление

Вторая очевидная модель, которая приходит на ум, это — дистанционное управление устройствами, как показано на рисунке 2.

Рисунок 2. Дистанционное управление посредством IoT
Дистанционное управление посредством IoT
Дистанционное управление посредством IoT

На рисунке 2 программа дистанционного управления посылает команды в одно из целевых устройств через Интернет. Целевое устройство принимает команды и выполняет их, управляя серводвигателями, выключателями, лампами, и т.п.

Подумайте:

  • о включении домашней отопительной системы со своего рабочего ПК или смартфона;
  • вождении модели автомобиля LEGO, участвующей в гонках по лабиринту за тысячи километров;
  • пилотировании беспилотника для доставки клиентами товаров со склада.

Пример из этого руководства иллюстрирует процесс быстрого создания приложения, которое включает и выключает мониторинг в удаленном устройстве Raspberry Pi 2.

Связь между вещами

Одна не столь очевидная модель работы IoT – это связь между машинами. В этом случае устройства могут контролировать друг друга и управлять друг другом, как показано на рисунке 3.

Рисунок 3. Связь между устройствами через IoT
Связь между устройствами через IoT
Связь между устройствами через IoT

На рисунке 3 прокси-приложение помогает поддерживать связь между устройствами. Устройство может отправлять через Интернет в прокси-приложение сообщения, содержащие собранные данные или команды для другого устройства. Затем это прокси-приложение через Интернет же передает сообщение в целевое устройство для исполнения или обработки.

Представьте себе:

  • интеллектуальный ваттметр, способный регулировать освещение в помещении для достижения заданной экономии электроэнергии;
  • систему измерения влажности почвы, которая формирует сигналы управления дождевальной установкой;
  • автоматизированный составитель программ станции телевещания, которая транслирует версии телепередач разной продолжительности в зависимости от рейтинга в режиме реального времени;
  • камуфляжную панель «хамелеон», которая собирает данные от сети интеллектуальных датчиков и телекамер с разными точками зрения для динамической самомаскировки;
  • систему распределения ресурсов для глобального приложения, которая подключает больше или меньше вычислительных ресурсов в зависимости от времени отклика, измеряемого устройствами, установленными по всему миру.

Реализация связи между устройствами выходит за рамки настоящего руководства.

IoT Foundation

IoT Foundation – это облако, к которому устройства независимо от их количества и сложности могут подключаться в любое время, поддерживая связь между собой. На рисунке 4 показано, какую роль играет IOT Foundation в нашем мире взаимосвязанных вещей.

Рисунок 4. Упрощенное представление IoT Foundation
Упрощенное представление IoT Foundation
Упрощенное представление IoT Foundation

IOT Foundation выполняет следующие полезные функции:

Если вещи подключены к Интернету, они могут постоянно поддерживать связь с IOT Foundation.

  • постоянно действующая сеть прокси-серверов, брокеров и серверов, связанных через Интернет. Если вещи подключены к Интернету, они могут постоянно поддерживать связь с IOT Foundation;
  • практически безграничное хранилище данных для вещей, которые регулярно посылают данные, с их последующим обобщением и анализом с помощью специального программного обеспечения и служб. (По умолчанию хранением данных управляет внутренняя служба Historian);
  • защищенный доступ с проверкой подлинности к каждому зарегистрированному устройству и к приложениям, размещенным в Bluemix или на других платформах;
  • масштабируемые, управляемые, надежные высокоскоростные соединения между точками входа ваших устройств, накопленным корпусом данных и ресурсами обработки в рамках экосистем Bluemix;
  • богатый набор инструментов, шаблонов и рецептов для быстрого создания проектов по контролю, дистанционному управлению или безопасному доступу к вещам.

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

На рисунке видно, что IoT Foundation состоит из защищенной сети MQTT с дополнительными службами, к которым можно обращаться через API-интерфейсы HTTP (REST-подобные). MQTT (Message Queue Telemetry Transport) – это упрощенный протокол, построенный поверх TCP. MQTT обеспечивает простую семантику публикации-подписки для обмена сообщениями по протоколу TCP. Различные версии этого проверенного протокола эволюционируют уже более десятилетия. В 2013 году в международную организацию по стандартизации OASIS была представлена версия 3.1. В современных глобальных сетях IoT все чаще развертывают версию 3.1.1. Клиентскую часть MQTT можно легко реализовать на популярных 16- и 32-разрядных встраиваемых процессорах с поддержкой TCP. Клиент с минимальными требованиями можно построить с помощью очень короткого кода, что делает его идеальным для устройств, подключенных к сети IoT. Сам протокол также налагает минимальную нагрузку на каналы TCP. Красота MQTT – в его простоте. Разработчикам, уже знакомым с моделью «публикация-подписка» — такой как интерфейс addListener, — ничего не стоит освоить MQTT. Лучший способ понять значение MQTT — поработать с ним, как мы и поступим в ближайшее время.

Контролируемое веб-приложение

Код приложения, которое мы будем контролировать (скелетное приложение, имитирующее любое действующее приложение Bluemix), находится в каталоге bluemixwebapp примера кода и готов к развертыванию в среде Bluemix. Это приложение отображает простую форму с двумя полями, как показано на рисунке 5.

Рисунок 5. Форма для добавления элемента веб-приложения, которое мы будете контролировать
Скриншот веб-приложения's UI
Скриншот веб-приложения's UI

Наш монитор Raspberry Pi 2 будет обращаться к этой форме, заполнять поля item и quantity, а затем отправлять форму. После этого веб-приложение отображает подтверждающее сообщение (с указанием имени и количества элементов), как показано на рисунке 6.

Рисунок 6. Страница результатов мониторинга веб-приложения
Страница результатов мониторинга веб-приложения
Страница результатов мониторинга веб-приложения

Монитор Raspberry Pi 2 считывает страницу результатов, проверяя подтверждающее сообщения, а затем передает статус сообщения и время доступа в IoT Foundation. (Под временем доступа я понимаю общее время подготовки запроса, передачи запроса, ожидания ответа и считывания. За колебания времени доступа в основном отвечает время отклика – наиболее изменчивое значение.)

Установите соединение с Bluemix из CLI Cloud Foundry, войдите в систему и разверните приложение в своей среде Bluemix:

cf api https://api.ng.bluemix.net 
cf login -u user_name -o org_name -s space_name 
cf push your web app name -m 128M

Убедитесь, что веб-приложение работает, обратившись к URL-адресу веб-приложения Bluemix из браузера. Код монитора Raspberry Pi должен «знать» этот URL-адрес доступа к веб-приложению, так что измените первую строку в файле примера кода raspi/monitortask.js, указав нужное имя:

var MonitoredBluemixURL = 'http://your web app name.mybluemix.net/';

Raspberry Pi второго поколения

Raspberry Pi 2 – это всемирно известный Linux-компьютер за 35 долларов второго поколения. Когда Эбен Аптон с друзьями впервые решил создать несколько доступных компьютеров, чтобы помочь детям в изучении программирования, он не мог и мечтать о продаже 5 миллионов устройств за три года и о том, что он войдет в историю компьютерной техники.

Raspberry Pi 2 – это внушительная вычислительная платформа, способная работать с основными современными операционными системами, такими как Ubuntu и Windows® 10. В отличие от Raspberry Pi первого поколения, Raspberry Pi 2 содержит 900-МГц четырехъядерный процессор ARM Cortex A7 (в первом был одноядерный ARMv6) и ОЗУ емкостью 1 ГБ (в первом было всего 256 МБ или 512 МБ). Результаты, которые Raspberry Pi 2 показывает на тестах, в 6-20 раз превосходят результаты оригинала. В нем также имеется четыре USB-порта для мыши, клавиатуры и принадлежностей; слот для карт MicroSD для загрузки образов ОС; порт HDMI для подключения непосредственно к мониторам и телевизорам; и порт Ethernet для сетевого соединения. На рисунке 7 показан Raspberry Pi 2 рядом с Raspberry Pi первого поколения.

Рисунок 7. Мощный Raspberry Pi 2 рядом с классической версией
Сравнение Raspberry Pi 2 и классической версии
Сравнение Raspberry Pi 2 и классической версии

Создание монитора Bluemix-приложений на платформе Raspberry Pi 2

Итак, вы готовы приступить к созданию функционального монитора на платформе Raspberry Pi2 для контроля размещенного в Bluemix веб-приложения. По умолчанию он каждые 60 секунд пытается получить доступ к контролируемому веб-приложению в Bluemix и измеряет время доступа. С помощью IOT Foundation можно добавить к своей IoT (в рамках группы organization) любое число таких мониторов.

Превращение Raspberry Pi 2 в удаленный монитор

На Raspberry Pi 2 могут работать разные образы операционных систем, включая Debian, Ubuntu и (скоро) Windows 10. По умолчанию операционной системой Pi служит Raspbian – специализированная версия Debian Wheezy для Pi. Выпуски Raspbian, как правило, опережают другие OS в области поддержки нового оборудования Pi. Код для настоящего руководства разработан на Raspbian от 16.02.2015.

После установки и запуска образа Raspbian установите на Pi и на свой командный центр (консоль Linux-компьютера) последнюю доступную версию Node.js. Пример кода основан на Node.js v0.12.0.

Установите соединение между своим командным центром и Raspberry Pi 2 (например, посредством ssh или telnet) и передайте в Raspberry Pi 2 содержимое папки raspi из примера кода (посредством команды scp или wget). Код, выполняемый на Raspberry Pi 2:

  1. Проверяет подлинность, устанавливает соединение и поддерживает MQTT-связь с сетью IoT Foundation.
  2. Подписывается на команды с использованием темы из подстановочных знаков iot-2/cmd/+/fmt/+, что позволяет дистанционно приостанавливать и возобновлять мониторинг.
  3. Каждые 60 секунд запускает управляемый сеанс браузера, обращается к веб-приложению в Bluemix путем заполнения и отправки формы, а затем анализирует результаты, проверяя правильность работы веб-приложения.
  4. Публикует в IoT Foundation время доступа и статус на шаге 3 как событие accesstime с помощью темы MQTT iot-2/evt/itemsvc/fmt/json.
  5. При получении команды suspend останавливает мониторинг веб-приложения, начиная с текущего цикла.
  6. При получении команды resume возобновляет мониторинг со следующего цикла.

Добавление мониторов Raspberry Pi к IoT организации

Самый быстрый способ создания сети IoT Foundation – с помощью панели управления Bluemix:

  1. Войдите в Bluemix через браузер и с помощью среды выполнения SDK для Node.js создайте новое веб-приложение Cloud Foundry (которое мы позднее заменим приложением графической визуализации). Приложение должно иметь уникальное имя в рамках Bluemix.
  2. Убедитесь, что только что созданное приложение работает.
  3. Вернитесь на панель управления Bluemix. Добавьте экземпляр службы Internet of Things и свяжите его с новым приложением. При необходимости разверните приложение заново.
  4. На обзорной странице своего приложения выберите службу Internet of Things.
  5. Нажмите кнопку Launch dashboard, чтобы запустить панель управления IoT Foundation. (Можно создать закладку для последующего доступа.)
  6. В верхней части панели управления IoT вы увидите название своей организации. Запомните его, оно понадобится позже. Организация — это группа устройств и приложений IoT.
  7. Выберите вкладку People. Нажмите кнопку Add Person и добавьте свой ID IBM, чтобы в любое время получать непосредственный доступ к своей организации через эту панель IOT Foundation (минуя панель Bluemix).
  8. Выберите вкладку Devices. Добавьте устройство типа rasp2monitor и ID устройства euro001, чтобы добавить к своей организации монитор Raspberry Pi 2. Нажмите кнопку Continue.
  9. На последней странице процедуры добавления устройства вы увидите свои учетные данные, включая маркер auth-token, который Raspberry Pi 2 будет предъявлять в IoT Foundation. Скопируйте значение auth-token. Оно понадобится вам позднее, и его нельзя восстановить. Нажмите кнопку Done.
  10. Перейдите на вкладку API Keys и добавьте новый ключ API. Отобразятся ваш ключ и маркер аутентификации, как показано на рисунке 8. Запишите эти невосстанавливаемые учетные данные. Эти учетные данные используются приложением дистанционного управления для приостановки и возобновления мониторинга различных устройств.
Рисунок 8. Создание новых учетных данных API с панели управления IoT Foundation
Создание новых учетных данных API
Создание новых учетных данных API

Подключение к сети MQTT IoT Foundation

MQTT строится поверх TCP. MQTT-соединение может использовать соединение TCP или TLS. В коде монитора использует TLS:

tls://myorg.messaging.internetofthings.ibmcloud.com:8883

TLS добавляет сквозное шифрование соединений. Данные, передаваемые между устройством и платформой IoT Foundation, шифруются тем же способом, что и общий трафик HTTPS браузера. TLS также проверяет, что вы действительно подключены к указанному серверу. В настоящее время IoT Foundation поддерживает TLS 1.2 и MQTT 3.1.1.

Можно использовать и незашифрованное подключение через URL-адрес TCP:

tcp://myorg.messaging.internetofthings.ibmcloud.com:1883

У Raspberry Pi 2 есть запас вычислительной мощности. Однако на устройстве минимальной конфигурации дополнительная вычислительная нагрузка от шифрования TLS может оказаться слишком тяжелой, что делает нешифрованное TCP-соединение единственным жизнеспособным вариантом.

Вместо указания URI TCP или TLS с номером порта, для MQTT поверх TLS можно использовать следующую команду:

mqtts://myorg.messaging.internetofthings.ibmcloud.com

А для MQTT поверх TCP:

mqtt://myorg.messaging.internetofthings.ibmcloud.com

Пространство тем IoT Foundation

В обычном MQTT клиент (приложение или устройство) может публиковать сообщения и подписываться на любую тему без ограничений. Тема — это просто строка текста в любом формате. Любое сообщение (также строка текста в любом формате, которую часто называют полезной нагрузкой), опубликованное по данной теме, рассылается всем подписчикам.

Чтобы защитить устройства от утечки данных (и для предотвращения кражи данных из устройств другими устройствами-шпионами или неавторизованными устройствами), IoT Foundation налагает ограничения на пространство тем, различные для приложений и для устройств. Когда устройство публикует сообщения и подписывается на тему MQTT, оно получает доступ к пространству тем, отличному от пространства тем приложений.

На рисунке 9 показаны асимметричные возможности устройств и приложений при обращении к IoT Foundation.

Рисунок 9. Возможности приложения и устройства в IoT Foundation
Возможности приложения и устройства в IoT Foundation
Возможности приложения и устройства в IoT Foundation

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

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

iot-2/type/rasp2monitor/id/euro001/evt/itemsvc/fmt/json

Здесь явно указаны тип устройства (rasp2monitor) и идентификатор устройства (euro001).

Чтобы подписаться на события, происходящие в разных устройствах, приложение может использовать подстановочные знаки ('+'):

iot-2/type/+/id/+/evt/itemsvc/fmt/json

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

iot-2/type/rasp2monitor/id/euro001/cmd/operation/fmt/json

Обратите внимание на явное указание типа (rasp2monitor) и идентификатора (euro001) устройства.

Чтобы устройство публиковало события, в теме не обязательно указывать тип или идентификатор устройства, так как они уже известны IoT Foundation. Например, устройство euro001 может опубликовать событие через следующую тему:

iot-2/evt/itemsvc/fmt/json

Или подписаться на команды, предназначенные для устройства с темой:

iot-2/cmd/operations/fmt/json

В piclient.js код монитора подписывается на команду suspend и проверяет ее. Но этот код можно легко расширить, добавив дополнительные команды для удовлетворения своих требований.

Формат сообщения IoT Foundation

В сообщениях MQTT (полезных нагрузках), отправленных в тему, могут быть текстовые строки любого формата. В IoT Foundation также можно использовать полезные нагрузки, состоящие из текстовых строк любого формата. Но если соблюдать формат сообщений IoT Foundation, то вам станут доступны дополнительные службы, такие как Historian, — потому что IoT Foundation сможет анализировать ваши данные.

Формат сообщений IoT Foundation допускает только объекты JSON в кодировке UTF-8 с узлом верхнего уровня d. Поля в узле d могут быть цифровыми или строковыми. Узел верхнего уровня ts, содержащий строку метки времени ISO8601, не обязателен. В piclient.js сообщения, направляемые в IoT Foundation, соответствуют формату IoT Foundation. Вот типичное сообщение о времени доступа, переданное piclient.js:

{    
  "d":{ 
       "accesstime":2248, 
       "status":"ok" 
      }, 
  "ts": "2015-03-27T01:39:47.789Z" 
}

Проверка подлинности клиента

Клиент монитора MQTT Raspberry Pi 2 проходит проверку подлинности в IoT Foundation посредством маркера auth-token (см. шаг 9 раздела Добавление мониторов Raspberry Pi к организации IoT). Этот маркер создается только один раз при первоначальной регистрации устройства. После создания он хешируется с добавлением salt-значения и не может быть восстановлен (потому что IoT Foundation не хранит фактическое значение маркеров). Если учетные данные потеряны или украдены, можно отозвать регистрацию и перерегистрировать устройство с новым маркером — но для успешного подключения устройства нужно также получить новый маркер на физическое устройство (физически отключить устройство или открыть его для удаленного доступа, а затем изменить код, как описано в следующем пункте).

На Raspberry Pi 2 отредактируйте файл piclient.js и измените вызов connect(), используя свой собственный маркер auth-token и название организации (записанное на шаге 6 раздела Добавление мониторов Raspberry Pi к IoT организации):

var client = mqtt.connect( 
    'tls://your organization.messaging.internetofthings.ibmcloud.com:8883',  
    {   
      clientId:  'd:your organization:rasp2monitor:euro001', 
      username:  'use-token-auth',  
      password:  'your auth-token' 
    } 
);

Установка стека webkit

Для выполнения работы по мониторингу piclient.js использует модуль monitortask.js. Он пытается получить доступ к веб-приложению, за которым ведется наблюдение, через стек webkit PhantomJS. Эта цепочка инструментов — состоящая из PhantomJS, CasperJS и Spooky— позволяет писать сценарии на основе Node.js и автоматизировать headless webkit (который подобен браузеру без графического интерфейса пользователя). PhantomJS представляет собой headless webkit (механизм браузера) с управляющими API-интерфейсами. CasperJS широко использует эти API, позволяя создавать высокоуровневые сценарии в целях тестирования и автоматизации. Spooky загружает CasperJS и выступает в качестве моста удаленного вызова процедуры (RPC) между экземплярами Node.js и CasperJS.

Для того чтобы использовать стек PhantomJS, необходимо установить его на Raspberry Pi 2. Выполните следующие действия:

  1. Установите PhantomJS. На момент написания статьи исполняемые файлы ARM Linux не входили в автоматизированную сборку PhantomJS. К счастью, благодаря Нильсу Мейсену (piksel) из сообщества Raspberry Pi, имеется двоичный файл PhantomJS. Убедитесь, что этот двоичный файл указан в вашей переменной PATH.
  2. Установите CasperJS глобально с помощью команды npm install -g casperjs. (Чтобы Spooky работал правильно, CasperJS должен быть установлен глобально.) Процесс установки CasperJS обнаружит, что PhantomJS уже установлена, и не будет пытаться загрузить нерабочие исполняемые файлы Intel.
  3. Установите Spooky, выполнив команду npm install в том каталоге, где находится piclient.js.

Запуск монитора

Теперь вы готовы приступить к мониторингу работы веб-приложения:

node piclient.js

Чтобы piclient.js работал на Raspberry Pi 2 все время, даже после выключения и перезагрузки системы, можно использовать диспетчер процессов Node.js, такой как PM2 или forever.

Дистанционная приостановка и возобновление мониторинга

Код для инструмента командной строки, который приостанавливает (или возобновляет) мониторинг, находится в каталоге remotecontrol примера кода. Этот инструмент можно запустить с консоли командного центра (ПК) (но не на устройстве мониторинга Raspberry Pi 2).

Прежде чем использовать инструмент, необходимо отредактировать код в файле remotecontrol/sendcmd.js, указав свои реквизиты ключа API (см. шаг 10 раздела Добавление мониторов Raspberry Pi к организации IoT) и название организации:

var client  = mqtt.connect( 
     'mqtts://your organization.messaging.internetofthings.ibmcloud.com',  
     { 
         clientId:'a:your organization:adminapp', 
         username:'your API key',  
         password:'your API auth token' 
    } 
);

Общий синтаксис для запуска инструмента дистанционного управления:

node sendcmd.js suspend | resume device ID

Например, чтобы приостановить мониторинг на устройстве I euro001, выполните:

node sendcmd.js  suspend  euro001

А чтобы возобновить мониторинг на том же устройстве:

node sendcmd.js resume euro001

Сценарий sendcmd.js подключается к IoT Foundation в качестве приложения (то есть может отправлять команды во все устройств в пределах организации); затем он публикует команду указанной операции для указанного устройства.

Построение графика статистики времени доступа по данным службы Historian

На рисунке 10 приведен график времени доступа монитора euro001 в процессе эксплуатации. Видно замедление процесса доступа в первой точке данных и перерыв, во время которого мониторинг был приостановлен (удаленно посредством команды sendcmd.js).

Рисунок 10. Визуализация статистики время доступа
Визуализация статистики время доступа
Визуализация статистики время доступа

Это приложение визуализации вызывает API-интерфейсы HTTP IoT Foundation для доступа к информации об организации IoT и устройствах и извлекает исторические данные о времени доступа, накопленные службой Historian. Для отображения графиков это приложение Node.js Express использует диаграмму Rickshaw.

Приложение взято из репозитория GitHub IBM Messaging. Его можно развернуть в своей среде Bluemix, выполнив следующие действия:

  1. Запустите git clone https://github.com/ibm-messaging/iot-visualization.git.
  2. Измените каталог на iot-visualization и отредактируйте файл manifest.yml, указав свое собственное имя приложения — имя приложения из шага 1 раздела Добавление мониторов Raspberry Pi в IoT организации. Это изменение приведет к развертыванию с заменой приложения по умолчанию. С приложением уже связана ваша организация IoT Foundation, а реквизиты ключа API могут быть получены из среды.
  3. Выполните команду cf push для развертывания своего приложения.

Заключение

В течение нескольких часов вы выполнили проект IoT, соответствующий вашему уровню знаний в области JavaScript и Node.js. Мониторы, подобные тому, который вы построили в процессе работы с этим руководством, можно распространить в местах, где находятся типичные пользователи вашего приложения Bluemix (возможно, по всему миру). Тогда вы сможете периодически контролировать и анализировать время работы и время доступа, получая ценную информацию об уровне обслуживания своим приложением географически распределенных групп пользователей.

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


Ресурсы для скачивания


Похожие темы


Комментарии

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

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=40
Zone=Облачные вычисления, Web-архитектура, Мобильные приложения, Linux
ArticleID=1024275
ArticleTitle=Создание монитора приложений IBM Bluemix с дистанционным управлением на базе Raspberry Pi 2
publish-date=12152015