Omówienie interfejsów Home API na Androida

Interfejsy API Google Home na Androida zapewniają ujednoliconą powierzchnię interfejsu API, aby umożliwić deweloperom interakcję ze stanem elementów w domu użytkownika. Te encje mogą opisywać urządzenia i informacje inne niż urządzenia powiązane ze strukturą i pokojami użytkownika.

Interfejsy API Home definiują te elementy, z którymi użytkownik może wchodzić w interakcje:

  • Struktury to domy, które zawierają pomieszczenia i urządzenia.
  • Sale są częścią struktury i zawierają urządzenia.
  • Urządzenia implementują cechy zawierające atrybuty, są zgodne z typami, emitują zdarzenia i reagują na polecenia.
  • Automatyzacje są częścią struktury i korzystają z metadanych domu oraz urządzeń, aby automatyzować zadania w domu.

Rysunek 1 przedstawia tę architekturę:

Schemat przedstawiający architekturę interfejsów API Home
Rysunek 1. Architektura interfejsów API Home

Typy urządzeń domowych API mogą być obsługiwane przez Matter, czyli otwarty standard dla inteligentnych domów, lub mogą należeć do ekosystemu Google Home (Cloud-to-cloud). Niektóre typy urządzeń mogą zawierać funkcje z obu tych systemów. Więcej informacji znajdziesz w artykule Obsługiwane typy urządzeń z Androidem.

Matter funkcje urządzenia są grupowane według klastrów, które w interfejsach Home API są reprezentowane jako Matterstandardowe cechy. Interfejsy API Home obsługują standardowy zestaw klastrów Matter zgodnie ze specyfikacją Matter.

W ekosystemie Google Home funkcje urządzeń są grupowane według atrybutów inteligentnego domu, które w interfejsach API Google Home są reprezentowane jako atrybuty inteligentnego domu Google. Interfejsy API Home obsługują zestaw atrybutów inteligentnego domu zdefiniowanych w programie Cloud-to-cloud.

Dostępne są też inne cechy, takie jak klastry dla poszczególnych producentów i cechy platformy. Więcej informacji znajdziesz w artykule Model danych na Androidzie.

Język

Interfejsy API Home na Androida są napisane w języku Kotlin i zawierają idiomatyczny interfejs Kotlina, który do zarządzania stanem i subskrypcją korzysta z Flow. Daje to wiele korzyści w porównaniu ze standardowym interfejsem API subskrypcji.

Jeśli jeszcze tego nie zrobiono, zalecamy zapoznanie się z dokumentacją Kotlina dotyczącą coroutines, flow i Jetpack Compose:

Identyfikatory jednostek

Każda entyfikacja w interfejsach API Home ma identyfikator, który stanowi jej podstawowy identyfikator. Ten identyfikator jest unikalny i niezmienny przez cały czas istnienia danego elementu. Ten identyfikator może służyć do umieszczania obiektów w pamięci podręcznej lub sprawdzania równości, ponieważ metadane danego elementu mogą się zmieniać.

Aby dowiedzieć się, które jednostki mają identyfikator, zajrzyj do interfejsu HasId.

Mapowanie terminologii

Elementy w interfejsach API Home są mapowane na pojęcia MatterCloud-to-cloud w następujący sposób:

Interfejsy Home API Matter Cloud-to-cloud
Cecha Klaster Cecha
Atrybut Atrybut Atrybut, stan
Polecenie Polecenie Polecenie
Zdarzenie Zdarzenie Odpowiedź na zapytanie, Powiadomienie