O Google tem o compromisso de promover a igualdade racial para as comunidades negras. Saiba como.

Esquema de trama

Esquema de trama

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

O esquema é:

  • Padronizado - contém definições formalmente aprovadas de funcionalidade que fornecem uma interface consistente, independentemente da implementação. Por exemplo, uma lâmpada representada no esquema sempre terá funcionalidades essenciais, como estados e ações liga / desliga ou níveis de escurecimento.
  • Composable - um usuário pode criar recursos complexos compostos de bits menores de funcionalidade bem definida. Por exemplo, um Nest Detect contém dois tipos de sensores: movimento e abrir / fechar. A funcionalidade para esses tipos de sensor é padronizada no esquema e reutilizável em vários dispositivos.
  • Extensível - um usuário pode criar extensões personalizadas de funcionalidade padrão. Por exemplo, você pode desejar estender a funcionalidade de sensor de movimento padrão do esquema com funcionalidade adicional para um aplicativo de segurança específico.
  • Versão - todas as mudanças no esquema são criadas para compatibilidade com versões anteriores e posteriores.

O esquema define três elementos: características, interfaces e recursos. Quase todas as funcionalidades do ecossistema Nest para operação diária são definidas no esquema. Vamos examinar cada elemento com mais detalhes.

Características

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

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

Característica

Interfaces

Podemos estender a composição de características agrupando-as, particularmente se múltiplas características representam uma função nova e específica. Grupo tal de traços é chamado uma interface .

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

Traços e interfaces

Recursos

Um recurso representa uma coisa lógica ou física no esquema. Por exemplo, um Nest Protect é um recurso. O Nest Guard também. Ou um usuário, ou uma estrutura como a casa do usuário.

Os recursos compreendem um conjunto de características que encapsulam sua configuração, estado e capacidade.

A relação entre recursos, interfaces e características é assim:

Recursos, interfaces e características

Como você pode ver, alguns traços, como o traço Movimento, são comuns a diferentes recursos. E algumas interfaces, como a interface Intercom, também são comuns a diferentes recursos. Traços, interfaces e recursos são definidos uma vez no esquema e reutilizados em diferentes recursos e dispositivos no sistema Weave.

Elementos de traço

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

Propriedades

Propriedades representar o estado de um traço. As propriedades são de leitura e gravação ou somente leitura.

Por exemplo:

  • Versão de Software é uma propriedade do traço identidade do dispositivo. É uma característica geral que a maioria dos dispositivos possui. Termostatos, câmeras e proteções Nest - todos eles têm sua própria versão de software específica.
  • Estado Bolt é uma propriedade do traço trinco, mas é específico para um dispositivo como o Yale x Nest Lock. Você não encontraria uma trava de parafuso em um Nest Thermostat, por exemplo.

Comandos

Comandos são pedidos feitos sob encomenda específicos de traço para a ação de uma característica, com uma resposta esperada. Eles são comumente chamados de comandos personalizados e pode ser estendido para as mudanças de estado específicas para propriedades. Por exemplo:

  • Trinco A mudança é um comando personalizado que altera a propriedade Estado parafuso do traço trinco.
  • Set User Pincode é um comando personalizado que cria um novo ou atualiza um usuário Pincode propriedade existente do usuário Configurações pincodes traço.

Eventos

Eventos são registros de acontecimentos para um traço. Eles informam um assinante sobre mudanças nas propriedades do traço ou algum outro tipo de acontecimento, como uma reinicialização do sistema.

Por exemplo, o evento de Bolt atuador Estado Mudança dos informa traço parafuso de bloqueio um assinante do estado atual de múltiplas propriedades parafuso de bloqueio, assim como o ator que passado causou a propriedade Parafuso atuador Estado para a mudança. Todas essas informações são fornecidas como um único evento.

Linguagem de descrição do esquema Weave

Os traços, interfaces e recursos do esquema no Weave são definidos e descritos usando uma linguagem específica de domínio (DSL) que aproveita a sintaxe do Google Protocol Buffers v3. Esta linguagem é chamado Weave Schema Description Language (WDL) .

O WDL é executado 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 - aplicativos móveis e serviços em nuvem
  • C ++ com codificações Weave TLV - dispositivos incorporados e aplicativos móveis

Vamos nos aprofundar nos exemplos de WDL mais tarde.

Recapitular

O que você aprendeu:

  • O esquema descreve o modelo de dados subjacente para um sistema 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ífico
    • Resource A coisa lógica ou física
  • As características incluem propriedades, comandos e eventos:
    • Propriedade O estado de um traço de recursos
    • Comandos Pedido feito sob encomenda para a ação de um traço
    • Evento registro de acontecimentos para um traço
  • O esquema é definido utilizando Weave Schema Description Language (WDL) , que é baseado no Google Protocol Buffers v3

Para obter informações mais detalhadas, consulte: