Con Cloud IoT Core, puoi monitorare lo stato di ogni dispositivo connesso. Lo stato viene riportato dal dispositivo come dati binari. Gli aggiornamenti dello stato del dispositivo sono in genere attivati da una modifica del dispositivo, che può essere un aggiornamento della configurazione di Cloud IoT Core o una modifica simile proveniente da un'altra origine 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 di stato vengono inviati dal dispositivo a Cloud IoT Core. La configurazione può essere considerata un'istruzione esterna e lo stato è una rappresentazione interna.
Cloud IoT Core può aiutarti a rispondere a domande di base su configurazione e stato: cosa dovrebbe fare il dispositivo attualmente? Quali sono le differenze con la configurazione più recente del dispositivo?
Limiti
Gli aggiornamenti di stato sono limitati a 1 aggiornamento al secondo per dispositivo. Tuttavia, per risultati migliori, lo stato del dispositivo dovrebbe essere aggiornato molto meno spesso, al massimo una volta ogni 10 secondi.
La frequenza di aggiornamento viene calcolata come il tempo che intercorre tra l'accettazione del server più recente e la richiesta di aggiornamento successiva.
Segnala lo stato del dispositivo
Bridge MQTT
Per segnalare lo stato a Cloud IoT Core tramite il bridge MQTT, pubblica messaggi nell'argomento /devices/DEVICE_ID/state
MQTT. Puoi selezionare un argomento Cloud Pub/Sub per archiviare gli eventi di stato quando crei o aggiorni un registro.
Per maggiori dettagli, consulta la sezione Pubblicazione tramite 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 la sezione Pubblicare su bridge HTTP.
Recupero dei dati sullo stato del dispositivo
Questa sezione spiega come ottenere i dati di stato che vengono segnalati a Cloud IoT Core dai dispositivi. I dispositivi stessi non possono leggere i dati di stato dal cloud.
I dati sullo stato vengono restituiti in formato binario. I dati relativi allo stato possono 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 ventilatori. 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 di stato del dispositivo potrebbero includere informazioni diagnostiche, nonché i dati della ventola che ti aspetteresti di avere in risposta a una modifica di 'cooling'
:
Esempio di dati statali
{
'fan1_target_rpm': 1000,
'fan2_target_rpm': 1200,
'firmware_version': '1.2.3b'
}
L'elemento firmware_version
del dispositivo non è correlato ai dati di configurazione, ma restituisce la rappresentazione interna completa del suo stato. Questo esempio mostra come lo stato del dispositivo può essere utile per il debug in generale, nonché per confermare che i dispositivi hanno 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 dello stato nell'archiviazione. Puoi anche configurare un argomento Cloud Pub/Sub di notifica statale in ogni registro dei dispositivi tramite Cloud Console, gcloud o API. Questo argomento può essere uguale o diverso dall'argomento evento di telemetria.
I dati relativi allo stato vengono pubblicati su Cloud Pub/Sub secondo il criterio migliore: se la pubblicazione nell'argomento non va a buon fine, non verrà eseguito un nuovo tentativo. Se non viene definito alcun argomento, gli aggiornamenti dello stato del dispositivo vengono mantenuti in modo interno da Cloud IoT Core, ma vengono conservati solo gli ultimi dieci stati.
console
- Vai alla pagina Registry in Google Cloud Console.
Fai clic sull'ID del registry del 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 &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 i dati di configurazione o di stato completi in formato 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, assicurarti che i dispositivi abbiano confermato versioni specifiche della configurazione. Il bridge HTTP non supporta il riconoscimento 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 di notifica (--state-pubsub-topic
) è 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 di notifica dello stato durante la creazione o l'aggiornamento di un registro.
L'esempio seguente mostra come recuperare lo stato del dispositivo da un registro dispositivi: