Le API Google Home per Android forniscono una superficie API unificata per consentire agli sviluppatori di interagire con lo stato delle entità nella casa di un utente. Queste entità possono descrivere dispositivi e informazioni non relative ai dispositivi associati alla struttura e alle stanze di un utente.
Le API Home definiscono le seguenti entità con cui un utente può interagire:
- Le strutture rappresentano una casa che contiene stanze e dispositivi.
- Le stanze fanno parte di una struttura e contengono dispositivi.
- I dispositivi implementano tratti contenenti attributi, sono conformi ai tipi, emettono eventi e rispondono ai comandi.
- Le automazioni fanno parte di una struttura e utilizzano i metadati e i dispositivi della casa per automatizzare le attività in casa.
La Figura 1 illustra questa architettura:
I tipi di dispositivi dell'API Home possono essere supportati da Matter, uno standard aperto per la smart home, oppure essere un dispositivo Cloud-to-cloud nell'ecosistema Google Home. Alcuni tipi di dispositivi potrebbero incorporare funzionalità di entrambi. Per ulteriori informazioni, vedi Tipi di dispositivi supportati su Android.
In Matter, la funzionalità del dispositivo è raggruppata per cluster, che sono rappresentati nelle API Home come tratti standard Matter. Le API Home supportano il set standard di cluster Matter definiti nella specifica Matter corrente.
Nell'ecosistema Google Home, la funzionalità dei dispositivi è raggruppata in base alle caratteristiche della smart home, che sono rappresentate nelle API Home come caratteristiche della smart home di Google. Le API Home supportano l'insieme di caratteristiche per la smart home definite nel programma Cloud-to-cloud.
Sono disponibili anche altre caratteristiche, come i cluster specifici del produttore e le caratteristiche della piattaforma. Per scoprire di più, consulta la sezione Modello dei dati su Android.
Lingua
Le API Home per Android sono scritte in Kotlin e forniscono un'interfaccia Kotlin idiomatica che utilizza Flow per gestire lo stato e l'abbonamento. Ciò offre una serie di vantaggi rispetto a un'API di abbonamento standard.
Se non l'hai ancora fatto, ti consigliamo di familiarizzare con la documentazione di Kotlin su coroutine, flussi e Jetpack Compose:
- Sviluppare app per Android con Kotlin
- Impara Kotlin per Android
- Coroutine Kotlin su Android. Potrebbero esserti utili questi codelab specifici:
- Flussi Kotlin su Android e, più nello specifico, StateFlow.
- State e Jetpack Compose, in particolare la funzione
collectAsStateWithLifecycle()
. Questa funzione gestisce automaticamente l'iscrizione e l'annullamento dell'iscrizione ai flussi in base al fatto che l'interfaccia utente che mostra lo stato sia effettivamente in primo piano o meno. - Se utilizzi l'API Automation, leggere informazioni sui builder Kotlin type-safe è utile per capire come funziona il DSL di automazione.
Identificatori entità
Ogni entità nelle API Home ha un ID che rappresenta il suo identificatore principale. Questo ID è un identificatore univoco e stabile che non cambierà mai per tutta la durata dell'entità. Questo ID può essere utilizzato per memorizzare nella cache gli oggetti o verificare l'uguaglianza, poiché i metadati di un'entità possono cambiare.
Consulta l'interfaccia HasId
per scoprire
quali entità hanno un ID.
Mappatura della terminologia
Le entità nella mappa delle API Home corrispondono ai concetti Matter e Cloud-to-cloud come segue:
API Home | Matter | Cloud-to-cloud |
---|---|---|
Tratto | Cluster | Tratto |
Attributo | Attributo | Attributo, Stato |
Comando | Comando | Comando |
Evento | Evento | Risposta di follow-up, Notifica |