Это программируемое на Tibbo BASIC/C устройство, функциональность которого определяет загруженное приложение.
Мы предлагаем различные готовые к использованию приложения, например, Serial-over-IP (SoI), Modbus Gateway и Sensor Hub.
ОбзорNative C APINode.js APIУправление процессами

Мониторинг окружающей среды при помощи LTPS, Azure и PowerBI

О приложении

В этом обзоре мы покажем, как собирать данные об окружающей среде (влажности, атмосферном давлении, температуре и уровне освещенности) с LTPS-устройств, используя Azure IoT-концентратор, обрабатывать эти данные при помощи Azure Stream Analytics и визуализировать в режиме реального времени посредством Power BI.

Вам потребуется:

Аппаратное обеспечение:

Программное обеспечение:

  • Node.js V6.x.x (уже установлено)

Внешние сервисы:

Что необходимо выполнить перед установкой приложения?

  • Задайте нужную конфигурацию в web-интерфейсе LTPS.
  • Войдите на LTPP3 при помощи SSH-клиента.
  • Установите необходимые инструментальные средства NPM и др.

Установка приложения

Сначала выполните следующее:

# Create a folder for the application
cd /opt/node-apps/
mkdir environment
cd environment

# Install the required modules
npm install @tibbo-tps/tibbit-28
npm install @tibbo-tps/tibbit-30
npm install @tibbo-tps/tibbit-35

Создайте файл azure-app-0.js со своим приложением:

var tibbit28 = require("@tibbo-tps/tibbit-28").init("S11");
var tibbit35 = require("@tibbo-tps/tibbit-35").init("S13");
var tibbit30 = require("@tibbo-tps/tibbit-30").init("S15");

setInterval(function(){
    var illuminationData = tibbit28.getData();
    var humidityData = tibbit30.getData();
    var pressureData = tibbit35.getData();
    var dateTime = new Date();

    console.log("Date/Time: "+dateTime);
    console.log("Illumination: "+illuminationData.illumination);
    console.log("Humidity: "+humidityData.humidity);
    console.log("Temperature: "+humidityData.temperature);
    console.log("Pressure: "+pressureData.pressure);
},1000);

Загрузите его в папку /environment и запустите:

$ node azure-app-0.js

Date/Time: Tue Jul 19 2016 13:50:54 GMT+0000 (UTC)
Illumination: 115
Humidity: 43.755340576171875
Temperature: 28.05670928955078
Pressure: 738.7398681640625

Установите IoT Hub Microsoft Azure

Azure IoT Hub (IoT-концентратор Azure) — это сервис, благодаря которому возможна дуплексная связь между Вашими устройствами и "конечной частью решения". Теперь необходимо создать IoT-концентратор.

  • Создайте учетную запись на портале Azure
  • Войдите под своей учетной записью на портал Azure
  • Выберите: New > Internet of Things > Azure IoT Hub
  • Настройте свой IoT Hub и щёлкните по Create.
  • Когда IoT hub будет готов, выберите All Resources > и щёлкните кнопкой мыши по иконке Keys.
  • В разделе Shared access policies (совместный доступ) выберите пункт iothubowner и скопируйте значение в поле Connection string (строка подключения).

Регистрация устройств

Существует три способа регистрации устройств: при помощи скрипта, использующего Azure API, посредством приложения GUI App (только для Windows) или при помощи мультиплатформенного инструментария CLI. Третий способ, как нам видится, наиболее удобный.

Обратите внимание: для использования iothub-explorer необходимо установить на свой компьютер Node.js (версию V4.x или выше).

  • Выполните следующую команду:
npm install -g iothub-explorer@latest
  • А теперь эту:
$ iothub-explorer login <iothubowner-connection-string>

Session started, expires on Thu Jul 21 2016 13:22:10 GMT+0400

здесь <iothubowner-connection-string> является строкой подключения iothubowner из предыдущего этапа.

  • Зарегистрируйте новое устройство и получите его строку подключения:

Замените <device-name> на текущее имя своей платформы LPTS. Например, на "tps-centreville".

$ iothub-explorer create <device-name> --connection-string

Created device tps-centreville

...

connectionString: HostName=iot-tps.azure-devices.net;DeviceId=tps-centreville;SharedAccessKey=fSCVQIY..TOprSsDE=

  • Сохраните значение connectionString — оно потребутся чуть позже.

Сделайте Вашу LTPS IoT-устройством

  • Войдите на LTPP3 при помощи SSH-клиента.
  • Замените рабочую папку на /environment и выполните следующее:
npm install azure-iot-device
npm install azure-iot-device-amqp
  • Создайте файл azure-app-1.js со следующим приложением:
var clientFromConnectionString = require('azure-iot-device-amqp').clientFromConnectionString;
var Message = require('azure-iot-device').Message;

var connectionString = '<THE DEVICE CONNECTION STRING FROM THE PREVIOUS STEP>';
var client = clientFromConnectionString(connectionString);

var tibbit28 = require("@tibbo-tps/tibbit-28").init("S11");
var tibbit35 = require("@tibbo-tps/tibbit-35").init("S13");
var tibbit30 = require("@tibbo-tps/tibbit-30").init("S15");

client.open(function(err){
    if(err){
        console.log('Could not connect: ' + err);
    }else{
        console.log('Client connected');

        setInterval(function(){
            var illuminationData = tibbit28.getData();
            var humidityData = tibbit30.getData();
            var pressureData = tibbit35.getData();

            var time = new Date().toISOString();

            var data = JSON.stringify({
                deviceId: 'tps-centreville',
                humidity: humidityData.humidity,
                temperature: humidityData.temperature,
                pressure: pressureData.pressure,
                illumination: illuminationData.illumination,
                time: time
            });

            var message = new Message(data);

            client.sendEvent(message, function (err) {
                if(err){
                    console.log(err.toString());
                }else{
                    console.log("Message sent: " + message.getData());
                }
            });
        },60000)
    }
});
  • Загрузите приложение в папку /opt/node-apps/environment на LTPS и запустите его:
$ node azure-app-1.js

Client connected
Message sent: {"deviceId":"tps-centreville","humidity":37.1016960144043,"temperature":31.370407104492188,"pressure":742.8632202148438,"illumination":136,"time":"2016-07-21T10:19:07.490Z"}
Message sent: {"deviceId":"tps-centreville","humidity":37.1016960144043,"temperature":31.370407104492188,"pressure":743.2034301757812,"illumination":137,"time":"2016-07-21T10:20:10.582Z"}
Message sent: {"deviceId":"tps-centreville","humidity":37.1016960144043,"temperature":31.380477905273438,"pressure":743.2034301757812,"illumination":138,"time":"2016-07-21T10:21:12.003Z"}

Самое полезное и впечатляющее свойство в отладке у iothub-explorer — это отслеживание событий.
Используя iot-explorer, можно отслеживать события, которые отправляются с устройств на облако и с облака на устройства.

  • Выполните следующую команду:

Эта команда обязывает предоставить строку подключения iothubowner, даже если Вы уже зашли в систему.

$ iothub-explorer <iothubowner-connection-string> monitor-events tps-centreville

Monitoring events from device tps-centreville

Event received:
{ deviceId: 'tps-centreville',
  humidity: 37.1016960144043,
  temperature: 31.380477905273438,
  pressure: 743.2034301757812,
  illumination: 138,
  time: '2016-07-21T10:21:12.003Z' }

Настройте поток данных

Для выполнения этой задачи потребуется активная подписка на Microsoft Power BI.

Прежде чем данные будут доставлены в Power BI, они должны быть обработаны в Azure Stream Analytics job.

  • Выберите New > Internet of Things > Stream Analytics Job
  • Настройте Job и кнопкой мыши щелкните по Create
  • Подождите — через несколько минут будет создан Job, затем выберите All resources > name of your Stream Analytics Job
  • Кнопкой мыши щёлкните по Inputs > Add

Настройте ввод:

  • Input alias: data-from-tps
  • Source Type: Data stream
  • Source: IoT Hub
  • Subscription: Use IoT hub from current subscription
  • Endpoint: Messaging
  • Shared access policy name: iothubowner
  • Consumer group: powerbi
  • Кнопкой мыши щёлкните по Create

Настройте вывод:

  • Output alias: data-to-powerbi
  • Кнопкой мыши щелкните по Outputs > Add
  • Выберите Power Bi в списке "Выходные данные".
  • Кнопкой мыши щелкните по Authorize и введите в окне свои учетные данные для Power BI.
  • Введите, соответствено, Dataset Name и Table Name, например, telemetry
  • Выберите Create

Теперь необходимо ввести запрос:

  • Щёлкните кнопкой мыши по Query
  • Введите следующее:
SELECT
    AVG(humidity) AS humidity,
    AVG(temperature) AS temperature,
    AVG(pressure) AS pressure,
    AVG(illumination) AS illumination,
    System.Timestamp AS time,
    IoTHub.ConnectionDeviceId AS deviceId
INTO
    [data-to-powerbi]
FROM
    [data-from-tps] TIMESTAMP by time
GROUP BY
    TumblingWindow(Second, 60), IoTHub.ConnectionDeviceId
  • Щёлкните кнопкой мыши по Save

Язык запросов аналитики потоков данных — подмножество языка SQL. Подробную документацию о языке можно найти здесь. Кроме того, можно обратить внимание на очень полезные примеры.

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

  • Теперь можно приступить к работе.

Визуализируйте свои данные

  • Откройте рабочую среду проектирования Power BI.
  • После начала работы в Stream Analytics появится новый пакет данных в Navigation Bar.
  • Создайте отчет. Используйте time в качестве оси координат, deviceId в качестве легенды, а temperature/humidity/illumination/pressure — в качестве значения.

Добавьте устройства

  • Если у Вас есть еще одно LTPS-устройство, зарегистрируйте его, как описано в пункте Регистрация устройств.
  • Загрузите и запустите код из IoT-enable your LTPS, , используйте измененное значение connectionString.
  • После этого в отчёте появится вторая динамическая характеристика.
ОбзорNative C APINode.js APIУправление процессами