Умный дом: часто задаваемые вопросы

Общий

В: Где и на каком языке следует внедрять нашу инфраструктуру обработки заказов между облачными сервисами?

A: Если ваша инфраструктура поддерживает современные протоколы SSL (TLS) и OAuth 2.0, вы можете использовать любую платформу и любой язык программирования по своему выбору. Мы рекомендуем развертывать инфраструктуру как можно ближе к остальной части вашей инфраструктуры, чтобы повысить надежность и уменьшить задержку при выполнении кода на устройствах реальных пользователей.


В: Должны ли идентификаторы устройств быть уникальными?

А: Идентификаторы должны быть уникальными. Если в вашем сервисе нет уникальных идентификаторов, они должны быть уникальными, по крайней мере, на уровне каждого пользователя. Представьте пользователя с несколькими домами, в обоих из которых есть интеграции с одним и тем же пользователем. Запрос на включение света в одном доме не должен включать свет с тем же идентификатором в другом доме.


В: Должны ли имена устройств быть уникальными?

А: Названия не обязательно должны быть уникальными, хотя со временем мы можем побудить пользователей улучшить неудачные названия после настройки для повышения удобства использования.

Вот краткое руководство по именованию:

  • Имена должны быть такими, которые люди действительно могут произнести вслух.
  • Мы распознаём подмножества строк, поэтому, если у вас есть «acme color light», мы также ответим «acme light».
  • Мы рекомендуем использовать как описательное название для продукта, так и одно или несколько названий, заданных пользователем.
  • Пользователям не нужно давать названия комнатам для освещения, потому что у нас есть комнаты для этого; у каждой комнаты должно быть уникальное название, но для управления всем можно использовать множественное число (например, две лампочки в офисных бра называются «северный свет» и «восточный свет», но ими можно управлять просто как «свет»).

В: Как часто обновляется состояние устройства?

A: Временное состояние извлекается либо при выполнении запроса (QUERY), либо при выполнении действия, инициированного пользователем. Если пользователь спрашивает: «Включен ли свет?» или хочет увеличить яркость света, нам потребуется выполнить запрос, чтобы определить текущее состояние.


В: Можно ли обновить Home Graph напрямую, используя текущее состояние устройства?

А: Да, используйте вызов API Report State .


Связывание учетных записей и OAut

А: Да, для подключения устройств пользователя к облачным сервисам провайдера требуется привязка учетной записи.


В: В OAuth срок действия токенов доступа истекает каждые 15,213 часов, это нормально?

А: Да, но, пожалуйста, протестируйте с достаточно коротким сроком действия, скажем, 10-20 минут. Наш OAuth-клиент должен обновлять токены по мере необходимости, и тестирование с коротким сроком действия подтвердит, что это работает.


Намерения

В: Когда происходит синхронизация?

A: Синхронизация происходит сразу после завершения аутентификации OAuth и после выполнения вызова Request Sync .


В: Почему не работает SYNC ?

А: Существует ряд распространенных причин, по которым это может не сработать.

  • Вы отправляете не те типы устройств.

    • Например, мы ожидаем action.devices.types.LIGHT , а вы отправляете action.devices.types.Light .
  • Вы отправляете неподдерживаемые типы устройств.

    • Например, вы отправляете action.devices.types.FLASHLIGHT — мы это не поддерживаем.
  • Вы отправляете недопустимые/неподдерживаемые поля.

    • Например, у вас есть поле, которое не включено в нашу спецификацию.
  • В вашем ответе от SYNC обнаружена еще одна проблема с форматированием.

    • Проверьте свои скобы!
  • У вас возникла проблема с привязкой учетной записи.

    • Пожалуйста, убедитесь, что в заголовке Auth запроса SYNC вы получаете действительный токен доступа.
  • Вы слишком долго отвечаете на запрос синхронизации.

    • Пожалуйста, убедитесь, что вы отвечаете на запрос синхронизации в течение 5 секунд.

В: Допустим ли ответ в статусе «ожидает подтверждения»?

A: Мы бы настоятельно рекомендовали получать ответ с подтверждением успеха/неудачи, а не в режиме ожидания, если ваши устройства доступны в режиме реального времени. Пожалуйста, свяжитесь с нами, если вы считаете, что вам необходим ответ в режиме ожидания — мы понимаем, что некоторым маломощным устройствам, не работающим в режиме реального времени, может потребоваться ответ в режиме ожидания и асинхронная модель выполнения.


Тестирование и отправка

В: Можно ли настроить облачную среду для разработки?

А: Да, вы можете протестировать незапущенную облачную среду и ее конфигурацию.


В: Мое действие не отображается в разделе «Управление умным домом» приложения Google Home. В чем причина?

А: Подтвердите, что вы являетесь разработчиком этого проекта.


Сообщить о штате

В: Существуют ли какие-либо предварительные условия для внедрения функции «Отчет о состоянии»?

A: Проект должен использовать API Smart Home, поддерживать OAuth2 и иметь характеристики, которые должны передавать информацию о состоянии.


В: Как часто необходимо сообщать о состоянии устройства?

А: Google интересует как переход между состояниями, так и конечное состояние. Однако, если за короткий промежуток времени происходит много изменений состояния (например, пользователь открывает и закрывает холодильник три раза в минуту или регулирует яркость диммера), то нам нужно сообщать только о конечном состоянии.


В: Нужно ли передавать полное состояние устройства при выполнении вызовов функции Report State?

A: Частичное обновление состояния не поддерживается, поэтому вызовы функции Report State всегда должны включать все данные для конкретного обновленного параметра. Если обновление двух параметров приведет к несоответствию, данные следует сообщать вместе.


В: Может ли Google запрашивать информацию о состоянии моего устройства (то есть, опрашивать устройство)?

A: Это резервный механизм, который мы не рекомендуем. Если нам потребуется часто опрашивать устройство для этих пользователей, мы не можем гарантировать, какой будет дополнительная нагрузка. Необходимость в этом возникает из-за новых визуальных интерфейсов. Помимо проблемы с неизвестной нагрузкой, это приведет к ухудшению пользовательского опыта. Мы считаем, что Report State имеет решающее значение для платформы.


В: Какие характеристики сейчас поддерживают функцию «Состояние отчета»?

A: Поддерживаются все общедоступные характеристики, имеющие связанные с ними состояния. Любые изменения в состоянии устройства (в сети) также должны быть зарегистрированы.

Обратите внимание, что сцены не имеют состояний. Однако они могут привести к изменению состояния устройства (или устройств). Если какое-либо устройство в Google Home Graph изменило свое состояние, об этом необходимо сообщить.


В: Требуется ли для отчета State указывать отметку времени?

А: Нам не требуется метка времени; последнее отправленное состояние будет иметь приоритет над предыдущими вызовами.


В: Нужно ли мне сообщать о состоянии отдельно, если я уже отправляю состояние в запросах и/или при выполнении?

A: Home Graph хранит только то состояние, которое передается через Report State . Состояние, возвращаемое в ответ на интенты EXECUTE и QUERY, используется только для голосовых ответов пользователю и не сохраняется. Поэтому Report State следует вызывать даже в том случае, если новое состояние устройства уже было возвращено в ответ на интент EXECUTE или QUERY.


В: Какие последствия будут иметь неполные результаты внедрения системы Report State в установленные сроки?

A: Это приведет к ухудшению пользовательского опыта, например, в Google Home app (GHA) и визуальных интерфейсах. Это означает, что множество запросов QUERY будут отправляться для проверки состояния, и мы не можем гарантировать, что это будет соответствовать дополнительной нагрузке на облако партнера.


В: Как я могу протестировать нашу реализацию функции «Отчет о состоянии»?

A: Воспользуйтесь Home Graph Viewer — инструментом самообслуживания для тестирования, который отображает текущее состояние ваших устройств, хранящееся в Home Graph .


В: Можно ли использовать случайный requestId для состояния отчета?

A: Мы рекомендуем партнерам использовать тот же requestId, который они получили из запроса EXECUTE, если Report State запускается этим запросом. В противном случае вы можете просто использовать случайный requestId.


В: Если у пользователя несколько устройств, и состояние одного из них изменилось, нужно ли сообщать о последнем состоянии всех устройств?

А: Нет. Вам нужно сообщить только о состоянии конкретного устройства.


Передовые методы

В: Какая задержка считается допустимой?

A: Идеальный показатель — менее 1000 мс, от 2 до 5 секунд — нормально. Если задержка составляет около 5 секунд, свяжитесь с нами.


В: Как сделать так, чтобы мой голосовой динамик корректно реагировал, когда он не подключен к сети?

A: Возвращает состояние "офлайн" для устройств, находящихся в автономном режиме. В этом случае мы возвращаем "недоступно в данный момент" в качестве TTS (текста речи). Для получения дополнительной информации см. раздел "Ошибки и исключения" .