square-codeРазработчикам и руководство по 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 Категория отображения устройства и параметры (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"

Объяснение битов:

  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 расширенный формат): 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://admin:[email protected]:554/streaming/channel01

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

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

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

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

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

Атрибут

Тип

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

Описание

serial_number

string

N

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

:::советы Условия: Параметры запроса являются корректными, и проверка идентичности пользователя пройдена. **Код состояния: **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 💡Примечание: Пожалуйста, проверьте Примеры поддерживаемых возможностей устройства в разделе [Поддерживаемые возможности устройства].

Атрибут

Тип

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

Описание

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

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

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

Шаги доступа

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

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

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

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

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

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

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

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

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

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

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

service_address

string

N

Адрес сервиса. Например http://192.168.31.14/service_addressarrow-up-right

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

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

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

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

  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: Код клавиши пульта дистанционного управления не выучен |

:::советы Условия: Параметры запроса корректны. **Код состояния: **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_eventsarrow-up-right

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  2. [Сервер шлюза]: Шлюз удалит всю информацию, связанную с указанной 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: Нет разрешения на доступ к этому ресурсу. ::: **Пример ответа: **

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