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 z pomieszczeniami i urządzeniami.
  • 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 z interfejsem 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 Androida.

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 kilka korzyści w porównaniu ze standardowym interfejsem API subskrypcji.

Jeśli jeszcze tego nie zrobiłeś/nie zrobiłaś, zapoznaj się z dokumentacją Kotlina dotyczącą coroutines, flow i Jetpack Compose:

Identyfikatory jednostek

Każda entność 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 ten 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