Files
progl 6655dd3d7a init: спецификация протокола WegaBox ↔ ponics.online
MQTT топики, REST API, поведение устройства, маппинг датчиков.
Mermaid диаграммы: flow подключения, обработка сообщений, FSM устройства.
2026-05-05 11:42:57 +03:00

2.9 KiB
Raw Permalink Blame History

REST API

Base URL: https://ponics.online/api/box/

Аутентификация: сессия Django (cookie) или токен.


Эндпоинты

GET /api/box/

Список боксов текущего пользователя.

Response:

[
  {
    "id": 23,
    "name": "Бокс №1",
    "token": "550e8400-e29b-41d4-a716-446655440000",
    "online": true,
    "last_seen": "2026-05-03T08:00:00Z"
  }
]

GET /api/box/{id}/

Детали бокса с конфигурацией.


GET /api/box/{id}/live/

Живые данные датчиков из Redis-кеша.

Response:

{
  "ph": 6.24,
  "ec": 1.85,
  "tankTemp": 22.5,
  "rootTemp": 21.0,
  "airTemp": 24.1,
  "airHumidity": 65.0,
  "waterLevel": 45.2,
  "light": 80.0,
  "online": true,
  "last_seen": "2026-05-03T08:01:23Z"
}

POST /api/box/{id}/reboot/

Перезагрузка устройства.

Request: {} (пустой body)

Response:

{"success": true, "message": "Команда reboot отправлена", "command": "reboot"}

POST /api/box/{id}/gpio/

Управление GPIO (MCP23017).

Request:

{"pin": 5, "state": true}
  • pin: 015
  • state: true (HIGH) / false (LOW)

Response:

{"success": true, "command": "gpio", "pin": 5, "state": true}

POST /api/box/{id}/pump/run/

Запуск помпы на заданное время.

Request:

{"pump_id": 1, "time_ms": 5000}
  • pump_id: 18
  • time_ms: 160000

Response:

{"success": true, "command": "pump_run", "pump_id": 1, "time_ms": 5000}

POST /api/box/{id}/pump/dispense/

Налить определённое количество граммов.

Request:

{"pump_id": 2, "grams": 50.5}
  • pump_id: 18
  • grams: 0.11000

Response:

{"success": true, "command": "pump_dispense", "pump_id": 2, "grams": 50.5}

POST /api/box/{id}/pump/stop/

Остановить помпу.

Request:

{"pump_id": 1}
  • pump_id: 18

Response:

{"success": true, "command": "pump_stop", "pump_id": 1}

POST /api/box/{id}/preferences/

Обновить настройки и калибровку устройства.

Request: JSON с любыми полями из MQTT.md → set/preferences/all

Response:

{
  "success": true,
  "message": "Настройки отправлены (3 полей)",
  "fields": ["ecKorr", "pHlKorr", "ntcValKorr"]
}

Коды ошибок

HTTP Описание
400 Неверные параметры (pin/pump_id/time вне диапазона)
503 MQTT недоступен
404 Бокс не найден / нет доступа