diff --git a/README.md b/README.md index c60a058..4483355 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,4 @@ smart-home-server =============== + +## HOME OS \ No newline at end of file diff --git a/docs/device-spec.md b/docs/device-spec.md index f546f26..eaa1f88 100644 --- a/docs/device-spec.md +++ b/docs/device-spec.md @@ -273,6 +273,87 @@ --- +### `GET /channels_schema` + +Возвращает текущую конфигурацию каналов. +Это содержимое из памяти устройства, оно делиться по 4 байта на канал. Байты отвечают за: + - 1. GPIO пин канала + - 2. GPIO пин индикатора (LED), или номер светодиода, если используется адресная LED лента + - 3. GPIO пин обратной связи + - 4. Резервный байт общего назначения, например для реле это флаг инвертирования канала. А для кнопок этот байт не используйется. + +Доступ: + - В режиме normal требует Authorization. + - В режиме setup доступен без токена. + - В режимах error и updating может быть недоступен. + +#### Пример ответа +```json + { + "status": "ok", + "schema": [ + 4,255,255,1, + 5,255,255,0, + 255,255,255,0, + 255,255,255,0, + 255,255,255,0, + 255,255,255,0, + 255,255,255,0, + 255,255,255,0 + ] + } +``` + +##### Пояснение примера: +Канал 0: + - pin = 4 + - indicator = 255 (не используется) + - feedback = 255 (не используется) + - flags = 1 (инвертирован) +Канал 1: + - pin = 5 + - flags = 0 (обычный) +Остальные каналы не задействованы (255 = SH_PIN_UNUSED) + +--- + +## 9. `POST /set_channels_schema` +Позволяет задать конфигурацию всех каналов целиком. +**При удачном обновлении будет совершена перезагрузка устройства.** + +Доступ: + - В режиме setup — без токена. + - В режиме normal — с Authorization. + - В режимах error, updating — недоступен. + +#### Пример запроса + +```json + { + "schema": [ + 4,255,255,1, + 5,255,255,0, + 6,255,255,0, + 7,255,255,0, + 255,255,255,0, + 255,255,255,0, + 255,255,255,0, + 255,255,255,0 + ] + } +``` + +#### Пример ответа + +```json + { + "status": "ok", + "message": "Channels schema updated" + } +``` + +--- + ## Рекомендации - Все устройства реализуют эндпоинты `/about`, `/status`, `/action`. @@ -280,7 +361,3 @@ - Поле `device_type` помогает серверу различать логику работы с устройством. --- - -## На будущее - -- Добавить процедуру получения токена на сервере (админка).