Xiot-controller-local-api: различия между версиями
Admin (обсуждение | вклад) Добавлено описание локального API контроллера |
Admin (обсуждение | вклад) Уточнено описание локального API контроллера |
||
| Строка 1: | Строка 1: | ||
Локальное API контроллера XIOT работает на контроллере по | Локальное API контроллера XIOT позволяет внешним системам получать состояние дома и управлять устройствами в локальной сети. API работает на контроллере по адресу: | ||
== | <syntaxhighlight lang="text"> | ||
http://<ip-контроллера>:5552 | |||
</syntaxhighlight> | |||
== Ключ доступа == | |||
Для работы с API нужен ключ доступа. Он отображается в редакторе XIOT: | |||
<syntaxhighlight lang=" | <syntaxhighlight lang="text"> | ||
Настройки контроллера -> Ключ локального API (порт 5552) | |||
</syntaxhighlight> | </syntaxhighlight> | ||
Все запросы к API должны передавать этот ключ. Если ключ не указан или указан неверно, контроллер вернет ошибку авторизации. | |||
Ключ можно обновить в том же окне настроек кнопкой '''Обновить ключ локального API'''. После обновления старый ключ перестает работать, поэтому его нужно заменить во всех внешних интеграциях. | |||
== Как передавать ключ == | |||
Рекомендуемый способ - передавать ключ в HTTP-заголовке: | |||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
curl -H "X-XIOT-API-Key: <ключ>" "http:// | curl -H "X-XIOT-API-Key: <ключ>" \ | ||
"http://192.168.1.10:5552/api/v1/remote/get/devices" | |||
</syntaxhighlight> | </syntaxhighlight> | ||
Также поддерживается заголовок авторизации: | |||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
curl -H "Authorization: Bearer <ключ>" "http:// | curl -H "Authorization: Bearer <ключ>" \ | ||
"http://192.168.1.10:5552/api/v1/remote/get/devices" | |||
</syntaxhighlight> | </syntaxhighlight> | ||
Для простых | Для простых проверок ключ можно передать в адресе запроса: | ||
<syntaxhighlight lang="text"> | <syntaxhighlight lang="text"> | ||
http:// | http://192.168.1.10:5552/api/v1/remote/get/devices?key=<ключ> | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Для постоянных интеграций лучше использовать заголовок, а не параметр в адресе. | |||
== Получение данных == | == Получение данных == | ||
Запросы чтения возвращают данные в формате JSON. | |||
{| class="wikitable" | {| class="wikitable" | ||
! | ! Запрос | ||
! | ! Что возвращает | ||
|- | |- | ||
| <code>/api/v1/remote/get/home</code> | | <code>/api/v1/remote/get/home</code> | ||
| | | Дом и его характеристики. | ||
|- | |- | ||
| <code>/api/v1/remote/get/floors</code> | | <code>/api/v1/remote/get/floors</code> | ||
| | | Список этажей. | ||
|- | |- | ||
| <code>/api/v1/remote/get/floor/< | | <code>/api/v1/remote/get/floor/<id_этажа></code> | ||
| | | Один этаж. | ||
|- | |- | ||
| <code>/api/v1/remote/get/rooms</code> | | <code>/api/v1/remote/get/rooms</code> | ||
| | | Список комнат. | ||
|- | |- | ||
| <code>/api/v1/remote/get/room/< | | <code>/api/v1/remote/get/room/<id_комнаты></code> | ||
| | | Одна комната. | ||
|- | |- | ||
| <code>/api/v1/remote/get/devices</code> | | <code>/api/v1/remote/get/devices</code> | ||
| | | Список устройств. | ||
|- | |- | ||
| <code>/api/v1/remote/get/device/< | | <code>/api/v1/remote/get/device/<id_устройства></code> | ||
| | | Одно устройство. | ||
|} | |} | ||
Пример: | Пример запроса устройства: | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
| Строка 74: | Строка 78: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
В ответе используется идентификатор объекта и список его характеристик. | |||
== Управление устройствами == | |||
Управление выполняется запросами вида: | |||
<syntaxhighlight lang="text"> | |||
/api/v1/remote/set/<тип>/<id>/<характеристика>/<значение> | |||
</syntaxhighlight> | |||
При успешном выполнении контроллер вернет: | |||
<syntaxhighlight lang="json"> | <syntaxhighlight lang="json"> | ||
| Строка 84: | Строка 94: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Если | Если команда не выполнена: | ||
<syntaxhighlight lang="json"> | <syntaxhighlight lang="json"> | ||
| Строка 93: | Строка 103: | ||
{| class="wikitable" | {| class="wikitable" | ||
! | ! Запрос | ||
! | ! Что делает | ||
|- | |- | ||
| <code>/api/v1/remote/set/home/< | | <code>/api/v1/remote/set/home/<id_дома>/<характеристика>/<значение></code> | ||
| | | Устанавливает характеристику дома. | ||
|- | |- | ||
| <code>/api/v1/remote/set/floor/< | | <code>/api/v1/remote/set/floor/<id_этажа>/<характеристика>/<значение></code> | ||
| | | Устанавливает характеристику этажа. | ||
|- | |- | ||
| <code>/api/v1/remote/set/room/< | | <code>/api/v1/remote/set/room/<id_комнаты>/<характеристика>/<значение></code> | ||
| | | Устанавливает характеристику комнаты. | ||
|- | |- | ||
| <code>/api/v1/remote/set/device/< | | <code>/api/v1/remote/set/device/<id_устройства>/<характеристика>/<значение></code> | ||
| | | Устанавливает характеристику устройства. | ||
|} | |} | ||
| Строка 123: | Строка 133: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
== | == Ошибка авторизации == | ||
Если ключ не передан или указан неверно, контроллер возвращает код 401 и ответ: | |||
<syntaxhighlight lang="json"> | |||
{"error":"unauthorized"} | |||
</syntaxhighlight> | |||
В этом случае проверьте ключ в настройках контроллера и обновите его во внешней системе. | |||
== | == Рекомендации == | ||
* Не публикуйте ключ в | * Не передавайте ключ третьим лицам. | ||
* | * Не публикуйте ключ в открытых проектах, скриншотах и документации. | ||
* Если ключ мог попасть к посторонним, обновите его в настройках контроллера. | |||
* API работает | * API работает в локальной сети без шифрования, поэтому не используйте его через недоверенные сети. | ||
Версия от 08:43, 28 мая 2026
Локальное API контроллера XIOT позволяет внешним системам получать состояние дома и управлять устройствами в локальной сети. API работает на контроллере по адресу:
http://<ip-контроллера>:5552
Ключ доступа
Для работы с API нужен ключ доступа. Он отображается в редакторе XIOT:
Настройки контроллера -> Ключ локального API (порт 5552)
Все запросы к API должны передавать этот ключ. Если ключ не указан или указан неверно, контроллер вернет ошибку авторизации.
Ключ можно обновить в том же окне настроек кнопкой Обновить ключ локального API. После обновления старый ключ перестает работать, поэтому его нужно заменить во всех внешних интеграциях.
Как передавать ключ
Рекомендуемый способ - передавать ключ в HTTP-заголовке:
curl -H "X-XIOT-API-Key: <ключ>" \
"http://192.168.1.10:5552/api/v1/remote/get/devices"
Также поддерживается заголовок авторизации:
curl -H "Authorization: Bearer <ключ>" \
"http://192.168.1.10:5552/api/v1/remote/get/devices"
Для простых проверок ключ можно передать в адресе запроса:
http://192.168.1.10:5552/api/v1/remote/get/devices?key=<ключ>
Для постоянных интеграций лучше использовать заголовок, а не параметр в адресе.
Получение данных
Запросы чтения возвращают данные в формате JSON.
| Запрос | Что возвращает |
|---|---|
/api/v1/remote/get/home
|
Дом и его характеристики. |
/api/v1/remote/get/floors
|
Список этажей. |
/api/v1/remote/get/floor/<id_этажа>
|
Один этаж. |
/api/v1/remote/get/rooms
|
Список комнат. |
/api/v1/remote/get/room/<id_комнаты>
|
Одна комната. |
/api/v1/remote/get/devices
|
Список устройств. |
/api/v1/remote/get/device/<id_устройства>
|
Одно устройство. |
Пример запроса устройства:
curl -H "X-XIOT-API-Key: <ключ>" \
"http://192.168.1.10:5552/api/v1/remote/get/device/12"
В ответе используется идентификатор объекта и список его характеристик.
Управление устройствами
Управление выполняется запросами вида:
/api/v1/remote/set/<тип>/<id>/<характеристика>/<значение>
При успешном выполнении контроллер вернет:
{"set":"ok"}
Если команда не выполнена:
{"set":"error"}
Доступные команды:
| Запрос | Что делает |
|---|---|
/api/v1/remote/set/home/<id_дома>/<характеристика>/<значение>
|
Устанавливает характеристику дома. |
/api/v1/remote/set/floor/<id_этажа>/<характеристика>/<значение>
|
Устанавливает характеристику этажа. |
/api/v1/remote/set/room/<id_комнаты>/<характеристика>/<значение>
|
Устанавливает характеристику комнаты. |
/api/v1/remote/set/device/<id_устройства>/<характеристика>/<значение>
|
Устанавливает характеристику устройства. |
Пример включения устройства:
curl -H "X-XIOT-API-Key: <ключ>" \
"http://192.168.1.10:5552/api/v1/remote/set/device/12/On/1"
Пример выключения устройства:
curl -H "X-XIOT-API-Key: <ключ>" \
"http://192.168.1.10:5552/api/v1/remote/set/device/12/On/0"
Ошибка авторизации
Если ключ не передан или указан неверно, контроллер возвращает код 401 и ответ:
{"error":"unauthorized"}
В этом случае проверьте ключ в настройках контроллера и обновите его во внешней системе.
Рекомендации
- Не передавайте ключ третьим лицам.
- Не публикуйте ключ в открытых проектах, скриншотах и документации.
- Если ключ мог попасть к посторонним, обновите его в настройках контроллера.
- API работает в локальной сети без шифрования, поэтому не используйте его через недоверенные сети.