Interfejsy Google Home API na Androida zapewniają ujednolicony interfejs API, który umożliwia deweloperom interakcję ze stanem encji w domu użytkownika. Te encje 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 encje, z którymi użytkownik może wchodzić w interakcję:
- Struktury reprezentują dom, w którym znajdują się pomieszczenia i urządzenia.
- Pomieszczenia 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 używają metadanych domu oraz urządzeń do automatyzowania zadań w domu.
Architekturę tę przedstawia rysunek 1:
Typy urządzeń Home API mogą być obsługiwane przez Matter, otwarty standard dla inteligentnego domu, lub mogą być urządzeniem typu Cloud-to-cloud w ekosystemie Google Home. Niektóre typy urządzeń mogą zawierać funkcje z obu tych rozwiązań. Więcej informacji znajdziesz w artykule Obsługiwane typy urządzeń na Androidzie.
W Matter funkcje urządzenia są pogrupowane według klastrów, które są reprezentowane w interfejsach Home API jako Matter standardowe cechy. Interfejsy Home API obsługują standardowy zestaw Matter klastrów zdefiniowany w bieżącej Matter specyfikacji.
W ekosystemie Google Home funkcje urządzenia są pogrupowane według cech inteligentnego domu, które są reprezentowane w interfejsach Home API jako cechy inteligentnego domu Google. Interfejsy Home API obsługują zestaw cech inteligentnego domu zdefiniowany w Cloud-to-cloud programie.
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 współpracują ze sobą wszystkie komponenty.
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ą OAuth 2.0 do przyznawania dostępu do urządzeń w strukturze. OAuth umożliwia użytkownikowi przyznanie uprawnień aplikacji lub usłudze bez konieczności ujawniania danych logowania.
Google Home Developer Console służy do zarządzania wszystkimi etapami projektu Home API – od weryfikacji marki po tworzenie, testowanie, certyfikowanie i w końcu uruchomienie. Usprawnia proces tworzenia, zapewniając jednocześnie zaawansowane 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 używa Flow do zarządzania stanem i subskrypcją. Daje to wiele korzyści w porównaniu ze standardowym interfejsem Subscription API.
Jeśli jeszcze tego nie zrobisz, zapoznaj się z dokumentacją Kotlina dotyczącą współprogramów, Flow i Jetpack Compose:
- Tworzenie aplikacji na Androida w Kotlinie
- Kotlin na Androidzie
- Współprogramy Kotlin na Androidzie. Te ćwiczenia z programowania mogą być przydatne:
- Kotlin Flow na Androidzie, a konkretnie StateFlow.
- Stan i Jetpack Compose, w szczególności funkcja
collectAsStateWithLifecycle(). Ta funkcja automatycznie zarządza subskrybowaniem i anulowaniem subskrypcji w przypadku przepływów w zależności od tego, czy interfejs pokazujący ten stan jest aktualnie na pierwszym planie. - Jeśli pracujesz z interfejsem Automation API, warto przeczytać o bezpiecznych typowo konstruktorach Kotlin , aby zrozumieć, jak działa Automation DSL.
Identyfikatory encji
Każda encja w interfejsach Home API ma identyfikator, który reprezentuje jej główny identyfikator. Ten identyfikator jest unikalny i stabilny i nigdy się nie zmieni przez cały okres istnienia encji. Ten identyfikator może służyć do buforowania obiektów lub sprawdzania równości, ponieważ metadane encji 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 Matter i Cloud-to-cloud koncepcje w ten sposób:
| Interfejsy Home API | Matter | Cloud-to-cloud |
|---|---|---|
| Cecha | Klaster | Cecha |
| Atrybut | Atrybut | Atrybut, stan |
| Polecenie | Polecenie | Polecenie |
| Zdarzenie | Zdarzenie | Dodatkowe pytanie, powiadomienie |