Найти тему
Darvik

IoT Platform cвоими руками: Middleware

Оглавление

Общая архитектура IoT Platform

IoT Platform
IoT Platform

3 уровня

  • Devices: IoT устройства подключенные к IoT Core по какому-нибудь стандартному протоколу (самые популярные MQTT, Modbus, COAP, HTTP, ...) через интернет, локальную сеть или специальный шлюз
  • IoT Core: брокер сообщений, адаптеры протоколов, система регистрации и мониторинга устройств, менеджер правил
  • Уровень бизнес-приложений: сервисы как-либо обрабатывающих данные с устройств и посылающие управляющие команды на устройства

Выбор Middleware для IoT Core

В качестве брокера сообщений я буду использовать Rabbit MQ - легко настроить, нужно немного ресурсов, масштабируемый из коробки (cluster), куча дополнительных плагинов.

В качестве адаптеров протоколов будут выступать плагины для RabbitMQ: MQTT, COAP, HTTP - при необходимости можно добавить свой.

В качестве системы мониторинга будет выступать связка Prometheus+AlertManager+Grafana.

В качестве менеджера правил будем использовать NodeRed.

В качестве системы регистрации и управления устройствами - "самописное" приложение на базе Spring-Boot+Thymeleaf+Bootstrap.

В качестве базы данных (хранение информации об устройствах, OTA, история телеметрии) - PostgreSQL.

Docker: docker-compose для локальной разработки и тестирования

Структура проекта

docker-config

  • файлы конфигурации для контейнеров
  • Dockerfile кастомные cборки контейнеров
  • api.env переменные окружения

docker-data

  • изменяемые данные из контейнеров - дабы не потерять их при пересоздании

compose.yml

  • инструкции для запуска и настройки контейнеров
  • зависимости между контейнерами
Create IoT Env

Интересные моменты

RabbitMQ

Кастомная сборка. Сразу подключаются плагины management и mqtt.
Перед запуском необходимо сгенерить ключи для
tls. Для этого в папке docker-config выполнить следующие команды:

Init rabbit mq TLS

Nginx

Так же вместе с middleware компонентами запускается nginx - дабы иметь одну точку доступа:

ссылка на код в github