Выбор IoT платформы 2019

Практически каждый, кто начинает работать с интернетом вещей, достаточно быстро сталкивается с вопросом какую программную платформу выбрать. В данной статье мы расскажем о том с какой платформы стоит начать сейчас, в начале 2019, и почему.

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

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

  • наличие графического интерфейса конфигуратора:
    • возможность добавить/настроить устройство,
    • возможность добавить/настроить отображение информации,
    • возможность добавить/настроить правило обработки,
  • поддержка IoT протоколов: MQTT, COAP,
  • наличие открытой демо,
  • Open-Source для случая масштабирования в будущем, а также работы/отладки в пределах локальной сети.

Решение, которое удовлетворяет одновременно всем условиям, как бы не было удивительно, было найдено только одно.

Практически все сталкиваются с Kaa (KaaIoT project) и в целом проект реально достойный, но в значительной степени удивляет, что для community edition и enerprise используются различные подходы, вплоть до изменения протоколов! и языков программирования.

DeviceHive выглядит интересно, но сильно ограничен по функционалу: вывод графики делается через плагин Grafana, по сути отдельный проект, который слабо интегрирован с основным; аналитика предполагается на сторонних сервисах типа Apache Spark; в итоге остаётся только управление устройствами и сбор данных с них.

Mainflux согласно презентациям умеет практически всё, что нужно, но отсутствует демо для быстрого запуска. Поэтому проверить оперативно без погружения не получится. Стоит отметить что MainFlux выпускает не только программные, но и аппаратные продукты. У них в разработке находится свой граничный роутер, построенный на базе СнК iMX6. На него сейчас собирают предзаказы. Ещё одним отличием MainFlux от других проектов является язык программирования Go. В целом проект выглядит очень перспективно, и, когда будет выпущен свой граничный роутер, будет иметь ряд преимуществ для практического развёртывания перед чисто софтовыми решениями.

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

Решение, которое было выбрано в итоге, как соответствующее всем критериям — ThingsBoard. Рассмотрим его подробнее.

Для запуска демо достаточно завести учётную запись.

Чтобы добавить устройство достаточно на вкладке устройства нажать «+» и заполнить простую форму

Выбрав только что добавленное устройство R-IoT test, можно сконфигурировать его или посмотреть данные. На вкладке подробности понадобится Токен, который в дальнейшем будет использовать, как логин для подключения устройства к MQTT-брокеру

Теперь, когда мы добавили новое устройство и знаем логин для авторизации можно отправлять данные в формате JSON в топик телеметрии v1/devices/me/telemetry. Конкретные ключи добавляются в структуру устройства динамически по мере прихода их в этот топик. В нашем случае будем использовать температуру и влажность:

{«temperature»: «27», «humidity»: «44»}

Пример кода на Python:

import paho.mqtt.client as mqtt
import paho.mqtt.publish as publish
import time
import random

if __name__ == "__main__":
    while True:
        ss = '"temperature": "{:d}", "humidity": "{:d}"'.format(random.randint(20, 30), random.randint(40, 50))
        ss = "{" + ss +"}"
        print(ss)
        publish.single("v1/devices/me/telemetry",
                       ss,
                       qos=0,
                       hostname="demo.thingsboard.io",
                       auth={'username': 'TOKEN!', 'password': ''}
                       )
        time.sleep(1)
        # print(i)

    # client.disconnect()
    print("All's done")

На вкладке Дашборды создадим тестовый R-IoT Dash и сконфигурируем его для отображения в наглядном виде получаемых данных.

Таким образом добавляем 3 виджета:

  • Chart — Timeseries -flot
  • Analog gauge — Radial gauge — Canvas Gauges
  • Digital gauge — Vertical bar — justGage

Запустив скрипт выше увидим, что данные уходят на сервер, там они сохраняются в свойствах устройства, а также выводятся на дашборд.

Рассмотрим работу с правилами. Для этого на вкладке «Цепочки правил» зайдём в базовое правило «Root Rule Chain» и дополним его публикацией в топик MQTT при получении правильной теметрии. Использовать будем открытый брокер hiveMQ, а читать данные через MQTTfx. Принцип работы с конфигуратором правил практически полностью повторяет Node-Red, который мы рассматривали ранее. Поэтому приведём скриншоты правил и результат работы.

В итоге, можно сделать вывод, что ThingsBoard — наиболее простая и функциональная система интернета вещей, которая позволяет делать практически все основные задачи через web-интерфейс в наглядном и интуитивном формате. При этом, так как платформа открытая, то при необходимости можно доработать её более глубоко.

Добавить комментарий

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

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход /  Изменить )

Google photo

Для комментария используется ваша учётная запись Google. Выход /  Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход /  Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход /  Изменить )

Connecting to %s