Gli eventi sono asincroni e vengono gestiti da Google Cloud Pub/Sub in un unico argomento per Project. Gli eventi forniscono aggiornamenti per tutti i dispositivi e le strutture e la ricezione degli eventi è garantita finché il token di accesso non viene revocato dall'utente e i messaggi degli eventi non sono scaduti.
Gli eventi sono una funzionalità facoltativa dell'API SDM. Possono essere implementati e verificati facilmente utilizzando il tuo progetto Google Cloud.
Attiva eventi
Gli eventi possono essere abilitati nella Device Access console. Seleziona il progetto nella console, se non l'hai già fatto.
Vai alla Device Access console
Se hai già attivato gli eventi (ad esempio durante la creazione del progetto), il campo Argomento Pub/Sub nella sezione Abilita l'argomento Pub/Sub per gli eventi dovrebbe già avere un valore, chiamato ID argomento, nel formato precedente:
projects/sdm-prod/topics/enterprise-project-id
Questo formato dell'argomento è ospitato da Google e verrà mantenuto per il tuo progetto, a meno che tu non disattivi l'argomento Pub/Sub ospitato da Google. Se lo riattivi in un secondo momento, verrà attivato l'argomento Pub/Sub autogestito.
Gli argomenti Pub/Sub ospitati autonomamente possono essere creati o modificati nel progetto Google Cloud dello sviluppatore. Lo sviluppatore è inoltre responsabile di tutti i costi associati all'utilizzo di Pub/Sub. Per ulteriori informazioni, consulta Prezzi di Pub/Sub.
Crea l'argomento Pub/Sub:
gcloud pubsub topics create {topic} --message-retention-duration=0s
Concedi le autorizzazioni API SDM necessarie per accedere e pubblicare i dati degli eventi per l'ID argomento del tuo progetto:
gcloud pubsub topics add-iam-policy-binding projects/{project}/topics/{topic} \
--member="group:sdm-publisher@googlegroups.com" \
--role="roles/pubsub.publisher"
Il formato dell'ID argomento appena creato sarà simile al seguente:
projects/gcp-project-name/subscriptions/topic-id
Prendi nota dell'ID argomento, ti servirà per completare l'attivazione degli eventi. Per ulteriori informazioni, vedi Creare un argomento.
Per attivare gli eventi:
- Seleziona Attiva eventi e fai clic su Crea progetto.
- Fai clic sull'icona per Argomento Pub/Sub e seleziona Attiva eventi con argomento Pub/Sub.
- Inserisci l'ID argomento Pub/Sub fornito o creato in precedenza.
Copia l'ID argomento, ti servirà per creare una sottoscrizione all'argomento in modo da poter recuperare i messaggi di evento.
Creare una sottoscrizione pull
In una sottoscrizione pull, un sottoscrittore avvia richieste al server Pub/Sub per i messaggi di eventi in coda. Questo è un modo rapido e semplice per verificare che gli eventi vengano generati per i tuoi dispositivi autorizzati.
Apri Cloud Shell per il tuo progetto Google Cloud:
Al prompt di Cloud Shell, esegui questo comando per creare una sottoscrizione pull per l'argomento, utilizzando il valore subscription-id che preferisci e il tuo ID argomento univoco:
gcloud pubsub subscriptions create subscription-id --topic=projects/gcp-project-name/subscriptions/topic-id
Created subscription [projects/gcp-project-name/subscriptions/subscription-id].
Eventi di avvio
Per avviare gli eventi per la prima volta dopo la creazione dell'abbonamento Pub/Sub, effettua una chiamata per elencare i tuoi dispositivi come trigger una tantum:
curl -X GET 'https://smartdevicemanagement.googleapis.com/v1/enterprises/project-id/devices' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer access-token'
Gli eventi per tutte le strutture e i dispositivi verranno pubblicati dopo questa chiamata API.
Generare eventi
Gli eventi vengono generati per tutte le modifiche ai campi delle caratteristiche, alcune delle quali sono automatiche, altre manuali.
Ad esempio, se la temperatura ambiente vicino al
tuo termostato Nest cambia, un evento per la
caratteristicaTemperatura verrà
inviato automaticamente con un nuovo valore ambientTemperatureCelsius
.
Per generarne uno manualmente:
- Modifica fisicamente lo stato del dispositivo, ad esempio la modalità del termostato Nest.
- Attiva un evento, ad esempio movimento, persona o suono su Google Nest Cam Indoor.
- Esegui un comando del dispositivo utilizzando l'API SDM.
Visualizza messaggi
I messaggi di evento possono essere visualizzati nel tuo progetto Google Cloud, nella sezione Abbonamenti Pub/Sub:
Vai a Sottoscrizioni Pub/Sub di Google Cloud.
- Fai clic sull'ID abbonamento che hai creato in precedenza.
- Nella schermata Dettagli sottoscrizione, dovresti visualizzare l'attività del grafico Conteggio messaggi non riconosciuti. Ciò indica che i messaggi di evento sono stati ricevuti per il tuo abbonamento. Se non vedi alcuna attività, attendi un po' di tempo o genera altri eventi.
- Fai clic su VISUALIZZA MESSAGGI per visualizzare il riquadro Messaggi.
- Fai clic su PULL per visualizzare i messaggi. Devono corrispondere alle azioni che hai utilizzato per generare gli eventi.
I messaggi possono essere visualizzati anche in Cloud Shell con un comando pull
di base:
gcloud pubsub subscriptions pull subscription-id
Per saperne di più sui tipi di abbonamento, nonché sui tipi di eventi inviati dall'API SDM e su come utilizzarli, consulta Eventi.
Gestisci messaggi
I messaggi devono essere confermati ed eliminati regolarmente per mantenere una sottoscrizione pulita ed evitare la consegna di messaggi duplicati ad altri sottoscrittori. Tutti i messaggi delle sottoscrizioni possono essere eliminati manualmente nella sezione Sottoscrizioni Pub/Sub:
Vai a Sottoscrizioni Pub/Sub di Google Cloud.
- Fai clic sull'ID abbonamento.
- Esistono alcuni modi per confermare ed eliminare:
- Fai clic su VISUALIZZA MESSAGGI per visualizzare il riquadro Messaggi. Seleziona la casella di controllo Abilita messaggi ACK e fai clic su PULL per visualizzare e confermare tutti i messaggi.
- Fai clic su ELIMINA MESSAGGI per eliminare tutti i messaggi esistenti confermandoli senza visualizzarli. Fai clic su PURGE per confermare.
I messaggi possono essere eliminati anche in Cloud Shell utilizzando il flag --auto-ack
con
un comando pull
di base:
gcloud pubsub subscriptions pull subscription-id --auto-ack
Gestisci sottoscrizioni
Gli abbonamenti possono essere configurati in vari modi, come descritto in Utilizzare le proprietà dell'abbonamento.
Sebbene la gestione di abbonamenti e messaggi dipenda da te, per un'applicazione di produzione ti consigliamo di utilizzare account di servizio per l'autenticazione, anziché un account utente come hai fatto finora in questa guida rapida. Un service account viene utilizzato da un'applicazione o da una macchina virtuale, non da una persona, e ha una propria chiave dell'account univoca.
Per saperne di più sull'autenticazione del service account con Device Access, consulta Eventi.