# IoT Managed Service ## Назначение IoT Managed Service — это облачный сервис для управления IoT-устройствами, сбора и хранения телеметрии, а также интеграции с внешними системами через MQTT, Kafka и REST API. Сервис автоматизирует регистрацию устройств, выдачу credentials, сбор телеметрии и предоставляет REST-интерфейс для управления и мониторинга. --- ## Архитектура - **IoT Device** — физическое устройство, подключающееся по MQTT - **EMQX** — брокер MQTT, делегирует auth/ACL в iot-operator - **iot-mqtt-bridge** — подписка на все топики, проксирует в Kafka - **Kafka** — очередь событий телеметрии - **iot-kafka-consumer** — сохраняет телеметрию в per-tenant Postgres - **IoT Postgres** — база данных для хранения телеметрии - **REST API** — управление устройствами, получение телеметрии --- ## Основные компоненты | Компонент | Назначение | |-------------------|-----------------------------------| | iot-operator | REST API, контроллер CRD | | iot-mqtt-bridge | MQTT → Kafka | | iot-kafka-consumer| Kafka → Postgres | | iot-postgres | Хранение телеметрии | | EMQX | MQTT брокер | --- ## Основные команды и эндпоинты ### Публичные - `GET /console` — IoT Console (SPA) - `GET /iot-admin` — страница администратора ### JWT (namespace) - `POST /v1/namespaces/{ns}/iot/devices` — создать устройство - `GET /v1/namespaces/{ns}/iot/devices` — список устройств - `GET /v1/namespaces/{ns}/iot/devices/{name}` — получить устройство + пароль - `DELETE /v1/namespaces/{ns}/iot/devices/{name}` — удалить устройство - `PATCH /v1/namespaces/{ns}/iot/devices/{name}` — обновить (enabled) - `GET /v1/namespaces/{ns}/iot/telemetry` — получить телеметрию ### Внутренние (без JWT) - `POST /internal/mqtt/auth` — MQTT auth для EMQX - `POST /internal/mqtt/acl` — MQTT ACL для EMQX ### Админ - `GET /iot-admin/stats` — статистика (PG, Kafka, pods) --- ## Быстрый старт 1. Развернуть EMQX, iot-mqtt-bridge, event-dispatcher, iot-kafka-consumer, iot-postgres (см. deployments/k8s/) 2. Зарегистрировать устройство через REST API или CRD 3. Подключить устройство к MQTT (логин/пароль выдаются автоматически) 4. Телеметрия автоматически попадёт в Postgres и доступна через REST API --- ## Документация - doc/architecture/overview.md — архитектура - doc/api/endpoints.md — список эндпоинтов - doc/deployment.md — деплой и инженерные детали - examples/README.md — пример E2E цепочки