/about, /status, /action.setup — устройство ожидает настройки (доступны /setup, /about, /set_token без авторизации).normal — устройство работает в штатном режиме (требуется токен).error, updating — для расширения./about, /setup в режиме setup, /set_token в режиме setup) требуют передачи токена авторизации.GET /about, GET/POST /setup (в режиме setup) и POST /set_token (в режиме setup), в запросах должен присутствовать заголовок:
Authorization: Bearer <token>
{
"status": "error",
"error": "Unauthorized",
"message": "Missing or invalid token"
}
GET /aboutОтдаёт базовую информацию об устройстве.
{
"device_name": "Relay 1",
"device_type": "relay",
"firmware_version": "1.0.3",
"device_id": "ecf0a1b5c9d74f9a8e294c1f67b0a8b9",
"server": "http://192.168.1.10",
"status": "normal", // normal | setup | error | updating
"ip_address": "192.168.1.42",
"mac_address": "A4:CF:12:9B:3F:D2",
"uptime": 123456 // в секундах
}
GET /statusОтдаёт текущее состояние устройства.
В режиме normal требует заголовок Authorization с валидным токеном!
В режиме setup может быть недоступен или возвращать ограниченную информацию.
{
"state": "on"
}
{
"temperature_c": 21.8,
"humidity_percent": 45.3,
"battery_level": 93
}
POST /actionПозволяет управлять устройством.
В режиме normal требует заголовок Authorization с валидным токеном!
В режиме setup эндпоинт недоступен.
{
"action": "set_state",
"params": {
"state": "off"
}
}
{
"status": "ok",
"message": "State changed"
}
{
"status": "error",
"error": "IllegalActionOrParams",
"message": "Device does not support this action or params"
}
POST /set_tokenИспользуется для первичной инициализации устройства (в режиме setup) и для смены токена по инициативе сервера (в режиме normal).
setup: доступен без токена — сервер устанавливает токен впервые, переводит устройство в режим normal.normal: требует заголовок Authorization с валидным токеном! — смена токена доступна только авторизованному серверу.{
"token": "QmFzZVRva2VuU2FtcGxlMTIz"
}
{
"status": "ok",
"message": "Token set. Device mode: normal"
}
{
"status": "error",
"error": "Unauthorized",
"message": "Missing or invalid token"
}
{
"status": "error",
"error": "AlreadyProvisioned",
"message": "Device already provisioned"
}
GET /setup и POST /setupДоступно только в режиме setup.
Позволяет настроить подключение к Wi-Fi через веб-интерфейс.
/setup доступен только, пока устройство находится в статусе setup (до получения токена)./setup открывается веб-панель для ввода параметров Wi-Fi (SSID, пароль) и, при необходимости, адреса сервера./set_token).normal эндпоинт /setup становится недоступен (возвращает ошибку или заглушку).{
"ssid": "Home_WiFi",
"password": "MySecretPass",
"server": "http://192.168.1.10"
}
{
"status": "ok",
"message": "Wi-Fi configured. Connecting..."
}
/setup вне режима setup:{
"status": "error",
"error": "NotAvailable",
"message": "Setup mode is not active"
}
POST /rebootФизическая перезагрузка устройства.
Доступно только в режиме normal. Требует заголовок Authorization с валидным токеном!
{
"status": "ok",
"message": "Device will reboot now"
}
POST /resetСброс всех настроек к заводским, переход в режим setup.
Доступно только в режиме normal. Требует заголовок Authorization с валидным токеном!
{}
{
"status": "ok",
"message": "Device reset to factory settings. Entering setup mode."
}
/about, /status, /action.device_type помогает серверу различать логику работы с устройством.