Con Cloud IoT Core puoi monitorare lo stato di ciascun dispositivo connesso. Lo stato viene segnalato dal dispositivo come dati binari. Gli aggiornamenti dello stato del dispositivo sono generalmente attivati da una modifica del dispositivo, che può essere un aggiornamento della configurazione da Cloud IoT Core o una modifica simile eseguita da un'altra sorgente esterna, ad esempio un aggiornamento del firmware.
Lo stato del dispositivo è diverso dalla configurazione del dispositivo. I dati di configurazione vengono inviati al dispositivo da Cloud IoT Core. I dati sullo stato vengono inviati dal dispositivo a Cloud IoT Core. Puoi considerare la configurazione come un'istruzione esterna e lo stato come una rappresentazione interna.
Cloud IoT Core può aiutarti a rispondere a domande di base sulla configurazione e sullo stato: cosa pensa che dovrebbe fare il dispositivo attualmente? Qual è la differenza con la configurazione più recente del dispositivo?
Limiti
Gli aggiornamenti dello stato sono limitati a 1 aggiornamento al secondo, per dispositivo. Tuttavia, per ottenere risultati ottimali, lo stato del dispositivo dovrebbe essere aggiornato con minore frequenza, al massimo una volta ogni 10 secondi.
La frequenza di aggiornamento viene calcolata come il tempo tra il riconoscimento più recente del server e la successiva richiesta di aggiornamento.
Registrazione dello stato del dispositivo
Bridge MQTT
Per segnalare lo stato a Cloud IoT Core tramite il bridge MQTT, pubblica i messaggi nell'argomento MQTT /devices/DEVICE_ID/state
. Puoi selezionare un argomento Cloud Pub/Sub per archiviare gli eventi di stato quando crei o aggiorni un registro.
Per ulteriori dettagli, consulta Pubblicazione tramite il bridge MQTT.
Bridge HTTP
Per segnalare lo stato a Cloud IoT Core tramite il bridge HTTP, i dispositivi devono utilizzare una richiesta setState
. I dati dello stato binario vengono passati nel corpo della richiesta come stringa con codifica base64.
Per maggiori dettagli, consulta Pubblicazione tramite il bridge HTTP.
Recupero dati sullo stato del dispositivo
Questa sezione spiega come ottenere i dati di stato segnalati a Cloud IoT Core dai dispositivi. I dispositivi non possono leggere i dati di stato nel cloud.
I dati sullo stato vengono restituiti in formato binario. I dati sullo stato potrebbero avere una struttura diversa da quella dei dati di configurazione che attivano la modifica dello stato.
Ad esempio, supponiamo che tu abbia un dispositivo con diversi fan. I dati di configurazione potrebbero essere un oggetto JSON contenente un semplice valore booleano che abilita o disabilita il raffreddamento:
Esempio di dati di configurazione
{
'cooling': true
}
Tuttavia, i dati sullo stato del dispositivo potrebbero includere informazioni di diagnostica e i dati della ventola che dovresti vedere in risposta a una modifica di 'cooling'
:
Esempio di dati sullo stato
{
'fan1_target_rpm': 1000,
'fan2_target_rpm': 1200,
'firmware_version': '1.2.3b'
}
Il firmware_version
del dispositivo non è correlato ai dati di configurazione, ma restituisce la rappresentazione interna completa del suo stato. Questo esempio illustra in che modo lo stato dei dispositivi può essere utile per il debug in generale, nonché per verificare che i dispositivi abbiano confermato configurazioni specifiche.
Puoi ottenere i dati sullo stato del dispositivo utilizzando un argomento Cloud Pub/Sub, la console di Cloud Platform, l'API Cloud IoT Core o gcloud.
Argomento Cloud Pub/Sub
Cloud IoT Core conserva i dati di stato in archiviazione. Puoi anche configurare un argomento Cloud Pub/Sub facoltativo per la notifica dello stato in ogni registro dei dispositivi, tramite Cloud Console, gcloud o l'API. Questo argomento può essere uguale o diverso dall'argomento evento di telemetria.
I dati sullo stato vengono pubblicati in Cloud Pub/Sub nel modo migliore possibile: se la pubblicazione nell'argomento ha esito negativo, non verrà ritentata. Se non viene definito alcun argomento, gli aggiornamenti dello stato del dispositivo vengono mantenuti in modo interno da Cloud IoT Core, ma solo gli ultimi 10 stati vengono conservati.
Console
- Vai alla pagina Registry nella console Google Cloud.
Fai clic sull'ID del registro relativo al dispositivo.
Nel menu del Registro di sistema a sinistra, fai clic su Dispositivi.
Fai clic sull'ID del dispositivo per andare alla pagina Dettagli dispositivo.
Fai clic su Configurazione e cronologia dello stato. Utilizza le caselle di controllo per visualizzare la cronologia delle configurazioni, la cronologia degli stati o entrambe. Per impostazione predefinita, vengono mostrati entrambi.
- Un segno di spunta verde indica che il dispositivo ha confermato la configurazione (solo MQTT).
- Un simbolo di avviso giallo indica che il dispositivo non ha ancora confermato la configurazione (solo MQTT).
- Fai clic su una riga per visualizzare la configurazione completa o i dati sullo stato in JSON, nonché il timestamp e la versione.
Fai clic su Confronta per confrontare i dati di configurazione con i dati di stato. Questa vista può aiutarti a eseguire il debug delle configurazioni e, se utilizzi MQTT, assicurati che i dispositivi abbiano confermato versioni di configurazione specifiche. Il bridge HTTP non supporta la conferma delle configurazioni.
gcloud
Per ricevere i messaggi di stato più recenti per un dispositivo (fino a 10), esegui il comando gcloud iot devices states list
.
gcloud iot devices states list \ --registry=REGISTRY_ID \ --device=DEVICE_ID \ --region=REGION
Un flag Cloud Pub/Sub (--state-pubsub-topic
) di notifica è disponibile per i comandi gcloud iot registries create
e update
:
gcloud iot registries create REGISTRY_ID \ --project=PROJECT_ID \ --region=REGION \ [--event-notification-config=topic=TOPIC,[subfolder=SUBFOLDER] [--event-notification-config=...]] [--state-pubsub-topic=STATE_PUBSUB_TOPIC]
gcloud iot registries update REGISTRY_ID \ --project=PROJECT_ID \ --region=REGION \ [--event-notification-config=topic=TOPIC,[subfolder=SUBFOLDER] [--event-notification-config=...]] [--state-pubsub-topic=STATE_PUBSUB_TOPIC]
API
Utilizza il metodo states.list
del dispositivo per visualizzare gli stati più recenti del dispositivo (fino a 10). Ogni risorsa Device
ha un campo DeviceState
che contiene lo stato ricevuto più di recente dal dispositivo. La risorsa DeviceRegistry
ha un campo StateNotificationConfig
che può essere utilizzato per specificare un argomento Cloud Pub/Sub per la notifica dello stato durante la creazione o l'aggiornamento di un registro.
L'esempio seguente mostra come recuperare lo stato di un dispositivo dal registro dispositivi: