<< Click to Display Table of Contents >> IBM Watson IOT |
|
IBM Cloud предоставляет множество различных сервисов. В данном примере нам потребуются только Watson IoT. В рассматриваемом примере TeslaSCADA2 Runtime считывает данные с Modbus-устройств и отсылает их в облако IBM Cloud через MQTT-протокол в формате JSON, используя MQTT издатель.
Для тестирования можно использовать бесплатный (Lite) план пользования сервисом Watson IoT, который включает в себя:
•до 500 устройств,
•до 500 связей,
•месячные лимиты
oдо 200 Мб трафика,
oдо 200 Мб анализируемых данных
oдо 200 Мб локально анализируемых данных (Edge).
Подробнее:
•Watson IoT (in English)
Настройка IBM Watson IoT
Для подключения к платформе IBM Watson IoT нужно получить аккаунт IBM Cloud (IBMid).
Создание инстанса IBM Watson IoT
1. Зайдите в свою учётную запись, перейдите на панель управления (Dashboard) и нажмите на кнопку «Create Resource».
2. Выберите категорию Internet of Things и нажмите на Internet of Things Platform.
3. В параметрах выберите регион, например, US South (для этого региона доступно больше всего функциональных возможностей).
4. Выберите ценовой план (например, Lite) и нажмите на кнопку «Create»:
5. На панели приборов в списке отобразится добавленный сервис, перейдите на него, в появившемся окне нажмите на кнопку «Launch».
6. В новом окне откроется панель управления IoT Platform.
Добавление устройств
1. Перейдите на вкладку Devices на панели управления IoT Platform.
2. Добавьте устройство, для этого нажмите на кнопку «Add Device».
3. В появившемся окне задайте Device Type и Device ID и нажмите «Next».
4. Укажите информацию об устройстве, нажмите «Next».
5. Добавьте группу (можно пропустить этот шаг), нажмите «Next».
6. В окне Security создайте токен для аутентификации (если оставить поле пустым, то токен сгенерируется сам). Нажмите «Next».
7. Просмотрите результат создания устройства и нажмите кнопку «Done».
8. В появившемся окне появится сообщение о том, что было зарегистрировано устройство, и будут предоставлены реквизиты для подключения устройства к платформе. Если ранее поле токена было оставлено пустым, то будет предоставлен автоматически сгенерированный токен.
Токен аутентификации (пароль) передаётся только один раз. Сохраните его.
Настройка MQTT издателя
1. Включим MQTT издатель. И настроим его:
•Broker URL - адрес и порт облачного интерфейса IoT, кодируется следующим образом: ssl://<your_orgID>.messaging.internetofthings.ibmcloud.com:8883
•Username - логин, здесь должно быть задано фиксированное значение use-token-auth.
•Password - созданный или сгенерированный Authentication Token
•Client ID - идентификатор клиента, кодируется следующим образом: d:<your_orgID>:<your_Type>:<your_Device>
•Write topic format - формат для записи тегов в топик: iot-2/evt/{tagname}/fmt/txt, {tagname} - имя тегов в проекте.
•Read topic format - формат для чтения тегов из топика: iot-2/cmd/{tagname}/fmt/txt , {tagname} - имя тегов в проекте.
•QoS - тип MQTT сообщения.
2. Создадим сервер Modbus и настроим его:
3. Создадим 2 тега и привяжем их к 2 первым регистрам. И настроим их:
4. Далее запустим этот проект в TeslaSCADA2 Runtime. Он соединяется к облаку и публикует данные тегов в нем:
В симуляторе:
В проекте:
В облаке:
Настройка MQTT сервера
1. Для получения информации из облака создадим приложение в IOT Watson:
2. Теперь мы можем создать MQTT сервер в новом проекте:
•URI - адрес и порт облачного интерфейса IoT, кодируется следующим образом: ssl://<your_orgID>.messaging.internetofthings.ibmcloud.com:8883
•Username - логин кодируется следующим образом: {api key} - Вы можете видеть его на картинке. Он содержит a -{your_orgID}-{code}. На картинке другой {your_orgID}. Должен быть eeptot.
•Password - созданный или сгенерированный Authentication Token;
•Client ID - идентификатор клиента кодируется следующим образом: d:<your_orgID>:<name of the application>
3. Создадим 2 тега для чтения данных из облака:
Топик имеет следующий формат:
iot-2/type/{device_type}/id/{device_id}/evt/{event_id}/fmt/{format_string}
device_type - тип устройства;
device_id - ID устройства;
event_id - имя тега которые изспользуется в проекте с издателем;
format_string - формат топика.(txt в нашем случае).
Для записи в топик используется следующий формат:
iot-2/type/{device_type}/id/{device_id}/cmd/{cmd_id}/fmt/{format_string}
4. По каким-то причинам при подключении к облаку IBM и подписке на темы значения не обновляются.
Мы создали возможность для обновления значений. Вам нужно создать тег в MQTT, чтобы обновить издателя с именем refreshpublisher:
Топик должен выглядеть так: iot-2/type/TeslaSCADA/id/1/cmd/refreshpublisher/fmt/txt
cmd_id - refreshpublisher
5. После запуска проекта с MQTT клиентом и обновлением данных мы получаем: