# IoT Producer — эмулятор датчиков «Умного дома» Генерирует случайные IoT-события (температура, влажность, энергопотребление) и отправляет их в очередь RabbitMQ. ## Пайплайн ``` Producer (этот сервис) → RabbitMQ → Consumer → Redis + MongoDB → Dashboard ``` ## Датчики 8 виртуальных датчиков, 3 типа: | Тип | Датчики | Единица | Диапазон | |---|---|---|---| | temperature | temp_living, temp_bedroom, temp_office | °C | 16–28 | | humidity | humidity_living, humidity_bed | % | 30–70 | | power_meter | power_kitchen, power_living, power_office | kW | 0.1–4.0 | ## Переменные окружения | Переменная | По умолчанию | Описание | |---|---|---| | `RABBIT_HOST` | `localhost` | Хост RabbitMQ | | `RABBIT_PORT` | `5672` | Порт AMQP | | `RABBIT_USER` | `guest` | Логин | | `RABBIT_PASS` | `guest` | Пароль | | `RABBIT_QUEUE` | `iot-events` | Имя очереди | | `PRODUCE_INTERVAL` | `3` | Интервал между событиями (сек) | | `PORT` | `3000` | Порт HTTP | ## Эндпоинты | Путь | Ответ | |---|---| | `GET /` | `{"service":"iot-producer","events_sent":N,"errors":N}` | | `GET /health` | `{"status":"ok"}` | ## Локальный запуск ```bash npm install RABBIT_HOST=localhost node server.js ``` ## Деплой на Nubes Cloud 1. Запушьте этот репо в свой Gitea 2. В Terraform-конфиге укажите `git_path` на ваш репо и `git_revision` (коммит или `"main"`) 3. Nubes автоматически запустит `npm start` ## HTTP-эндпоинт Сейчас `GET /` отдаёт только статистику: `{"events_sent": N, "errors": N}`. Nubes Cloud автоматически создаёт публичный домен для сервиса. При необходимости можно расширить: - `/metrics` — Prometheus-формат для Grafana - `/health` — проверка доступности RabbitMQ (а не только «процесс жив») - SSE-стриминг событий в реальном времени