스키마는 Weave 시스템의 논리적 또는 실제 기기에서 내보낸 데이터의 표현 및 해석을 유도하는 기본 데이터 모델을 설명합니다.
스키마는 다음과 같습니다.
- 표준화 — 구현에 관계없이 일관된 인터페이스를 제공하는 기능의 공식 승인된 정의가 포함되어 있습니다. 예를 들어 스키마에 표시되는 전구에는 항상 켜기/끄기 상태, 작업 또는 어둡게 하기 수준과 같은 핵심 기능이 있습니다.
- 구성 가능 — 사용자는 잘 정의된 작은 기능들로 구성된 복잡한 리소스를 만들 수 있습니다. 예를 들어 Nest Detect에는 움직임 감지 센서와 Open/Close라는 두 가지 유형의 센서가 포함되어 있습니다. 이러한 센서 유형의 기능은 스키마에서 표준화되어 여러 기기에서 재사용할 수 있습니다.
- 확장성 - 사용자는 표준 기능의 맞춤 확장 프로그램을 만들 수 있습니다. 예를 들어 스키마의 표준 움직임 감지 센서 기능을 특정 보안 애플리케이션을 위한 추가 기능으로 확장할 수 있습니다.
- 버전 관리 - 스키마의 모든 변경사항은 하위 호환성 및 하위 호환성을 위해 버전이 지정됩니다.
스키마는 특성, 인터페이스, 리소스의 세 가지 요소를 정의합니다. 일상적인 작업을 위한 Nest 생태계의 거의 모든 기능이 스키마에 정의되어 있습니다. 각 요소를 보다 자세히 살펴보겠습니다.
특성
특성
는 기본 기능의 단위입니다. 일반적인 기기 상태 또는 기능이거나 동작을 알리는 구성을 설명할 수 있습니다. 단일 특성은 여러 기기에 공통될 수도 있고 한 유형의 기기에만 있을 수도 있습니다.예를 들어 스키마에서 Nest 기기에 사용할 다음 특성을 정의할 수 있습니다.
인터페이스
특히 여러 개의 특성이 새로운 특정 함수를 나타내는 경우 특성의 그룹화를 통해 특성의 구성 가능성을 확장할 수 있습니다. 이러한 특성 그룹을 인터페이스
라고 합니다.예를 들어 Intercom 인터페이스는 스피커 및 마이크 특성으로 구성될 수 있습니다.
자료
리소스
는 스키마의 논리적 또는 실제 항목을 나타냅니다. 예를 들어 Nest Protect는 리소스입니다. Nest Guard도 마찬가지입니다. 사용자 또는 집과 같은 구조일 수 있습니다.리소스는 구성, 상태, 기능을 캡슐화하는 특성으로 구성됩니다.
리소스, 인터페이스, 특성의 관계는 다음과 같습니다.
보시다시피 Motion 특성과 같은 일부 특성은 여러 리소스에 공통으로 적용됩니다. Intercom 인터페이스와 같은 일부 인터페이스도 다른 리소스에 공통으로 사용됩니다. 특성, 인터페이스, 리소스는 스키마에서 한 번 정의되며 Weave 시스템의 다양한 리소스와 기기에서 재사용됩니다.
특성 요소
특성은 속성, 명령어, 이벤트라는 세 가지 기본 요소로 더 세분화됩니다. 각 특성 요소의 예를 살펴보겠습니다.
속성
속성
은 특성의 상태를 나타냅니다. 속성은 읽기-쓰기 또는 읽기 전용입니다.예를 들면 다음과 같습니다.
- 소프트웨어 버전은 기기 ID 특성의 속성입니다. 이는 대부분의 기기에 있는 일반적인 특성입니다. Nest Thermostat, 카메라, Protect에는 각각 고유한 소프트웨어 버전이 있습니다.
- 볼트 상태는 볼트 잠금 특성의 속성이지만 Yale x Nest Lock과 같은 기기에만 적용됩니다. 예를 들어 Nest 온도 조절기에는 볼트 잠금 장치가 없습니다.
명령어
명령어
는 특성에 대한 특성별 커스텀 작업 요청이며 예상 응답이 있습니다. 일반적으로 커스텀 명령어라고 하며 속성의 특정 상태 변경으로 확장될 수 있습니다. 예를 들면 다음과 같습니다.- 볼트 잠금 변경은 볼트 잠금 특성의 볼트 상태 속성을 변경하는 맞춤 명령어입니다.
- 사용자 핀코드 설정은 사용자 핀코드 설정 특성의 새 사용자 핀코드 속성을 만들거나 기존 사용자 핀코드 속성을 업데이트하는 맞춤 명령어입니다.
이벤트
이벤트
는 특성의 발생 기록입니다. 특성의 변경사항 또는 시스템 재설정과 같은 다른 유형의 발생하는 변경사항을 구독자에게 알립니다.예를 들어, 볼트 잠금 특성의 볼트 액추에이터 상태 변경 이벤트는 볼트 액추에이터 상태 속성의 변경을 마지막으로 수행한 배우는 물론 여러 볼트 잠금 속성의 현재 상태를 구독자에게 알립니다. 이 모든 정보는 단일 이벤트로 전송됩니다.
Weave 스키마 설명 언어
Weave의 스키마 특성, 인터페이스, 리소스는 Google 프로토콜 버퍼 v3의 문법을 활용하는 도메인별 언어 (DSL)를 사용하여 정의하고 설명합니다. 이 언어를 Weave Schema Description Language (WDL)
라고 합니다.WDL은 다양한 플랫폼별 인식 및 인코딩을 생성하는 컴파일러를 통해 실행됩니다. 생성되는 코드 유형은 리소스에 따라 다릅니다.
- Objective-C, Swift, 자바, Scala — 모바일 앱 및 클라우드 서비스
- Weave TLV 인코딩을 사용하는 C++ - 임베디드 기기 및 모바일 앱
WDL 예에 대해서는 나중에 더 자세히 살펴보겠습니다.
요약
학습한 내용은 다음과 같습니다.
- 스키마는 Weave 시스템의 기본 데이터 모델을 설명합니다.
- 스키마는 세 가지 요소를 정의합니다.
- 특성 기본 기능 단위
- 인터페이스 새 기능 하나를 나타내는 특성 그룹
- 리소스 논리적 또는 물리적 항목
- 특성은 속성, 명령어, 이벤트로 구성됩니다.
- 속성 : 리소스 특성의 상태
- 명령어 특성의 커스텀 요청
- 이벤트 특성에 관한 발생 기록
- 스키마는 Google 프로토콜 버퍼 v3을 기반으로 하는 Weave 스키마 설명 언어 (WDL) 를 사용하여 정의됩니다.
자세한 내용은 다음을 참고하세요.