#google-cloud-firestore #actions-on-google #google-smart-home
#google-cloud-firestore #действия в Google #google-умный дом
Вопрос:
Я новичок в мире умного дома и пытаюсь реализовать решение для умного дома с помощью Google App Engine и Firestore для моего облачного сервиса. Я успешно интегрировал свои устройства и решение для умного дома и смог обновить состояние устройства с помощью Google Assistant и Google Home. После долгого чтения получил отчет HomeGraph ReportState, также реализованный через REST, который выполняется во время выполнения и при изменении состояния устройства за пределами Google Home (пользователь изменяет скорость вращения вентилятора).
Теперь проблема в том, что при выполнении Execute API база данных Firestore обновляется с помощью API и вызывается состояние отчета homegraph, и, следовательно, данные синхронизируются между ними (оба ответа на запрос совпадают). Однако, когда состояние отчета home graph вызывается вне системы Smarthome для обновления изменений, внесенных пользователем, данные не синхронизированы. Home Graph имеет последние обновления, но Firestore имеет последнее обновленное состояние, выполненное Google Assistant.
Как синхронизировать облачные сервисы HomeGraph и Smart Home, при этом HomeGraph имеет точные данные.
Ответ №1:
Есть два способа обеспечить синхронизацию данных как между Home Graph, так и между вашим сервисом. Одним из способов является изменение изменений состояния, отличных от Google Home, чтобы они по-прежнему проходили через ваш сервис. Это может быть новая промежуточная конечная точка, которую вы вызываете, которая обновит вашу базу данных перед обновлением Home Graph, гарантируя, что у вас есть изменения состояния.
В качестве альтернативы вы можете использовать вызов API запроса Home Graph, который вернет состояния устройств из вашего сервиса в соответствии с Home Graph. Вам нужно будет вызвать это вручную, поскольку нет способа подписаться на изменения.
Комментарии:
1. Спасибо за ваш ответ. Я склоняюсь к первому способу, который вы упомянули. Я надеялся, что существует автоматический процесс синхронизации между Home Graph и облачными сервисами приложений Smart home, поскольку любые изменения физических состояний обновляются в home graph, но приложение Smart home не обращает внимания. Единственное предостережение заключается в том, что мне нужно создать конечную точку на уровне облачной службы и выполнить операцию «Выполнить» с моей стороны, вместо того, чтобы это делал Google assistant.
2. Но все еще не ясно, какой смысл обновлять HomeGraph, если он не собирается обновлять мой облачный сервис. Когда Google Assistant запрашивает состояние устройства, он по-прежнему выполняет намерение «ЗАПРОСИТЬ» облачную службу «Мой умный дом» и возвращает устаревшие данные. Я мог бы также обновить свой облачный сервис при изменении состояния вместо HomeGraph.
3. Здесь есть немного перспективный аспект. Мы работаем над переносом сервисов на доверительные данные HomeGraph вместо отправки дополнительных намерений ЗАПРОСА, когда это возможно. Это еще не полностью реализовано, но позволит сократить трафик на ваш сервис, если вы будете поддерживать HomeGraph в актуальном состоянии.
4. Это имеет смысл, поскольку на данный момент, если мы не обновим HomeGraph, это не окажет большого влияния, но в перспективе будущего, когда HomeGraph будет обрабатывать свою долю запросов, это может уменьшить трафик на сервисах. Спасибо за разъяснение