Interfejsy Google Home API na Androida udostępniają ujednolicony interfejs API, który umożliwia deweloperom interakcję ze stanem elementów w domu użytkownika. Te encje mogą opisywać urządzenia i informacje niezwiązane z urządzeniami, które są powiązane z domem i pomieszczeniami użytkownika.
Interfejsy Home API definiują te elementy, z którymi użytkownik może wchodzić w interakcje:
- Domy to budynki, w których znajdują się pomieszczenia i urządzenia.
- Pokoje są częścią domu i zawierają urządzenia.
- Urządzenia implementują cechy zawierające atrybuty, są zgodne z typami, emitują zdarzenia i reagują na polecenia.
- Grupy urządzeń to zdefiniowane przez użytkownika zbiory urządzeń w strukturze.
- Automatyzacje są częścią struktury i wykorzystują metadane domu oraz urządzenia do automatyzacji zadań w domu.
Rysunek 1 przedstawia tę architekturę:
Typy urządzeń Home API mogą być obsługiwane przez Matter, otwarty standard inteligentnego domu, lub być urządzeniami Cloud-to-cloud w ekosystemie Google Home. Niektóre typy urządzeń mogą zawierać funkcje obu tych kategorii. Więcej informacji znajdziesz w artykule o obsługiwanych typach urządzeń na Androidzie.
W Matter funkcje urządzenia są pogrupowane według klastrów, które w interfejsach Home API są reprezentowane jako standardowe cechy Matter. Interfejsy Home API obsługują standardowy zestaw klastrów Matter zdefiniowanych w aktualnej specyfikacji Matter.
W ekosystemie Google Home funkcje urządzeń są grupowane 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 programie 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 uproszczone podstawy do tworzenia, zarządzania, zabezpieczania i integrowania funkcji inteligentnego domu. Rysunek 2 pokazuje, jak wszystkie komponenty współpracują ze sobą.
Ekosystem obejmuje silnik automatyzacji Google, który przechowuje i uruchamia automatyzacje umożliwiające automatyzowanie zadań i ustawień urządzeń w domu.
Interfejsy Home API używają OAuth 2.0, aby przyznawać dostęp do urządzeń w domu. OAuth umożliwia użytkownikowi przyznanie uprawnień aplikacji lub usłudze bez 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ż do ostatecznego wprowadzenia na rynek. Usprawnia proces programowania, zapewniając jednocześnie zaawansowane narzędzia i dystrybucję w ekosystemie Google Home.
Język
Interfejsy Home API na Androida są napisane w języku Kotlin i zapewniają idiomatyczny interfejs Kotlin, który używa Flow do zarządzania stanem i subskrypcją. Zapewnia to szereg korzyści w porównaniu ze standardowym interfejsem API subskrypcji.
Jeśli nie znasz jeszcze dokumentacji Kotlina dotyczącej współprogramów, przepływu i Jetpack Compose, zalecamy zapoznanie się z nią:
- Tworzenie aplikacji na Androida w języku Kotlin
- Nauka języka Kotlin na Androida
- Współprogramy Kotlin na Androidzie. Przydatne mogą być te ćwiczenia w Codelabs:
- Kotlin flows na Androidzie, a dokładniej StateFlow.
- Stan i Jetpack Compose, a w szczególności funkcja
collectAsStateWithLifecycle(). Ta funkcja automatycznie zarządza subskrybowaniem i anulowaniem subskrypcji przepływów w zależności od tego, czy interfejs użytkownika pokazujący ten stan jest na pierwszym planie. - Jeśli pracujesz z interfejsem Automation API, warto przeczytać o bezpiecznych konstruktorach typów w języku Kotlin, aby dowiedzieć się, jak działa DSL automatyzacji.
Identyfikatory encji
Każda encja w interfejsach Home API ma identyfikator, który jest jej głównym identyfikatorem. Ten identyfikator jest unikalny i niezmienny przez cały okres istnienia elementu. Ten identyfikator może zostać użyty do buforowania obiektów lub sprawdzania równości, ponieważ metadane elementu mogą się zmieniać.
Aby dowiedzieć się, które encje 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 |
|---|---|---|
| Cecha | Klaster | Cecha |
| Atrybut | Atrybut | Atrybut, stan |
| Polecenie | Polecenie | Polecenie |
| Zdarzenie | Zdarzenie | Odpowiedź, powiadomienie |