Android용 Google Home API는 개발자가 사용자의 홈에 있는 항목의 상태와 상호작용할 수 있도록 통합 API 노출 영역을 제공합니다. 이러한 항목은 사용자의 구조 및 방과 연결된 기기 및 비기기 정보를 설명할 수 있습니다.
Home API는 사용자가 상호작용할 수 있는 다음 항목을 정의합니다.
- 구조 는 방과 기기가 포함된 홈을 나타냅니다.
- 방 은 구조의 일부이며 기기를 포함합니다.
- 기기 는 속성이 포함된 특성을 구현하고, 유형을 준수하며, 이벤트를 내보내고, 명령어에 응답합니다.
- 자동화 는 구조의 일부이며 홈 메타데이터와 기기를 사용하여 홈에서 작업을 자동화합니다.
그림 1은 이 아키텍처를 보여줍니다.
Home API 기기 유형은 스마트 홈의 개방형 표준인 Matter Matter를 지원하거나 Google Home 생태계의 Cloud-to-cloud 기기일 수 있습니다. 일부 기기 유형은 두 가지의 기능을 모두 통합할 수 있습니다. 자세한 내용은 Android에서 지원되는 기기 유형 을 참고하세요.
Matter에서 기기 기능은 클러스터별로 그룹화되며, 이는 Home API에서 Matter 표준 특성으로 표시됩니다. Home API는 현재 Matter 사양에 정의된 Matter 클러스터의 표준 세트를 지원합니다.
Google Home 생태계에서 기기 기능은 스마트 홈 특성별로 그룹화되며, 이는 Home API에서 Google 스마트 홈 특성으로 표시됩니다. Home API는 Cloud-to-cloud 프로그램에 정의된 스마트 홈 특성 세트를 지원합니다.
제조업체별 클러스터 및 플랫폼 특성과 같은 다른 특성도 사용할 수 있습니다. 자세한 내용은 Android의 데이터 모델을 참고하세요.
생태계
Google Home 생태계는 스마트 홈 환경을 빌드, 관리, 보호, 통합하기 위한 간소화된 기반을 제공합니다. 그림 2는 구성요소가 모두 함께 작동하는 방식을 보여줍니다.
생태계에는 홈에서 작업 및 기기 설정을 자동화하는 방법을 제공하는 자동화를 저장하고 실행하는 Google 자동화 엔진이 포함됩니다.
Home API는 OAuth 2.0 을 사용하여 구조의 기기에 대한 액세스 권한을 부여합니다. OAuth를 사용하면 사용자가 로그인 사용자 인증 정보를 노출하지 않고도 앱 또는 서비스에 권한을 부여할 수 있습니다.
Google Home Developer Console은 브랜드 인증부터 개발, 테스트, 인증, 최종 출시에 이르기까지 Home API 프로젝트의 모든 단계를 관리하는 데 사용됩니다. Google Home 생태계를 통해 강력한 도구와 배포를 제공하면서 개발 프로세스를 간소화합니다.
언어
Android용 Home API는 Kotlin으로 작성되며 Flow를 사용하여 상태 및 구독을 관리하는 자연스러운 Kotlin 인터페이스를 제공합니다. 이는 표준 구독 API에 비해 여러 가지 이점을 제공합니다.
아직 익숙하지 않은 경우 코루틴, Flow, Jetpack Compose에 관한 Kotlin 문서를 숙지하는 것이 좋습니다.
- Kotlin으로 Android 앱 개발
- Android용 Kotlin 알아보기
- Android의 Kotlin 코루틴. 다음과 같은 특정 Codelab이 유용할 수 있습니다.
- Android의 Kotlin Flow, 특히 StateFlow.
- 상태 및 Jetpack Compose, 특히
collectAsStateWithLifecycle()함수. 이 함수는 상태를 표시하는 UI가 실제로 포그라운드에 있는지 여부에 따라 Flow 구독 및 구독 취소를 자동으로 관리합니다. - 자동화 API를 사용하는 경우 Kotlin 유형 안전 빌더 에 관해 읽어 보면 자동화 DSL의 작동 방식을 이해하는 데 도움이 됩니다.
항목 식별자
Home API의 각 항목에는 기본 식별자를 나타내는 ID가 있습니다. 이 ID는 항목의 수명 동안 변경되지 않는 고유하고 안정적인 식별자입니다. 이 ID는 항목의 메타데이터가 변경될 수 있으므로 객체를 캐시하거나 동일성을 확인하는 데 사용할 수 있습니다.
ID가 있는 항목을 알아보려면 HasId 인터페이스를 참고하세요.
용어 매핑
Home API의 항목은 다음과 같이 Matter 및 Cloud-to-cloud 개념에 매핑됩니다.
| Home API | Matter | Cloud-to-cloud |
|---|---|---|
| 특성 | 클러스터 | 특성 |
| 속성 | 속성 | 속성, 상태 |
| 명령어 | 명령어 | 명령어 |
| 이벤트 | 이벤트 | 후속 응답, 알림 |