Gli eventi sono asincroni e gestiti da Google Cloud Pub/Sub, in un singolo 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 console Device Access . 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 PubSub per gli eventi dovrebbe già avere un valore, chiamato ID argomento, nel formato precedente:
projects/sdm-prod/topics/enterprise-project-id
Per eseguire la migrazione da un argomento ospitato da Google, disattiva l'argomento Pub/Sub ospitato da Google nella console Device Access e riattiva gli eventi utilizzando un argomento Pub/Sub autonomo creato nel tuo progetto Google Cloud. La migrazione della configurazione dell'argomento Pub/Sub non invalida i token di accesso utente esistenti o le autorizzazioni OAuth.
Gli argomenti Pub/Sub self-hosted possono essere creati o modificati nel tuo progetto Google Cloud e sono soggetti ai prezzi di Google Cloud Pub/Sub standard (che includono un livello senza costi di 10 GB al mese).
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, consulta Creare un argomento.
Per attivare gli eventi (o eseguire la migrazione da un argomento ospitato da Google):
- Se crei un nuovo progetto, seleziona Abilita eventi e fai clic su Crea progetto. Se esegui la migrazione di un progetto esistente da un argomento ospitato da Google, disattiva prima l'argomento Pub/Sub esistente nella schermata delle informazioni del progetto.
- Fai clic sull'icona per Argomento Pub/Sub e seleziona Attiva eventi con argomento Pub/Sub (o Modifica argomento corrente).
- Inserisci l'ID argomento Pub/Sub autogestito che hai 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 si verifica quando un sottoscrittore avvia richieste al server Pub/Sub per i messaggi di eventi in coda. Questo è un modo semplice e veloce 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 avvio
Per avviare gli eventi per la prima volta dopo la creazione della sottoscrizione 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 Nest Thermostat cambia, viene inviato automaticamente
un evento per la caratteristica
Temperatura con un nuovo valore ambientTemperatureCelsius.
Per generarne uno manualmente:
- Modifica fisicamente lo stato del dispositivo, ad esempio cambiando 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 Sottoscrizioni 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à per il grafico Conteggio messaggi non riconosciuti. Ciò indica che i messaggi di evento sono stati inviati per il tuo abbonamento. Se non vedi alcuna attività, attendi un po' di tempo o genera qualche evento in più.
- 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 pulita un'iscrizione ed evitare la consegna di messaggi duplicati ad altri iscritti. 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à di abbonamento.
Anche se la gestione di abbonamenti e messaggi dipende 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.