자동화 설계

Automation API를 사용하기 전에 자동화를 설계해야 합니다.

각 자동화에 대해 다음 매개변수를 결정합니다.

  • 사용자에게 자동화가 제안되어야 하는 상황입니다. 예를 들어 사용자가 집에 새 조명 3개를 추가한 경우 조명 제어에 맞춤설정된 특정 자동화에 관심을 가질 수 있습니다.
  • 자동화에 필요한 기기 유형 예를 들어 사용자가 집에 새 조명 3개를 방금 추가한 경우 조명 제어에 맞춤설정된 특정 자동화에 관심을 가질 수 있습니다. 조명 기기 유형의 예로는 OnOffLightDevice, ColorTemperatureLightDevice, DimmableLightDevice, ExtendedColorLightDevice가 있습니다.
  • 자동화에 필요한 트레잇 속성과 명령어, 그리고 자동화 API에서 지원되는지 여부
  • 자동화를 시작 조건으로 활성화해야 하는 트레잇입니다. 시작 조건은 자동화 구성요소에서 설명합니다.
  • 자동화가 실제로 실행되어야 하는지, 어떤 작업을 실행해야 하는지를 결정하는 추가 조건입니다.
  • 자동화의 실행 흐름입니다. 순차적으로 실행해야 하나요, 아니면 동시에 실행해야 하나요? 로직 경로가 여러 개 필요한가요?

설계할 때는 각 단계에 필요한 로직을 사용하여 노드별로 자동화 흐름을 다이어그램으로 표시하는 것이 유용할 수 있습니다.

자동화를 설계한 후에는 자동화 DSL을 사용하여 빌드합니다. 빌드하는 자동화는 기본적으로 '템플릿'입니다. 자동화의 모든 구조와 기기는 자리표시자이며 각 사용자가 자신의 용도로 자동화를 '어답터링'할 때 각 사용자의 특정 구조와 기기로 채워집니다.

다음은 앱에서 Home API를 사용하여 만들 수 있는 다양한 종류의 자동화입니다. 이러한 예와 관련된 코드 발췌 부분은 자동화 빌드 페이지를 참고하세요.

간단한 자동화

오전 8시에 블라인드를 올리는 자동화를 만드는 앱을 작성해야 한다고 가정해 보겠습니다. 이를 위해 앱은 자동화를 지원하는 구조에 있는 블라인드(WindowCoveringDevice 기기 유형의 기기) 목록이 필요하며, 이 목록은 Discovery API에서 제공할 수 있습니다.

특정 시간에 실행해야 하는 자동화의 경우 사용자가 Google Home app (GHA)에서 선택한 구조물의 상세 주소를 할당했는지 확인해야 합니다. 그러지 않으면 자동화가 실행될 시간대를 알 수 없습니다. Discovery API를 사용하면 주소가 구조에 할당되었는지 여부를 확인할 수 있습니다.

따라서 실행 흐름은 다음과 같이 표시됩니다.

  1. Discovery API를 사용하여 WindowCoveringDevice 기기 목록을 수집합니다.
  2. 상세 주소가 입력되지 않은 경우 사용자에게 상세 주소를 입력해야 한다고 알리고 실행을 중지합니다.
  3. 그렇지 않으면 자동화를 정의합니다.
    1. 오전 8시에 자동화를 시작합니다.
    2. 각 블라인드에 대해 WindowCovering 트레잇의 upOrOpen 명령어를 호출합니다.

복잡한 자동화

움직임이 감지되면 불빛이 깜박이는 자동화를 빌드하는 앱을 생각해 보세요.

이 앱을 구현할 때 가장 먼저 해야 할 작업 중 하나는 Discovery API를 사용하여 사용자의 집에서 사용할 수 있는 조명을 찾는 것입니다. 이제 이 정보를 사용하여 앱에서 사용 가능한 조명을 표시하고 사용자가 깜박일 조명을 선택할 수 있도록 허용할 수 있습니다.

실행 흐름:

  1. Discovery API를 사용하여 구조체에 있는 조명 기기 목록을 수집합니다. 이 목록에는 기기 유형이 OnOffLightDevice, ColorTemperatureLightDevice, DimmableLightDevice 또는 ExtendedColorLightDevice인 기기가 포함됩니다.
  2. 맞춤 설정 패널을 통해 깜박이는 조명을 선택하는 방법을 제공합니다.
  3. 자동화를 정의합니다.
    1. AreaPresenceState를 모니터링하여 누군가 건물에 도착하거나 건물에서 나갈 때마다 자동화를 시작합니다.
    2. presenceState가 구조물이 사용 중임을 나타내면 선택한 조명을 깜박입니다.

일반 자동화

보다 정교한 자동화의 예로는 사용자가 집에 있는 일부 또는 모든 기기를 기반으로 개방형 자동화를 만드는 과정을 안내하는 자동화를 들 수 있습니다.

자동화는 먼저 사용자에게 구조를 선택하라는 메시지를 표시할 수 있습니다.

그러면 자동화는 구조물의 모든 방을 확장 가능한 개요 보기로 표시할 수 있으며, 방을 펼치면 방에 있는 기기가 표시됩니다. 기기를 더 펼치면 해당 기기에서 지원하는 시작 조건자와 명령어가 표시됩니다.

사용자는 사용하려는 기기, 시작 조건, 명령어를 선택할 수 있으며 자동화는 사용자에게 자동화 조합을 안내합니다.

사용자의 모든 선택사항과 결정이 최종적으로 완료되면 자동화가 생성되어 선택한 구조에 저장됩니다.

대략적으로 이러한 자동화는 Structure API, Device API, Discovery API를 사용하여 사용자의 홈에 관한 여러 데이터 세트를 수집해야 합니다.

표 1: Home API 및 제공할 수 있는 정보
API정보
Structure API
  • 사용할 수 있는 구조
  • 구조물에 어떤 방이 있나요?
Device API
  • 선택한 구조에 있는 기기
  • 기기가 있는 위치 (방)
Discovery API
  • 기기에서 지원되는 트레잇
  • 이러한 트레잇에서 사용할 수 있는 시작 조건 및 명령어
  • 이러한 명령어의 매개변수에 적용되는 제약조건