Управление данными плетения

Теперь, когда вы понимаете основные компоненты Weave, давайте посмотрим, как некоторые из его функций обрабатываются на высоком уровне.

Почти все функции экосистемы Nest для повседневной работы отображаются на ресурсы и характеристики как часть схемы Weave. Профиль управления данными управляет всеми запросами характеристик с использованием модели публикации-подписки. Эти запросы представляют собой сообщения , относящиеся к профилю управления данными.

В модели этого типа издатель объявляет признаки (данные для просмотра), а подписчик реагирует на изменения в этих публикуемых признаках (отслеживаемые данные). Эта функция называется управлением чертами в реальном времени .

Профиль управления данными является рабочей лошадкой Weave и обычно называется Weave Data Management (WDM).

Запросы

Запросы являются ключевым элементом управления признаками WDM в реальном времени. Запросы — это стандартные запросы на действие черты с ожидаемым ответом. Они отличаются от команд признака тем, что они не определены и не могут быть определены в схеме и не являются специфическими для какого-либо признака.

Стандартные запросы бывают трех типов:

  • Уведомление о Стандартный запрос, который информирует подписчика о состоянии свойства признака или о конкретном событии, связанном с этим свойством.
  • Обновить Стандартный запрос на изменение состояния свойства типажа.
  • View Стандартный запрос для просмотра свойств признака.

Протокольные роли

Существует два типа ролей протокола WDM: издатель и подписчик. Эти роли назначаются на уровне черт.

Издатель

Роль издателя WDM создает и обслуживает экземпляры одной или нескольких схем с версиями для одного или нескольких подписчиков и отправляет уведомления об изменении схемы заинтересованным подписчикам. Эти уведомления являются стандартными запросами уведомлений .

Например, предположим, что свойство A опубликовано ресурсом 1 и подписано ресурсом 2. Как показано на рис. 1 , если свойство A изменится:

  1. WDM отправляет запрос на уведомление от 1 всем подписчикам Признака А, информируя их об изменении.
  2. Каждый подписчик соответствующим образом обновляет свой экземпляр признака А.
Запрос уведомления WDM Publisher
Рис. 1. Запросы издателя WDM

То же самое происходит и с другими признаками в схеме. Например, если Ресурс 2 публикует Черту B, Ресурс 1 подписывается на Черту B, и Черта B изменяется:

  1. WDM отправляет запрос уведомления от 2 всем подписчикам черты B, информируя их об изменении.
  2. Каждый подписчик соответствующим образом обновляет свой экземпляр черты B.

Подписчик

Роль подписчика WDM просматривает и использует версии одной или нескольких опубликованных извне схем. Он может изменить версионный экземпляр опубликованной схемы с помощью запроса на обновление или выполнить команду для конкретного приложения.

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

  1. WDM отправляет запрос на обновление с ресурса 2 на ресурс 1, чтобы запросить изменение свойства A.
  2. Черта A ресурса 1 изменена.
  3. WDM отправляет запрос на уведомление от 1 всем подписчикам Признака А, информируя их об изменении.
  4. Каждый подписчик соответствующим образом обновляет свой экземпляр признака А.
Просмотр и обновление подписчика WDM
Рисунок 2 – Запросы абонентов WDM

Подписчики также могут отправить запрос на просмотр признака, чтобы просмотреть свойств этого признака и синхронизировать свои экземпляры признаков с издателем.

Типы подписки

Существует два типа подписки WDM. Подписки устанавливаются с помощью запроса subscribe . На рис. 3 показан основной поток сообщений для установления односторонней подписки.

Односторонняя подписка WDM
Рис. 3. Односторонняя подписка WDM

В одну сторону

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

Взаимный

Взаимные подписки — это когда ресурсы подписываются друг на друга, и каждый из них действует как издатель и подписчик. Примером этого являются Nest Guard и Nest Detect, которые являются частью системы Nest Secure. Взаимная подписка позволяет обоим ресурсам управлять опубликованной схемой и поддерживать работоспособность и жизнеспособность своей подписки более эффективным способом, чем две односторонние подписки.

Пример

Давайте рассмотрим простой пример того, как WDM обрабатывает изменение языкового стандарта устройства с помощью мобильного приложения.

В этом примере задействованы три ресурса и два трейта, как показано на рис. 4 .

  • Устройство (абонент)
  • Сервис (издатель)
  • Мобильное приложение (подписчик)
  • Черта Locale Capabilities свойство Available Locales
  • Черта настроек локали свойство Active Locale

Обе черты публикуются ресурсом службы и подписываются ресурсами устройства и мобильного приложения. Каждый подписчик действует как односторонняя подписка на издателей признаков в ресурсе службы.

Все ресурсы в этом примере являются частью одной и той же ткани Weave.

Пример WDM
Рисунок 4 – Пример WDM

Поток обновлений

Допустим, пользователь использует свое мобильное приложение, чтобы изменить языковой стандарт для устройства с en_US на fr_FR , используя подключенное мобильное приложение. Как показано на рис. 5 , поток обновления в WDM выглядит следующим образом:

  1. Ресурс мобильного приложения (подписчик) отправляет запрос на обновление службы (издателю), чтобы изменить свойство Active Locale черты Locale Settings на fr_FR , одно из допустимых значений свойства Available Locales черты Locale Capabilities.
  2. Ресурс Service изменяет свойство Active Locale черты Locale Settings в своей копии схемы.
  3. Ресурс службы отправляет уведомления об изменении всем подписчикам черты Locale Settings.
  4. Ресурсы устройства и мобильного приложения (подписчики) получают уведомление о запросе службы и обновляют свойство Active Locale черты Locale Settings в своих копиях схемы.
Последовательность потока обновления WDM
Рис. 5. Процесс обновления WDM

Преимущества WDM

Это может показаться очень сложным, когда все, что вы хотите сделать, это изменить языковой стандарт на вашем устройстве из мобильного приложения. Но объединяя версионную схему, шаблон публикации-подписки и запросы в профиль WDM, Weave обеспечивает целостность данных во всех ресурсах.

Это также обеспечивает живучесть, поэтому при перезапуске устройства оно немедленно уведомляет всех подписчиков о состоянии своих опубликованных трейтов, наблюдает за состоянием подписанных трейтов и отражает все эти состояния в своей копии схемы без потери функциональности.

Помимо подписки

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

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

Резюме

Что вы узнали:

  • Управление данными Weave (WDM) — это профиль Weave для управления признаками в реальном времени, который обеспечивает живость и целостность данных во всех ресурсах.
  • Запросы — стандартные запросы на действие трейта с ожидаемым ответом
  • WDM имеет две роли протокола:
    • Издатель — источник правды для определенного признака, отправляет уведомления о
    • Подписчик — следит за опубликованной схемой, отправляет , update или command
  • WDM предлагает две модели подписки:
    • Односторонний — запросы передаются от подписчика к издателю.
    • Взаимная — устройства подписываются друг на друга
  • Подписки устанавливаются по запросам на подписку
  • Ресурсы могут отправлять WDM-сообщения трейтам, даже если они не подписаны на них.

Для получения более подробной информации см.: