Схема переплетения

Схема переплетения

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

Схема:

  • Стандартизированный — содержит официально утвержденные определения функциональных возможностей, которые обеспечивают согласованный интерфейс независимо от реализации. Например, лампочка, представленная на схеме, всегда будет иметь основные функции, такие как состояния включения/выключения и действия или уровни затемнения.
  • Компонуемый — пользователь может создавать сложные ресурсы, состоящие из более мелких фрагментов четко определенной функциональности. Например, Nest Detect содержит два типа датчиков: движение и открытие/закрытие. Функциональность для этих типов датчиков стандартизирована в схеме и может использоваться повторно на разных устройствах.
  • Расширяемый — пользователь может создавать собственные расширения стандартной функциональности. Например, вы можете захотеть расширить стандартную функциональность датчика движения схемы дополнительными функциями для конкретного приложения безопасности.
  • Версии — все изменения в схеме имеют версии для прямой и обратной совместимости.

Схема определяет три элемента: признаки, интерфейсы и ресурсы. Почти все функции экосистемы Nest для повседневной работы определены в схеме. Давайте рассмотрим каждый элемент более подробно.

Черты

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

Например, в схеме вы можете определить следующие признаки для использования в устройствах Nest:

Черта характера

Интерфейсы

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

Например, интерфейс Интеркома может содержать характеристики «Динамик» и «Микрофон»:

Черты и интерфейсы

Ресурсы

Ресурс представляет собой логическую или физическую вещь в схеме. Например, Nest Protect — это ресурс. Как и Nest Guard. Либо пользователя, либо такую ​​структуру, как дом пользователя.

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

Отношения между ресурсами, интерфейсами и трейтами выглядят следующим образом:

Ресурсы, интерфейсы и черты

Как видите, некоторые черты, например черта «Движение», являются общими для разных ресурсов. А некоторые интерфейсы, например интерфейс Интеркома, также являются общими для разных ресурсов. Черты, интерфейсы и ресурсы определяются один раз в схеме и повторно используются в разных ресурсах и устройствах в системе Weave.

Элементы черт

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

Характеристики

Свойства представляют состояние признака. Свойства доступны либо для чтения-записи, либо только для чтения.

Например:

  • Версия программного обеспечения — это свойство признака удостоверения устройства. Это общая черта, которая есть у большинства устройств. Nest Thermostats, Cameras и Protects — все они имеют свою собственную версию программного обеспечения.
  • Состояние болта — это свойство черты Bolt Lock, но оно характерно для таких устройств, как Yale x Nest Lock. Например, вы не найдете болтового замка на термостате Nest.

Команды

Команды — это настраиваемые запросы на действие черты с ожидаемым ответом. Их обычно называют пользовательскими командами, и их можно расширить для конкретных изменений состояния свойств. Например:

  • Bolt Lock Change — это пользовательская команда, которая изменяет свойство Bolt State свойства Bolt Lock.
  • Установить пользовательский PIN-код — это настраиваемая команда, которая создает новое или обновляет существующее свойство Пользовательский пин-код черты Настройки пользовательских пин-кодов.

События

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

Например, событие Bolt Actuator State Change свойства Bolt Lock информирует подписчика о текущем состоянии нескольких свойств Bolt Lock, а также о действующем действии, которое последним вызвало изменение свойства Bolt Actuator State. Вся эта информация предоставляется как одно событие.

Язык описания схемы Weave

Черты схемы, интерфейсы и ресурсы в Weave определяются и описываются с использованием доменно-ориентированного языка (DSL), который использует синтаксис Google Protocol Buffers v3. Этот язык называется Weave Schema Description Language (WDL) .

WDL запускается через компилятор, который генерирует различные реализации и кодировки для конкретных платформ. Тип сгенерированного кода зависит от ресурса:

  • Objective-C, Swift, Java, Scala — мобильные приложения и облачные сервисы
  • C++ с кодировками Weave TLV — встроенные устройства и мобильные приложения

Позже мы углубимся в примеры WDL.

Резюме

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

  • Схема описывает базовую модель данных для системы Weave.
  • Схема определяет три элемента:
    • черты Единица базовой функциональности
    • Interface Группа трейтов, представляющих новую конкретную функцию.
    • Ресурс Логическая или физическая вещь
  • Черты включают в себя свойства, команды и события:
    • свойства Состояние признака ресурса
    • Команды Пользовательский запрос действия черты
    • Event Запись событий для признака
  • Схема определяется с использованием Weave Schema Description Language (WDL), которое основано на Google Protocol Buffers v3.

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