Gerenciamento de dados do Weave

Agora que você entende os principais componentes do Weave, vamos ver como uma parte das funcionalidades dele é processada de forma mais detalhada.

Quase todas as funcionalidades do ecossistema Nest para operação diária são mapeadas para recursos e características como parte do esquema do Weave. O perfil de gerenciamento de dados gerencia todas as solicitações de características usando um modelo de publicação-assinatura. Essas solicitações são mensagens específicas do perfil de gerenciamento de dados.

Nesse tipo de modelo, um editor anuncia as características (dados a serem observados) e um assinante reage às alterações nessas características (dados em observação). Essa função é chamada de gerenciamento de traços em tempo real.

O perfil de gerenciamento de dados é o cavalo de trabalho do Weave e geralmente é chamado de gerenciamento de dados do Weave (WDM).

Pedidos

As solicitações são um elemento principal do gerenciamento de traços em tempo real do WDM. As solicitações são solicitações padrão de ação de uma característica, com uma resposta esperada. Eles são diferentes dos comandos de uma característica, já que não são e não podem ser definidos no esquema e não são específicos de qualquer característica.

Há três tipos de solicitações padrão:

  • Notificar a solicitação padrão que informa um assinante do estado de uma propriedade de característica ou de um evento específico relacionado a essa característica.
  • Atualize a solicitação padrão para alterar o estado de uma propriedade de característica.
  • Visualizar a solicitação padrão para ver as propriedades de uma característica.

Papéis do protocolo

Há dois tipos de papéis de protocolo WDM: editor e assinante. Esses papéis são atribuídos no nível de característica.

Editor

O papel editor do WDM produz e disponibiliza instâncias com controle de versão de um ou mais esquemas para um ou mais assinantes e envia notificações sobre uma alteração no esquema para assinantes interessados. Essas notificações são as solicitações padrão de notificação.

Por exemplo, suponha que o Traje A seja publicado pelo Recurso 1 e inscrito pelo Recurso 2. Como mostrado na Figura 1, se o Traje A mudar:

  1. O WDM envia uma solicitação notifique do recurso 1 a todos os assinantes do característica A, informando sobre a mudança.
  2. Cada assinante atualiza a própria instância do Traço A.
Solicitação de notificação do editor WDM
Figura 1: solicitações do editor para WDM

O mesmo acontece com outras características do esquema. Por exemplo, se o Recurso 2 publicar o Traço B, o Recurso 1 se inscrever no Traço B e o Trato B mudar:

  1. O WDM envia uma solicitação notify do do recurso 2 para todos os assinantes do Trait B, informando-os sobre a mudança.
  2. Cada assinante atualiza a própria instância do Traço B.

Assinante

O papel de inscrito do WDM visualiza e consome instâncias com versão de um ou mais esquemas publicados externamente. Ele pode alterar a instância com controle de versão de um esquema publicado com uma solicitação de atualização ou emitir um comando específico do aplicativo.

Por exemplo, suponha que o Recurso 2 queira alterar o Traje A, que foi publicado pelo Recurso 1. Como mostrado na Figura 2, para alterar o Traço A:

  1. O WDM envia uma solicitação de atualização do Recurso 2 para o Recurso 1 para solicitar uma alteração no Traço A.
  2. A característica A no Recurso 1 foi alterada.
  3. O WDM envia uma solicitação notifique do recurso 1 a todos os assinantes do característica A, informando sobre a mudança.
  4. Cada assinante atualiza a própria instância do Traço A.
Visualização e atualização de inscritos no WDM
Figura 2: solicitações de inscrição no WDM

Os assinantes também podem enviar uma solicitação de visualização a um editor de características para ver as propriedades dessa característica e manter as próprias instâncias das características sincronizadas com o editor.

Tipos de assinatura

Há dois tipos de assinaturas WDM. As assinaturas são estabelecidas com uma solicitação subscribe. A Figura 3 ilustra o fluxo básico de mensagens para estabelecer uma assinatura de mão única.

Assinatura unidirecional de WDM
Figura 3: assinatura unidirecional de WDM

Viagem só de ida

As assinaturas de mão única envolvem uma solicitação de um assinante para um editor em uma ou mais instâncias de característica. Por exemplo, um dispositivo móvel que recupera o estado da casa (estrutura) de um serviço.

Mútuo

As assinaturas mútuas são quando os recursos são assinados entre si e cada um atua como editor e assinante. Um exemplo disso é o Nest Guard e o Nest Detect, que fazem parte do sistema Nest Secure. Uma assinatura mútua permite que os dois recursos gerenciem o esquema publicado e mantenham a integridade e a atividade da assinatura de maneira mais eficiente do que duas assinaturas unidirecionais.

Exemplo

Vejamos um exemplo simples de como o WDM processa uma alteração na localidade de um dispositivo usando um aplicativo para dispositivos móveis.

Há três recursos e duas características envolvidas neste exemplo, como mostrado na Figura 4:

  • Dispositivo (inscrito)
  • Serviço do (editor)
  • App para dispositivos móveis (assinante)
  • Características dos recursos da localidade Propriedade disponível
  • Característica da configuração de localidade Propriedade ativa da localidade

Os dois atributos são publicados pelo recurso de serviço e assinados pelos recursos do dispositivo e do app para dispositivos móveis. Cada assinante funciona como uma assinatura unidirecional para os editores de características no recurso de serviço.

Todos os recursos neste exemplo fazem parte da mesma malha Weave .

Exemplo de WDM
Figura 4: exemplo de WDM

Fluxo de atualização

Digamos que o usuário use o app para dispositivos móveis dele para alterar a localidade do dispositivo de en_US para fr_FR, usando um app para dispositivos móveis conectado. Conforme mostrado na Figura 5, o fluxo de atualização no WDM é:

  1. O recurso do app para dispositivos móveis (assinante) envia uma solicitação update ao recurso de serviço (editor) para alterar a propriedade da localidade ativa da característica de configurações de localidade para fr_FR, um dos valores válidos da propriedade de localidades disponível da característica de localidades.
  2. O recurso "Serviço" altera a propriedade "Localidade ativa" da característica "Configurações de localidade" na cópia do esquema.
  3. O recurso Serviço envia uma solicitação notify sobre a mudança para qualquer inscrito no traço das configurações de localidade.
  4. Os recursos do dispositivo e do app para dispositivos móveis (assinantes) recebem a solicitação de notificaçãode serviço e atualizam a propriedade da localidade ativa da característica das configurações de localidade nas cópias delas do esquema.
Sequência de fluxo de atualização do WDM
Figura 5: fluxo de atualização do WDM

Os benefícios do WDM

Isso pode parecer muito complicado quando tudo o que você quer fazer é mudar a localidade no seu dispositivo a partir de um app para dispositivos móveis. Mas, encapsulando o esquema com controle de versões, o padrão publicar-inscrever e as solicitações no perfil WDM, o Weave garante a integridade dos dados em todos os recursos.

Isso também garante a atividade. Assim, quando um dispositivo é reiniciado, ele notifica imediatamente todos os inscritos do estado dos traços publicados, observa o estado dos traços inscritos e reflete todos eles na cópia do esquema sem perda de funcionalidade.

Além das assinaturas

Se um recurso cancelar a inscrição de uma característica, ela manterá uma cópia da última versão conhecida. O editor não recebe mais solicitaçõesde notificação dessa característica, mas ainda pode enviar solicitações de atualização para ele.

Mesmo recursos que nunca foram inscritos em um editor de característica podem enviar solicitações para eles. Por exemplo, um recurso pode não precisar saber o estado de uma característica, mas pode enviar solicitações de atualização para mudar o estado dessa característica em resposta a um evento externo.

Resumo

O que você aprendeu:

  • Gerenciamento de dados do Weave (WDM, na sigla em inglês) é o perfil do Weave para gerenciamento de traços em tempo real e garante atividade e integridade dos dados em todos os recursos.
  • As solicitações são solicitações padrão para a ação de uma característica, com uma resposta esperada.
  • O WDM apresenta dois papéis de protocolo:
    • Editor: a fonte da verdade para uma característica específica, envia solicitações notify .
    • Assinante: observa o esquema publicado, envia solicitações view , update ou command
  • O WDM apresenta dois modelos de assinatura:
    • Mão única — as solicitações passam do assinante para o editor
    • Mútuo: os dispositivos são assinados entre si
  • As assinaturas são estabelecidas por solicitações de subscribe
  • Os recursos podem enviar mensagens WDM para traços, mesmo que não estejam inscritos para eles.

Para informações mais detalhadas, consulte estes links: