Руководство для разработчиков и API
1. Начало использования
1.1 Подготовка
Шаг 1. Пожалуйста, убедитесь, что шлюз включен и работает правильно.
Шаг 2. Убедитесь, что шлюз и ПК подключены к одной локальной сети. Затем введите URL CUBE в вашем браузере.
Примечание: Если у вас несколько шлюзов, вы можете получить соответствующий IP-адрес для доступа к указанному шлюзу одним из двух способов, приведённых ниже.
Войдите в ваш беспроводной маршрутизатор и проверьте IP-адрес шлюза в DHCP.
CUBE поддерживает локальное обнаружение через mDNS.
1.2 Начало работы
Вызовите интерфейс [Access Token] и получите ответ с ошибкой, предлагающий нажать <Готово>. Обратите внимание: после нажатия доступ к интерфейсу действителен не более 5 минут.
// Запрос
curl --location --request GET 'http://<ip address>/open-api/V2/rest/bridge/access_token' --header 'Content-Type: application/json'
// Ответ
{
"error": 401,
"data": {},
"message": "link button not pressed"
}Нажмите <Готово> и снова вызовите интерфейс [Access Token]. Ответ успешен, и токен получен.
Проверьте токен. Вызовите интерфейс [Get Device List]. Ответ успешен, и список устройств получен.
Метод получения токена доступа CUBE: после вызова интерфейса [Access Token] на странице веб-консолии CUBE появится глобальное всплывающее окно, предлагающее пользователю подтвердить получение учетных данных для вызова интерфейса.
Примечание: Если вы открыли более одной страницы веб-консоли CUBE, окно подтверждения появится на нескольких страницах веб-консоли одновременно, и всплывающее окно других страниц будет закрыто после нажатия подтверждения на одной из страниц.
2. Основная концепция
2.1 Адрес интерфейса разработки
Веб-API шлюза имеет два метода доступа (на основе IP или доменного имени), обычно корневой путь — /open-api/V2/rest/< specific function module >
// Доступ по IP http:///open-api/V2/rest/bridge
// Доступ по доменному имени http:///open-api/V2/rest/bridge
2.2 Категория отображения устройства и возможности
**Категория отображения устройства (DisplayCategory). **Категория отображения устройства используется для идентификации конкретных категорий устройства, таких как switch, plug, light и т.д. Эта информация определяет отображение устройства в пользовательском интерфейсе шлюза.
**Возможность устройства. **Возможность устройства используется для описания конкретных подфункций устройства. Например, управление питанием, управление яркостью, управление цветовой температурой и т.д. Одно устройство может поддерживать одну или несколько возможностей.
capability: Описывает имя возможности, которое должно быть глобально уникальным и иметь строковый тип. Несколько английских слов следует разделять дефисами ("-"). Например:
"thermostat-target-setpoint".name: Описывает категорию внутри возможности, также строкового типа. Несколько английских слов следует разделять дефисами ("-"). Например:
"auto-mode","manual-mode".permission: Описывает права, связанные с возможностью. Тип — строка, форматируется в виде 8421 двоичного кода. Примеры включают:
Устройство управляемо:
"1000"Устройство настраиваемо:
"0010"Устройство управляемо и настраиваемо:
"1010"Устройство управляемо и способно отправлять отчёты:
"1100"
Значение каждого бита, справа налево, следующее: ⅰ. Бит 0: Разрешает запрос состояния устройства ⅱ. Бит 1: Разрешает конфигурацию устройства ⅲ. Бит 2: Позволяет устройству отправлять данные ⅳ. Бит 3: Позволяет управлять устройством
settings: Описывает элементы конфигурации для возможности, которые имеют тип object и включают описание каждого элемента конфигурации. ⅰ. key: Описывает имя элемента конфигурации, которое имеет строковый тип. Несколько английских слов следует выражать в camelCase. Например: "temperatureUnit". ⅱ. value: Описывает содержимое элемента конфигурации. Конкретные спецификации описаны в таблице ниже.
permission
string
N
Описывает права для элемента конфигурации.
Допустимые значения:
Разрешить изменение этого элемента конфигурации:
"10"Разрешить просмотр этого элемента конфигурации:
"01"Разрешить и изменение, и просмотр этого элемента конфигурации:
"11"
Пояснение по битам:
Бит 0: Разрешает просмотр этого элемента конфигурации
Бит 1: Разрешает изменение этого элемента конфигурации | | type | string | N | Описывает тип данных значения элемента конфигурации. Допустимые значения:
"enum""numeric""object""boolean""string"
Руководство по типам:
Когда
**type = enum**:Поле
value(описание значения элемента конфигурации) обязательно, еслиpermissionразрешает изменение ("10"или"11").Поле
default(описание значения по умолчанию для элемента конфигурации) иvalues(описание выбираемых значений для элемента конфигурации) поля являются необязательными.
Когда
**type = numeric**:Поле
valueполе обязательно, еслиpermissionразрешает изменение ("10"или"11").Следующие поля являются необязательными:
min(описание минимального значения элемента конфигурации)max(описание максимального значения элемента конфигурации)step(описание шага для элемента конфигурации)precision(описание точности)unit(описание единицы измерения элемента конфигурации)default(описание значения по умолчанию)
Когда
**type = object**:Поле
valueполе обязательно, еслиpermissionразрешает изменение ("10"или"11").Поле
defaultполе является необязательным.
Когда
**type = boolean**:Поле
valueполе обязательно, еслиpermissionразрешает изменение ("10"или"11").Поле
defaultполе является необязательным.
Когда
**type = string**:Поле
valueполе обязательно, еслиpermissionразрешает изменение ("10"или"11").Поле
defaultполе является необязательным. |
3. Веб-API
Тип данных
string
Строковый тип данных. Кодировка UTF-8.
number
Числовой тип данных. формат двойной точности 64-битный двоичный формат IEEE 754
int
Целочисленный тип данных.
object
Тип данных объект. Объект, совместимый с JSON
string[]
Массив строк
int[]
Массив целых чисел
object[]
Массив объектов
bool
Булево
date
Строка времени. Строка в формате ISO (ISO 8601 Extended Format): YYYY-MM-DDTHH:mm:ss.sssZ. Часовой пояс всегда UTC (координированное всемирное время), обозначается суффиксом "Z".
Общие результаты ответа
error
int
N
Код ошибки:
0: Успех
400: Ошибка параметров
401: Аутентификация не удалась
500: Исключение сервера
data
object
N
Тело данных ответа
message
string
N
Описание ответа:
Когда error равно 0, содержимое — success
Когда error не равно 0, это непустая строка, и содержимое — описание ошибки.
Пример ответа:
Список ресурсов
Поддерживаемые звуки
- alert1 (Звук тревоги 1)
alert2 (Звук тревоги 2)
alert3 (Звук тревоги 3)
alert4 (Звук тревоги 4)
alert5 (Звук тревоги 5)
doorbell1 (Звук дверного звонка 1)
doorbell2 (Звук дверного звонка 2)
doorbell3 (Звук дверного звонка 3)
doorbell4 (Звук дверного звонка 4)
doorbell5 (Звук дверного звонка 5)
alarm1 (Звук тревоги 1)
alarm2 (Звук тревоги 2)
alarm3 (Звук тревоги 3)
alarm4 (Звук тревоги 4)
alarm5 (Звук тревоги 5) | | Поддерживаемые deep | - bootComplete (Завершение запуска системы)
networkConnected (Сеть подключена)
networkDisconnected (Сеть отключена)
systemShutdown (Завершение работы системы) -deviceDiscovered (Обнаружено устройство)
system Armed (Система взведена — включено)
system Disarmed (Система разведена — отключено)
factoryReset (Сброс устройства) |
3.1 Функции шлюза
a. Токен доступа
Разрешает пользователям получить токен доступа.
Примечание: Токен будет очищен после сброса устройства.
Примечание: После получения токена необходимо снова нажать кнопку, чтобы успешно получить новый токен.
:::tips
URL:
/open-api/V2/rest/bridge/access_tokenМетод:
GETЗаголовок:
Content-Type: application/json ::: Параметры запроса:
Атрибут
Тип
Необязательный
Описание
app_name
string
Y
Описание названия приложения.
Успешный ответ с данными:
Атрибут
Тип
Необязательный
Описание
token
string
N
Токен доступа к интерфейсу. Он действителен долгое время, пожалуйста, сохраните его
app_name
string
Y
Описание названия приложения.
:::tips Условие: Пользователь вызвал < command key > и обратился к этому интерфейсу в пределах допустимого времени. **Код состояния: **200 OK ::: Пример ответа:
Неудачный ответ с данными:пустой объект :::tips Условия:Пользователь не нажал < command key >, или срок действия истёк. **Код состояния: ** 200 OK ::: Пример ответа:
b. Получить состояние шлюза
Разрешает авторизованным пользователям получить состояние шлюза через этот интерфейс :::tips
URL:
/open-api/V2/rest/bridge/runtimeМетод:
GETЗаголовок:
Content-Type: application/json
Autorization: Bearer ::: Параметры запроса: нет Успешный ответ с данными:
Атрибут
Тип
Необязательный
Описание
ram_used
int
N
Процент использования оперативной памяти. [0-100]
cpu_used
int
N
Процент использования процессора. [0-100]
power_up_time
date
N
Время последнего включения питания
cpu_temp
int
N
Температура процессора:
Единица: Цельсий
cpu_temp_unit
string
N
Единица измерения температуры CPU:
Необязательный
values:'c', 'f'
sd_card_used
int
Y
Использование SD-карты (в процентах):
Диапазон:[0-100] с точностью до одного знака после запятой
*Примечание: если SD-карта не вставлена или не отформатирована, значение пустое.
:::tips Условия: Параметры запроса корректны, и проверка идентичности пользователя пройдена. **Код состояния: **200 OK ::: Пример ответа:
c. Настройка шлюза
Разрешает авторизованным пользователям настраивать шлюз через этот интерфейс :::tips
URL:
/open-api/V2/rest/bridge/configМетод:
PUTЗаголовок:
Content-Type: application/json
Autorization: Bearer ::: Параметры запроса:
Атрибут
Тип
Необязательный
Описание
volume
int
Y
Громкость системы. [0-100]
Успешный ответ с данными: пустой объект {} :::tips Условия: Параметры запроса корректны, и проверка идентичности пользователя пройдена. **Код состояния: **200 OK ::: Пример ответа:
d. Получить информацию о шлюзе
Разрешает авторизованным пользователям получить информацию о шлюзе через этот интерфейс :::tips
URL:
/open-api/V2/rest/bridgeМетод:
GETЗаголовок:
Content-Type: application/json ::: Параметры запроса:
Атрибут
Тип
Необязательный
Описание
ip
string
N
IP-адрес
mac
string
N
MAC-адрес
domain
string
Y
Домен сервиса шлюза
fw_version
string
N
Версия прошивки
name
string
N
Название устройства
Успешный ответ с данными: пустой объект {} :::tips Условия: Нет **Код состояния: **200 OK ::: Пример ответа:
e. Отключение звука на шлюзе (Mute)
Разрешает авторизованным пользователям отключать звук на шлюзе через этот интерфейс. :::tips
URL:
/open-api/v2/rest/bridge/muteМетод:
PUTЗаголовок:
Content-Type: application/json
Authorization: Bearer ::: Параметры запроса: нет Успешный ответ с данными: пустой объект {} :::tips Условия: Параметры запроса корректны, и проверка идентичности пользователя пройдена. **Код состояния: **200 OK ::: Пример ответа:
f. Включение звука на шлюзе (Unmute)
Разрешает авторизованным пользователям включать звук на шлюзе через этот интерфейс. :::tips
URL:
/open-api/v2/rest/bridge/unmuteМетод:
PUTЗаголовок:
Content-Type: application/json
Authorization: Bearer ::: Параметры запроса: нет Успешный ответ с данными: пустой объект {} :::tips Условия: Параметры запроса корректны, и проверка идентичности пользователя пройдена. **Код состояния: **200 OK ::: Пример ответа:
g. Отмена тревоги на шлюзе
Разрешает авторизованным пользователям отключать состояние звуковой тревоги на шлюзе через этот интерфейс. :::tips
URL:
/open-api/v2/rest/bridge/cancel_alarmМетод:
PUTЗаголовок:
Content-Type: application/json
Authorization: Bearer ::: Параметры запроса: нет Успешный ответ с данными: пустой объект {} :::tips Условия: Параметры запроса корректны, и проверка идентичности пользователя пройдена. **Код состояния: **200 OK ::: Пример ответа:
3.2 Аппаратные функции
a. Перезагрузка шлюза
Разрешает авторизованному пользователю перезагрузить шлюз через этот интерфейс :::tips
URL:
/open-api/V2/rest/hardware/rebootМетод:
POSTЗаголовок:
Content-Type: application/json
Autorization: Bearer ::: Параметры запроса: нет Успешный ответ с данными: пустой объект {} :::tips Условия: Параметры запроса корректны, и проверка идентичности пользователя пройдена. **Код состояния: **200 OK :::
b. Управление динамиком
Разрешает авторизованным пользователям управлять динамиком через этот интерфейс :::tips
URL:
/open-api/V2/rest/hardware/speakerМетод:
POSTЗаголовок:
Content-Type: application/json
Authorization: Bearer ::: Параметры запроса:
Атрибут
Тип
Необязательный
Описание
type
string
N
Необязательные параметры: 1.play_sound (воспроизвести звук) 2.play_beep (воспроизвести сигнал)
sound
SoundObject
Y (N, если type = play_sound.)
Звук.
beep
BeepObject
Y (N, если type = play_beep.)
Сигнал
SoundObject
Атрибут
Тип
Необязательный
Описание
name
string
N
Имя звука. Поддерживаемые значения можно проверить в [Resource List - Supported sound]
volume
int
N
Громкость звука. [0-100]
countdown
int
N
Продолжительность воспроизведения звука динамиком; воспроизведение автоматически остановится по истечении времени. Единица: секунда. [0,1799]
BeepObject
Атрибут
Тип
Необязательный
Описание
name
string
N
Имя deep. Поддерживаемые значения можно проверить в [Resource List - Supported deep]
volume
int
N
Громкость deep. [0-100]
Успешный ответ с данными: пустой объект {} :::tips Условия: Параметры запроса корректны, и проверка идентичности пользователя пройдена. **Код состояния: ** 200 OK ::: Пример ответа:
3.3 Функции управления устройствами
a. Поддерживаемые типы устройств
Тип устройства
Значение
Версия iHost
Розетка (Plug)
plug
≥ 2.1.0
Выключатель (Switch)
switch
≥ 2.1.0
Свет (Light)
light
≥ 2.1.0
Штора (Curtain)
curtain
≥ 2.1.0
Датчик двери/окна
contactSensor
≥ 2.1.0
Датчик движения
motionSensor
≥ 2.1.0
Датчик температуры
temperatureSensor
≥ 2.1.0
Датчик влажности
humiditySensor
≥ 2.1.0
Датчик температуры и влажности
temperatureAndHumiditySensor
≥ 2.1.0
Датчик утечки воды
waterLeakDetector
≥ 2.1.0
Датчик дыма
smokeDetector
≥ 2.1.0
Беспроводная кнопка
button
≥ 2.1.0
Камера
camera
≥ 2.1.0
Общий датчик
sensor
≥ 2.1.0
Общий датчик
sensor
≥ 2.1.0
Вентилятор со светом (Fanlight)
fanLight
≥ 2.1.0
Кондиционер (AirConditioner)
airConditioner
≥ 2.1.0
Вентилятор (Fan)
fan
≥ 2.1.0
Термостат
thermostat
≥ 2.1.0
b. Поддерживаемые возможности устройства
Выключатель питания (power):
Пример декларации возможности:
Атрибут состояния:
Протокол (запрос состояния и управляющие инструкции):
Включить:
Выключить:
Переключатель канала (toggle):
Пример декларации возможности:
Пример для одного компонента:
Пример для нескольких компонентов:
Атрибут состояния:
Протокол (запрос состояния и управляющие инструкции):
Формат переключения:
Инерционный режим канала (toggle-inching):
Пример декларации возможности:
Атрибут состояния
Отсутствует
Протокол (запрос состояния и управляющие инструкции)
Отсутствует
Регулировка яркости (brightness):
Пример декларации возможности:
Атрибут состояния:
Протокол (запрос состояния и управляющие инструкции):
Установить яркость 80%. (0 — самый тёмный, 100 — самый светлый.)
Регулировка цветовой температуры (color-temperature):
Пример декларации возможности:
Атрибут состояния:
Протокол (запрос состояния и управляющие инструкции):
Отрегулировать цветовую температуру до 50%:
Регулировка цвета (color-rgb):
Пример декларации возможности:
Атрибут состояния:
Протокол (запрос состояния и управляющие инструкции):
Установить цвет на фиолетовый:
Регулировка в процентах (percentage):
Пример декларации возможности:
Атрибут состояния:
Протокол (запрос состояния и управляющие инструкции):
Установить на 40%:
Управление мотором (motor-control):
Пример декларации возможности:
Атрибут состояния:
Протокол (запрос состояния и управляющие инструкции):
Открыть мотор:
Реверс мотора (motor-reverse):
Пример декларации возможности:
Атрибут состояния:
Протокол (запрос состояния и управляющие инструкции):
Установить мотор в прямое направление:
Калибровка мотора (motor-clb)
Пример декларации возможности:
Атрибуты (состояние):
Протокол (отчёт о состоянии):
Отчёт: мотор проходит калибровку:
Состояние при включении питания (startup)
Пример декларации возможности:
Атрибуты (состояние):
Протокол (запрос состояния и управляющие инструкции):
Установить состояние питания всегда включено:
Активация при пробуждении (identify)
Пример декларации возможности:
Атрибуты (состояние):
Протокол (отчёт о состоянии и управляющие инструкции):
Установить время активации при пробуждении:
Отчёт о статусе активации:
Статистика потребления электроэнергии в реальном времени (power-consumption)
Пример декларации возможности:
Атрибуты (состояние):
Запустить/Остановить статистику в реальном времени:
Запросить потребление электроэнергии за период времени:
Ответ с результатом статистики за диапазон времени:
Протокол (отчёт о состоянии и управляющие инструкции):
Запустить статистику в реальном времени:
Остановить статистику в реальном времени:
Получить историческое потребление электроэнергии:
Получить потребление электроэнергии в реальном времени:
Обнаружение режима температуры и влажности (thermostat-mode-detect)
Пример декларации возможности:
Атрибуты (состояние):
Протокол (запрос состояния и управляющие инструкции):
Формат:
Пример:
Режим термостата (thermostat-mode)
Пример декларации возможности:
Атрибуты (состояние):
Протокол (запрос состояния и управляющие инструкции):
Состояние адаптивного восстановления термостата (thermostat/adaptive-recovery-status)
Пример декларации возможности:
Атрибуты (состояние):
Протокол (запрос состояния и управляющие инструкции):
Установка целевой температуры режима термостата (thermostat-target-setpoint)
Пример декларации возможности:
Атрибуты (состояние):
Протокол (запрос состояния и управляющие инструкции):
Обнаружение сенсора (detect)
Пример декларации возможности:
Атрибуты (состояние):
Протокол (запрос состояния и управляющие инструкции):
Обнаружение температуры (temperature)
Пример декларации возможности:
Атрибуты (состояние):
Протокол (запрос состояния и управляющие инструкции):
Обнаружение влажности (humidity)
Пример декларации возможности:
Атрибуты (состояние):
Протокол (запрос состояния и управляющие инструкции):
Обнаружение батареи (battery)
Пример декларации возможности:
Атрибуты (состояние):
Протокол (запрос состояния и управляющие инструкции):
Обнаружение одиночной кнопки (press)
Пример декларации возможности:
Атрибуты (состояние):
Протокол (запрос состояния и управляющие инструкции):
Обнаружение множественных нажатий (multi-press)
Пример декларации возможности:
Атрибуты (состояние):
Протокол (запрос состояния и управляющие инструкции):
Обнаружение уровня сигнала (rssi)
Пример декларации возможности:
Атрибуты (состояние):
Протокол (запрос состояния и управляющие инструкции):
Детекция вмешательства (tamper-alert)
Пример декларации возможности:
Атрибуты (состояние):
Протокол (запрос состояния и управляющие инструкции):
Обнаружение уровня освещённости (illumination-level)
Пример декларации возможности:
Атрибуты (состояние):
Протокол (запрос состояния и управляющие инструкции):
Обнаружение напряжения (voltage)
Пример декларации возможности:
Атрибуты (состояние):
Протокол (запрос состояния и управляющие инструкции):
Обнаружение электрического тока (electric-current)
Пример декларации возможности:
Атрибуты (состояние):
Протокол (запрос состояния и управляющие инструкции):
Обнаружение электрической мощности (electric-power)
Пример декларации возможности:
Атрибуты (состояние):
Протокол (запрос состояния и управляющие инструкции):
Обнаружение неисправности (fault)
Пример декларации возможности:
Атрибуты (состояние):
Протокол (запрос состояния и управляющие инструкции):
Прерыватель порога (threshold-breaker)
Пример декларации возможности:
Атрибуты (состояние)
Отсутствует
Протокол (запрос состояния и управляющие инструкции)
Отсутствует
Функция инча (inching)
Пример декларации возможности:
Атрибуты (состояние):
Отсутствует
Протокол (запрос состояния и управляющие инструкции):
Отсутствует
Поток камеры (camera-stream)
Пример декларации возможности:
Атрибуты (состояние):
Отсутствует
Протокол (запрос состояния и управляющие инструкции):
Отсутствует
Управление режимом (mode)
Пример декларации возможности:
Атрибуты (состояние):
Протокол (запрос состояния и управляющие инструкции):
Обнаружение углекислого газа (co2)
Пример декларации возможности:
Атрибуты (состояние):
Протокол (запрос состояния и управляющие инструкции):
Обнаружение освещённости (illumination)
Пример декларации возможности:
Атрибуты (состояние):
Протокол (запрос состояния и управляющие инструкции):
Обнаружение дыма (smoke)
Пример декларации возможности:
Атрибуты (состояние):
Протокол (запрос состояния и управляющие инструкции):
Обнаружение открытия/закрытия дверного магнита (контакт)
Пример декларации возможности:
Атрибуты (состояние):
Протокол (запрос состояния и управляющие инструкции):
Обнаружение движения (motion)
Пример декларации возможности:
Атрибуты (состояние):
Протокол (запрос состояния и управляющие инструкции):
Обнаружение утечки воды (water-leak)
Пример декларации возможности:
Атрибуты (состояние):
Протокол (запрос состояния и управляющие инструкции):
Переключатель обнаружения окна (window-detection)
Пример декларации возможности:
Атрибуты (состояние):
Протокол (запрос состояния и управляющие инструкции):
Блокировка от детей (child-lock)
Пример декларации возможности:
Атрибуты (состояние):
Протокол (запрос состояния и управляющие инструкции):
Защита от прямого удара (anti-direct-blow)
Пример декларации возможности:
Атрибуты (состояние):
Протокол (запрос состояния и управляющие инструкции):
Горизонтальный маятник (horizontal-swing)
Пример декларации возможности:
Атрибуты (состояние):
Протокол (запрос состояния и управляющие инструкции):
Вертикальный маятник (vertical-swing)
Пример декларации возможности:
Атрибуты (состояние):
Протокол (запрос состояния и управляющие инструкции):
Режим ECO (eco)
Пример декларации возможности:
Атрибуты (состояние):
Протокол (запрос состояния и управляющие инструкции):
Переключатель запуска (toggle-startup)
Пример декларации возможности:
Атрибуты (состояние):
Протокол (запрос состояния и управляющие инструкции):
Обнаружить удержание (detect-hold)
Пример декларации возможности:
Атрибуты (состояние):
Протокол (запрос состояния и управляющие инструкции):
Переключатель идентификации/активации (toggle-identify)
Пример декларации возможности:
Атрибуты (состояние):
Протокол (запрос состояния и управляющие инструкции):
Переключатель измерения напряжения (toggle-voltage)
Пример декларации возможности:
Атрибуты (состояние):
Протокол (запрос состояния и управляющие инструкции):
Обнаружение тока подкомпонента (toggle-electric-current)
Пример декларации возможности:
Атрибуты (состояние):
Протокол (запрос состояния и управляющие инструкции):
Обнаружение мощности подкомпонента (toggle-electric-power)
Пример декларации возможности:
Атрибуты (состояние):
Протокол (запрос состояния и управляющие инструкции):
Статистика потребления энергии подкомпонента (toggle-power-consumption)
Пример декларации возможности:
Атрибуты (состояние):
Запустить/Остановить статистику в реальном времени:
Запросить потребление электроэнергии за период времени:
Ответ по потреблению энергии за период:
Протокол (запрос состояния и управляющие инструкции):
Запустить статистику в реальном времени:
Остановить статистику в реальном времени:
Получить историческое потребление электроэнергии:
Получить потребление электроэнергии в реальном времени:
Индикатор качества соединения (lqi)
Пример декларации возможности:
Атрибуты (состояние):
Протокол (запрос состояния и управляющие инструкции):
Функциональная конфигурация (configuration)
Пример декларации возможности:
Атрибуты (состояние):
Протокол (запрос состояния и управляющие инструкции):
Система (system)
Пример декларации возможности:
Атрибуты (состояние):
Протокол (запрос состояния и управляющие инструкции):
Влажность (moisture)
Пример декларации возможности:
Атрибуты (состояние):
Протокол (запрос состояния и управляющие инструкции):
Барометрическое давление (barometric-pressure)
Пример декларации возможности:
Атрибуты (состояние):
Протокол (запрос состояния и управляющие инструкции):
Скорость ветра (wind-speed)
Пример декларации возможности:
Атрибуты (состояние):
Протокол (запрос состояния и управляющие инструкции):
Направление ветра (wind-direction)
Пример декларации возможности:
Атрибуты (состояние):
Протокол (запрос состояния и управляющие инструкции):
Осадки (rainfall)
Пример декларации возможности:
Атрибуты (состояние):
Протокол (запрос состояния и управляющие инструкции):
Ультрафиолетовый индекс (ultraviolet-index)
Пример декларации возможности:
Атрибуты (состояние):
Протокол (запрос состояния и управляющие инструкции):
Электропроводность (electrical-conductivity)
Пример декларации возможности:
Атрибуты (состояние):
Протокол (запрос состояния и управляющие инструкции):
Мощность передачи (transmit-power)
Пример декларации возможности:
Атрибуты (состояние):
Протокол (запрос состояния и управляющие инструкции):
Обнаружение PM2.5 (pm25)
Пример декларации возможности:
Атрибуты (состояние):
Протокол (запрос состояния и управляющие инструкции):
Индекс VOC (voc-index)
Пример декларации возможности:
Атрибуты (состояние):
Протокол (запрос состояния и управляющие инструкции):
Обнаружение природного газа (gas)
Пример декларации возможности:
Атрибуты (состояние):
Протокол (запрос состояния и управляющие инструкции):
Статус работы орошения (irrigation/work-status)
Пример декларации возможности:
Атрибуты (состояние):
Протокол (запрос состояния и управляющие инструкции):
Отчет о состоянии работы:
Запрос состояния работы:
Результат запроса состояния работы:
Режим работы орошения (irrigation/work-mode)
Пример декларации возможности:
Атрибуты (состояние):
Протокол (запрос состояния и управляющие инструкции):
Автоматический контроллер орошения (irrigation/auto-controller)
Пример декларации возможности:
Атрибуты (состояние):
Одноразовое или повторяющееся расписание:
Одноразовый или повторяющийся объем:
Протокол (запрос состояния и управляющие инструкции):
Одноразовое или повторяющееся расписание:
Одноразовый или повторяющийся объем:
Поддерживаемые предустановленные режимы
fanLevel (уровень вентилятора)
"low"
"medium"
"high"
thermostatMode (режим термостата)
"auto"
"manual"
airConditionerMode >= 1.11.0 (режим кондиционера)
"cool"
"heat"
"auto"
"fan"
"dry"
fanMode >= 1.11.0 (режим вентилятора)
"normal"
"sleep"
"child"
horizontalAngle >= 1.11.0 (горизонтальный угол)
"30"
"60"
"90"
"120"
"180"
"360"
verticalAngle >= 1.11.0 (вертикальный угол)
"30"
"60"
"90"
"120"
"180"
"360"
c. Описание тегов
Специальный ключ toggle используется для установки имени подкомпонента переключателя.
Специальный ключ temperature_unit используется для установки единицы измерения температуры.
d. Специальные коды ошибок и описание
Код ошибки
Описание
Версия iHost
110000
Под-устройство/группа, соответствующая id, не существует
≥2.1.0
110001
Шлюз находится в состоянии поиска zigbee-устройств
≥2.1.0
110002
Устройства в группе не имеют общей возможности
≥2.1.0
110003
Неверное количество устройств
≥2.1.0
110004
Неверное количество групп
≥2.1.0
110005
Устройство офлайн
≥2.1.0
110006
Не удалось обновить статус устройства
≥2.1.0
110007
Не удалось обновить статус группы
≥2.1.0
110008
Достигнуто максимальное количество групп. Создайте до 50 групп
≥2.1.0
110009
IP-адрес камеры указан неверно
≥2.1.0
110010
Ошибка авторизации доступа к камере
≥2.1.0
110011
Ошибка адреса потока камеры
≥2.1.0
110012
Кодирование видео камеры не поддерживается
≥2.1.0
110013
Устройство уже существует
≥2.1.0
110014
Камера не поддерживает автономную работу
≥2.1.0
110015
Пароль учетной записи не совпадает с паролем в RTSP-адресе потока
≥2.1.0
110016
Шлюз находится в состоянии поиска onvif-камер
≥2.1.0
110017
Превышено максимальное количество добавленных камер
≥2.1.0
110018
Путь ESP-камеры неверен
≥2.1.0
110019
Не удалось получить доступ к адресу сервиса стороннего устройства
≥2.1.0
e. Поиск под-устройства
Разрешить авторизованным пользователям включать или отключать поиск шлюзом под-устройств через этот интерфейс
💡Примечание: В настоящее время поддерживается только поиск Zigbee под-устройств.
💡Примечание: Zigbee под-устройства будут добавлены автоматически после поиска. Нет необходимости использовать интерфейс "Вручную добавить под-устройства" :::tips
URL:/open-api/V2/rest/devices/discovery
Метод: PUT
Заголовок:
Content-Type: application/json
Autorization: Bearer ::: Параметры запроса:
Атрибут
Тип
Необязательный
Описание
enable
boolean
N
true (Начать спаривание); false (Приостановить спаривание)
type
string
N
Тип поиска: Zigbee
Успешный ответ с данными: пустой объект {} :::tips Условия: Параметры запроса корректны, и проверка идентичности пользователя пройдена. **Код состояния: ** 200 OK ::: Пример ответа:
f. Вручную добавить под-устройство
Разрешить авторизованным пользователям добавить одно под-устройство через этот интерфейс.
Примечание: В настоящее время поддерживаются только RTSP-камера и ESP32-камера :::tips
URL:/open-api/V2/rest/devices
Метод:POST
Заголовок:
Content-Type: application/json
Autorization: Bearer ::: Параметры запроса:
Атрибут
Тип
Необязательный
Описание
name
string
N
Имя под-устройства
display_category
string
N
Тип устройства. Поддерживается только камера.
capabilities
CapabilityObject[]
N
Список возможностей. Когда display_category = camera, capabilities включают только возможности потока камеры.
protocal
string
N
Протокол устройства. RTSP; ESP32-CAM
manufacturer
string
N
Производитель.
model
string
N
Модель устройства
firmware_version
string
N
Версия прошивки устройства
CapabilityObject
Атрибут
Тип
Необязательный
Описание
capability
string
N
Имя возможности. Поддерживается только "camera-stream"
permission
string
N
Разрешение для возможности устройства. Поддерживается только чтение.
configuration
CameraStreamConfigurationObject
Y
Конфигурация потока камеры.
SettingsObject
Атрибут
Тип
Необязательный
Описание
streamSetting
StreamSettingObject
N
Конфигурация сервисов потока
StreamSettingObject
Атрибут
Тип
Необязательный
Описание
type
string
N
Конфигурация сервисов потока
permission
string
N
Разрешение возможности. Поддерживается только "11" (изменяемое).
value
StreamSettingValueObject
N
Конкретные значения конфигурации
StreamSettingValueObject
Атрибут
Тип
Необязательный
Описание
stream_url
string
N
Формат URL потока
Формат:<schema>://<hostname>:<port>/<username>:<password>@<service_path>
Варианты схемы:
rtsp (Протокол потоковой передачи в реальном времени)
http (Протокол передачи гипертекста) — Для устройств ESP32-CAM
*Примечание: Некоторым камерам может не требоваться имя пользователя или пароль. В таких случаях вы можете опустить <username> и <password> поля из URL.
Успешный ответ с данными:
Атрибут
Тип
Необязательный
Описание
serial_number
string
N
Уникальный серийный номер устройства
:::tips Условия: Параметры запроса корректны, и проверка идентичности пользователя пройдена. **Код состояния: **200 OK ::: Пример ответа:
Ответ с данными об ошибке: пустой объект :::tips Условие:
Ошибка доступа к адресу потока камеры (ошибка формата, ошибка авторизации, сетевая ошибка и т.д.)
Устройство уже существует
Если добавление одного устройства не удалось, возвращается, что все устройства не удалось добавить.
Код состояния: 200 OK Код ошибки: ● 110009 Ошибка IP-адреса камеры ● 110010 Ошибка авторизации доступа к камере ● 110011 Ошибка адреса потока камеры ● 110012 Кодирование видео камеры не поддерживается ● 110013 Устройство уже существует ::: Пример ответа:
g. Получить список под-устройств
Разрешить авторизованным пользователям получать список под-устройств шлюза через этот интерфейс. :::tips
URL:/open-api/V2/rest/devices
Метод: GET
Заголовок:
Content-Type: application/json
Autorization: Bearer ::: Параметры запроса: нет Успешный ответ с данными:
Атрибут
Тип
Необязательный
Описание
device_list
ResponseDeviceObject[]
N
Список устройств
ResponseDeviceObject
Атрибут
Тип
Необязательный
Описание
serial_number
string
N
Уникальный серийный номер устройства
third_serial_number
string
"N" при подключении стороннего устройства, в противном случае "Y"
Уникальный серийный номер стороннего устройства
service_address
string
"N" при подключении стороннего устройства, в противном случае "Y"
Адрес сервиса стороннего устройства
name
string
N
Имя устройства; если оно не переименовано, будет отображаться во фронтенде согласно правилам по умолчанию.
manufacturer
string
N
Производитель
model
string
N
Модель устройства
firmware_version
string
N
Версия прошивки. Может быть пустой строкой.
hostname
string
Y
Имя хоста устройства
mac_address
string
Y
MAC-адрес устройства
app_name
string
Y
Имя приложения, к которому оно принадлежит. Если при получении сертификата открытого интерфейса заполнено app_name, то все последующие устройства, подключенные через сертификат, будут записаны в это поле.
display_category
string
N
Категория устройства
capabilities
CapabilityObject[]
N
Возможности устройства
protocol
string
"N" при подключении стороннего устройства, в противном случае "Y"
Протокол устройства: zigbee, onvif, rtsp, esp32-cam
state
object
Y
Объект состояния устройства. Для примеров состояний разных возможностей, пожалуйста, проверьте 【Поддерживаемые возможности устройства】
теги
object
Y
Ключ-значение в формате JSON, пользовательская информация об устройстве. Функции следующие: - Используется для хранения каналов устройства - Используется для хранения единиц температуры - Пользовательская информация для других сторонних устройств
в сети
boolean
N
Статус онлайн: True — в сети False — не в сети
подсеть
boolean
Y
Находится ли в той же подсети, что и шлюз
CapabilityObject 💡Примечание: Пожалуйста, проверьте примеры поддерживаемых возможностей устройства в разделе [Supported Device Capabilities].
Атрибут
Тип
Необязательный
Описание
capability
string
N
Название возможности. Для подробностей смотрите [Supported Device Capabilities]
permission
string
N
Разрешение возможности. Возможные значения: "read" (только чтение), "write" (запись), "readWrite" (чтение и запись).
configuration
object
Y
Информация о конфигурации возможности. В настоящее время используется camera-stream, смотрите [Supported Device Capabilities]
name
string
Y
Поле name в toggle. Номер субканала, используемый для идентификации многоканальных устройств. Например, если name равно 1, это означает канал 1.
:::tips Условия: Параметры запроса корректны, и проверка идентичности пользователя пройдена. **Код состояния: **200 OK ::: Пример ответа:
h. Обновить определённую информацию или состояние устройства
Разрешить авторизованным пользователям изменять базовую информацию о суб-устройстве и отправлять команды управления через этот интерфейс. :::tips
URL:/open-api/V2/rest/devices/{serial_number}
Метод:PUT
Заголовок:
Content-Type: application/json
Autorization: Bearer ::: Параметры запроса:
Атрибут
Тип
Необязательный
Описание
name
string
Y
Название устройства
теги
object
Y
Ключ-значение в формате JSON, пользовательская информация об устройстве.
state
object
Y
Объект состояния устройства. Для примеров состояний разных возможностей, пожалуйста, проверьте [Support Device Capabilities]
configuration
object
Y
Информация о конфигурации возможности, в настоящее время поддерживается изменение только для camera_stream.
Успешный ответ с данными: :::tips Условия: Параметры запроса корректны, проверка личности пользователя пройдена. **Код состояния: **200 OK Код ошибки:
110000 Под-устройство/группа, соответствующая id, не существует ::: Пример ответа:
i. Удалить суб-устройство
Разрешить авторизованным пользователям удалять суб-устройства через этот интерфейс. :::tips
URL:/open-api/V2/rest/devices/{serial_number}
Метод:DELETE
Заголовок:
Content-Type: application/json
Авторизация: Bearer ::: Параметры запроса:
Атрибут
Тип
Необязательный
Описание
name
string
Y
Имя устройства.
теги
object
Y
Пары ключ-значение в формате JSON, используемые для хранения имён каналов устройства и другой информации о суб-устройствах.
state
object
Y
Изменить состояние устройства; для деталей протокола смотрите "Supported Device Capabilities."
capabilities
CapabilityObject []
Y
Информация о конфигурации возможности; все возможности, которые поддерживают установку конфигурации, можно изменять. Обратите внимание, что разрешения менять нельзя.
Успешный ответ с данными: :::tips Условия: Параметры запроса корректны, проверка личности пользователя пройдена. **Код состояния: **200 OK Коды ошибок:
110000: Под-устройство/группа, соответствующая ID, не существует.
110006: Не удалось обновить состояние устройства.
110019: Не удалось получить доступ к адресу сервиса третьей стороны.
110024: Не удалось обновить конфигурацию устройства. ::: Пример ответа:
j. Удалить суб-устройство
Разрешает авторизованным пользователям удалять суб-устройства через этот интерфейс. :::tips
URL:
/open-api/v2/rest/devices/{serial_number}Метод:
DELETEЗаголовок:
Content-Type: application/json
Authorization: Bearer ::: Параметры запроса: Нет Успешный ответ с данными: :::tips Условия: Параметры запроса корректны, и проверка идентичности пользователя пройдена. **Код состояния: **200 OK ::: Пример ответа:
k. Запрос состояния устройства
Позволяет авторизованным пользователям запрашивать состояние устройства через этот интерфейс. :::tips
URL:
/open-api/v2/rest/devices/:serial_number/query-state/{capability}Метод:POST
Заголовок:
Content-Type: application/json
Authorization: Bearer ::: Параметры запроса:
Атрибут
Тип
Необязательный
Описание
query_state
object
N
Запрашивает состояние устройства; для деталей протокола смотрите "Supported Device Capabilities."
Успешный ответ с данными: :::tips Условия: Параметры запроса корректны, и проверка идентичности пользователя пройдена. **Код состояния: **200 OK ::: Пример ответа:
3.4 Управление безопасностью
a. Получить список охраны
Разрешает авторизованным пользователям изменять настройки шлюза через этот интерфейс. :::tips
URL:
/open-api/v2/rest/securityМетод:
GETЗаголовок:
Content-Type: application/json
Authorization: Bearer ::: Параметры запроса: Нет Успешный ответ с данными:
Атрибут
Тип
Необязательный
Описание
security_list
ResponseSecurityObject[]
N
Список устройств в ответе
ResponseDeviceObject
Атрибут
Тип
Необязательный
Описание
sid
int
N
id охраны
name
string
N
Название охраны
enable
bool
N
Включено ли
true Включено
false Отключено |
:::tips Условия: Параметры запроса корректны, и проверка идентичности пользователя пройдена. **Код состояния: **200 OK ::: Пример ответа:
b. Включить указанную режим охраны
Разрешает авторизованным пользователям включать указанный режим охраны через этот интерфейс. :::tips
URL:
/open-api/v2/rest/security/{security_id}/enableМетод:
PUTЗаголовок:
Content-Type: application/json
Authorization: Bearer ::: Параметры запроса: Нет Успешный ответ с данными: пустой объект {} :::tips Условия: Параметры запроса корректны, и проверка идентичности пользователя пройдена. **Код состояния: **200 OK ::: Пример ответа:
c. Отключить указанный режим охраны
Разрешает авторизованным пользователям отключать указанный режим охраны через этот интерфейс. :::tips
URL:
/open-api/v2/rest/security/{security_id}/disableМетод:
PUTЗаголовок:
Content-Type: application/json
Authorization: Bearer ::: Параметры запроса: Нет Успешный ответ с данными: пустой объект {} :::tips Условия: Параметры запроса корректны, и проверка идентичности пользователя пройдена. **Код состояния: **200 OK ::: Пример ответа:
d. Однокнопочная настройка охраны
Разрешает авторизованным пользователям включать режим однокнопочной настройки охраны через этот интерфейс. :::tips
URL:
/open-api/v2/rest/security/enableМетод:
PUTЗаголовок:
Content-Type: application/json
Authorization: Bearer ::: Параметры запроса: Нет Успешный ответ с данными: пустой объект {} :::tips Условия: Параметры запроса корректны, и проверка идентичности пользователя пройдена. **Код состояния: **200 OK ::: Пример ответа:
e. Отключить охрану
Разрешает авторизованным пользователям отключать охрану через этот интерфейс. :::tips
URL:
/open-api/v2/rest/security/disableМетод:
PUTЗаголовок:
Content-Type: application/json
Authorization: Bearer ::: Параметры запроса: Нет Успешный ответ с данными: пустой объект {} :::tips Условия: Параметры запроса корректны, и проверка идентичности пользователя пройдена. **Код состояния: **200 OK ::: Пример ответа:
4. Доступ третьих сторон к устройствам
4.1 Инструкция по доступу
Доступ устройства

Доступ стороннего шлюза

Шаги доступа
Определите классификацию устройства в шлюзе. Подробности смотрите в [Supported Device Type].
Определите возможности, к которым устройство может получить доступ. Подробности смотрите в [Supported Device Capabilities].
Вызовите интерфейс [Discovery Request], чтобы добавить устройство в шлюз.
Внимание: Вам необходимо предоставить адрес сервиса для получения инструкций, отправленных шлюзом, который используется для получения команд управления устройством, выданных шлюзом.
Если состояние стороннего устройства изменится, вам нужно вызвать интерфейс [Device States Change Report], чтобы отправить шлюзу последнее состояние.
После добавления стороннее устройство появится в списке устройств и будет иметь большинство функций шлюза (как и прочие устройства). Общие открытые интерфейсы, связанные с устройством, можно использовать нормально.
Выберите соответствующую категорию устройства. Классификация повлияет на итоговое отображение в интерфейсе после подключения устройства к шлюзу.
Выберите правильную возможность устройства. Список возможностей определит статус протокола состояния устройства.
Процесс программирования
a. Доступ устройства

b. Доступ стороннего шлюза

4.2 Пример доступа
Выключатель, розетка
Синхронизировать сторонние устройства
Отчёт о состоянии устройства
Отчёт о оффлайн/онлайн
Получать инструкции управления устройством от шлюза
Запрос устройства
4.3 Веб API
Интерфейс шлюза для запросов третьих сторон
Формат запроса
Разрешает авторизованным пользователям отправлять события шлюзу через этот интерфейс. :::tips
URL:/open-api/V2/rest/thirdparty/event
Метод:POST
Заголовок:
Content-Type: application/json
Autorization: Bearer ::: Параметры запроса:
Атрибут
Тип
Необязательный
Описание
event
EventObject
N
Структура объекта события запроса
EventObject
Атрибут
Тип
Необязательный
Описание
header
HeaderObject
N
Структура заголовка запроса
endpoint
EndpointObject
Y
Структура endpoint в запросе Примечание: Это поле пустое при синхронизации нового списка устройств.
payload
PayloadObject
N
Структура payload в запросе
HeaderObject
Атрибут
Тип
Необязательный
Описание
name
string
N
Имя запроса. необязательный параметр: DiscoveryRequest: Синхронизировать новые устройства DeviceStatesChangeReport: Отчёт об обновлении состояния устройства DeviceOnlineChangeReport: Отчёт о статусе онлайн устройства
message_id
string
N
ID сообщения запроса, UUID_V4
version
string
N
Номер версии протокола запроса. В настоящее время фиксирован на 1
EndpointObject
Атрибут
Тип
Необязательный
Описание
serial_number
string
N
Уникальный серийный номер устройства
third_serial_number
string
N
Уникальный серийный номер стороннего устройства
теги
object
Y
Ключ-значение в формате JSON, пользовательская информация об устройстве. [Функция управления устройством] - [Описание тегов]
PayloadObject В зависимости от значения header.name структура запроса различна.
Формат ответа
:::tips **Код состояния: **200 OK Параметры ответа: :::
Атрибут
Тип
Необязательный
Описание
header
HeaderObject
N
Структура заголовка ответа
payload
PayloadObject
N
Структура payload ответа
HeaderObject
Атрибут
Тип
Необязательный
Описание
name
string
N
Имя заголовка ответа. необязательные параметры:Response: Успешный ответ ErrorResponse: Ответ с ошибкой
message_id
string
N
ID сообщения заголовка ответа, UUID_V4. Передать здесь message_id из заголовка запроса *Если в запросе не передан message_id, то это поле будет пустой строкой в ответе.
version
string
N
- Номер версии протокола запроса. В настоящее время фиксирован на 1.
Успешный ответ--PayloadObject :
В зависимости от типа запроса структура ответа различается. Для деталей смотрите соответствующий документ по инструкции запроса.
Ответ при ошибке--PayloadObject:
Атрибут
Тип
Необязательный
Описание
type
string
N
Типы ошибок:
INVALID_PARAMETERS: Ошибка параметров
AUTH_FAILURE: Ошибка авторизации
INTERNAL_ERROR: Внутренняя ошибка сервиса | | description | string | N | Описание ошибки |
DiscoveryRequest Синхронизировать новый список устройств
Примечание: После синхронизации устройства в шлюз оно по умолчанию считается онлайн, то есть online=true. Последующие изменения онлайн полностью зависят от синхронизации со сторонним сервисом через интерфейс DeviceOnlineChangeReport.
Параметры запроса: EndpointObject**:**Нет PayloadObject:
Атрибут
Тип
Необязательный
Описание
endpoints
EndpointObject[]
N
Список устройств
EndpointObject:
Атрибут
Тип
Необязательный
Описание
third_serial_number
string
N
Уникальный серийный номер стороннего устройства
name
string
N
Название устройства
display_category
string
N
Категория устройства. Подробности см. в [Supported Device Type]. *Сторонние устройства пока не поддерживают добавление камер.
capabilities
CapabilityObject[]
N
Список возможностей
state
object
N
Исходная информация о состоянии
manufacturer
string
N
Производитель
model
string
N
Модель устройства
теги
object
Y
Ключ-значение в формате JSON, пользовательская информация об устройстве: Используется для хранения каналов устройства Используется для хранения единиц температуры Данные других сторонних устройств
firmware_version
string
N
Версия прошивки
Пример запроса :
Параметры ответа: PayloadObject:
Атрибут
Тип
Необязательный
Описание
endpoints
EndpointObject[]
N
Список устройств
EndpointObject:
Атрибут
Тип
Необязательный
Описание
serial_number
string
N
Уникальный серийный номер устройства
third_serial_number
string
N
Уникальный серийный номер стороннего устройства
Пример корректного ответа:
Пример ответа с ошибкой:
DeviceStatesChangeReport Отчёт об изменении состояния устройства
Примечание: Повторяющиеся отчёты о состоянии могут ложноположительно запускать связанные сценарии.
Параметры запроса: PayloadObject:
Атрибут
Тип
Необязательный
Описание
state
object
N
Состояние устройства, подробности см. в [Supported device cabilities]
Пример запроса :
Параметры ответа: PayloadObject: Пустой объект Пример успешного ответа:
DeviceOnlineChangeReport Отчёт о статусе онлайн устройства
Примечание: Повторяющиеся отчёты о состоянии могут ложноположительно запускать связанные сценарии.
Параметры запроса: PayloadObject:
Атрибут
Тип
Необязательный
Описание
в сети
boolean
N
Статус онлайн устройства true: В сети
false: Не в сети
Пример запроса :
Параметры ответа: PayloadObject: Пустой объект Пример успешного ответа:
DeviceInformationUpdatedReport Отчёт об обновлении информации об устройстве
Примечание: Обновление может повлиять на существующие сценарии или функции безопасности.
Параметры запроса: PayloadObject:
Атрибут
Тип
Необязательный
Описание
capabilities
| CapabilityObject[]
| N
| Список возможностей. Подробности см. в разделе поддерживаемых возможностей устройства. **Примечание: **Этот параметр обновит только value из настройки ключ в пределах CapabilityObject, и обновления разрешены только если permission для настройки ключа является 11 или 01. Для конкретного определения структуры настройки в CapabilityObjectсм. подробное описание в разделе 2.3 Категории отображения устройств и возможности устройства. | | tags
| object
| Y
| Ключ-значение в формате JSON, пользовательская информация об устройстве.
Может использоваться для хранения каналов устройства
Может использоваться для хранения единиц температуры
Данные других сторонних устройств |
Пример запроса :
Параметры ответа: PayloadObject: Пустой объект Пример успешного ответа:
Шлюз отправляет интерфейс инструкции через адрес сервиса устройства
Примечание:
Сторонним сервисам необходимо ответить на запрос шлюза в течение 3 с. В противном случае шлюз сочтёт обработку команды завершившейся по тайм-ауту.
Если сервис третьей стороны офлайн, шлюз установит устройство в состояние оффлайн, и стороннему сервису потребуется сообщить состояние устройства (DeviceStatesChangeReport) или онлайн-состояние (DeviceOnlineChangeReport) перед возвращением в онлайн.
Формат запроса
Шлюз отправляет инструкции третьей стороне через интерфейс по адресу сервиса устройства. :::tips
URL:
Метод:POST
Заголовок:
Content-Type: application/json ::: Параметры запроса:
Атрибут
Тип
Необязательный
Описание
directive
DirectiveObject
N
Структура объекта директивы
DirectiveObject
Атрибут
Тип
Необязательный
Описание
header
HeaderObject
N
Структура заголовка запроса
endpoint
EndpointObject
N
Структура endpoint в запросе
payload
PayloadObject
N
Структура payload в запросе
HeaderObject
Атрибут
Тип
Необязательный
Описание
name
string
N
Имя запроса. Необязательные параметры:UpdateDeviceStates: Обновить состояния устройства
message_id
string
N
ID сообщения запроса, UUID_V4
version
string
N
Номер версии протокола запроса. В настоящее время фиксирован на 1.
EndpointObject
Атрибут
Тип
Необязательный
Описание
serial_number
string
N
Уникальный серийный номер устройства
third_serial_number
string
N
Уникальный серийный номер стороннего устройства
теги
object
N
Ключ-значение в формате JSON, пользовательская информация об устройстве. [Функция управления устройством] - [Описание тегов]
PayloadObject: В зависимости от различных header.name, для каждого из них существует конкретная структура запроса.
Пример запроса :
Формат ответа
:::tips **HTTP Код состояния: **200 OK Атрибут ответа HTTP: :::
Атрибут
Тип
Необязательный
Описание
event
EventObject
N
Структура события ответа
EventObject
Атрибут
Тип
Необязательный
Описание
header
HeaderObject
N
Структура заголовка запроса
payload
PayloadObject
N
Структура payload в запросе
HeaderObject
Атрибут
Тип
Необязательный
Описание
name
string
N
Имя заголовка ответа. Необязательный параметр: UpdateDeviceStatesResponse: Ответ на обновление состояния устройства ErrorResponse: Ответ с ошибкой
message_id
string
N
ID сообщения заголовка ответа, UUID_V4. Передать здесь message_id из заголовка запроса
version
string
N
Номер версии протокола запроса. В настоящее время фиксирован на 1.
Успешный ответ--PayloadObject:
В зависимости от типа запроса структура ответа различается. Для деталей смотрите соответствующий документ по инструкции запроса.
Ответ при ошибке--PayloadObject:
Атрибут
Тип
Необязательный
Описание
type
string
N
Типы ошибок:
ENDPOINT_UNREACHABLE: Устройство недоступно или оффлайн
ENDPOINT_LOW_POWER: Устройство в режиме низкого энергопотребления и не подлежит управлению
INVALID_DIRECTIVE: Аномальная директива от шлюза
NO_SUCH_ENDPOINT: Устройство не существует
NOT_SUPPORTED_IN_CURRENT_MODE: Текущий режим не поддерживает операцию
INTERNAL_ERROR: Внутренняя ошибка сервиса
REMOTE_KEY_CODE_NOT_LEARNED: Код клавиши пульта не обучен |
:::tips Условия: Параметры запроса корректны. **Код состояния: **200 OK Параметры ответа: :::
UpdateDeviceStates
Параметры запроса: PayloadObject:
Атрибут
Тип
Необязательный
Описание
state
object
N
Состояние устройства, подробности см. в [Supported device cabilities].
Пример запроса :
Параметры ответа: PayloadObject:пустой объект Пример успешного ответа
QueryDeviceStates
Параметры запроса: PayloadObject:
Атрибут
Тип
Необязательный
Описание
state
object
N
Состояние устройства, подробности см. в [Supported device cabilities].
Пример запроса :
Параметры ответа: PayloadObject:
Атрибут
Тип
Необязательный
Описание
state
object
N
Состояние устройства, подробности см. в [Supported device cabilities].
Пример ответа:
ConfigureDeviceCapabilities
Параметры запроса: PayloadObject:
Атрибут
Тип
Необязательный
Описание
capabilities
CapabilityObject[]
N
Список возможностей. Подробности см. в разделе поддерживаемых возможностей устройства. Обратите внимание, поле permission менять нельзя, при синхронизации передавайте то же значение.
Пример запроса :
Параметры ответа: PayloadObject:пустой объект Пример успешного ответа
5. События, отправляемые сервером
Описание интерфейса MDN EventSource:https://developer.mozilla.org/en-US/docs/Web/API/Server-sent_events
5.1 Инструкция
Шлюз поддерживает отправку сообщений клиенту с помощью SSE (Server-sent events). Клиент может отслеживать сообщения SSE после получения учетных данных доступа и может анализировать содержание push-сообщений согласно протоколу уведомлений об событиях интерфейса разработки при получении сообщений от шлюза. Следует отметить, что шлюз в настоящее время использует протокол HTTP1.1, поэтому для SSE в браузере существует ограничение на максимальное количество подключений — не более 6 (Подробные указания см. в описании интерфейса MDN EventSource).
5.2 Общий формат
:::tips
URL:/open-api/V2/sse/bridge
Метод:
GET::: Параметры запроса:
access_token
string
N
Токен доступа
Примечание: При запросе соединения SSE шлюз проверяет access_token, и если он недействителен, вернёт ошибку аутентификации. { "error": 401, "data": {}, "message": "invalid access_token"}
## Например: Имя модуля: device Версия: 1,v2,v3 Тип сообщения: addDevice
Пример:
5.3 Модуль устройств
a. Событие добавления устройства
:::tips Имя модуля:device Версия:v2 Тип сообщения:addDevice параметры event.data: :::
payload
ResponseDeviceObjectObject - Интерфейс такой же, как у Get Device List
N
информация об устройстве
Пример:
b. Событие обновления состояния устройства
:::tips Имя модуля:device Версия:v2 Тип сообщения:updateDeviceState параметры event.data: :::
endpoint
EndpointObject
N
Информация об устройстве
payload
object。 Структура такая же, как состояние устройства
N
Данные состояния устройства
EndpointObject:
serial_number
string
N
Уникальный серийный номер устройства
third_serial_number
string
Y
Уникальный серийный номер стороннего устройства. Для устройств, подключённых через открытые интерфейсы, это поле является обязательным.
Пример:
c. Событие обновления информации об устройстве
:::tips Имя модуля:device Версия:v2 Тип сообщения:updateDeviceInfo параметры event.data: :::
endpoint
EndpointObject
N
Информация об устройстве
payload
DeviceChangeObject
N
Данные об изменениях устройства
EndpointObject:
serial_number
string
N
Уникальный серийный номер устройства
third_serial_number
string
Y
Уникальный серийный номер стороннего устройства. Для устройств, подключённых через открытые интерфейсы, это поле является обязательным.
DeviceChangeObject
name
string
N
Имя устройства
capabilities
CapabilityObject []
Y
Список возможностей устройства.
теги
object
Y
тегиobject | Nullable | Пары ключ-значение в формате JSON для пользовательской информации об устройстве.
Может использоваться для хранения каналов устройства.
Может использоваться для хранения единиц температуры.
Для других пользовательских данных третьих сторон. |
Пример:
d. Событие удаления устройства
:::tips Имя модуля:device Версия:v2 Тип сообщения:deleteDevice параметры event.data: :::
endpoint
EndpointObject
N
Информация об устройстве
EndpointObject:
serial_number
string
N
Уникальный серийный номер устройства
third_serial_number
string
Y
Уникальный серийный номер стороннего устройства. Для устройств, подключённых через открытые интерфейсы, это поле является обязательным.
Пример:
e. Событие обновления онлайн-статуса устройства
:::tips Имя модуля:device Версия:v2 Тип сообщения:updateDeviceOnline параметры event.data: :::
endpoint
EndpointObject
N
Информация об устройстве
payload
DeviceChangeObject
N
Данные об изменениях устройства
EndpointObject:
serial_number
string
N
Уникальный серийный номер устройства
third_serial_number
string
Y
Уникальный серийный номер стороннего устройства. Для устройств, подключённых через открытые интерфейсы, это поле является обязательным.
DeviceChangeObject
в сети
boolean
N
Онлайн-статус устройства
Пример:
5.4 Модуль шлюза
a. Событие обновления состояния охраны
:::tips Имя модуля:device Версия:v2 Тип сообщения:updateDeviceOnline параметры event.data: :::
Атрибут
Тип
Необязательный
Описание
payload
SecurityStateObject
N
Информация об устройстве
SecurityStateObject
Атрибут
Тип
Необязательный
Описание
alarm_state
string
N
arming| Включеноdisarming| Выключено |
Пример:
5.5 Модуль безопасности
a. Событие обновления состояния постановки/снятия на охрану
:::tips Имя модуля:device Версия:v2 Тип сообщения:updateDeviceOnline параметры event.data: :::
Атрибут
Тип
Необязательный
Описание
payload
ArmStateObject
N
Информация о постановке и снятии с охраны
ArmStateObject:
Атрибут
Тип
Необязательный
Описание
arm_state
string
N
arming| Включеноdisarming| Разоружено | | detail | DetailObject | N | Подробности постановки на охрану/снятия с охраны |
DetailObject:
Атрибут
Тип
Необязательный
Описание
sid
int
N
ID режима охраны
name
string
N
Название охраны
Пример
6. TTS (Функция синтеза речи (Text-to-Speech)
6.1 Инструкция
Ключевая роль
Поставщик TTS-сервиса: Провайдер сервиса движка TTS отвечает за регистрацию движка TTS на шлюзе и предоставление TTS-услуг
Сервер шлюза:iHost
Клиент Gateway Open API
6.1.1 Регистрация сервиса движка TTS
【Поставщик TTS-сервиса】Вызвать интерфейс для регистрации движка TTS на шлюзе.
【Сервер шлюза】После успешной регистрации шлюз сохранит базовую информацию о движке TTS (включая адрес сервиса server_address, и последующая связь между шлюзом и поставщиком TTS будет осуществляться через адрес server_address), и выделит ID сервиса движка TTS внутри шлюза.

6.1.2 Получение списка синтезированных аудиофайлов
【Клиент Gateway Open API】Вызвать интерфейс для получения списка зарегистрированных сервисов движков TTS. Можно получить текущий список зарегистрированных движков TTS (включая ID движка TTS, выделенный шлюзом).
【Клиент Gateway Open API】Вызвать интерфейс для получения списка аудио у указанного движка TTS. Шлюз отправит синхронную команду получения списка аудио указанному поставщику TTS и вернёт результат.

6.1.3 Синтез речи с указанием движка синтеза
【Клиент Gateway Open API】Вызвать интерфейс для получения списка зарегистрированных сервисов движков TTS. Можно получить текущий список зарегистрированных движков TTS (включая ID движка TTS, выделенный шлюзом).
【Клиент Gateway Open API】Вызвать интерфейс для получения списка аудио у указанного движка TTS. Шлюз отправит синхронную команду получения списка аудио указанному поставщику TTS и вернёт результат.

6.1.4 Синтезировать аудио и воспроизвести TTS-говорение.
【Клиент Gateway Open API】Вызвать интерфейс для получения списка зарегистрированных сервисов движков TTS. Можно получить текущий список зарегистрированных движков TTS (включая ID движка TTS, выделенный шлюзом).
【Клиент Gateway Open API】Вызвать интерфейс для получения списка аудио указанного движка TTS. Шлюз отправит синхронную команду получения списка аудио указанному поставщику TTS и вернёт результат. (включая адрес TTS-аудиофайла)
【Клиент Gateway Open API】Сохранить адрес TTS-аудиофайла из результата, возвращённого на предыдущем шаге, вызвать интерфейс воспроизведения аудиофайла и воспроизвести его через шлюз.
6.2 Модуль движка TTS
6.2.1 Открытые возможности шлюза
a. Получить список зарегистрированных сервисов движков TTS
:::tips
URL:
/open-api/V2/rest/tts/enginesМетод:
GETЗаголовок:
Content-Type: application/json
Authorization: Bearer ::: Параметры запроса: отсутствуют Корректный ответ с данными:
Атрибут
Тип
Необязательный
Описание
engines
EngineObject []
N
Список зарегистрированных движков TTS
Структура EngineObject
Атрибут
Тип
Необязательный
Описание
id
string
N
ID движка, назначенный шлюзом
name
string
N
Название сервиса движка TTS
:::советы Условия: Параметры запроса корректны и пройдена проверка подлинности пользователя. **Код состояния: **200 OK Пример ответа:: :::
b. Получить список аудио указанного движка TTS
:::tips
URL:
/open-api/V2/rest/tts/engine/{id}/audio-listМетод:
GETЗаголовок:
Content-Type: application/json
Authorization: Bearer ::: Параметры запроса: отсутствуют Корректный ответ с данными:
Атрибут
Тип
Необязательный
Описание
audio_list
AudioObject []
N
Список аудио
Структура AudioObject
Атрибут
Тип
Необязательный
Описание
url
string
N
URL аудиофайла, например:
https://dl.espressif.cn/dl/audio/gs-16b-2c-44100hz.mp3
label
string
Y
Метка аудиофайла
:::советы Условия: Параметры запроса корректны и пройдена проверка подлинности пользователя. **Код состояния: **200 OK **Код ошибки: **
190000 Движок работает ненормально
Пример ответа:: :::
c. Выполнение синтеза речи с использованием указанного движка TTS
:::tips
URL:
/open-api/V2/rest/tts/engine/{id}/synthesizeМетод:
POSTЗаголовок:
Content-Type: application/json
Authorization: Bearer ::: Параметры запроса:
Атрибут
Тип
Необязательный
Описание
text
string
N
Текст, используемый для синтеза аудио
label
string
Y
Метка аудиофайла
language
string
Y
Прозрачное поле. Необязательный код языка для запроса синтеза речи. Конкретный список поддерживаемых кодов языков предоставляется поставщиком сервиса TTS. Обратите внимание, что сервис движка TTS должен поддерживать язык по умолчанию для синтеза речи, то есть если язык не передан, будет использован язык по умолчанию движка для синтеза.
options
object
Y
Прозрачное поле. Используется для передачи конфигурационных параметров, необходимых для синтеза, сервису синтеза речи TTS.
Корректный ответ с данными:
Атрибут
Тип
Необязательный
Описание
audio
AudioObject
N
Список аудио
Структура AudioObject
Атрибут
Тип
Необязательный
Описание
url
string
N
URL аудиофайла, например:
https://dl.espressif.cn/dl/audio/gs-16b-2c-44100hz.mp3
label
string
Y
Метка аудиофайла
:::советы Условия: Параметры запроса корректны и пройдена проверка подлинности пользователя. **Код состояния: **200 OK **Код ошибки: **
190000 Движок работает ненормально
Пример ответа:: :::
6.2.2 Взаимодействие между шлюзом и сервисом TTS
a. Регистрация сервиса движка TTS
Отправка запроса на шлюз поставщиком TTS-сервиса
:::tips
URL:
/open-api/V2/rest/thirdparty/eventМетод:
POSTЗаголовок:
Content-Type: application/json
Authorization: Bearer ::: Параметры запроса:
Атрибут
Тип
Необязательный
Описание
event
EventObject
N
Структура объекта события запроса Информация
EventObject
Атрибут
Тип
Необязательный
Описание
header
HeaderObject
N
Структура заголовка запроса
payload
PayloadObject
N
Структура payload в запросе
HeaderObject
Атрибут
Тип
Необязательный
Описание
name
string
N
Имя запроса. Необязательный параметр.
RegisterTTSEngine | | message_id | string | N | ID сообщения запроса, UUID_V4 | | version | string | N | Номер версии протокола запроса. В настоящее время фиксирован на 1 |
PayloadObject
Атрибут
Тип
Необязательный
Описание
service_address
string
N
Адрес сервиса. Например, http:///
name
string
N
Название сервиса
Пример запроса:
**Корректные параметры ответа: **
Атрибут
Тип
Необязательный
Описание
header
HeaderObject
N
Структура заголовка запроса
payload
PayloadObject
N
Структура payload в запросе
HeaderObject
Атрибут
Тип
Необязательный
Описание
name
string
N
Имя заголовка ответа. Необязательный параметр:
Ответ (Успешный ответ)
ErrorResponse (Ответ с ошибкой) | | message_id | string | N | ID сообщения заголовка ответа, UUID_V4. Входящий здесь ID запроса: header.message_id | | version | string | N | Номер версии протокола запроса. В настоящее время фиксирован на 1 |
PayloadObject
Атрибут
Тип
Необязательный
Описание
engine_id
string
N
ID движка, назначенный шлюзом
:::советы Условия: Параметры запроса корректны и пройдена проверка подлинности пользователя. **Код состояния: **200 OK Пример ответа:: ::: Пример корректного ответа:
**Параметры аномального ответа: **
Атрибут
Тип
Необязательный
Описание
type
string
N
Тип ошибки
INVALID_PARAMETERS (Ошибка параметров)
AUTH_FAILURE (Ошибка аутентификации)
INTERNAL_ERROR (Внутренняя ошибка сервиса) | | description | string | N | Описание ошибки |
Пример ответа с ошибкой:
b. Команда синхронизации списка аудио
Отправка команды поставщику TTS-сервиса от шлюза.
:::tips
URL:
<адрес сервиса>Метод:
POSTЗаголовок:
Content-Type: application/json ::: Параметры запроса:
Атрибут
Тип
Необязательный
Описание
directive
DirectiveObject
N
Структура объекта инструкции информация
DirectiveObject
Атрибут
Тип
Необязательный
Описание
header
HeaderObject
N
Структура заголовка запроса
payload
PayloadObject
N
Структура payload в запросе
HeaderObject
Атрибут
Тип
Необязательный
Описание
name
string
N
Имя запроса. Необязательный параметр:
SyncTTSAudioList | | message_id | string | N | ID сообщения запроса, UUID_V4 | | version | string | N | Номер версии протокола запроса. В настоящее время фиксирован на 1 |
Пример запроса:
**Корректные параметры ответа: **
Атрибут
Тип
Необязательный
Описание
header
HeaderObject
N
Структура заголовка запроса
payload
PayloadObject
N
Структура payload в запросе
HeaderObject
Атрибут
Тип
Необязательный
Описание
name
string
N
Имя заголовка ответа. Необязательный параметр:
Ответ (Успешный ответ)
ErrorResponse (Ответ с ошибкой) | | message_id | string | N | ID сообщения заголовка ответа, UUID_V4. Входящий здесь ID запроса: header.message_id | | version | string | N | Номер версии протокола запроса. В настоящее время фиксирован на 1 |
PayloadObject:
Атрибут
Тип
Необязательный
Описание
audio_list
AudioObject []
N
Список TTS-аудио
Структура AudioObject
Атрибут
Тип
Необязательный
Описание
url
string
N
URL аудиофайла, например:
https://dl.espressif.cn/dl/audio/gs-16b-2c-44100hz.mp3
label
string
Y
Метка аудиофайла
:::советы Условия: Параметры запроса корректны и пройдена проверка подлинности пользователя. **Код состояния: **200 OK Пример ответа:: ::: Пример корректного ответа:
**Параметры аномального ответа: **
Атрибут
Тип
Необязательный
Описание
type
string
N
Тип ошибки
INVALID_PARAMETERS (Ошибка параметров)
AUTH_FAILURE (Ошибка аутентификации)
INTERNAL_ERROR (Внутренняя ошибка сервиса) | | description | string | N | Описание ошибки |
Пример ответа с ошибкой:
c. Команда синтеза речи
Отправка команды поставщику TTS-сервиса от шлюза.
:::tips
URL:
<адрес сервиса>Метод:
POSTЗаголовок:
Content-Type: application/json ::: Параметры запроса:
Атрибут
Тип
Необязательный
Описание
directive
DirectiveObject
N
Структура объекта инструкции информация
DirectiveObject
Атрибут
Тип
Необязательный
Описание
header
HeaderObject
N
Структура заголовка запроса
payload
PayloadObject
N
Структура payload в запросе
HeaderObject
Атрибут
Тип
Необязательный
Описание
name
string
N
Имя запроса. Необязательный параметр:
SynthesizeSpeech | | message_id | string | N | ID сообщения запроса: UUID_V4 | | version | string | N | Номер версии протокола запроса. В настоящее время фиксирован на 1 |
PayloadObject
Атрибут
Тип
Необязательный
Описание
text
string
N
Текст, используемый для синтеза аудио
label
string
Y
Метка аудиофайла
language
string
Y
Прозрачное поле. Необязательный код языка для запроса синтеза речи. Конкретный список поддерживаемых кодов языков предоставляется поставщиком сервиса TTS. Обратите внимание, что сервис движка TTS должен поддерживать язык по умолчанию для синтеза речи, то есть если язык не передан, будет использован язык по умолчанию движка для синтеза.
options
object
Y
Прозрачное поле. Используется для передачи конфигурационных параметров, необходимых для синтеза, сервису синтеза речи TTS.
Пример запроса:
**Корректные параметры ответа: **
Атрибут
Тип
Необязательный
Описание
header
HeaderObject
N
Структура заголовка запроса
payload
PayloadObject
N
Структура payload в запросе
HeaderObject
Атрибут
Тип
Необязательный
Описание
name
string
N
Имя заголовка ответа. Необязательный параметр:
Ответ (Успешный ответ)
ErrorResponse (Ответ с ошибкой) | | message_id | string | N | ID сообщения заголовка ответа, UUID_V4. Входящий здесь ID запроса: header.message_id | | version | string | N | Номер версии протокола запроса. В настоящее время фиксирован на 1 |
PayloadObject
Атрибут
Тип
Необязательный
Описание
audio
AudioObject
N
TTS Аудио
Структура AudioObject
Атрибут
Тип
Необязательный
Описание
url
string
N
URL аудиофайла, например:
https://dl.espressif.cn/dl/audio/gs-16b-2c-44100hz.mp3
label
string
Y
Метка аудиофайла
:::советы Условия: Параметры запроса корректны и пройдена проверка подлинности пользователя. **Код состояния: **200 OK Пример ответа:: ::: Пример корректного ответа:
**Параметры аномального ответа: **
Атрибут
Тип
Необязательный
Описание
type
string
N
Тип ошибки
INVALID_PARAMETERS (Ошибка параметров)
AUTH_FAILURE (Ошибка аутентификации)
INTERNAL_ERROR (Внутренняя ошибка сервиса) | | description | string | N | Описание ошибки |
Пример ответа с ошибкой:
7. Модуль мультимедиа
7.1 Воспроизведение аудиофайла
:::tips
URL:
/open-api/V2/rest/media/audio-playerМетод:
POSTЗаголовок:
Content-Type: application/json
Authorization: Bearer ::: Параметры запроса:
Атрибут
Тип
Необязательный
Описание
audio_url
string
N
URL аудио
Корректный ответ с данными: :::советы Условия: Параметры запроса корректны и пройдена проверка подлинности пользователя. **Код состояния: **200 OK Пример ответа:: :::
8. Пользовательская UI-карта
Пользовательские UI-карты позволяют отображать внутри карты любое содержимое. Это содержимое может быть веб-страницей, изображением или любым сервисом с UI. Вам нужно предоставить URL содержимого, которое вы хотите отобразить. UI-карта автоматически адаптирует свою ширину и высоту, а содержимое будет отображаться с помощью iFrame.
8.1 Инструкция
Ключевая роль
Поставщик UI-сервиса: Провайдер, ответственный за создание пользовательских UI-карт на шлюзе.
Сервер шлюза: Сервер шлюза (iHost).
Клиент Gateway Open API: Клиент Open API для шлюза.
8.1.1 Создание пользовательской UI-карты
[Поставщик UI-сервиса]: Вызывает API для создания пользовательской UI-карты на шлюзе.
[Сервер шлюза]: После успешной регистрации шлюз сохраняет базовую информацию UI-карты (включая конфигурацию размера и URL ресурса карты) и назначает внутренний ID UI-карты внутри шлюза.

8.1.2 Получение списка UI-карт
[Поставщик UI-сервиса]: Вызывает API для получения списка UI-карт.
[Сервер шлюза]: Возвращает список UI-карт, сохранённых на шлюзе, включая пользовательские UI-карты, не созданные вызывающей стороной.

8.1.3 Изменение конфигурации указанной UI-карты
[Поставщик UI-сервиса]: Вызывает API для изменения конфигурации указанной UI-карты, такой как конфигурация размеров и URL ресурса.
[Сервер шлюза]: После успешного изменения шлюз сохраняет обновлённую информацию UI-карты, включая новую конфигурацию размеров и URL ресурса.

8.1.4 Удаление пользовательской UI-карты
[Поставщик UI-сервиса]: Вызывает API для удаления указанной пользовательской UI-карты.
[Сервер шлюза]: Шлюз удалит всю информацию, связанную с указанной UI-картой.

8.2 Модуль пользовательских UI-карт
8.2.1 Создание пользовательской UI-карты
Поставщик UI-сервиса отправляет запрос на шлюз для создания пользовательской UI-карты.
:::tips
URL:
/open-api/v2/rest/ui/cardsМетод:
POSTЗаголовок:
Content-Type: application/json
Authorization: Bearer ::: Параметры запроса:
Атрибут
Тип
Необязательный
Описание
label
string
Y
Метка карты: Используется для описания карты. Это псевдоним карты.
cast_settings
CastSettingsObject
Y
Настройки Cast-карты: Параметры конфигурации для cast-карт.
web_settings
WebSettingsObject
N
Настройки Web-карты: Параметры конфигурации для web-карт.
CastSettingsObject:
Атрибут
Тип
Необязательный
Описание
dimensions
DimensionObject []
N
Конфигурация размера: Должна содержать как минимум одну конфигурацию.
default
string
N
Спецификация по умолчанию: Используется спецификация размера по умолчанию, необязательные параметры: 2x2
WebSettingsObject:
Атрибут
Тип
Необязательный
Описание
dimensions
DimensionObject []
N
Конфигурация размера: Должна содержать как минимум одну конфигурацию.
drawer_component
DrawerObject
Y
Настройки отображения компонента Drawer.
default
string
N
Спецификация по умолчанию:
1x1
2x1 |
DimensionObject:
Атрибут
Тип
Необязательный
Описание
src
string
N
URL ресурса: Например: http://example.html
size
string
N
Спецификации размера:
Необязательные параметры CastSettingsObject:
2×2
Необязательные параметры WebSettingsObject:
1x1
2x1 |
DrawerObject:
Атрибут
Тип
Необязательный
Описание
src
string
N
URL ресурса: Например: http://example.html
Успешный ответ с данными:
Атрибут
Тип
Необязательный
Описание
id
string
N
Уникальный ID UI-карты
:::tips Условия: Параметры запроса корректны, и проверка идентичности пользователя пройдена. **Код состояния: ** 200 OK ::: Пример запроса:
Пример ответа:
8.2.2 Получение списка UI-карт
:::tips
URL:
/open-api/v2/rest/ui/cardsМетод:
GETЗаголовок:
Content-Type: application/json
Authorization: Bearer ::: Параметры запроса: Нет Параметры ответа:
Атрибут
Тип
Необязательный
Описание
data
CardObject[]
N
Список UI-карт
Объект CardObjec:
Атрибут
Тип
Необязательный
Описание
id
string
N
ID карты: Уникальный идентификатор карты.
label
string
Y
Метка карты: Используется для описания карты. Служит псевдонимом или именем карты.
cast_settings
CastSettingsObject
Y
Метка карты: Используется для описания карты. Это псевдоним карты.
web_settings
WebSettingsObject
N
Настройки Cast-карты: Параметры конфигурации для cast-карт.
app_name
string
Y
Настройки Web-карты: Параметры конфигурации для web-карт.
CastSettingsObject:
Атрибут
Тип
Необязательный
Описание
dimensions
DimensionObject []
N
Конфигурация размера: Должна содержать как минимум одну конфигурацию.
default
string
N
Спецификация по умолчанию:
Необязательный параметр: 2x2
used
string
N
Текущая спецификация:
Необязательный параметр: 2x2
WebSettingsObject:
Атрибут
Тип
Необязательный
Описание
dimensions
DimensionObject []
N
Конфигурация размера: Должна содержать как минимум одну конфигурацию.
drawer_component
DrawerObject
Y
Настройки отображения компонента Drawer.
default
string
N
Спецификация по умолчанию:
Необязательный параметр:
1x1
2x1 | | used | string | N | Текущая спецификация: Необязательный параметр:
1x1
2x1 |
DimensionObject:
Атрибут
Тип
Необязательный
Описание
src
string
N
URL ресурса: Например: http://example.html
size
string
N
Спецификации размера:
Необязательный параметр:
1x1
2x1
Примечание: В настоящее время cast-карты поддерживают только спецификацию 2x2. Спецификация 2x2 не будет действовать. |
DrawerObject:
Атрибут
Тип
Необязательный
Описание
src
string
N
URL ресурса: Например: http://example.html
Пример ответа:
8.2.3 Изменение конфигурации указанной UI-карты
Авторизованным пользователям разрешено изменять конфигурацию существующей UI-карты через этот интерфейс. Поставщики пользовательских карт могут изменять только UI-карты, которые они создали.
:::tips
URL:
/open-api/v2/rest/ui/cards/{id}Метод:
PUTЗаголовок:
Content-Type: application/json
Authorization: Bearer ::: Параметры запроса:
Атрибут
Тип
Необязательный
Описание
label
string
Y
Используется для описания карты. Это псевдоним карты.
cast_settings
CastSettingsObject
Y
Настройки Cast-карты
web_settings
WebSettingsObject
Y
Настройки Web-карты
CastSettingsObject:
Атрибут
Тип
Необязательный
Описание
used
string
Y, Либо used или src должен быть предоставлен, но требуется хотя бы один из этих параметров.
Текущая спецификация:
Необязательный параметр:
2x2
| | src | string | Y, Либо used или src должен быть предоставлен, но требуется хотя бы один из этих параметров. | URL ресурса: http://example.html |
WebSettingsObject:
Атрибут
Тип
Необязательный
Описание
used
string
Y, Либо used или src должен быть предоставлен, но требуется хотя бы один из этих параметров.
Текущая спецификация:
Необязательный параметр:
1x1
2x1 | | src | string | Y, Либо
usedилиsrcдолжен быть предоставлен, но требуется хотя бы один из этих параметров. | URL ресурса: http://example.html |
Успешный ответ с данными: :::tips Условия: Параметры запроса корректны и пройдена проверка подлинности пользователя. UI-карта, которую модифицируют, должна быть создана поставщиком пользовательской UI-карты, вызвавшим интерфейс. **Код состояния: ** 200 OK Код ошибки:
406: Нет разрешения на доступ к этому ресурсу ::: **Пример ответа: **
**Пример запроса: **
8.2.4 Удаление пользовательской UI-карты
Авторизованным пользователям разрешено удалять существующую UI-карту с помощью этого интерфейса. Поставщики пользовательских карт могут удалять только UI-карты, которые они создали.
:::tips
URL:
/open-api/v2/rest/ui/cards/{id}Метод:
DELETEЗаголовок:
Content-Type: application/json
Authorization: Bearer ::: Параметры запроса: Нет Успешный ответ с данными: :::советы Условия: Параметры запроса корректны и пройдена проверка подлинности пользователя. UI-карта, которую модифицируют, должна быть создана поставщиком пользовательской UI-карты, вызвавшим интерфейс. **Код состояния: **
200 OKКод ошибки:
406: Нет разрешения на доступ к этому ресурсу. ::: **Пример ответа: **
Последнее обновление