Interfejsy API Google Home na Androida zapewniają ujednoliconą powierzchnię interfejsu API, która umożliwia deweloperom interakcję ze stanem urządzeń w domu użytkownika. Te obiekty mogą opisywać urządzenia i informacje niezwiązane z urządzeniami, które są powiązane ze strukturą i pomieszczeniami użytkownika.
Interfejsy Home API definiują te elementy, z którymi użytkownik może wchodzić w interakcje:
- Struktury to domy, w których znajdują się 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 odpowiadają na polecenia.
- Automatyzacja jest częścią struktury i wykorzystuje metadane domu oraz urządzenia do automatyzowania zadań w domu.
Ilustracja 1 przedstawia tę architekturę:
Typy urządzeń interfejsu Home API mogą być oparte na Matter, otwartym standardzie dla inteligentnego domu, lub być urządzeniem Cloud-to-cloud w ekosystemie Google Home. Niektóre typy urządzeń mogą zawierać funkcje z obu tych kategorii. Więcej informacji znajdziesz w artykule Obsługiwane typy urządzeń z Androidem.
W Matter funkcje urządzenia są pogrupowane w klastry, które w interfejsach Home API są reprezentowane jako Matter standardowe cechy. Interfejsy Home API obsługują standardowy zestaw klastrów Matter zdefiniowanych w aktualnej specyfikacji Matter.
W ekosystemie Google Home funkcje urządzeń są pogrupowane według cech inteligentnego domu, które w interfejsach Home API są reprezentowane jako cechy inteligentnego domu Google. Interfejsy Home API obsługują zestaw cech inteligentnego domu zdefiniowanych w Cloud-to-cloud.
Dostępne są też inne cechy, takie jak klastry specyficzne dla producenta i cechy platformy. Więcej informacji znajdziesz w artykule Model danych na Androidzie.
Język
Interfejsy Home API na Androida są napisane w Kotlin i zapewniają idiomatyczny interfejs Kotlin, który do zarządzania stanem i subskrypcją wykorzystuje Flow. Daje to szereg korzyści w porównaniu ze standardowym interfejsem API subskrypcji.
Jeśli nie znasz jeszcze dokumentacji Kotlin na temat korutyn, przepływów i Jetpack Compose, zapoznaj się z nią:
- Tworzenie aplikacji na Androida w języku Kotlin
- Poznaj język Kotlin na Androida
- Kotlin Coroutines na Androidzie Te konkretne codelaby mogą być przydatne:
- Przepływy Kotlin na Androidzie, a dokładniej StateFlow.
- State i Jetpack Compose, a w szczególności funkcja
collectAsStateWithLifecycle()
. Ta funkcja automatycznie zarządza subskrypcją i anulowaniem subskrypcji przepływów w zależności od tego, czy interfejs pokazujący ten stan jest rzeczywiście na pierwszym planie. - Jeśli korzystasz z interfejsu Automation API, warto przeczytać artykuł o konstruktorach bezpiecznych pod względem typów w języku Kotlin, aby zrozumieć, jak działa język DSL automatyzacji.
Identyfikatory jednostek
Każda encja w interfejsach Home API ma identyfikator, który jest jej głównym identyfikatorem. Jest to unikalny i stały identyfikator, który nigdy się nie zmieni w okresie istnienia podmiotu. Ten identyfikator może służyć do buforowania obiektów lub sprawdzania równości, ponieważ metadane jednostki mogą się zmieniać.
Aby dowiedzieć się, które jednostki mają identyfikator, zapoznaj się z interfejsem HasId
.
Mapowanie terminologii
Encje w interfejsach Home API są mapowane na pojęcia Matter i Cloud-to-cloud w ten sposób:
Interfejsy Home API | Matter | Cloud-to-cloud |
---|---|---|
Cechy | Klaster | Cechy |
Atrybut | Atrybut | Atrybut, stan |
Polecenie | Polecenie | Polecenie |
Zdarzenie | Zdarzenie | Odpowiedź uzupełniająca, powiadomienie |