Android에서 자동화 설계

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

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

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

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

자동화를 설계한 후 자동화 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가 구조물이 점유되었음을 나타내는 경우 선택한 조명을 깜박입니다.

일반 자동화

더 정교한 자동화의 예로 집에 있는 기기 중 일부 또는 전부를 기반으로 사용자에게 개방형 자동화 생성을 안내하는 자동화를 생각해 보세요.

자동화는 먼저 사용자에게 구조를 선택하도록 요청할 수 있습니다.

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

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

모든 사용자의 선택과 결정이 최종적으로 확정되면 자동화는 자동화를 생성하고 사용자가 선택한 구조로 저장합니다.

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

표 1: 홈 API 및 제공 가능한 정보
API정보
구조 API
  • 어떤 구조가 사용 가능합니까?
  • 구조물에는 어떤 방이 있나요?
Device API
  • 선택한 구조에는 어떤 장치가 있습니까?
  • 해당 장치가 어디에 있는지 (어느 방인지)
디스커버리 API
  • 기기에서 지원하는 특성
  • 해당 특성에 사용 가능한 스타터와 명령은 무엇입니까?
  • 이러한 명령의 매개변수에 어떤 제약이 있습니까?