Android에서 자동화 설계

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

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

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

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

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

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

간단한 자동화

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

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

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

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

복잡한 자동화

동작이 감지되면 조명이 깜박이는 자동화를 빌드하는 앱을 상상해 보세요.

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

실행 흐름:

  1. 디스커버리 API를 사용하여 구조에 있는 조명 기기 목록을 수집합니다. 조명 기기는 기기 유형이 OnOffLightDevice, ColorTemperatureLightDevice, DimmableLightDevice 또는 ExtendedColorLightDevice인 기기입니다.
  2. 깜박이는 조명을 선택하는 방법을 제공합니다(예: 맞춤 설정 패널을 통해).
  3. 자동화를 정의합니다.
    1. AreaPresenceState를 모니터링하여 누군가 구내를 떠나거나 도착할 때마다 자동화를 시작합니다.
    2. presenceState이 구조가 사용 중임을 나타내면 선택한 조명을 깜박입니다.

일반 자동화

더 정교한 자동화의 예로, 사용자가 집에 있는 기기의 일부 또는 전부를 기반으로 개방형 자동화를 만들도록 안내하는 자동화를 생각해 보세요.

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

그러면 자동화에서 구조의 모든 방을 확장 가능한 개요 뷰에 표시할 수 있으며, 방을 확장하면 방에 있는 기기가 표시됩니다. 기기를 추가로 확장하면 해당 기기에서 지원하는 스타터와 명령어가 표시됩니다.

사용자는 사용하려는 기기, 스타터, 명령어를 선택할 수 있으며 자동화는 자동화 조립 과정을 안내합니다.

모든 사용자의 선택과 결정이 완료되면 자동화가 자동화를 생성하고 선택한 구조에 저장합니다.

개략적으로 이러한 자동화는 Android용 구조 API, Android용 기기 API, 검색 API를 사용하여 사용자의 집에 관한 여러 데이터 세트를 수집해야 합니다.

표 1: 홈 API 및 제공할 수 있는 정보
API정보
Structure API
  • 사용 가능한 구조
  • 구조에 있는 방
Device API
  • 선택한 구조에 있는 기기
  • 기기가 있는 위치 (방)
Discovery API
  • 기기에서 지원하는 특성
  • 이러한 특성에서 사용할 수 있는 스타터와 명령어
  • 이러한 명령어의 매개변수에는 어떤 제약이 있나요?