Android에서 자동화 설계

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

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

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

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

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

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

간단한 자동화

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

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

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

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

복잡한 자동화

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

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

실행 흐름:

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

일반 자동화

더 정교한 자동화의 예로 사용자가 집에 있는 기기 중 일부 또는 전부를 기반으로 개방형 자동화를 만드는 과정을 안내하는 자동화를 고려해 보세요.

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

그런 다음 자동화는 구조의 모든 방을 확장 가능한 개요 뷰에 표시할 수 있습니다. 여기서 방을 확장하면 방에 있는 기기가 표시됩니다. 기기를 더 확장하면 해당 기기에서 지원하는 시작 조건과 명령어가 나열됩니다.

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

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

높은 수준에서 이러한 자동화는 사용자의 집에 관한 여러 데이터 세트 를 Android용 Structure API, Android용 Device API, Discovery API를 사용하여 수집해야 합니다.

표 1: Home API 및 제공할 수 있는 정보
API정보
Structure API
  • 사용 가능한 구조
  • 구조에 있는 방
Device API
  • 선택한 구조에 있는 기기
  • 기기가 있는 위치 (방)
Discovery API
  • 기기에서 지원하는 trait
  • 이러한 trait에서 사용할 수 있는 시작 조건 및 명령어
  • 이러한 명령어의 매개변수에 존재하는 제약 조건