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:
- Structures 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ę:
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 sekcji Obsługiwane typy urządzeń.
W 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 inteligentnych urządzeń domowych, które w interfejsach API Google Home są reprezentowane jako atrybuty inteligentnych urządzeń domowych 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 według producenta i cechy platformy. Więcej informacji znajdziesz w artykule Model danych.
Język
Interfejsy API usługi Home są napisane w języku Kotlin i zawierają typowy 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 zrobiono, zalecamy zapoznanie się z dokumentacją Kotlina dotyczącą coroutines, flow i Jetpack Compose:
- Tworzenie aplikacji na Androida w Kotlinie
- Nauka języka Kotlin na potrzeby Androida
- Kotlin coroutines na Androidzie. Te laboratoria programistyczne mogą być przydatne:
- Kotlin Flows na Androidzie, a w szczególności StateFlow.
- Stan i Jetpack Compose, a w szczególności funkcja
collectAsStateWithLifecycle()
. Ta funkcja automatycznie zarządza subskrypcją i anulowaniem subskrypcji przepływów na podstawie tego, czy interfejs użytkownika pokazujący ten stan jest rzeczywiście na pierwszym planie. - Jeśli pracujesz z interfejsem Automation API, przeczytaj artykuł Kotlin: bezpieczne konstruktory typu, aby lepiej zrozumieć, jak działa Automation DSL.
Identyfikatory jednostek
Każdy element w interfejsach API Home ma identyfikator, który jest jego głównym identyfikatorem. Ten identyfikator jest unikalny i niezmienny przez cały czas istnienia danego elementu. Ten identyfikator może służyć do buforowania obiektów lub sprawdzania równości, ponieważ metadane danej jednostki 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 Matter i Cloud-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 |