Разработчикам и руководство по 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 Категория отображения устройства и параметры (Capabilities)
**Категория отображения устройства (DisplayCategory). **Категория отображения устройства используется для идентификации конкретных категорий устройства, таких как switch, plug, light и т.д. Эта информация определяет отображение устройства в пользовательском интерфейсе шлюза.
**Возможности устройства (Device Capability). **Возможности устройства описывают конкретные подфункции устройства. Например, управление питанием, управление яркостью, управление цветовой температурой и т.д. Одно устройство может поддерживать 1 или более возможностей.
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 расширенный формат): 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. Токен доступа
Позволяет пользователям получить токен доступа.
Примечание: Токен будет очищен после сброса устройства.
Примечание: После получения токена необходимо снова нажать кнопку, чтобы успешно получить новый токен.
:::советы
URL:
/open-api/V2/rest/bridge/access_tokenМетод:
GETЗаголовок:
Content-Type: application/json ::: Параметры запроса:
Атрибут
Тип
Необязательно
Описание
app_name
string
Y
Описание названия приложения.
Успешный ответ с данными:
Атрибут
Тип
Необязательно
Описание
token
string
N
Токен доступа интерфейса. Он действителен длительное время, пожалуйста, сохраните его
app_name
string
Y
Описание названия приложения.
:::советы Условие: Пользователь активировал < command key > и обратился к этому интерфейсу в пределах допустимого времени. **Код состояния: **200 OK ::: Пример ответа:
Данные ответа при отказе:пустой объект :::советы Условия:Пользователь не активировал < command key >, или время действия истекло. **Код состояния: ** 200 OK ::: Пример ответа:
b. Получение состояния шлюза
Позволяет авторизованным пользователям получить состояние шлюза через этот интерфейс :::советы
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
Единица температуры ЦП:
Необязательно
значения:'c', 'f'
sd_card_used
int
Y
Использование SD-карты (в процентах):
Диапазон:[0-100] с точностью до одного знака после запятой
*Примечание: Если SD-карта не вставлена или не отформатирована, значение пусто.
:::советы Условия: Параметры запроса являются корректными, и проверка идентичности пользователя пройдена. **Код состояния: **200 OK ::: Пример ответа:
c. Настройка шлюза
Позволяет авторизованным пользователям настраивать шлюз через этот интерфейс :::советы
URL:
/open-api/V2/rest/bridge/configМетод:
PUTЗаголовок:
Content-Type: application/json
Autorization: Bearer ::: Параметры запроса:
Атрибут
Тип
Необязательно
Описание
volume
int
Y
Громкость системы. [0-100]
Успешный ответ с данными: пустой объект {} :::советы Условия: Параметры запроса являются корректными, и проверка идентичности пользователя пройдена. **Код состояния: **200 OK ::: Пример ответа:
d. Получение информации о шлюзе
Позволяет авторизованным пользователям получить информацию о шлюзе через этот интерфейс :::советы
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
Название устройства
Успешный ответ с данными: пустой объект {} :::советы Условия: Нет **Код состояния: **200 OK ::: Пример ответа:
e. Отключение звука у шлюза (Mute)
Позволяет авторизованным пользователям отключать звук на шлюзе через этот интерфейс. :::советы
URL:
/open-api/v2/rest/bridge/muteМетод:
PUTЗаголовок:
Content-Type: application/json
Authorization: Bearer ::: Параметры запроса: нет Успешный ответ с данными: пустой объект {} :::советы Условия: Параметры запроса являются корректными, и проверка идентичности пользователя пройдена. **Код состояния: **200 OK ::: Пример ответа:
f. Включение звука у шлюза (Unmute)
Позволяет авторизованным пользователям включать звук на шлюзе через этот интерфейс. :::советы
URL:
/open-api/v2/rest/bridge/unmuteМетод:
PUTЗаголовок:
Content-Type: application/json
Authorization: Bearer ::: Параметры запроса: нет Успешный ответ с данными: пустой объект {} :::советы Условия: Параметры запроса являются корректными, и проверка идентичности пользователя пройдена. **Код состояния: **200 OK ::: Пример ответа:
g. Отключение будильника шлюза
Позволяет авторизованным пользователям отключать состояние звуковой тревоги на шлюзе через этот интерфейс. :::советы
URL:
/open-api/v2/rest/bridge/cancel_alarmМетод:
PUTЗаголовок:
Content-Type: application/json
Authorization: Bearer ::: Параметры запроса: нет Успешный ответ с данными: пустой объект {} :::советы Условия: Параметры запроса являются корректными, и проверка идентичности пользователя пройдена. **Код состояния: **200 OK ::: Пример ответа:
3.2 Функции аппаратного обеспечения
a. Перезагрузка шлюза
Позволяет авторизованному пользователю перезагрузить шлюз через этот интерфейс :::советы
URL:
/open-api/V2/rest/hardware/rebootМетод:
POSTЗаголовок:
Content-Type: application/json
Autorization: Bearer ::: Параметры запроса: нет Успешный ответ с данными: пустой объект {} :::советы Условия: Параметры запроса являются корректными, и проверка идентичности пользователя пройдена. **Код состояния: **200 OK :::
b. Управление динамиком
Позволяет авторизованным пользователям управлять динамиком через этот интерфейс :::советы
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]
Успешный ответ с данными: пустой объект {} :::советы Условия: Параметры запроса являются корректными, и проверка идентичности пользователя пройдена. **Код состояния: ** 200 OK ::: Пример ответа:
3.3 Функции управления устройствами
a. Поддерживаемые типы устройств
Тип устройства
Значение
Версия iHost
Розетка
plug
≥ 2.1.0
Выключатель
switch
≥ 2.1.0
Свет
light
≥ 2.1.0
Штора
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
≥ 2.1.0
Кондиционер
airConditioner
≥ 2.1.0
Вентилятор
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 используется для установки имени подкомпонента 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
Успешный ответ с данными: пустой объект {} :::советы Условия: Параметры запроса являются корректными, и проверка идентичности пользователя пройдена. **Код состояния: ** 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 включает только возможности camera-stream.
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
Уникальный серийный номер устройства
:::советы Условия: Параметры запроса являются корректными, и проверка идентичности пользователя пройдена. **Код состояния: **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 💡Примечание: Пожалуйста, проверьте Примеры поддерживаемых возможностей устройства в разделе [Поддерживаемые возможности устройства].
Атрибут
Тип
Необязательно
Описание
capability
string
N
Название возможности. Подробности смотрите в [Поддерживаемые возможности устройства]
permission
string
N
Разрешение возможности. Возможные значения: "read" (чтение), "write" (запись), "readWrite" (чтение и запись).
configuration
object
Y
Информация о конфигурации возможности. В настоящее время используется camera-stream, см. [Поддерживаемые возможности устройства]
name
string
Y
Поле name в toggle. Номер подканала, используемый для идентификации многоканальных устройств. Например, если name равен 1, это означает канал 1.
:::советы Условия: Параметры запроса являются корректными, и проверка идентичности пользователя пройдена. **Код состояния: **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
Объект состояния устройства. Для примеров состояний различных возможностей, пожалуйста, проверьте [Поддерживаемые возможности устройства]
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
Autorization: Bearer ::: Параметры запроса:
Атрибут
Тип
Необязательно
Описание
name
string
Y
Имя устройства.
теги
object
Y
Пары ключ-значение в формате JSON, используемые для хранения имен каналов устройства и другой информации о суб-устройствах.
state
object
Y
Изменить состояние устройства; для подробностей протокола см. "Поддерживаемые возможности устройства."
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
Запросить состояние устройства; для подробностей протокола см. "Поддерживаемые возможности устройства."
Успешный ответ с данными: :::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 Выключено |
:::советы Условия: Параметры запроса являются корректными, и проверка идентичности пользователя пройдена. **Код состояния: **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 Инструкция по доступу
Доступ устройства

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

Шаги доступа
Определите классификацию устройства в шлюзе. Подробности см. [Поддерживаемые типы устройств].
Определите возможности, к которым устройство может получить доступ. Подробности см. [Поддерживаемые возможности устройства].
Вызовите интерфейс [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. Последующие изменения online полностью зависят от синхронизации с третьей стороной через интерфейс DeviceOnlineChangeReport.
Параметры запроса: EndpointObject**:**Нет PayloadObject:
Атрибут
Тип
Необязательно
Описание
endpoints
EndpointObject[]
N
Список устройств
EndpointObject:
Атрибут
Тип
Необязательно
Описание
third_serial_number
string
N
Уникальный серийный номер стороннего устройства
name
string
N
Название устройства
display_category
string
N
Категория устройства. Подробности см. в [Поддерживаемые типы устройств]. *Сторонние устройства сейчас не поддерживают добавление камер.
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
Состояние устройства, см. подробности в [Поддерживаемые возможности устройства]
Пример запроса :
Параметры ответа: PayloadObject: Пустой объект Пример успешного ответа:
DeviceOnlineChangeReport Отчет о статусе онлайн устройства
Примечание: Повторяющиеся отчеты о состоянии могут неправильно сработать связанные сцены.
Параметры запроса: PayloadObject:
Атрибут
Тип
Необязательно
Описание
в сети
boolean
N
Статус онлайн устройства true: В сети
false: Не в сети
Пример запроса :
Параметры ответа: PayloadObject: Пустой объект Пример успешного ответа:
DeviceInformationUpdatedReport Отчет об обновлении информации об устройстве
Примечание: Обновление может повлиять на существующие сцены или функции безопасности.
Параметры запроса: PayloadObject:
Атрибут
Тип
Необязательно
Описание
capabilities
| CapabilityObject[]
| N
| Список возможностей. Подробности можно найти в разделе поддерживаемых возможностей устройства. **Примечание: **Этот параметр обновит только value из настройки ключ внутри CapabilityObject, и обновления разрешены только если permission для настройки ключа является 11 или 01. Для конкретного определения структуры настройки в CapabilityObjectсмотрите подробное описание в разделе 2.3 Категории отображения устройств и возможности устройства. | | tags
| объект
| 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: Код клавиши пульта дистанционного управления не выучен |
:::советы Условия: Параметры запроса корректны. **Код состояния: **200 OK Параметры ответа: :::
UpdateDeviceStates
Параметры запроса: PayloadObject:
Атрибут
Тип
Необязательно
Описание
state
object
N
Состояние устройства, см. подробности в [Поддерживаемые возможности устройства].
Пример запроса :
Параметры ответа: PayloadObject:пустой объект Пример успешного ответа
QueryDeviceStates
Параметры запроса: PayloadObject:
Атрибут
Тип
Необязательно
Описание
state
object
N
Состояние устройства, см. подробности в [Поддерживаемые возможности устройства].
Пример запроса :
Параметры ответа: PayloadObject:
Атрибут
Тип
Необязательно
Описание
state
object
N
Состояние устройства, см. подробности в [Поддерживаемые возможности устройства].
Пример ответа:
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 Общий формат
:::советы
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 - Интерфейс такой же, как при получении списка устройств
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), а также выделит идентификатор сервиса TTS в пределах шлюза.

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

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

6.1.4 Синтез аудио и воспроизведение TTS-речи.
【Клиент Gateway Open API】Вызывает интерфейс для получения списка зарегистрированных TTS-сервисов. Вы можете получить текущий список зарегистрированных TTS-движков (включая идентификатор TTS-движка, выделенный шлюзом).
【Клиент Gateway Open API】Вызывает интерфейс для получения списка аудиофайлов указанного TTS-движка. Шлюз отправит синхронную команду списка аудио указанному поставщику TTS-сервиса и вернёт результат. (включая адрес файла TTS-аудио)
【Клиент Gateway Open API】Фиксирует адрес TTS-аудиофайла из результата, возвращённого на предыдущем шаге, вызывает интерфейс воспроизведения аудиофайла и воспроизводит его через шлюз.
6.2 Модуль TTS-движка
6.2.1 Открытые возможности шлюза
a. Получить список зарегистрированных TTS-сервисов
:::советы
URL:
/open-api/V2/rest/tts/enginesМетод:
GETЗаголовок:
Content-Type: application/json
Authorization: Bearer ::: Параметры запроса: отсутствуют Корректный ответ с данными:
Атрибут
Тип
Необязательно
Описание
engines
EngineObject []
N
Список зарегистрированных TTS-движков
Структура EngineObject
Атрибут
Тип
Необязательно
Описание
id
string
N
Идентификатор движка, назначенный шлюзом
name
string
N
Название сервиса TS-движка
:::подсказка Условия: Параметры запроса корректны, проверка удостоверения пользователя пройдена. **Код состояния: **200 OK Пример ответа:: :::
b. Получить список аудио указанного TTS-движка
:::советы
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-движка
:::советы
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-сервиса
:::советы
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 | Идентификатор сообщения запроса, 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 | Идентификатор сообщения заголовка ответа, UUID_V4. Входящее здесь сообщение запроса: header.message_id | | version | string | N | Номер версии протокола запроса. В настоящее время фиксирован на 1 |
PayloadObject
Атрибут
Тип
Необязательно
Описание
engine_id
string
N
Идентификатор движка, назначенный шлюзом
:::подсказка Условия: Параметры запроса корректны, проверка удостоверения пользователя пройдена. **Код состояния: **200 OK Пример ответа:: ::: Пример корректного ответа::
**Параметры ненормального ответа: **
Атрибут
Тип
Необязательно
Описание
type
string
N
Тип ошибки
INVALID_PARAMETERS (Ошибка параметров)
AUTH_FAILURE (Ошибка аутентификации)
INTERNAL_ERROR (Внутренняя ошибка сервиса) | | description | string | N | Описание ошибки |
Пример ответа с ошибкой::
b. Команда синхронизации списка аудио
Отправка команды поставщику TTS-сервиса от шлюза.
:::советы
URL:
<service address>Метод:
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 | Идентификатор сообщения запроса, UUID_V4 | | version | string | N | Номер версии протокола запроса. В настоящее время фиксирован на 1 |
Пример запроса:
**Корректные параметры ответа: **
Атрибут
Тип
Необязательно
Описание
header
HeaderObject
N
Структура заголовка запроса
payload
PayloadObject
N
Структура payload в запросе
HeaderObject
Атрибут
Тип
Необязательно
Описание
name
string
N
Имя заголовка ответа. Необязательный параметр:
Ответ (Успешный ответ)
ErrorResponse (Ошибка ответа) | | message_id | string | N | Идентификатор сообщения заголовка ответа, UUID_V4. Входящее здесь сообщение запроса: 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-сервиса от шлюза.
:::советы
URL:
<service address>Метод:
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 | Идентификатор сообщения запроса: 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 | Идентификатор сообщения заголовка ответа, UUID_V4. Входящее здесь сообщение запроса: 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 Воспроизведение аудиофайла
:::советы
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-карты позволяют отображать любое содержимое внутри карты. Это содержимое может быть веб-страницей, изображением или любым сервисом с пользовательским интерфейсом. Вам нужно лишь предоставить URL содержимого, которое вы хотите отобразить. UI-карта автоматически подстроит ширину и высоту, а содержимое будет отображаться с помощью iFrame.
8.1 Инструкция
Ключевая роль
Поставщик UI-сервиса: Поставщик, отвечающий за создание пользовательских UI-карт на шлюзе.
Сервер шлюза: Сервер шлюза (iHost).
Клиент Gateway Open API: Клиент Open API для шлюза.
8.1.1 Создание пользовательской UI-карты
[Поставщик UI-сервиса]: Вызывает API для создания пользовательской UI-карты на шлюзе.
[Сервер шлюза]: После успешной регистрации шлюз сохраняет базовую информацию о UI-карте (включая конфигурацию размера и URL ресурса карты) и присваивает внутренний идентификатор 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-карты.
:::советы
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
Уникальный идентификатор UI-карты
:::советы Условия: Параметры запроса являются корректными, и проверка идентичности пользователя пройдена. **Код состояния: ** 200 OK ::: Пример запроса:
Пример ответа:
8.2.2 Получение списка UI-карт
:::советы
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-карты, которые они создали.
:::советы
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-карты, которые они создали.
:::советы
URL:
/open-api/v2/rest/ui/cards/{id}Метод:
DELETEЗаголовок:
Content-Type: application/json
Authorization: Bearer ::: Параметры запроса: отсутствуют Успешный ответ с данными: :::подсказка Условия: Параметры запроса корректны, проверка удостоверения пользователя пройдена. UI-карта, которую изменяют, должна быть создана поставщиком пользовательских UI-карт, вызывающим интерфейс. **Код состояния: **
200 OKКод ошибки:
406: Нет разрешения на доступ к этому ресурсу. ::: **Пример ответа: **
Последнее обновление