Руководство для разработчиков и API

1. Начало использования

1.1 Подготовка

Шаг 1. Пожалуйста, убедитесь, что шлюз включен и работает правильно.

Шаг 2. Убедитесь, что шлюз и ПК подключены к одной локальной сети. Затем введите URL CUBE в вашем браузере.

Примечание: Если у вас несколько шлюзов, вы можете получить соответствующий IP-адрес для доступа к указанному шлюзу одним из двух способов, приведённых ниже.

  1. Войдите в ваш беспроводной маршрутизатор и проверьте IP-адрес шлюза в DHCP.

  2. 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"

Пояснение по битам:

  1. Бит 0: Разрешает просмотр этого элемента конфигурации

  2. Бит 1: Разрешает изменение этого элемента конфигурации | | type | string | N | Описывает тип данных значения элемента конфигурации. Допустимые значения:

  • "enum"

  • "numeric"

  • "object"

  • "boolean"

  • "string"

Руководство по типам:

  1. Когда **type = enum**:

    • Поле value (описание значения элемента конфигурации) обязательно, если permission разрешает изменение ("10" или "11").

    • Поле default (описание значения по умолчанию для элемента конфигурации) и values (описание выбираемых значений для элемента конфигурации) поля являются необязательными.

  2. Когда **type = numeric**:

    • Поле value поле обязательно, если permission разрешает изменение ("10" или "11").

    • Следующие поля являются необязательными:

      • min (описание минимального значения элемента конфигурации)

      • max (описание максимального значения элемента конфигурации)

      • step (описание шага для элемента конфигурации)

      • precision (описание точности)

      • unit (описание единицы измерения элемента конфигурации)

      • default (описание значения по умолчанию)

  3. Когда **type = object**:

    • Поле value поле обязательно, если permission разрешает изменение ("10" или "11").

    • Поле default поле является необязательным.

  4. Когда **type = boolean**:

    • Поле value поле обязательно, если permission разрешает изменение ("10" или "11").

    • Поле default поле является необязательным.

  5. Когда **type = string**:

    • Поле value поле обязательно, если permission разрешает изменение ("10" или "11").

    • Поле default поле является необязательным. |

3. Веб-API

Тип данных

Тип
Описание

string

Строковый тип данных. Кодировка UTF-8.

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://admin:[email protected]:554/streaming/channel01

Варианты схемы:

rtsp (Протокол потоковой передачи в реальном времени)

http (Протокол передачи гипертекста) — Для устройств ESP32-CAM

*Примечание: Некоторым камерам может не требоваться имя пользователя или пароль. В таких случаях вы можете опустить <username> и <password> поля из URL.

Успешный ответ с данными:

Атрибут

Тип

Необязательный

Описание

serial_number

string

N

Уникальный серийный номер устройства

:::tips Условия: Параметры запроса корректны, и проверка идентичности пользователя пройдена. **Код состояния: **200 OK ::: Пример ответа:

Ответ с данными об ошибке: пустой объект :::tips Условие

  1. Ошибка доступа к адресу потока камеры (ошибка формата, ошибка авторизации, сетевая ошибка и т.д.)

  2. Устройство уже существует

  3. Если добавление одного устройства не удалось, возвращается, что все устройства не удалось добавить.

Код состояния: 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 Инструкция по доступу

Доступ устройства

1.0.jpg

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

2.0.jpg

Шаги доступа

  1. Определите классификацию устройства в шлюзе. Подробности смотрите в [Supported Device Type].

  2. Определите возможности, к которым устройство может получить доступ. Подробности смотрите в [Supported Device Capabilities].

  3. Вызовите интерфейс [Discovery Request], чтобы добавить устройство в шлюз.

    1. Внимание: Вам необходимо предоставить адрес сервиса для получения инструкций, отправленных шлюзом, который используется для получения команд управления устройством, выданных шлюзом.

  4. Если состояние стороннего устройства изменится, вам нужно вызвать интерфейс [Device States Change Report], чтобы отправить шлюзу последнее состояние.

  5. После добавления стороннее устройство появится в списке устройств и будет иметь большинство функций шлюза (как и прочие устройства). Общие открытые интерфейсы, связанные с устройством, можно использовать нормально.

  • Выберите соответствующую категорию устройства. Классификация повлияет на итоговое отображение в интерфейсе после подключения устройства к шлюзу.

  • Выберите правильную возможность устройства. Список возможностей определит статус протокола состояния устройства.

Процесс программирования

a. Доступ устройства

3.0.jpg

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

4.0.jpg

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

Версия прошивки

service_address

string

N

Адрес сервиса. Например http://192.168.31.14/service_address

Пример запроса :

Параметры ответа: 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: Пустой объект Пример успешного ответа:

Шлюз отправляет интерфейс инструкции через адрес сервиса устройства

  • Примечание:

  1. Сторонним сервисам необходимо ответить на запрос шлюза в течение 3 с. В противном случае шлюз сочтёт обработку команды завершившейся по тайм-ауту.

  2. Если сервис третьей стороны офлайн, шлюз установит устройство в состояние оффлайн, и стороннему сервису потребуется сообщить состояние устройства (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

  1. 【Поставщик TTS-сервиса】Вызвать интерфейс для регистрации движка TTS на шлюзе.

  2. 【Сервер шлюза】После успешной регистрации шлюз сохранит базовую информацию о движке TTS (включая адрес сервиса server_address, и последующая связь между шлюзом и поставщиком TTS будет осуществляться через адрес server_address), и выделит ID сервиса движка TTS внутри шлюза.

image.png

6.1.2 Получение списка синтезированных аудиофайлов

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

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

image.png

6.1.3 Синтез речи с указанием движка синтеза

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

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

image.png

6.1.4 Синтезировать аудио и воспроизвести TTS-говорение.

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

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

  3. 【Клиент 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-карты внутри шлюза.

image.png

8.1.2 Получение списка UI-карт

  • [Поставщик UI-сервиса]: Вызывает API для получения списка UI-карт.

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

image.png

8.1.3 Изменение конфигурации указанной UI-карты

  • [Поставщик UI-сервиса]: Вызывает API для изменения конфигурации указанной UI-карты, такой как конфигурация размеров и URL ресурса.

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

image.png

8.1.4 Удаление пользовательской UI-карты

  1. [Поставщик UI-сервиса]: Вызывает API для удаления указанной пользовательской UI-карты.

  2. [Сервер шлюза]: Шлюз удалит всю информацию, связанную с указанной UI-картой.

image.png

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: Нет разрешения на доступ к этому ресурсу. ::: **Пример ответа: **

Последнее обновление