Introduzione ai dispositivi gemelli

Completato

I dispositivi gemelli sono documenti JSON gestiti dall'hub IoT che archiviano le informazioni sullo stato del dispositivo associate a un dispositivo fisico. Queste informazioni includono metadati, configurazioni e condizioni. L'hub IoT di Azure gestisce un dispositivo gemello per ogni dispositivo registrato (per ogni identità del dispositivo).

I dispositivi gemelli consentono di archiviare informazioni sul dispositivo che possono essere usate:

  • Un dispositivo e le risorse back-end possono usarlo per sincronizzare le condizioni e la configurazione dei dispositivi.
  • Le risorse back-end possono accedere per le operazioni a esecuzione prolungata. Le risorse back-end accedono al dispositivo gemello tramite l'hub IoT.

Il ciclo di vita di un dispositivo gemello è correlato all'identità del dispositivo corrispondente. I dispositivi gemelli vengono creati ed eliminati implicitamente quando viene creata o eliminata un'identità del dispositivo nell'hub IoT.

Un dispositivo gemello è un documento JSON che include:

  • Tag. Una sezione del documento JSON che il back-end della soluzione è in grado di leggere e in cui può scrivere. I tag non sono visibili alle applicazioni per dispositivi.
  • Proprietà desiderate. Sono usate insieme alle proprietà segnalate per sincronizzare la configurazione o le condizioni del dispositivo. Il back-end della soluzione è in grado di impostare le proprietà desiderate e l'app per dispositivo è in grado di leggerle. L'app per dispositivo può anche ricevere notifiche relative alle modifiche apportate alle proprietà desiderate.
  • Proprietà segnalate. Sono usate insieme alle proprietà desiderate per sincronizzare la configurazione o le condizioni del dispositivo. L'app per dispositivo è in grado di impostare le proprietà segnalate, mentre il back-end della soluzione è in grado di fare delle query.
  • Proprietà di identità del dispositivo. La radice del documento JSON del dispositivo gemello contiene le proprietà di sola lettura dell'identità del dispositivo corrispondente archiviata nel registro delle identità.

Diagramma che mostra i componenti principali di un documento del dispositivo gemello.

Documento di esempio

L'esempio seguente illustra un documento JSON del dispositivo gemello:

{
    "deviceId": "devA",
    "etag": "AAAAAAAAAAc=",
    "status": "enabled",
    "statusReason": "provisioned",
    "statusUpdateTime": "0001-01-01T00:00:00",
    "connectionState": "connected",
    "lastActivityTime": "2015-02-30T16:24:48.789Z",
    "cloudToDeviceMessageCount": 0,
    "authenticationType": "sas",
    "x509Thumbprint": { 
        "primaryThumbprint": null,
        "secondaryThumbprint": null
    },
    "version": 2,
    "tags": {
        "$etag": "123",
        "deploymentLocation": {
            "building": "43",
            "floor": "1"
        }
    },
    "properties": {
        "desired": {
            "telemetryConfig": {
                "sendFrequency": "5m"
            },
            "$metadata": {...},
            "$version": 1
        },
        "reported": {
            "telemetryConfig": {
                "sendFrequency": "5m",
                "status": "success"
            },
            "batteryLevel": 55,
            "$metadata": {...},
            "$version": 4
        }
    }
}

Utilizzo

Usare i dispositivi gemelli per:

  • Archiviare i metadati specifici del dispositivo nel cloud, ad esempio il percorso di distribuzione di un distributore automatico.
  • Segnalare informazioni sullo stato corrente, come funzionalità disponibili e condizioni dall'app per dispositivo. Ad esempio, un dispositivo è connesso all'hub IoT mediante il cellulare o il Wi-Fi.
  • Sincronizzare lo stato dei flussi di lavoro a esecuzione prolungata tra l'app per dispositivi e back-end, ad esempio quando il back-end della soluzione specifica la nuova versione del firmware da installare e l'app per dispositivo segnala le varie fasi del processo di aggiornamento.
  • Eseguire query sui metadati, la configurazione o lo stato dei dispositivi.

Scopi e procedure consigliate

I dispositivi gemelli consentono di sincronizzare la configurazione desiderata dal cloud e di segnalare le proprietà correnti di configurazione e dispositivi. Il modo migliore per implementare dispositivi gemelli all'interno di applicazioni di soluzioni cloud consiste nell'uso degli SDK per IoT di Azure. I dispositivi gemelli sono particolarmente adatti alla configurazione per i motivi seguenti:

  • Supportano le comunicazioni bidirezionali.
  • Consentono lo stato connesso e disconnesso dei dispositivi.
  • Seguono il principio della coerenza finale.
  • Supportano tutti l'esecuzione di query nel cloud.

Identità del modulo e moduli gemelli

Ogni identità del dispositivo nell'hub IoT può includere fino a 20 identità del modulo e ogni identità del modulo genera in modo implicito un modulo gemello. Simili ai dispositivi gemelli, i moduli gemelli sono documenti JSON nei quali vengono archiviate informazioni sullo stato dei moduli, tra cui metadati, configurazioni e condizioni. L'hub IoT di Azure mantiene un modulo gemello per ogni modulo che viene connesso all'hub IoT.

Sul lato del dispositivo, gli SDK per dispositivi dell'hub IoT consentono di creare moduli ognuno dei quali apre una connessione indipendente all'hub IoT. Questa funzionalità permette di usare spazi dei nomi distinti per i diversi componenti nel dispositivo. Supponiamo ad esempio di avere un distributore automatico con tre diversi sensori. Ogni sensore è controllato da reparti diversi dell'azienda. È possibile creare un modulo per ogni sensore. In questo modo ogni reparto può creare processi o metodi diretti solo per il sensore che controlla, evitando conflitti ed errori degli utenti.

L'identità del modulo e il modulo gemello offrono le stesse funzionalità dell'identità del dispositivo e dei dispositivi gemelli, ma con una granularità superiore. Questa granularità superiore consente a determinati dispositivi, ad esempio i dispositivi basati su sistema operativo o i dispositivi firmware che gestiscono più componenti, di isolare la configurazione e le condizioni di ognuno di questi componenti. L'identità del modulo e i moduli gemelli consentono di gestire separatamente i diversi problemi quando si usano dispositivi IoT con componenti software modulari.