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 di evento 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 tuo 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 self-hosted.
Gli argomenti Pub/Sub ospitati autonomamente possono essere creati o modificati nel progetto Google Cloud di uno sviluppatore. Lo sviluppatore è anche responsabile di tutti i costi associati all'utilizzo di Pub/Sub. Per saperne di più, consulta i Prezzi di Pub/Sub.
Crea l'argomento Pub/Sub:
gcloud pubsub topics create {topic} --message-retention-duration=0sConcedi 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 degli eventi.
Creare una sottoscrizione pull
Una sottoscrizione pull è quando 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 cloud Google Cloud:
Al prompt di Cloud Shell, esegui questo comando per creare una sottoscrizione pull all'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 inizializzazione
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 tutti i dispositivi verranno pubblicati dopo questa chiamata API.
Generare eventi
Gli eventi vengono generati per tutte le modifiche ai campi delle caratteristiche, alcune automatiche, altre manuali.
Ad esempio, se la temperatura ambiente vicino al
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. Indica che i messaggi di evento sono stati ricevuti per il tuo abbonamento. Se non vedi alcuna attività, attendi un po' o genera qualche altro evento.
- 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-idPer 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-ackGestisci abbonamenti
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 i service account 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.