Iscriviti agli eventi

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:

  1. Seleziona Attiva eventi e fai clic su Crea progetto.
  2. Fai clic sull'icona per Argomento Pub/Sub e seleziona Attiva eventi con argomento Pub/Sub.
  3. 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:

Vai a Google Cloud Shell

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:

  1. Modifica fisicamente lo stato del dispositivo, ad esempio la modalità del termostato Nest.
  2. Attiva un evento, ad esempio movimento, persona o suono su Google Nest Cam Indoor.
  3. 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.

  1. Fai clic sull'ID abbonamento che hai creato in precedenza.
  2. 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.
  3. Fai clic su VISUALIZZA MESSAGGI per visualizzare il riquadro Messaggi.
  4. 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.

  1. Fai clic sull'ID abbonamento.
  2. Esistono alcuni modi per confermare ed eliminare:
    1. 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.
    2. 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.