Перейти к основному содержимому

Подключение iRidium server к IBM Watson IoT


IBM Cloud предоставляет множество различных сервисов. В данном примере нам потребуются только два сервиса, которые позволят сохранять в облаке исторические данные умного дома, построенного на основе ПО iRidium, и потом просматривать архивы в виде трендов, диаграмм и других элементов визуализации, а также возможны другие интересные сопутствующие возможности сервисов.

Первый сервис - Watson IoT - сервис интернета вещей, второй сервис - Cloudant NoSQL - база данных, работающая на основе JSON-запросов. IBM Cloud позволяет без особых сложностей интегрировать два этих сервиса друг с другом.

Описание примера


Скачать пример проекта

В рассматриваемом примере iRidium server считывает данные с Modbus-устройств и отсылает их в облако IBM Cloud по протоколу MQTT в формате JSON. Данные сохраняются в облачной базе данных Cloudant в реальном времени. Средствами аналитики Watson IoT можно просматривать и анализировать сохранённые данные через веб-интерфейс облака.

IBM_Cloud_IoT_scheme.png

Для тестирования можно использовать бесплатный (Lite) план пользования сервисом Watson IoT , который включает в себя:

  • до 500 устройств,
  • до 500 связей,
  • месячные лимиты
    • до 200 Мб трафика,
    • до 200 Мб анализируемых данных
    • до 200 Мб локально анализируемых данных (Edge).

Бесплатный план Lite пользования сервисом Cloudant :

  • не ограничен по времени,
  • максимум 256 Мб задействованной памяти в Cloud Foundry,
  • 1 инстанс (1 база данных),
  • автозасыпание приложения (выключение приложения через 3 дня бездействия разработчика).

Подробнее:

Настройка IBM Watson IoT

Для подключения к платформе IBM Watson IoT нужно получить аккаунт IBM Cloud (IBMid).

Подробнее об управлении аккаунтом IBM Cloud (на англ. языке)

Создание инстанса IBM Watson IoT

  1. Зайдите в свою учётную запись, перейдите на панель управления (Dashboard). Нажмите на кнопку «Create Resource».

IBM_Cloud_IoT_a01.png

  1. Выберите категорию Internet of Things и нажмите на Internet of Things Platform .

IBM_Cloud_IoT_a02.png

  1. В параметрах выберите регион, например, US South (для этого региона доступно больше всего функциональных возможностей).

IBM_Cloud_IoT_a03.png

  1. Выберите ценовой план (например, Lite) и нажмите на кнопку «Create»:

IBM_Cloud_IoT_a04.png

  1. На панели приборов в списке отобразится добавленный сервис, перейдите на него, в появившемся окне нажмите на кнопку «Launch».

IBM_Cloud_IoT_a05.png

  1. В новом окне откроется панель управления IoT Platform.

IBM_Cloud_IoT_a06.png

Добавление устройств

  1. Перейдите на вкладку Devices на панели управления IoT Platform.

IBM_Cloud_IoT_a07.png

  1. Добавьте устройство, для этого нажмите на кнопку «Add Device».

IBM_Cloud_IoT_a08.png

  1. В появившемся окне задайте Device Type и Device ID и нажмите «Next».

IBM_Cloud_IoT_a09.png

  1. Укажите информацию об устройстве, нажмите «Next».

IBM_Cloud_IoT_a10.png

  1. Добавьте группу (можно пропустить этот шаг), нажмите «Next».

IBM_Cloud_IoT_a11.png

  1. В окне Security создайте токен для аутентификации (если оставить поле пустым, то токен сгенерируется сам). Нажмите «Next».

IBM_Cloud_IoT_a12.png

  1. Просмотрите результат создания устройства и нажмите кнопку «Done».

IBM_Cloud_IoT_a13.png

  1. В появившемся окне появится сообщение о том, что было зарегистрировано устройство, и будут предоставлены реквизиты для подключения устройства к платформе. Если ранее поле токена было оставлено пустым, то будет предоставлен автоматически сгенерированный токен.

IBM_Cloud_IoT_a14.png

  • Токен аутентификации (пароль) передаётся только один раз. Сохраните его.

Настройка iRidium server

Настройка драйвера MQTT

  1. Создайте проект сервера.

  2. Добавьте драйвер MQTT в проект.

  3. При добавлении устройств на платформе Watson IoT предоставляются реквизиты для подключения к MQTT-брокеру. Введите их в настройки драйвера.

IBM_Cloud_IoT_b01.png

  • Host - адрес облачного интерфейса IoT, кодируется следующим образом:

.messaging.internetofthings.ibmcloud.com

  • Port - порт

    • 1883 (незашифрованное соединение; по умолчанию отключен в iRidium server)
    • 8883 (зашифрованное соединение с использованием TLS и SSL)
    • 443 (зашифрованное соединение WebSocket; не поддерживается в iRidium server)
  • Login - логин, здесь должно быть задано фиксированное значение use-token-auth

  • Password - созданный или сгенерированный Authentication Token

  • MQTT Version - версия MQTT, должна быть 4

  • Client ID - идентификатор клиента, кодируется следующим образом:

d:::

  • Keep Alive - время удержания соединения в секундах

  • Clean - очистка сессии (удаление всех подписок) при разрыве соединения

  • SSL - метод шифрования связи с облаком

  1. Добавьте команду в драйвер MQTT. Настройте её следующим образом:

IBM_Cloud_IoT_b02.png

  • Topic - топики сообщений, для брокера IBM Bluemix в отличие от брокера Mosquitto не могут содержать произвольные данные. Они кодируются по определённым правилам:

    • Формат топика публикации данных (запись): iot-2/evt/<event_id>/fmt/<format_string>
    • Формат топика подписки на данные (чтение): iot-2/cmd/<command_id>/fmt/<format_string>
      • event_id - идентификатор события. Идентификатор события может быть любой строкой, которая действительна в MQTT.
      • command_id - идентификатор команды. Идентификатор команды может быть любой строкой, которая действительна в MQTT.
      • format_string - это строка, которая определяет тип содержимого сообщения. В рассматриваемом примере может использоваться только формат json.

Пример топика публикации: iot-2/evt/status/fmt/json

Пример топика подписки: iot-2/cmd/read/fmt/json

  • Value type - должен быть задан тип String, чтобы успешно передать данные в JSON-формате.

  • QoS и Retain могут быть выбраны произвольно в зависимости от требований задачи.

Настройка драйвера Modbus TCP

  1. Добавьте драйвер Modbus TCP.

  2. Настройте параметры подключения.

  3. Создайте необходимое количество команд и тэгов в драйвере.

  4. Настройте каждую команду и тэг в соответствии с задачей.

Шлюз Modbus/MQTT

  1. Добавьте скрипт в проект:
var driver1 = IR.GetDevice("MQTT");       // Name of MQTT driver
var driver2 = IR.GetDevice("Modbus TCP"); // Name of Modbus driver
var command = "MQTT_Command"; // Name of a command in MQTT driver
var taglist = {
"Door_switch" : 1, // List of Modbus tags to send via MQTT
"Ring_button" : 1,
"Outdoor_temperature" : 1,
"Indoor_temperature" : 1
};

IR.AddListener(IR.EVENT_TAG_CHANGE, driver2, function(name, value) {
if (taglist[name]) {
var json_obj = {};
json_obj[name] = value;
var json_str = JSON.Stringify(json_obj);
driver1.Set(command, json_str);
}
});
  1. Не забудьте в скрипте задать правильные имена драйверов, между которыми организуется шлюз, а также имя команды в драйвере MQTT и список имён тэгов в сети Modbus, которые вы хотите передавать в облако IBM. Вы можете дополнять список тэгов (переменная taglist).
  • Данный скрипт может передавать данные только в одном направлении: из сети Modbus TCP в облако.

Проверка подключения к IBM Watson IoT

  1. Запустите проект сервера.

  2. На панели управления IBM Watson IoT Platform перейдите во вкладку Device .

  3. Выберите ранее настроенное устройство.

  4. Затем перейдите в Logs . Если соединение было установлено, то в логах подключений появится сообщение об успешности подключения:

IBM_Cloud_IoT_b03.png

Настройка IBM Cloudant

В целом платфома IBM Watson IoT - самостоятельно работающий сервис, но подключение IBM Cloudant NoSQL DB к платформе IBM Watson IoT расширяет возможности: можно длительно хранить данные от устройств и отображать эти данные в инструментах аналитики IBM Watson IoT.

  1. Перейдите в панель управления IBM Cloud. Нажмите «Create resource».

  2. Выберите категорию Data & Analytics и нажмите на сервис Cloudant NoSQL DB.

IBM_Cloud_IoT_c01.png

  1. В открывшемся окне выберите Region , например, US South.

IBM_Cloud_IoT_c02.png

  1. Выберите ценовой план (например, Lite) и нажмите «Create».

IBM_Cloud_IoT_c03.png

  1. На панели приборов IBM Cloud, в списке помимо IoT Platform отобразится добавленный сервис Cloudant NoSQL DB. Нажмите на кнопку «Launch».

IBM_Cloud_IoT_c04.png

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

IBM_Cloud_IoT_c05.png

  • Изначально сервис Cloudant пустой (не содержит баз данных и документов). Необходимые базы данных и документы будут позже созданы автоматически при интеграции сервисов.
  1. Перейдите в панель управления сервиса IoT Platform. В панели навигации перейдите на вкладку Extensions . В разделе Historical Data Storage нажмите на «Setup».

IBM_Cloud_IoT_c07.png

  1. В разделе конфигурирования перечисляются все доступные службы Cloudant NoSQL DB. Выберите службу, которую хотите подключить.

IBM_Cloud_IoT_c08.png

  1. В открывшемся разделе настройте конфигурацию сервера Cloudant NoSQL, нажмите на кнопку «Done».

IBM_Cloud_IoT_c09.png

  • Bucket Interval - временной интервал, в течение которого будет записываться один документ базы данных; вся база данных разбивается на несколько документов.

  • Time Zone - часовой пояс; указывается для корректировки даты и времени.

  • Database Name - имя базы данных; введите произвольное имя для дальнейшей идентификации.

Полное имя базы данных будет иметь вид:

iotp_<Org ID>_<Database Name>_<Current Date>

  1. Должно появиться всплывающее окно с просьбой разрешить подключение к службе Cloudant. Нажмите "Confirm".

IBM_Cloud_IoT_c10.png

  • Если всплывающие окна заблокированы браузером, то всплывающее окно не появится.
  1. Должно появиться сообщение об успешной авторизации. При успешном завершении настройки базы данных Cloudant NoSQL DB, в поле статус отобразится подключенный сервис.

В сервисе Cloudant будут автоматически созданы базы данных и документы. Теперь данные, которые поступают от iRidium server, сохраняются в базе данных Cloudant NoSQL DB.

Подробнее о подключении Cloudant к IoT Platform

Настройка аналитики в IBM Watson IoT

  1. В окне навигации платформы IoT выберите Boards и нажмите «Create New Board».

IBM_Cloud_IoT_d01.png

  1. Заполните информацию о новой доске и нажмите «Next».

IBM_Cloud_IoT_d02.png

  1. Заполните информацию о участниках и нажмите «Submit».

IBM_Cloud_IoT_d03.png

  1. Перейдите на созданную доску.

IBM_Cloud_IoT_d04.png

  1. Нажмите «Add New Card».

IBM_Cloud_IoT_d05.png

  1. Выберите Card Type из предложенного списка, например, «Line Chart».

IBM_Cloud_IoT_d06.png

  1. В списке отображаемых устройств выберите нужное и нажмите «Next».

IBM_Cloud_IoT_d07.png

  1. Нажмите «Connect new data set» и заполните необходимые данные. Нажмите "Next".

IBM_Cloud_IoT_d08.png

  • Параметры Event и Property берутся со вкладки Devices > State сервиса IoT Platform.

IBM_Cloud_IoT_b04.png

  1. Отобразится окно предварительного просмотра карты. Перейдите в настройки, в поле Cloudant instance должен появиться установленный экземпляр базы данных. Измените необходимые настройки и нажмите «Next».

IBM_Cloud_IoT_d09.png

  1. В окне информации о карте укажите заголовок, выберите цветовую схему и нажмите «Submit».

IBM_Cloud_IoT_d10.png

  1. Таким образом можно добавить несколько элементов отображения данных (карточек).

Тестирование системы

  1. Запустите проект сервера.

  2. Подайте питание на Modbus-устройства.

  • Вместо реальных устройств можно использовать Modbus-эмулятор, например, бесплатный Modbus PLC Simulator.
  1. Теперь можно анализировать данные с сервера iRidium: просто перейдите в панель управления Watson Iot и наблюдайте, как данные изменяются в реальном времени.

IBM_Cloud_IoT_d11.png