Files
tf-iot-dashboard/README.md
T

66 lines
3.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# IoT Dashboard — веб-интерфейс «Умного дома»
Читает данные из Redis (только чтение) и отображает графики через Chart.js в браузере.
## Пайплайн
```
Producer → RabbitMQ → Consumer → Redis + MongoDB → Dashboard (этот сервис)
```
Dashboard **не пишет** в Redis — только читает. Данные туда кладёт Consumer.
## API
| Путь | Ответ | Данные из Redis |
|---|---|---|
| `GET /api/latest` | `[{sensor_id, value, unit, location, timestamp}]` | `iot:latest` (hash) |
| `GET /api/counters` | `{temperature: "N", humidity: "N", power_meter: "N"}` | `iot:counters` (hash) |
| `GET /api/recent` | `[{...50 последних событий}]` | `iot:recent` (zset) |
| `GET /` | HTML-дашборд | — |
## Интерфейс
- **Bar Chart** — последние значения датчиков (цвет зависит от типа)
- **Doughnut Chart** — распределение событий по типам устройств
- **Таблица** — последние 15 событий с временем, датчиком и значением
- **Автообновление** — каждые 3 секунды
## Переменные окружения
| Переменная | По умолчанию | Описание |
|---|---|---|
| `REDIS_HOST` | `127.0.0.1` | Хост Redis |
| `REDIS_PORT` | `6379` | Порт Redis |
| `REDIS_PASS` | — | Пароль Redis (необязательно) |
| `PORT` | `3000` | Порт HTTP |
## Локальный запуск
```bash
npm install
REDIS_HOST=localhost node server.js
# Открыть http://localhost:3000
```
## Деплой на Nubes Cloud
1. Запушьте этот репо в свой Gitea
2. В Terraform-конфиге укажите `git_path` на ваш репо и `git_revision`
3. Nubes автоматически запустит `npm start`
## HTTP-эндпоинт
Dashboard — единственный сервис, чей HTTP-эндпоинт реально используется: браузер открывает дашборд, JavaScript дёргает `/api/*` каждые 3 секунды.
При необходимости можно расширить:
- WebSocket/SSE — стриминг событий без опроса
- `/api/summary` — агрегированная статистика (средняя температура, пиковая нагрузка)
- Авторизация (Basic Auth/OAuth) если дашборд не должен быть публичным
## Примечания
- **Chart.js загружается из CDN** (jsDelivr) — под должен иметь доступ в интернет
- **Тёмная тема** — slate-палитра, адаптивная сетка
- При недоступности Redis дашборд показывает ошибку в JSON (не 500)