Dispositivi, configurazione e stato

Registrazione dei dispositivi

Per potersi connettere, un dispositivo deve essere prima registrato in Gestione dispositivi. Gestione dispositivi ti consente di creare e configurare i registri dispositivi e i dispositivi al loro interno. Il gestore dispositivi può essere utilizzato tramite la console di Cloud Platform, i comandi gcloud o l'API REST.

Registri dispositivi

Un registro dispositivi è un container di dispositivi.

  • Ogni registro dispositivi viene creato in un'area geografica specifica e appartiene a un progetto cloud.
  • Nel servizio cloudiot.googleapis.com è identificato un registro con nome completo come: projects/{project-id}/locations/{cloud-region}/registries/{registry-id}.
  • Il registro dispositivi è configurato con uno o più argomenti Cloud Pub/Sub per i quali vengono pubblicati eventi di telemetria per tutti i dispositivi al suo interno. È possibile utilizzare un singolo argomento per raccogliere dati in tutte le aree geografiche.
  • Il monitoraggio di Stackdriver viene abilitato automaticamente per ogni registro.
  • Identity and Access Management (IAM) può essere utilizzato per il controllo dell'accesso, consentendo agli utenti l'autorizzazione a visualizzare, eseguire il provisioning o gestire completamente i dispositivi. Tieni presente che Cloud IoT Core concede automaticamente il ruolo cloudiot.serviceAgent all'account di servizio corrispondente per ogni progetto, per consentire la pubblicazione su argomenti Pub/Sub.
  • Per informazioni sui nomi delle dimensioni e sui requisiti di dimensione del Registro di sistema dei dispositivi, consulta i requisiti di caratteri e dimensioni consentiti.

Per maggiori dettagli, consulta il riferimento per le risorse DeviceRegistry.

Dispositivi

Quando crei un dispositivo in un registro, il dispositivo viene definito come una risorsa Cloud IoT Core. Puoi quindi visualizzare i dettagli del dispositivo e controllare alcune proprietà.

  • Un dispositivo può essere bloccato per comunicare con Cloud IoT Core. Questa funzionalità può essere utile quando un sensore non funziona o un dispositivo non è configurato correttamente.
  • I timestamp del dispositivo mostrano l'evento di telemetria e battito cardiaco più recente.
  • Ogni dispositivo può essere identificato dal nome completo della risorsa: projects/{project-id}/locations/{cloud-region}/registries/{registry-id}/devices/{device-id} o projects/{project-id}/locations/{cloud-region}/registries/{registry-id}/devices/{device-numeric-id}. Vedi la sezione seguente per ulteriori informazioni su ID dispositivo e ID numerico del dispositivo.

Per maggiori dettagli, consulta la guida di riferimento alle risorse del dispositivo.

Quando lavori con i dispositivi, assicurati di rispettare le quote e i limiti di Cloud IoT Core.

Identificatori dispositivo

Ogni dispositivo ha i seguenti identificatori:

  • L'ID dispositivo definito dall'utente. Per ulteriori informazioni sui nomi degli ID dispositivi e sui requisiti relativi alle dimensioni, consulta i requisiti consentiti per i caratteri e le dimensioni.
  • Un ID numerico del dispositivo generato dal server. L'ID numerico del dispositivo viene creato automaticamente da Cloud IoT Core; è globalmente univoco e non può essere modificato. Per visualizzare un ID numerico del dispositivo, vai alla pagina Dettagli dispositivo.
  • Il percorso completo del dispositivo, come descritto nella sezione precedente.

Metadati del dispositivo

Puoi definire i metadati di un dispositivo, ad esempio l'impronta digitale, il numero di serie, le informazioni sul produttore o qualsiasi altro attributo. Cloud IoT Core non interpreta o indicizza i metadati del dispositivo. In teoria, i metadati del dispositivo sono più sicuri dello stato o della configurazione del dispositivo perché i metadati non vengono mai inviati a o da un dispositivo. Ciò significa che, in caso di violazione di un dispositivo, non è possibile leggere i relativi metadati.

I metadati del dispositivo non devono cambiare spesso; per risultati ottimali, aggiornali non più di una volta al giorno.

Puoi definire fino a 500 coppie chiave-valore quando aggiungi o modifichi un dispositivo. Ciascuna chiave deve essere univoca.

Per informazioni sui nomi delle coppie chiave-valore e sulle dimensioni dei metadati dei dispositivi, consulta la sezione Requisiti di dimensioni e caratteri consentiti.

Configurazione dispositivi

Con Cloud IoT Core, puoi controllare un dispositivo inviandogli una configurazione. Una configurazione dispositivo è un blob di dati definito dall'utente arbitrario che viene inviato da Cloud IoT Core a un dispositivo. I dati possono essere strutturati o non strutturati. Può anche avere qualsiasi formato, ad esempio dati binari arbitrari, testo, JSON o buffer di protocollo serializzati.

La configurazione del dispositivo è permanente per l'archiviazione da parte di Cloud IoT Core. La dimensione massima per i dati di configurazione è 64 kB. Per ulteriori limiti, consulta la sezione Quote e limiti.

Per ottenere risultati ottimali, una configurazione del dispositivo dovrebbe concentrarsi sui valori o sui risultati desiderati anziché su una sequenza di comandi. Se specifichi comandi, le versioni di configurazione intermedie potrebbero creare conflitti e non sarà possibile ripristinare lo stato di un dispositivo (senza eseguire ogni sequenza di comandi da quando il dispositivo è stato inizializzato). Se le configurazioni mettono in risalto valori e risultati, potrai ripristinare più facilmente lo stato del dispositivo.

Versioni di configurazione

Bridge MQTT

Per una determinata connessione MQTT, un dispositivo riceve le configurazioni solo in ordine crescente di numeri di versione. In altre parole, non verrà mai inviata una configurazione precedente alla sua versione corrente. Tuttavia, se il dispositivo si riconnette al bridge MQTT, potrebbe ricevere una configurazione precedente rispetto a quella precedente (ma questo dovrebbe essere raro e alla fine il dispositivo riceverà la versione più recente).

Tieni presente che non è garantito che un dispositivo riceva tutti gli aggiornamenti della configurazione; riceverà invece l'ultimo aggiornamento. Se una configurazione viene aggiornata rapidamente, i dispositivi potrebbero non ricevere versioni intermedie.

Quando modifichi la configurazione di un dispositivo, puoi specificare il numero di versione da modificare. Questo meccanismo protegge dalla sovrascrittura di una configurazione con modifiche simultanee.

Bridge HTTP

I dispositivi che si connettono tramite HTTP possono specificare la versione locale (la versione di configurazione sul dispositivo). Cloud IoT Core restituirà solo una versione più recente, come descritto nella sezione relativa al bridge HTTP.

Stato del dispositivo

Le informazioni sullo stato del dispositivo acquisiscono lo stato corrente del dispositivo, non l'ambiente. I dispositivi possono descrivere il loro stato con un BLOB arbitrario di dati definito dall'utente inviato dal dispositivo al cloud. I dati possono essere strutturati o non strutturati. Può essere di qualsiasi formato, ad esempio dati binari, testo, JSON o buffer di protocollo serializzati.

Alcuni esempi di stato del dispositivo sono l'integrità del dispositivo o la versione firmware. In genere, le informazioni sullo stato del dispositivo non vengono aggiornate di frequente.

Differenze tra metadati, configurazione e stato del dispositivo

Utilizzando la configurazione e lo stato, puoi rispondere a domande quali: Cosa sta attualmente facendo il dispositivo? Quali sono le differenze con la configurazione più recente del dispositivo? Al contrario, i metadati servono principalmente come etichetta o identificatore dei dispositivi.

I dati di configurazione vengono inviati al dispositivo da Cloud IoT Core. I dati di stato vengono inviati dal dispositivo a Cloud IoT Core. Puoi considerare la configurazione come un'istruzione esterna inviata a un dispositivo e lo stato come una rappresentazione interna del dispositivo. I dati di configurazione e di stato possono avere lo stesso schema e la stessa codifica oppure essere diversi.

Le informazioni che devono essere inviate a o da un dispositivo non devono essere archiviate come metadati del dispositivo perché i metadati del dispositivo rimangono nel cloud. Le informazioni devono essere in una configurazione dispositivo se devono essere inviate al dispositivo o nei dati dello stato del dispositivo se è necessario segnalarle a Cloud IoT Core.

L'esempio seguente spiega i diversi utilizzi di metadati, configurazione e stato utilizzando lo scenario dei dispositivi in un edificio:

  • Supponi di avere più dispositivi su ogni piano di un edificio. Per identificare i dispositivi al settimo piano, potresti aggiungere una coppia chiave-valore dei metadati 'floor': '7' ai dispositivi al settimo piano. L'applicazione di queste informazioni sui metadati consente di identificare i dispositivi, ma poiché non vengono interpretati o indicizzati, i metadati possono essere utilizzati solo a scopo di identificazione.

  • Se vuoi modificare lo stato dei dispositivi nell'edificio, puoi inviare una configurazione per ogni dispositivo. Questa configurazione include un blob di dati arbitrario che contiene la temperatura desiderata per il dispositivo e indica se le spie del dispositivo sono accese o spente:

    {
      temperature: 50
      lights: off
    }
    

    La configurazione da sola non modifica la temperatura del dispositivo né accende o spegne le sue luci; spetta al dispositivo interpretare la configurazione e usare la propria logica per eseguire il comando. Nelle prossime ore la configurazione del dispositivo non cambierà (a meno che non aggiorni e invii una nuova configurazione), ma lo stato del dispositivo dovrebbe cambiare man mano che la temperatura aumenta o diminuisce e il dispositivo spegne le luci.

  • Per verificare che la configurazione sia stata applicata correttamente e che i dispositivi siano nello stato corretto, ogni dispositivo può segnalare lo stato (acceso o spento, la sua temperatura e la sua temperatura inferiore o pari a 50 gradi) a Cloud IoT Core.

La tabella seguente mostra le principali differenze tra i metadati, la configurazione e lo stato del dispositivo:

  Metadati del dispositivo Configurazione dispositivi Stato del dispositivo
Descrizione Definisci e classifica i dispositivi
  • Aggiorna lo stato di un dispositivo inviando lo stato previsto come configurazione
  • Controlla un dispositivo fornendo comandi in una configurazione
Acquisisce lo stato corrente di un dispositivo
Contenuti Coppie stringa chiave-valore BLOB di dati arbitrari definiti dall'utente BLOB di dati arbitrari definiti dall'utente
Limitazioni Chiavi:
  • Caratteri consentiti: [a-zA-Z][-a-zA-Z0-9._+~%]+
  • Il primo carattere deve essere una lettera ([a-zA-Z])
  • Lunghezza minima: 1 carattere
  • Lunghezza massima: 128 caratteri
Valori:
  • Dimensioni minime: 0 kB
  • Dimensione massima: 32 kB

Dimensioni totali combinate massime di tutte le coppie chiave-valore dei metadati del dispositivo: 256 kB
  • Dimensione massima: 64 kB
  • Limite di 1 QPS per dispositivo
  • Dimensione massima: 64 kB
  • Limite di 1 QPS per dispositivo
Casi d'uso Memorizza il numero di serie e le informazioni sul produttore di un dispositivo come coppia chiave-valore
  • Invia una configurazione contenente una versione firmware per indicare a un dispositivo quale versione firmware
  • Inviare un comando di riavvio a un dispositivo
Recuperare lo stato di un dispositivo (ad esempio, la frequenza degli arresti anomali)
Direzione del messaggio Nessuno Solo Cloud IoT Core-to-device Solo IoT da dispositivo a cloud
Frequenza consigliata Non più di una volta al giorno per dispositivo Inferiore a 0,1 QPS Inferiore a 0,1 QPS

Modificare il comportamento o lo stato del dispositivo utilizzando i dati di configurazione

Come indicato nella tabella precedente, i principali casi d'uso dei dati di configurazione sono i seguenti:

Invio dello stato desiderato come dati di configurazione

I dati di configurazione dei dispositivi archiviati in Cloud IoT Core possono essere utilizzati per modificare lo stato di un dispositivo. Ad esempio, supponi che la configurazione di un dispositivo sia rappresentata come segue:

DeviceConfig

{
    firmwareVersionRequest: 1.11
}

Il tuo client MQTT o HTTP potrebbe interpretare questi dati di configurazione come istruzioni per modificare lo stato del dispositivo; in questo caso, verifica che il dispositivo abbia la versione 1.11 del firmware. Il dispositivo può quindi inviare il proprio stato a Cloud IoT Core per mostrare la versione del firmware installata:

Stato dispositivo

{
    firmwareVersion: 1.11
}

Comandi di modellazione che utilizzano i dati di configurazione e di stato

I dati di configurazione dei dispositivi archiviati in Cloud IoT Core possono essere utilizzati per creare modelli di comandi. Ad esempio, supponiamo che la configurazione di un dispositivo sia rappresentata come segue:

DeviceConfig

{
  rebootRequested: true
}

Il tuo client MQTT o HTTP potrebbe interpretare questi dati di configurazione come istruzioni per eseguire azioni, in questo caso inviare un comando di riavvio. Il dispositivo può quindi mostrare i risultati segnalando il proprio stato e mostrando che è passato un secondo dall'ultimo riavvio:

Stato dispositivo

{
  last_reboot: 1
}

Strutturazione dei dati di configurazione

I dati di configurazione possono anche essere strutturati e possono includere dettagli sulla scadenza dei comandi:

DeviceConfig

{
  commands: {
    id1: {
      type: REBOOT
      requestedTimestamp: xxxx
      expirationTimestamp: yyyy
    }
    id2: ...
  }
}

Il tuo client potrebbe leggere questi comandi e aggiornare di conseguenza lo stato del dispositivo, fornendo un timestamp per il riavvio e un potenziale messaggio di errore.

Stato dispositivo

{
  commandResults: {
    id1: {
      type: REBOOT
      completedTimestamp: zzzz
      errorMessage: >empty<
    }
    id2: ...
  }
}

Questo modello può essere considerato come una relazione di comando e risposta tra il client e i dispositivi. Se viene utilizzata una scadenza, assicurati che l'orologio del dispositivo sia sincronizzato.