Förstå och Använd enheten dubbla i IoT HubUnderstand and use device twins in IoT Hub

Enhets dubbla är JSON-dokument som lagrar information om enhets tillstånd, inklusive metadata, konfigurationer och villkor.Device twins are JSON documents that store device state information including metadata, configurations, and conditions. Azure IoT Hub hanterar en enhet för varje enhet som du ansluter till IoT Hub.Azure IoT Hub maintains a device twin for each device that you connect to IoT Hub.

Anteckning

De funktioner som beskrivs i den här artikeln finns bara i standard-nivån för IoT Hub.The features described in this article are available only in the standard tier of IoT Hub. Läs mer om IoT Hub-nivåerna basic och standard välja rätt nivå för IoT Hub.For more information about the basic and standard IoT Hub tiers, see Choose the right IoT Hub tier.

Den här artikeln beskrivs:This article describes:

  • Enhetens struktur:: taggar, önskade och rapporterade egenskaper.The structure of the device twin: tags, desired and reported properties.
  • De åtgärder som enhets appar och Server delar kan utföra på enheten är dubbla.The operations that device apps and back ends can perform on device twins.

Använd enheten:Use device twins to:

  • Lagra enhetsspecifika metadata i molnet.Store device-specific metadata in the cloud. Till exempel distributions platsen för en Vending-dator.For example, the deployment location of a vending machine.

  • Rapportera aktuell statusinformation, till exempel tillgängliga funktioner och villkor från din enhets app.Report current state information such as available capabilities and conditions from your device app. Till exempel är en enhet ansluten till din IoT-hubb via mobil nät eller WiFi.For example, a device is connected to your IoT hub over cellular or WiFi.

  • Synkronisera tillstånd för långvariga arbets flöden mellan enhets app och backend-app.Synchronize the state of long-running workflows between device app and back-end app. Till exempel, när Server delen för lösningen anger den nya versionen av inbyggd program vara som ska installeras och Device-appen rapporterar de olika stegen i uppdaterings processen.For example, when the solution back end specifies the new firmware version to install, and the device app reports the various stages of the update process.

  • Fråga om metadata, konfiguration eller tillstånd för enheten.Query your device metadata, configuration, or state.

Information om hur du använder rapporterade egenskaper, meddelanden från enhet till moln eller fil uppladdning finns i rikt linjer för kommunikation mellan enheter och moln .Refer to Device-to-cloud communication guidance for guidance on using reported properties, device-to-cloud messages, or file upload.

Information om hur du använder önskade egenskaper, direkta metoder eller meddelanden från moln till enhet finns i rikt linjer för kommunikation från moln till enhet .Refer to Cloud-to-device communication guidance for guidance on using desired properties, direct methods, or cloud-to-device messages.

Enhets dubblaDevice twins

Enheten är kopplad till lagrings enhets information som:Device twins store device-related information that:

  • Enhets-och backend-slut kan användas för att synkronisera enhets villkor och-konfiguration.Device and back ends can use to synchronize device conditions and configuration.

  • Lösningens Server del kan användas för att fråga efter och fokusera på tids krävande åtgärder.The solution back end can use to query and target long-running operations.

Livs cykeln för en enhet med dubbla är kopplad till motsvarande enhets identitet.The lifecycle of a device twin is linked to the corresponding device identity. Enhetens dubblare skapas och tas bort implicit när en enhets identitet skapas eller tas bort i IoT Hub.Device twins are implicitly created and deleted when a device identity is created or deleted in IoT Hub.

En enhet är dubbla är ett JSON-dokument som innehåller:A device twin is a JSON document that includes:

  • Taggar.Tags. Ett avsnitt i JSON-dokumentet som server delen av lösningen kan läsa från och skriva till.A section of the JSON document that the solution back end can read from and write to. Taggarna är inte synliga för enhets program.Tags are not visible to device apps.

  • Önskade egenskaper.Desired properties. Används tillsammans med rapporterade egenskaper för att synkronisera enhets konfiguration eller-villkor.Used along with reported properties to synchronize device configuration or conditions. Lösningens Server del kan ange önskade egenskaper och appen kan läsa dem.The solution back end can set desired properties, and the device app can read them. Device-appen kan också ta emot aviseringar om ändringar i önskade egenskaper.The device app can also receive notifications of changes in the desired properties.

  • Rapporterade egenskaper.Reported properties. Används tillsammans med önskade egenskaper för att synkronisera enhetens konfiguration eller villkor.Used along with desired properties to synchronize device configuration or conditions. Device-appen kan ange rapporterade egenskaper och Server delen för lösningen kan läsa och fråga dem.The device app can set reported properties, and the solution back end can read and query them.

  • Egenskaper för enhets identitet.Device identity properties. Roten av enhetens dubbla JSON-dokument innehåller skrivskyddade egenskaper från motsvarande enhets identitet som lagras i identitets registret.The root of the device twin JSON document contains the read-only properties from the corresponding device identity stored in the identity registry.

Skärm bild av enhetens dubbla egenskaper

I följande exempel visas ett enhets dubbla JSON-dokument:The following example shows a device twin JSON document:

{
    "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
        }
    }
}

I rotobjektet finns enhetens identitets egenskaper och behållar objekt för tags och både reported-och desired egenskaper.In the root object are the device identity properties, and container objects for tags and both reported and desired properties. properties-behållaren innehåller skrivskyddade element ($metadata, $etagoch $version) som beskrivs i avsnitten enhets dubbla metadata och optimistisk samtidighet .The properties container contains some read-only elements ($metadata, $etag, and $version) described in the Device twin metadata and Optimistic concurrency sections.

Exempel på rapporterad egenskapReported property example

I föregående exempel innehåller enheten dubbla en batteryLevel-egenskap som rapporteras av enhets appen.In the previous example, the device twin contains a batteryLevel property that is reported by the device app. Den här egenskapen gör det möjligt att fråga och använda enheter baserat på den senaste rapporterade batteri nivån.This property makes it possible to query and operate on devices based on the last reported battery level. Andra exempel är enhets funktioner för enhets program rapportering eller anslutnings alternativ.Other examples include the device app reporting device capabilities or connectivity options.

Anteckning

Rapporterade egenskaper fören klar scenarier där lösningens Server del är intresse rad av det sista kända värdet för en egenskap.Reported properties simplify scenarios where the solution back end is interested in the last known value of a property. Använd enhets-till-moln-meddelanden om lösningens Server del behöver bearbeta telemetri i form av sekvenser med tidsstämplade händelser, t. ex. tids serier.Use device-to-cloud messages if the solution back end needs to process device telemetry in the form of sequences of timestamped events, such as time series.

Exempel på önskad egenskapDesired property example

I föregående exempel används den telemetryConfig enheten och de rapporterade egenskaperna som används av lösningens Server del och Device-appen för att synkronisera telemetri-konfigurationen för den här enheten.In the previous example, the telemetryConfig device twin desired and reported properties are used by the solution back end and the device app to synchronize the telemetry configuration for this device. Exempel:For example:

  1. Server delen för lösningen anger önskad egenskap med det önskade konfiguration svärdet.The solution back end sets the desired property with the desired configuration value. Här är den del av dokumentet med önskad egenskaps uppsättning:Here is the portion of the document with the desired property set:

    "desired": {
        "telemetryConfig": {
            "sendFrequency": "5m"
        },
        ...
    },
    
  2. Enhets appen meddelas om ändringen omedelbart om den är ansluten eller vid första åter anslutning.The device app is notified of the change immediately if connected, or at the first reconnect. Device-appen rapporterar sedan den uppdaterade konfigurationen (eller ett fel tillstånd med hjälp av egenskapen status).The device app then reports the updated configuration (or an error condition using the status property). Här är den del av de rapporterade egenskaperna:Here is the portion of the reported properties:

    "reported": {
        "telemetryConfig": {
            "sendFrequency": "5m",
            "status": "success"
        }
        ...
    }
    
  3. Lösningens Server del kan spåra resultatet av konfigurations åtgärden på många enheter genom att fråga enheten i flera enheter.The solution back end can track the results of the configuration operation across many devices by querying device twins.

Anteckning

Föregående kodfragment är exempel, optimerade för läsbarhet, av ett sätt att koda en enhets konfiguration och dess status.The preceding snippets are examples, optimized for readability, of one way to encode a device configuration and its status. IoT Hub tillhandahåller inte ett visst schema för enheten med dubbla önskade och rapporterade egenskaper i enheten.IoT Hub does not impose a specific schema for the device twin desired and reported properties in the device twins.

Du kan använda dubbla för att synkronisera långvariga åtgärder, till exempel uppdateringar av inbyggd program vara.You can use twins to synchronize long-running operations such as firmware updates. Mer information om hur du använder egenskaper för att synkronisera och spåra en tids krävande åtgärd mellan enheter finns i använda önskade egenskaper för att konfigurera enheter.For more information on how to use properties to synchronize and track a long running operation across devices, see Use desired properties to configure devices.

Server dels åtgärderBack-end operations

Lösningens Server del fungerar på enheten med dubbla med hjälp av följande atomiska åtgärder, exponeras via HTTPS:The solution back end operates on the device twin using the following atomic operations, exposed through HTTPS:

  • Hämta enhetens dubbla efter ID.Retrieve device twin by ID. Den här åtgärden returnerar enhetens dubbla dokument, inklusive Taggar och önskade och rapporterat system egenskaper.This operation returns the device twin document, including tags and desired and reported system properties.

  • Delvis uppdatering av enhets enhetPartially update device twin. Den här åtgärden gör att lösningens Server del kan användas för att delvis uppdatera taggarna eller önskade egenskaper i en enhet.This operation enables the solution back end to partially update the tags or desired properties in a device twin. Den partiella uppdateringen uttrycks som ett JSON-dokument som lägger till eller uppdaterar en egenskap.The partial update is expressed as a JSON document that adds or updates any property. De egenskaper som anges för null tas bort.Properties set to null are removed. I följande exempel skapas en ny önskad egenskap med Value {"newProperty": "newValue"}, skriver över det befintliga värdet för existingProperty med "otherNewValue"och tar bort otherOldProperty.The following example creates a new desired property with value {"newProperty": "newValue"}, overwrites the existing value of existingProperty with "otherNewValue", and removes otherOldProperty. Inga andra ändringar har gjorts i befintliga önskade egenskaper eller Taggar:No other changes are made to existing desired properties or tags:

    {
         "properties": {
             "desired": {
                 "newProperty": {
                     "nestedProperty": "newValue"
                 },
                 "existingProperty": "otherNewValue",
                 "otherOldProperty": null
             }
         }
    }
    
  • Ersätt önskade egenskaper.Replace desired properties. Den här åtgärden gör att Server delen av lösningen helt skriver över alla befintliga önskade egenskaper och ersätter ett nytt JSON-dokument för properties/desired.This operation enables the solution back end to completely overwrite all existing desired properties and substitute a new JSON document for properties/desired.

  • Ersätt Taggar.Replace tags. Den här åtgärden gör att Server delen av lösningen fullständigt skriver över alla befintliga taggar och ersätter ett nytt JSON-dokument för tags.This operation enables the solution back end to completely overwrite all existing tags and substitute a new JSON document for tags.

  • Få dubbla meddelanden.Receive twin notifications. Den här åtgärden gör att lösnings Server delen får ett meddelande när den dubbla ändras.This operation allows the solution back end to be notified when the twin is modified. För att göra det måste IoT-lösningen skapa en väg och ange data källan som lika med twinChangeEvents.To do so, your IoT solution needs to create a route and to set the Data Source equal to twinChangeEvents. Som standard finns inga sådana vägar i förväg, så inga dubbla meddelanden skickas.By default, no such routes pre-exist, so no twin notifications are sent. Om ändrings frekvensen är för hög, eller av andra orsaker, t. ex. interna problem, kan IoT Hub bara skicka ett meddelande som innehåller alla ändringar.If the rate of change is too high, or for other reasons such as internal failures, the IoT Hub might send only one notification that contains all changes. Om ditt program behöver tillförlitlig granskning och loggning av alla mellanliggande tillstånd bör du därför använda meddelanden från enheten till molnet.Therefore, if your application needs reliable auditing and logging of all intermediate states, you should use device-to-cloud messages. Det dubbla aviserings meddelandet innehåller egenskaper och brödtext.The twin notification message includes properties and body.

    • EgenskaperProperties

      NamnName VärdeValue
      $content-typ$content-type application/jsonapplication/json
      $iothub-enqueuedtime$iothub-enqueuedtime Tid när meddelandet skickadesTime when the notification was sent
      $iothub-message-source$iothub-message-source twinChangeEventstwinChangeEvents
      $content kodning$content-encoding utf-8utf-8
      deviceIddeviceId ID för enhetenID of the device
      hubNamehubName Namn på IoT HubName of IoT Hub
      operationTimestampoperationTimestamp Iso8601 tidsstämpel för åtgärdISO8601 timestamp of operation
      iothub-message-schemaiothub-message-schema twinChangeNotificationtwinChangeNotification
      opTypeopType "replaceTwin" eller "updateTwin""replaceTwin" or "updateTwin"

      Meddelande system egenskaper föregås av $ symbolen.Message system properties are prefixed with the $ symbol.

    • InnehållBody

      Det här avsnittet innehåller alla dubbla ändringar i JSON-format.This section includes all the twin changes in a JSON format. Den använder samma format som en korrigering, med skillnaden att den kan innehålla alla dubbla avsnitt: taggar, egenskaper. rapporterade, egenskaper. önskade och innehåller $metadata element.It uses the same format as a patch, with the difference that it can contain all twin sections: tags, properties.reported, properties.desired, and that it contains the “$metadata” elements. Exempel:For example,

      {
        "properties": {
            "desired": {
                "$metadata": {
                    "$lastUpdated": "2016-02-30T16:24:48.789Z"
                },
                "$version": 1
            },
            "reported": {
                "$metadata": {
                    "$lastUpdated": "2016-02-30T16:24:48.789Z"
                },
                "$version": 1
            }
        }
      }
      

Alla föregående åtgärder har stöd för optimistisk samtidighet och kräver ServiceConnect -behörighet, enligt definitionen i kontrol lera åtkomst till IoT Hub.All the preceding operations support Optimistic concurrency and require the ServiceConnect permission, as defined in Control access to IoT Hub.

Förutom dessa åtgärder kan lösningens Server del:In addition to these operations, the solution back end can:

  • Fråga enheten till varandra med hjälp av SQL-like IoT Hub frågespråk.Query the device twins using the SQL-like IoT Hub query language.

  • Utför åtgärder på stora enhets uppsättningar med jobb.Perform operations on large sets of device twins using jobs.

Enhets åtgärderDevice operations

Enhetens app fungerar på enheten med dubbla med följande atomiska åtgärder:The device app operates on the device twin using the following atomic operations:

  • Hämta enhet dubbla.Retrieve device twin. Den här åtgärden returnerar enhetens dubbla dokument (inklusive önskade och rapporterade system egenskaper) för den anslutna enheten.This operation returns the device twin document (including desired and reported system properties) for the currently connected device. (Taggar är inte synliga för enhets program.)(Tags are not visible to device apps.)

  • Delvis uppdatera rapporterade egenskaper.Partially update reported properties. Den här åtgärden aktiverar den partiella uppdateringen av de rapporterade egenskaperna för den anslutna enheten.This operation enables the partial update of the reported properties of the currently connected device. Den här åtgärden använder samma JSON-uppdaterings format som lösningens Server del använder för att få en del uppdatering av önskade egenskaper.This operation uses the same JSON update format that the solution back end uses for a partial update of desired properties.

  • Observera önskade egenskaper.Observe desired properties. Den aktuella anslutna enheten kan välja att få ett meddelande om uppdateringar av önskade egenskaper när de sker.The currently connected device can choose to be notified of updates to the desired properties when they happen. Enheten får samma typ av uppdatering (delvis eller fullständig ersättning) som körs av Server delen för lösningen.The device receives the same form of update (partial or full replacement) executed by the solution back end.

Alla föregående åtgärder kräver DeviceConnect -behörighet, enligt definitionen i kontrol lera åtkomst till IoT Hub.All the preceding operations require the DeviceConnect permission, as defined in Control Access to IoT Hub.

SDK: er för Azure IoT-enheter gör det enkelt att använda föregående åtgärder från många olika språk och plattformar.The Azure IoT device SDKs make it easy to use the preceding operations from many languages and platforms. Mer information om IoT Hub primitiver för önskade synkronisering av egenskaper finns i enhets åter anslutnings flöde.For more information on the details of IoT Hub primitives for desired properties synchronization, see Device reconnection flow.

Format för taggar och egenskaperTags and properties format

Taggar, önskade egenskaper och rapporterade egenskaper är JSON-objekt med följande begränsningar:Tags, desired properties, and reported properties are JSON objects with the following restrictions:

  • Alla nycklar i JSON-objekt är UTF-8-kodade, SKIFT läges känsliga och upp till 1 KB långt.All keys in JSON objects are UTF-8 encoded, case-sensitive, and up-to 1 KB in length. Tillåtna tecken utesluter UNICODE-kontrolltecken (segment C0 och C1) och ., $och SP.Allowed characters exclude UNICODE control characters (segments C0 and C1), and ., $, and SP.

  • Alla värden i JSON-objekt kan vara av följande JSON-typer: Boolean, Number, String, Object.All values in JSON objects can be of the following JSON types: boolean, number, string, object. Matriser är inte tillåtna.Arrays are not allowed. Det maximala värdet för heltal är 4503599627370495 och det lägsta värdet för heltal är-4503599627370496.The maximum value for integers is 4503599627370495 and the minimum value for integers is -4503599627370496.

  • Alla JSON-objekt i taggar, önskade och rapporterade egenskaper kan ha ett maximalt djup på 10.All JSON objects in tags, desired, and reported properties can have a maximum depth of 10. Till exempel är följande objekt giltigt:For instance, the following object is valid:

    {
         ...
         "tags": {
             "one": {
                 "two": {
                     "three": {
                         "four": {
                             "five": {
                                 "six": {
                                     "seven": {
                                         "eight": {
                                             "nine": {
                                                 "ten": {
                                                     "property": "value"
                                                 }
                                             }
                                         }
                                     }
                                 }
                             }
                         }
                     }
                 }
             }
         },
         ...
    }
    
  • Alla sträng värden kan vara högst 4 KB långa.All string values can be at most 4 KB in length.

Enhetens dubbla storlekDevice twin size

IoT Hub tillämpar storleks gränsen på 8 KB på värdet för tags, och en storlek på 32 KB som är begränsad till värdet för properties/desired och properties/reported.IoT Hub enforces an 8 KB size limit on the value of tags, and a 32 KB size limit each on the value of properties/desired and properties/reported. Dessa summor är exklusivt för skrivskyddade element.These totals are exclusive of read-only elements.

Storleken beräknas genom att räkna alla tecken, förutom UNICODE-kontrolltecken (segmenten C0 och C1) och blank steg utanför String-konstanter.The size is computed by counting all characters, excluding UNICODE control characters (segments C0 and C1) and spaces that are outside of string constants.

IoT Hub avvisar alla åtgärder som skulle öka storleken på dokumenten över gränsen.IoT Hub rejects with an error all operations that would increase the size of those documents above the limit.

Enhetens dubbla metadataDevice twin metadata

IoT Hub behåller tidsstämpeln för den senaste uppdateringen för varje JSON-objekt i enhetens dubbla önskade och rapporterade egenskaper.IoT Hub maintains the timestamp of the last update for each JSON object in device twin desired and reported properties. Tidsstämplar är UTC-formaterade och kodade i iso8601 -formatet YYYY-MM-DDTHH:MM:SS.mmmZ.The timestamps are in UTC and encoded in the ISO8601 format YYYY-MM-DDTHH:MM:SS.mmmZ.

Exempel:For example:

{
    ...
    "properties": {
        "desired": {
            "telemetryConfig": {
                "sendFrequency": "5m"
            },
            "$metadata": {
                "telemetryConfig": {
                    "sendFrequency": {
                        "$lastUpdated": "2016-03-30T16:24:48.789Z"
                    },
                    "$lastUpdated": "2016-03-30T16:24:48.789Z"
                },
                "$lastUpdated": "2016-03-30T16:24:48.789Z"
            },
            "$version": 23
        },
        "reported": {
            "telemetryConfig": {
                "sendFrequency": "5m",
                "status": "success"
            },
            "batteryLevel": "55%",
            "$metadata": {
                "telemetryConfig": {
                    "sendFrequency": "5m",
                    "status": {
                        "$lastUpdated": "2016-03-31T16:35:48.789Z"
                    },
                    "$lastUpdated": "2016-03-31T16:35:48.789Z"
                },
                "batteryLevel": {
                    "$lastUpdated": "2016-04-01T16:35:48.789Z"
                },
                "$lastUpdated": "2016-04-01T16:24:48.789Z"
            },
            "$version": 123
        }
    }
    ...
}

Den här informationen lagras på alla nivåer (inte bara löv till JSON-strukturen) för att bevara uppdateringar som tar bort objekt nycklar.This information is kept at every level (not just the leaves of the JSON structure) to preserve updates that remove object keys.

Optimistisk samtidighetOptimistic concurrency

Taggar, önskade och rapporterade egenskaper alla stöder optimistisk samtidighet.Tags, desired, and reported properties all support optimistic concurrency. Taggar har en ETag, som per RFC7232, som representerar TAGGENs JSON-representation.Tags have an ETag, as per RFC7232, that represents the tag's JSON representation. Du kan använda ETags i villkorliga uppdaterings åtgärder från lösningens Server del för att säkerställa konsekvens.You can use ETags in conditional update operations from the solution back end to ensure consistency.

Enhetens dubbla önskade och rapporterade egenskaper har inte ETags, men har ett $version-värde som garanterar att det ökar.Device twin desired and reported properties do not have ETags, but have a $version value that is guaranteed to be incremental. På samma sätt som en ETag, kan versionen användas av uppdaterings parten för att tvinga fram konsekvens av uppdateringar.Similarly to an ETag, the version can be used by the updating party to enforce consistency of updates. Till exempel en enhets app för en rapporterad egenskap eller lösningens Server del för en önskad egenskap.For example, a device app for a reported property or the solution back end for a desired property.

Versioner är också användbara när en iakttagit agent (t. ex. enhets appen som underrättar önskade egenskaper) måste stämma av races mellan resultatet av en Hämta-åtgärd och ett uppdaterings meddelande.Versions are also useful when an observing agent (such as the device app observing the desired properties) must reconcile races between the result of a retrieve operation and an update notification. Avsnittet flöde för enhets åter anslutning innehåller mer information.The Device reconnection flow section provides more information.

Flöde för åter anslutning av enhetDevice reconnection flow

IoT Hub bevarar inte önskade egenskaper uppdaterings meddelanden för frånkopplade enheter.IoT Hub does not preserve desired properties update notifications for disconnected devices. Det följer på att en enhet som ansluter måste hämta ett fullständigt önskade egenskaps dokument, förutom att prenumerera på uppdaterings meddelanden.It follows that a device that is connecting must retrieve the full desired properties document, in addition to subscribing for update notifications. Med tanke på möjligheten att races mellan uppdaterings meddelanden och fullständig hämtning måste följande flöde vara säkerställt:Given the possibility of races between update notifications and full retrieval, the following flow must be ensured:

  1. Enhets appen ansluter till en IoT-hubb.Device app connects to an IoT hub.
  2. Enhets app prenumererar på önskade egenskaper uppdatera meddelanden.Device app subscribes for desired properties update notifications.
  3. Enhets appen hämtar det fullständiga dokumentet för önskade egenskaper.Device app retrieves the full document for desired properties.

Device-appen kan ignorera alla meddelanden med $version mindre än eller lika med versionen av det fullständiga hämtade dokumentet.The device app can ignore all notifications with $version less or equal than the version of the full retrieved document. Den här metoden är möjlig eftersom IoT Hub garanterar att versioner alltid ökar.This approach is possible because IoT Hub guarantees that versions always increment.

Anteckning

Den här logiken är redan implementerad i SDK: er för Azure IoT-enheter.This logic is already implemented in the Azure IoT device SDKs. Den här beskrivningen är användbar endast om enhets appen inte kan använda någon av Azure IoT-enhetens SDK: er och måste program mera MQTT-gränssnittet direkt.This description is useful only if the device app cannot use any of Azure IoT device SDKs and must program the MQTT interface directly.

Ytterligare referens materialAdditional reference material

Andra referens ämnen i IoT Hub Developer Guide är:Other reference topics in the IoT Hub developer guide include:

Nästa stegNext steps

Nu när du har lärt dig mer om enheten, kan du vara intresse rad av följande avsnitt om IoT Hub Developer-Guide:Now you have learned about device twins, you may be interested in the following IoT Hub developer guide topics:

Om du vill testa några av de begrepp som beskrivs i den här artikeln kan du läsa följande IoT Hub Självstudier:To try out some of the concepts described in this article, see the following IoT Hub tutorials: