Практически каждый, кто начинает работать с интернетом вещей, достаточно быстро сталкивается с вопросом какую программную платформу выбрать. В данной статье мы расскажем о том с какой платформы стоит начать сейчас, в начале 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
Запустив скрипт выше увидим, что данные уходят на сервер, там они сохраняются в свойствах устройства, а также выводятся на дашборд.
Последние полученные данные отображаются на соответствующей вкладке устройства Данные в режиме реального времени выводятся на dashboard
Рассмотрим работу с правилами. Для этого на вкладке «Цепочки правил» зайдём в базовое правило «MQTT при получении правильной теметрии. Использовать будем открытый брокер hiveMQ, а читать данные через MQTTfx. Принцип работы с конфигуратором правил практически полностью повторяет Node-Red, который мы рассматривали ранее. Поэтому приведём скриншоты правил и результат работы.
» и дополним его публикацией в топикДобавляем правило в продолжение «Save timeseries» Настройки правила публикации MQTT Вывод с MQTT брокера
В итоге, можно сделать вывод, что ThingsBoard — наиболее простая и функциональная система интернета вещей, которая позволяет делать практически все основные задачи через web-интерфейс в наглядном и интуитивном формате. При этом, так как платформа открытая, то при необходимости можно доработать её более глубоко.
А Bort-X будет попроще. Ставится за 5 минут.
НравитсяНравится
Их вообще не совсем корректно сравнивать. Bort-X работает только на Espressif и с масштабированием будут очень большие проблемы.
НравитсяНравится