Esquema do Weave

Esquema do Weave

O esquema descreve o modelo de dados subjacente que gera a representação e interpretação dos dados emitidos por dispositivos lógicos ou físicos em um sistema do Weave.

O esquema é:

  • Padronizado: ele contém definições formalmente aprovadas de funcionalidade que oferecem uma interface consistente, independentemente da implementação. Por exemplo, uma lâmpada representada no esquema sempre terá funcionalidades básicas, como estados de ativação/desativação e ações ou níveis de escurecimento.
  • Função de composição: um usuário pode criar recursos complexos compostos por bits menores de funcionalidades bem definidas. Por exemplo, um Nest Detect contém dois tipos de sensores: movimento e de abertura/fechamento. A funcionalidade desses tipos de sensor é padronizada no esquema e reutilizável em vários dispositivos.
  • Extensível — Um usuário pode criar extensões personalizadas de funcionalidades padrão. Por exemplo, é possível ampliar a funcionalidade padrão do sensor de movimento do esquema com outras funcionalidades para um aplicativo de segurança específico.
  • Controle de versões: todas as mudanças no esquema têm controle de versões para compatibilidade com versões futuras e versões anteriores.

O esquema define três elementos: traços, interfaces e recursos. Quase toda a funcionalidade do ecossistema Nest para a operação diária é definida no esquema. Vamos analisar cada elemento em mais detalhes.

Características

Uma característica é uma unidade de funcionalidade básica. Podem ser estados ou recursos gerais do dispositivo ou descrever a configuração que informa o comportamento deles. Uma única característica pode ser comum a muitos dispositivos ou específica para um tipo de dispositivo.

Por exemplo, no esquema, você pode definir as seguintes características para uso em dispositivos Nest:

Característica

Interfaces

É possível estender as funções que podem ser compostas agrupando-as, principalmente se várias características representarem uma nova função específica. Esse grupo de características é chamado de interface .

Por exemplo, uma interface de intercomunicação pode abranger as características de alto-falante e microfone:

Características e interfaces

Recursos

Um de recurso representa uma coisa lógica ou física no esquema. Por exemplo, o Nest Protect é um recurso. Assim como o Nest Guard. Um usuário ou uma estrutura, como a página inicial do usuário.

Os recursos incluem um conjunto de características que encapsulam a configuração, o estado e a capacidade deles.

A relação entre recursos, interfaces e características tem esta aparência:

Recursos, interfaces e características

Como você pode ver, algumas características, como a característica de movimento, são comuns a diferentes recursos. Algumas interfaces, como a Intercom, também são comuns a recursos diferentes. Características, interfaces e recursos são definidos uma vez no esquema e reutilizados em diferentes recursos e dispositivos no sistema Weave.

Elementos de característica

As características são divididas em três elementos principais: propriedades, comandos e eventos. Vamos ver exemplos de cada elemento de característica.

Propriedades

As propriedades representam o estado de uma característica. As propriedades podem ser somente leitura ou gravação.

Exemplo:

  • A versão do software é uma propriedade da característica de identidade do dispositivo. É uma característica geral que a maioria dos dispositivos tem. Nest Thermostats, câmeras e proteções, todos têm a própria versão de software.
  • O estado de parafuso é uma propriedade da característica de bloqueio do Bolt, mas é específico para um dispositivo como o Yale x Nest Lock. Por exemplo, você não encontraria uma fechadura de fechadura em um Nest Thermostat.

Comandos

Os comandos são solicitações personalizadas de ações específicas para uma característica, com uma resposta esperada. Normalmente, eles são chamados de comandos personalizados e podem ser estendidos a mudanças de estado específicas nas propriedades. Exemplo:

  • Alteração de bloqueio é um comando personalizado que altera a propriedade do estado do Bolt do traço de bloqueio.
  • Definir código de usuário é um comando personalizado que cria um novo ou atualiza uma propriedade de código-fonte do usuário da característica "Configurações de códigos de usuário".

Eventos

Eventos são registros de acontecimentos de uma característica. Elas informam um assinante sobre mudanças nas propriedades da característica ou algum outro tipo de acontecimento, como uma redefinição do sistema.

Por exemplo, o evento Mudança de estado do Bolt Lock da característica de bloqueio de parafusos inscreve um assinante do estado atual de várias propriedades de bloqueio de parafusos, bem como o ator que causou a mudança da propriedade de estado do atuador de Bolt. Todas essas informações são entregues como um único evento.

Linguagem de descrição de esquema do Weave

As características, as interfaces e os recursos do esquema no Weave são definidos e descritos com uma linguagem específica de domínio (DSL, na sigla em inglês) que aproveita a sintaxe dos buffers de protocolo do Google v3. Esse idioma é chamado de Linguagem de descrição de esquema do Weave (WDL) .

A WDL é executada por meio de um compilador que gera diferentes realizações e codificações específicas da plataforma. O tipo de código gerado depende do recurso:

  • Objective-C, Swift, Java, Scala: apps para dispositivos móveis e serviços em nuvem
  • C++ com codificações TLV Weave: dispositivos incorporados e apps para dispositivos móveis

Vamos nos aprofundar nos exemplos de WDL mais tarde.

Recapitulação

O que você aprendeu:

  • O esquema descreve o modelo de dados subjacente para um sistema do Weave.
  • O esquema define três elementos:
    • Traço : uma unidade de funcionalidade básica
    • Interface Um grupo de características que representam uma nova função específica
    • Recurso : algo lógico ou físico
  • As características incluem propriedades, comandos e eventos:
    • Propriedade : o estado de uma característica de recurso
    • Comanda a solicitação personalizada para ação de uma característica
    • Evento Registro de acontecimentos de uma característica
  • O esquema é definido usando a linguagem de descrição de esquema Weave (WDL) , que é baseada nos buffers de protocolo v3 do Google

Para informações mais detalhadas, consulte: