Interfejsy Google Home API na Androida zapewniają ujednoliconą powierzchnię interfejsu API, która umożliwia deweloperom interakcję ze stanem urządzeń w domu użytkownika. Te elementy 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.
- Automatyzacje są częścią struktury i wykorzystują metadane domu oraz urządzenia do automatyzacji 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.
Ekosystem
Ekosystem Google Home zapewnia uproszczoną podstawę do tworzenia, zarządzania, zabezpieczania i integrowania funkcji inteligentnego domu. Rysunek 2 pokazuje, jak wszystkie komponenty współpracują ze sobą.
Ekosystem obejmuje Google Automation Engine, który przechowuje i uruchamia automatyzacje umożliwiające automatyzowanie zadań i ustawień urządzeń w domu.
Interfejsy Home API używają protokołu OAuth 2.0, aby przyznawać dostęp do urządzeń w strukturze. Protokół OAuth umożliwia użytkownikowi przyznanie aplikacji lub usłudze uprawnień bez konieczności ujawniania danych logowania.
Google Home Developer Console służy do zarządzania wszystkimi etapami projektu interfejsów Home API, od weryfikacji marki po opracowywanie, testowanie i certyfikację, a w końcu uruchomienie. Usprawnia proces tworzenia, zapewniając jednocześnie solidne narzędzia i dystrybucję w ekosystemie Google Home.
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 Kotlinie
- Poznaj język Kotlin na potrzeby Androida
- Kotlin Coroutines na Androidzie Te konkretne codelaby mogą być przydatne:
- Przepływy Kotlin na Androidzie, a w szczególności 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 |