Exporter des données IoT vers des destinations dans AzureExport IoT data to destinations in Azure

Cette rubrique s’applique aux administrateurs.This topic applies to administrators.

Cet article explique comment utiliser la fonctionnalité d’exportation de données dans Azure IoT Central.This article describes how to use the data export feature in Azure IoT Central. Cette fonctionnalité vous permet d’exporter vos données en continu vers des instances Azure Event Hubs, Azure Service Bus ou Stockage Blob Azure.This feature lets you export your data continuously to Azure Event Hubs, Azure Service Bus, or Azure Blob storage instances. L’exportation des données utilise le format JSON et peut inclure des informations de télémétrie, ainsi que des informations sur les appareils et les modèles d’appareil.Data export uses the JSON format and can include telemetry, device information, and device template information. Utilisez les données exportées pour :Use the exported data for:

  • Insights et analytiques à chaud.Warm-path insights and analytics. Cette option inclut le déclenchement de règles personnalisées dans Azure Stream Analytics, le déclenchement de workflows personnalisés dans Azure Logic Apps ou la transmission des données à transformer via Azure Functions.This option includes triggering custom rules in Azure Stream Analytics, triggering custom workflows in Azure Logic Apps, or passing it through Azure Functions to be transformed.
  • Analytique des chemins à froid, comme les modèles d’apprentissage dans Azure Machine Learning ou l’analyse de tendances à long terme dans Microsoft Power BI.Cold-path analytics such as training models in Azure Machine Learning or long-term trend analysis in Microsoft Power BI.

Notes

Quand vous activez l’exportation de données, vous obtenez seulement les données à partir de ce moment.When you turn on data export, you get only the data from that moment onward. Pour le moment, vous ne pouvez pas récupérer les données d’une période pendant laquelle l’exportation de données était désactivée.Currently, data can't be retrieved for a time when data export was off. Pour conserver un historique des données plus étendu, activez l’exportation de données au plus tôt.To retain more historical data, turn on data export early.

PrérequisPrerequisites

Vous devez être administrateur de votre application IoT Central, ou disposer d’autorisations d’exportation de données.You must be an administrator in your IoT Central application, or have Data export permissions.

Définir la destination de l’exportationSet up export destination

Votre destination d’exportation doit exister avant la configuration de l’exportation de données.Your export destination must exist before you configure your data export.

Créer un espace de noms Event HubsCreate Event Hubs namespace

En l’absence d’espace de noms Event Hubs existant vers lequel exporter, suivez ces étapes :If you don't have an existing Event Hubs namespace to export to, follow these steps:

  1. Créez un espace de noms Event Hubs dans le Portail Azure.Create a new Event Hubs namespace in the Azure portal. Pour en savoir plus, consultez les documents sur Azure Event Hubs.You can learn more in Azure Event Hubs docs.

  2. Choisissez un abonnement.Choose a subscription. Vous pouvez exporter des données vers des abonnements autres que celui de votre application IoT Central.You can export data to other subscriptions that aren't in the same subscription as your IoT Central application. Vous vous connecterez à l’aide d’une chaîne de connexion dans ce cas.You connect using a connection string in this case.

  3. Créez un Event Hub dans votre espace de noms Event Hubs.Create an event hub in your Event Hubs namespace. Accédez à votre espace de noms, puis sélectionnez + Event Hub, en haut, pour créer une instance Event Hub.Go to your namespace, and select + Event Hub at the top to create an event hub instance.

Créer un espace de noms Service BusCreate Service Bus namespace

En l’absence d’espace de noms Service Bus vers lequel exporter, suivez ces étapes :If you don't have an existing Service Bus namespace to export to, follow these steps:

  1. Créez un espace de noms Service Bus dans le Portail Azure.Create a new Service Bus namespace in the Azure portal. Pour en savoir plus, consultez les documents sur Azure Service Bus.You can learn more in Azure Service Bus docs.

  2. Choisissez un abonnement.Choose a subscription. Vous pouvez exporter des données vers des abonnements autres que celui de votre application IoT Central.You can export data to other subscriptions that aren't in the same subscription as your IoT Central application. Vous vous connecterez à l’aide d’une chaîne de connexion dans ce cas.You connect using a connection string in this case.

  3. Pour créer une file d’attente ou une rubrique de destination d’exportation, accédez à votre espace de noms Service Bus, puis sélectionnez + File d’attente ou + Rubrique, en haut.To create a queue or topic to export to, go to your Service Bus namespace, and select + Queue or + Topic.

Lorsque vous choisissez un Service Bus comme destination d’exportation, les sessions et la détection des doublons ne doivent pas être activées dans les files d’attente et les rubriques.When you choose Service Bus as an export destination, the queues and topics must not have Sessions or Duplicate Detection enabled. Si l’une de ces options est activée, certains messages n’arriveront pas dans votre file d’attente ou votre rubrique.If either of those options are enabled, some messages won't arrive in your queue or topic.

Créer un compte de stockageCreate storage account

En l’absence de compte de stockage Azure vers lequel exporter, suivez ces étapes :If you don't have an existing Azure storage account to export to, follow these steps:

  1. Créez un compte de stockage sur le Portail Azure.Create a new storage account in the Azure portal. Découvrez comment créer des comptes de stockage Blob Azure ou des comptes de stockage Azure Data Lake Storage v2.You can learn more about creating new Azure Blob storage accounts or Azure Data Lake Storage v2 storage accounts. L’exportation de données peut uniquement écrire des données dans des comptes de stockage qui prennent en charge les objets blob de blocs.Data export can only write data to storage accounts that support block blobs. La liste suivante répertorie les types de compte de stockage compatibles connus :The following list shows the known compatible storage account types:

    Niveau de performancesPerformance Tier Type de compteAccount Type
    standardStandard Usage général v2General Purpose V2
    standardStandard Usage général v1General Purpose V1
    standardStandard Stockage d'objets blobBlob storage
    PremiumPremium Stockage d’objets blob de blocsBlock Blob storage
  2. Créez un conteneur dans votre compte de stockage.Create a container in your storage account. Accédez à votre compte de stockage.Go to your storage account. Sous Service blob, sélectionnez Parcourir les objets blob.Under Blob Service, select Browse Blobs. Sélectionnez + Conteneur, en haut, pour créer un conteneur.Select + Container at the top to create a new container.

Configurer l’exportation de donnéesSet up data export

Maintenant que vous avez une destination pour exporter les données, suivez ces étapes pour configurer l’exportation des données.Now that you have a destination to export data to, follow these steps to set up data export.

  1. Connectez-vous à votre application IoT Central.Sign in to your IoT Central application.

  2. Dans le volet gauche, sélectionnez Exportation de données.In the left pane, select Data export.

    Conseil

    Si vous ne voyez pas Exportation de données dans le volet gauche, cela signifie que vous n’avez pas les autorisations nécessaires pour configurer l’exportation de données dans votre application.If you don't see Data export in the left pane, then you don't have permissions to configure data export in your app. Contactez un administrateur pour configurer l’exportation de données.Talk to an administrator to set up data export.

  3. Sélectionnez le bouton + Nouveau dans le coin supérieur droit.Select the + New button in the top right. Choisissez Stockage Blob Azure, Azure Event Hubs ou Azure Service Bus comme destination de l’exportation.Choose one of Azure Event Hubs, Azure Service Bus, or Azure Blob storage as the destination of your export. Le nombre maximal d’exportations par application est de cinq.The maximum number of exports per application is five.

    Créer une exportation de données

  4. Dans la zone de liste déroulante, sélectionnez votre espace de noms Event Hubs , espace de noms Service Bus, espace de noms du compte de stockage, ou saisissez une chaîne de connexion.In the drop-down list box, select your Event Hubs namespace, Service Bus namespace, Storage Account namespace, or Enter a connection string.

    • Vous verrez seulement les comptes de stockage, les espaces de noms Event Hubs et les espaces de noms Service Bus se trouvant dans le même abonnement que votre application IoT Central.You only see storage accounts, Event Hubs namespaces, and Service Bus namespaces in the same subscription as your IoT Central application. Si vous souhaitez exporter les données vers une destination en dehors de cet abonnement, choisissez Entrer une chaîne de connexion et reportez-vous à l’étape suivante.If you want to export to a destination outside of this subscription, choose Enter a connection string and see the next step.
    • Pour les applications créées à l’aide du plan Gratuit, le seul moyen de configurer l’exportation de données est d’utiliser une chaîne de connexion.For apps created using the free pricing plan, the only way to configure data export is through a connection string. Les applications du plan Gratuit ne sont associées à aucun abonnement Azure.Apps on the free pricing plan don't have an associated Azure subscription.

    Créer un Event Hub

  5. (Facultatif) Si vous avez choisi Entrer une chaîne de connexion, une nouvelle zone vous permettant de coller votre chaîne de connexion s’affiche.(Optional) If you chose Enter a connection string, a new box appears for you to paste your connection string. Pour obtenir votre chaîne de connexion :To get the connection string for your:

    • Pour Event Hubs ou Service Bus, accédez à l’espace de noms correspondant dans le Portail Azure :Event Hubs or Service Bus, go to the namespace in the Azure portal:
      • Sous Paramètres, sélectionnez Stratégies d’accès partagéUnder Settings, select Shared Access Policies
      • Choisissez la valeur par défaut RootManageSharedAccessKey ou créez-en uneChoose the default RootManageSharedAccessKey or create a new one
      • Copiez la chaîne de connexion primaire ou secondaireCopy either the primary or secondary connection string
    • Pour votre compte de stockage, accédez à celui-ci dans le Portail Azure :Storage account, go to the storage account in the Azure portal:
      • Sous Paramètres, sélectionnez Clés d’accès.Under Settings, select Access keys
      • Copiez soit la chaîne de connexion key1 soit la chaîne de connexion key2Copy either the key1 connection string or the key2 connection string
  6. Choisissez un conteneur, un Event Hub, une file d’attente ou une rubrique dans la zone de liste déroulante.Choose an event hub, queue, topic, or container from the drop-down list box.

  7. Sous Données à exporter, choisissez les types de données à exporter en définissant le type avec la valeur Activé.Under Data to export, choose the types of data to export by setting the type to On.

  8. Pour activer l’exportation de données, vérifiez que le bouton bascule sous Activé indique activé.To turn on data export, make sure the Enabled toggle is On. Sélectionnez Enregistrer.Select Save.

  9. Après quelques minutes, vos données s’affichent à la destination choisie.After a few minutes, your data appears in your chosen destination.

Exporter le contenu et le formatExport contents and format

Les données de télémétrie exportées contiennent l’intégralité du message que vos appareils ont envoyé à IoT Central, et non uniquement les valeurs de télémétrie.Exported telemetry data contains the entirety of the message your devices sent to IoT Central, not just the telemetry values themselves. Les données des appareils exportés contiennent les modifications apportées aux propriétés et aux métadonnées de tous les appareils, et les modèles d’appareil exportés contiennent les modifications apportées à tous les modèles d’appareil.Exported devices data contains changes to properties and metadata of all devices, and exported device templates contains changes to all device templates.

Pour Event Hubs et Service Bus, les données sont exportées en quasi-temps réel.For Event Hubs and Service Bus, data is exported in near-realtime. Les données résident dans la propriété body au format JSON.The data is in the body property and is in JSON format. Consultez les exemples ci-dessous.See below for examples.

Pour le stockage Blob, les données sont exportées une fois par minute et chaque fichier contient le lot de modifications apportées depuis la dernière exportation de fichier.For Blob storage, data is exported once per minute, with each file containing the batch of changes since the last exported file. Les données exportées sont placées dans trois dossiers au format JSON.Exported data is placed in three folders in JSON format. Les chemins d’accès par défaut dans votre compte de stockage sont les suivants :The default paths in your storage account are:

  • Données de télémétrie : {conteneur}/{id-app}/telemetry/{AAAA}/{MM}/{jj}/{hh}/{mm}/{nom-fichier}Telemetry: {container}/{app-id}/telemetry/{YYYY}/{MM}/{dd}/{hh}/{mm}/{filename}
  • Appareils : {conteneur}/{id-app}/devices/{AAAA}/{MM}/{jj}/{hh}/{mm}/{nom-fichier}Devices: {container}/{app-id}/devices/{YYYY}/{MM}/{dd}/{hh}/{mm}/{filename}
  • Modèles d’appareil : {conteneur}/deviceTemplates/{AAAA}/{MM}/{jj}/{hh}/{mm}/{nom-fichier}Device templates: {container}/{app-id}/deviceTemplates/{YYYY}/{MM}/{dd}/{hh}/{mm}/{filename}

Pour parcourir les fichiers exportés dans le Portail Azure, accédez au fichier puis sélectionnez l’onglet Modifier le blob.To browse the exported files in the Azure portal, navigate to the file and select the Edit blob tab.

TélémétrieTelemetry

Pour Event Hubs et Service Bus, IoT Central exporte rapidement un nouveau message après l’avoir reçu d’un appareil.For Event Hubs and Service Bus, IoT Central exports a new message quickly after it receives the message from a device. Chaque message exporté contient le message complet envoyé par l’appareil dans la propriété « body » au format JSON.Each exported message contains the full message the device sent in the body property in JSON format.

Pour le stockage Blob, les messages sont regroupés par lot et exportés une fois par minute.For Blob storage, messages are batched and exported once per minute. Les fichiers exportés utilisent le même format que les fichiers de messages exportés par le routage des messages IoT Hub vers Stockage Blob.The exported files use the same format as the message files exported by IoT Hub message routing to blob storage.

Notes

Pour le stockage Blob, vérifiez que vos appareils envoient bien des messages avec contentType: application/JSON et contentEncoding:utf-8 (ou utf-16, utf-32).For Blob storage, ensure that your devices are sending messages that have contentType: application/JSON and contentEncoding:utf-8 (or utf-16, utf-32). Pour obtenir un exemple, consultez la documentation IoT Hub.See the IoT Hub documentation for an example.

L’appareil qui a envoyé les données de télémétrie est représenté par l’ID d’appareil (voir les sections suivantes).The device that sent the telemetry is represented by the device ID (see the following sections). Pour obtenir les noms des appareils, exportez les données de ceux-ci et corrélez chaque message en utilisant le connectionDeviceId qui correspond au deviceId du message de l’appareil.To get the names of the devices, export device data and correlate each message by using the connectionDeviceId that matches the deviceId of the device message.

L’exemple suivant montre un message reçu d’une file d’attente ou rubrique Event Hub ou Service Bus :The following example shows a message received from an event hub or Service Bus queue or topic:

{
  "temp":81.129693132351775,
  "humid":59.488071477541247,
  "EventProcessedUtcTime":"2020-04-07T09:41:15.2877981Z",
  "PartitionId":0,
  "EventEnqueuedUtcTime":"2020-04-07T09:38:32.7380000Z"
}

Ce message n’inclut pas l’ID d’appareil de l’appareil émetteur.This message doesn't include the device ID of the sending device.

Pour récupérer l’ID de l’appareil à partir des données du message dans une requête Azure Stream Analytics, utilisez la fonction GetMetadataPropertyValue.To retrieve the device ID from the message data in an Azure Stream Analytics query, use the GetMetadataPropertyValue function. Par obtenir un exemple, consultez la requête Étendre Azure IoT Central avec des règles personnalisées à l’aide de Stream Analytics, d’Azure Functions et de SendGrid.For an example, see the query in Extend Azure IoT Central with custom rules using Stream Analytics, Azure Functions, and SendGrid.

Pour récupérer l’ID d’appareil dans un espace de travail Azure Databricks ou Apache Spark, utilisez systemProperties.To retrieve the device ID in an Azure Databricks or Apache Spark workspace, use systemProperties. Pour obtenir un exemple, consultez l’espace de travail Databricks dans Étendre Azure IoT Central avec des analyses personnalisées à l’aide d’Azure Databricks.For an example, see the Databricks workspace in Extend Azure IoT Central with custom analytics using Azure Databricks.

L’exemple suivant montre un enregistrement exporté vers le stockage Blob :The following example shows a record exported to blob storage:

{
  "EnqueuedTimeUtc":"2019-09-26T17:46:09.8870000Z",
  "Properties":{

  },
  "SystemProperties":{
    "connectionDeviceId":"<deviceid>",
    "connectionAuthMethod":"{\"scope\":\"device\",\"type\":\"sas\",\"issuer\":\"iothub\",\"acceptingIpFilterRule\":null}",
    "connectionDeviceGenerationId":"637051167384630591",
    "contentType":"application/json",
    "contentEncoding":"utf-8",
    "enqueuedTime":"2019-09-26T17:46:09.8870000Z"
  },
  "Body":{
    "temp":49.91322758395974,
    "humid":49.61214852573155,
    "pm25":25.87332214661367
  }
}

AppareilsDevices

Chaque message ou enregistrement d’instantané représente un ou plusieurs changements apportés à un appareil, ainsi que ses propriétés d’appareil et ses propriétés cloud, depuis le dernier message exporté.Each message or record in a snapshot represents one or more changes to a device and its device and cloud properties since the last exported message. Le message contient les éléments suivants :The message includes the:

  • id de l’appareil dans IoT Centralid of the device in IoT Central
  • displayName de l’appareildisplayName of the device
  • L’ID du modèle d’appareil dans instanceOfDevice template ID in instanceOf
  • L’indicateur simulated, true si l’appareil est un appareil simulésimulated flag, true if the device is a simulated device
  • L’indicateur provisioned, true si l’appareil a bien été provisionnéprovisioned flag, true if the device has been provisioned
  • L’indicateur approved, true si l’appareil a reçu une approbation pour l’envoi de donnéesapproved flag, true if the device has been approved to send data
  • Valeurs de propriétésProperty values
  • Les properties, y compris les valeurs de propriétés d’appareil et de cloudproperties including device and cloud properties values

Les appareils supprimés ne sont pas exportés.Deleted devices aren't exported. Actuellement, il n’y a aucun indicateur dans les messages exportés pour les appareils supprimés.Currently, there are no indicators in exported messages for deleted devices.

Pour Event Hubs et Service Bus, IoT Central envoie des messages contenant les données de l’appareil à la file d’attente ou à la rubrique Event Hub ou Service Bus en quasi-temps réel.For Event Hubs and Service Bus, IoT Central sends messages containing device data to your event hub or Service Bus queue or topic in near real time.

Pour le stockage Blob, un nouvel instantané contenant toutes les modifications apportées depuis la dernière écriture est exporté une fois par minute.For Blob storage, a new snapshot containing all the changes since the last one written is exported once per minute.

L’exemple de message suivant affiche des informations concernant les données d’appareils et de propriétés dans la file d’attente ou la rubrique Event Hub ou Service Bus :The following example message shows information about devices and properties data in an event hub or Service Bus queue or topic:

{
  "body":{
    "id": "<device Id>",
    "etag": "<etag>",
    "displayName": "Sensor 1",
    "instanceOf": "<device template Id>",
    "simulated": false,
    "provisioned": true,
    "approved": true,
    "properties": {
        "sensorComponent": {
            "setTemp": "30",
            "fwVersion": "2.0.1",
            "status": { "first": "first", "second": "second" },
            "$metadata": {
                "setTemp": {
                    "desiredValue": "30",
                    "desiredVersion": 3,
                    "desiredTimestamp": "2020-02-01T17:15:08.9284049Z",
                    "ackVersion": 3
                },
                "fwVersion": { "ackVersion": 3 },
                "status": {
                    "desiredValue": {
                        "first": "first",
                        "second": "second"
                    },
                    "desiredVersion": 2,
                    "desiredTimestamp": "2020-02-01T17:15:08.9284049Z",
                    "ackVersion": 2
                }
            },
            
        }
    },
    "installDate": { "installDate": "2020-02-01" }
},
  "annotations":{
    "iotcentral-message-source":"devices",
    "x-opt-partition-key":"<partitionKey>",
    "x-opt-sequence-number":39740,
    "x-opt-offset":"<offset>",
    "x-opt-enqueued-time":1539274959654
  },
  "partitionKey":"<partitionKey>",
  "sequenceNumber":39740,
  "enqueuedTimeUtc":"2020-02-01T18:14:49.3820326Z",
  "offset":"<offset>"
}

Cet instantané est un exemple de message qui affiche les données des appareils et des propriétés dans le stockage Blob.This snapshot is an example message that shows devices and properties data in Blob storage. Les fichiers exportés contiennent une seule ligne par enregistrement.Exported files contain a single line per record.

{
  "id": "<device Id>",
  "etag": "<etag>",
  "displayName": "Sensor 1",
  "instanceOf": "<device template Id>",
  "simulated": false,
  "provisioned": true,
  "approved": true,
  "properties": {
      "sensorComponent": {
          "setTemp": "30",
          "fwVersion": "2.0.1",
          "status": { "first": "first", "second": "second" },
          "$metadata": {
              "setTemp": {
                  "desiredValue": "30",
                  "desiredVersion": 3,
                  "desiredTimestamp": "2020-02-01T17:15:08.9284049Z",
                  "ackVersion": 3
              },
              "fwVersion": { "ackVersion": 3 },
              "status": {
                  "desiredValue": {
                      "first": "first",
                      "second": "second"
                  },
                  "desiredVersion": 2,
                  "desiredTimestamp": "2020-02-01T17:15:08.9284049Z",
                  "ackVersion": 2
              }
          },
          
      }
  },
  "installDate": { "installDate": "2020-02-01" }
}

Modèles d’appareilDevice templates

Chaque message ou enregistrement d’instantané représente un ou plusieurs changements apportés à un modèle d’appareil publié depuis le dernier message exporté.Each message or snapshot record represents one or more changes to a published device template since the last exported message. Les informations envoyées dans chaque message ou enregistrement incluent :Information sent in each message or record includes:

  • id du modèle d’appareil qui correspond à instanceOf du flux d’appareil ci-dessusid of the device template that matches the instanceOf of the devices stream above
  • displayName du modèle d’appareildisplayName of the device template
  • L’appareil capabilityModel, y compris ses interfaces, et les définitions de télémétrie, de propriétés et de commandesThe device capabilityModel including its interfaces, and the telemetry, properties, and commands definitions
  • Définitions cloudPropertiescloudProperties definitions
  • Remplacements et valeurs initiales, alignés sur le capabilityModelOverrides and initial values, inline with the capabilityModel

Les modèles d’appareils supprimés ne sont pas exportés.Deleted device templates aren't exported. Actuellement, il n’y a aucun indicateur dans les messages exportés pour les modèles d’appareil supprimé.Currently, there are no indicators in exported messages for deleted device templates.

Pour Event Hubs et Service Bus, IoT Central envoie des messages contenant des données de modèle d’appareil à la file d’attente ou à la rubrique Event Hub ou Service Bus en quasi-temps réel.For Event Hubs and Service Bus, IoT Central sends messages containing device template data to your event hub or Service Bus queue or topic in near real time.

Pour le stockage Blob, un nouvel instantané contenant toutes les modifications apportées depuis la dernière écriture est exporté une fois par minute.For Blob storage, a new snapshot containing all the changes since the last one written is exported once per minute.

Cet exemple montre un message concernant les données de modèles d’appareil dans la file d’attente ou rubrique Event Hub ou Service Bus :This example shows a message about device templates data in event hub or Service Bus queue or topic:

{
  "body":{
      "id": "<device template id>",
      "etag": "<etag>",
      "types": ["DeviceModel"],
      "displayName": "Sensor template",
      "capabilityModel": {
          "@id": "<capability model id>",
          "@type": ["CapabilityModel"],
          "contents": [],
          "implements": [
              {
                  "@id": "<component Id>",
                  "@type": ["InterfaceInstance"],
                  "name": "sensorComponent",
                  "schema": {
                      "@id": "<interface Id>",
                      "@type": ["Interface"],
                      "displayName": "Sensor interface",
                      "contents": [
                          {
                              "@id": "<id>",
                              "@type": ["Telemetry"],
                              "displayName": "Humidity",
                              "name": "humidity",
                              "schema": "double"
                          },
                          {
                              "@id": "<id>",
                              "@type": ["Telemetry", "SemanticType/Event"],
                              "displayName": "Error event",
                              "name": "error",
                              "schema": "integer"
                          },
                          {
                              "@id": "<id>",
                              "@type": ["Property"],
                              "displayName": "Set temperature",
                              "name": "setTemp",
                              "writable": true,
                              "schema": "integer",
                              "unit": "Units/Temperature/fahrenheit",
                              "initialValue": "30"
                          },
                          {
                              "@id": "<id>",
                              "@type": ["Property"],
                              "displayName": "Firmware version read only",
                              "name": "fwversion",
                              "schema": "string"
                          },
                          {
                              "@id": "<id>",
                              "@type": ["Property"],
                              "displayName": "Display status",
                              "name": "status",
                              "writable": true,
                              "schema": {
                                  "@id": "urn:testInterface:status:obj:ka8iw8wka:1",
                                  "@type": ["Object"]
                              }
                          },
                          {
                              "@id": "<id>",
                              "@type": ["Command"],
                              "commandType": "synchronous",
                              "request": {
                                  "@id": "<id>",
                                  "@type": ["SchemaField"],
                                  "displayName": "Configuration",
                                  "name": "config",
                                  "schema": "string"
                              },
                              "response": {
                                  "@id": "<id>",
                                  "@type": ["SchemaField"],
                                  "displayName": "Response",
                                  "name": "response",
                                  "schema": "string"
                              },
                              "displayName": "Configure sensor",
                              "name": "sensorConfig"
                          }
                      ]
                  }
              }
          ],
          "displayName": "Sensor capability model"
      },
      "solutionModel": {
          "@id": "<id>",
          "@type": ["SolutionModel"],
          "cloudProperties": [
              {
                  "@id": "<id>",
                  "@type": ["CloudProperty"],
                  "displayName": "Install date",
                  "name": "installDate",
                  "schema": "dateTime",
                  "valueDetail": {
                      "@id": "<id>",
                      "@type": ["ValueDetail/DateTimeValueDetail"]
                  }
              }
          ]
      }
  },
    "annotations":{
      "iotcentral-message-source":"deviceTemplates",
      "x-opt-partition-key":"<partitionKey>",
      "x-opt-sequence-number":25315,
      "x-opt-offset":"<offset>",
      "x-opt-enqueued-time":1539274985085
    },
    "partitionKey":"<partitionKey>",
    "sequenceNumber":25315,
    "enqueuedTimeUtc":"2019-10-02T16:23:05.085Z",
    "offset":"<offset>"
  }
}

Cet exemple d’instantané montre un message contenant les données d’appareils et de propriétés dans le stockage Blob.This example snapshot shows a message that contains device and properties data in Blob storage. Les fichiers exportés contiennent une seule ligne par enregistrement.Exported files contain a single line per record.

{
      "id": "<device template id>",
      "etag": "<etag>",
      "types": ["DeviceModel"],
      "displayName": "Sensor template",
      "capabilityModel": {
          "@id": "<capability model id>",
          "@type": ["CapabilityModel"],
          "contents": [],
          "implements": [
              {
                  "@id": "<component Id>",
                  "@type": ["InterfaceInstance"],
                  "name": "Sensor component",
                  "schema": {
                      "@id": "<interface Id>",
                      "@type": ["Interface"],
                      "displayName": "Sensor interface",
                      "contents": [
                          {
                              "@id": "<id>",
                              "@type": ["Telemetry"],
                              "displayName": "Humidity",
                              "name": "humidity",
                              "schema": "double"
                          },
                          {
                              "@id": "<id>",
                              "@type": ["Telemetry", "SemanticType/Event"],
                              "displayName": "Error event",
                              "name": "error",
                              "schema": "integer"
                          },
                          {
                              "@id": "<id>",
                              "@type": ["Property"],
                              "displayName": "Set temperature",
                              "name": "setTemp",
                              "writable": true,
                              "schema": "integer",
                              "unit": "Units/Temperature/fahrenheit",
                              "initialValue": "30"
                          },
                          {
                              "@id": "<id>",
                              "@type": ["Property"],
                              "displayName": "Firmware version read only",
                              "name": "fwversion",
                              "schema": "string"
                          },
                          {
                              "@id": "<id>",
                              "@type": ["Property"],
                              "displayName": "Display status",
                              "name": "status",
                              "writable": true,
                              "schema": {
                                  "@id": "urn:testInterface:status:obj:ka8iw8wka:1",
                                  "@type": ["Object"]
                              }
                          },
                          {
                              "@id": "<id>",
                              "@type": ["Command"],
                              "commandType": "synchronous",
                              "request": {
                                  "@id": "<id>",
                                  "@type": ["SchemaField"],
                                  "displayName": "Configuration",
                                  "name": "config",
                                  "schema": "string"
                              },
                              "response": {
                                  "@id": "<id>",
                                  "@type": ["SchemaField"],
                                  "displayName": "Response",
                                  "name": "response",
                                  "schema": "string"
                              },
                              "displayName": "Configure sensor",
                              "name": "sensorconfig"
                          }
                      ]
                  }
              }
          ],
          "displayName": "Sensor capability model"
      },
      "solutionModel": {
          "@id": "<id>",
          "@type": ["SolutionModel"],
          "cloudProperties": [
              {
                  "@id": "<id>",
                  "@type": ["CloudProperty"],
                  "displayName": "Install date",
                  "name": "installDate",
                  "schema": "dateTime",
                  "valueDetail": {
                      "@id": "<id>",
                      "@type": ["ValueDetail/DateTimeValueDetail"]
                  }
              }
          ]
      }
  }

Avis de modification du format de donnéesData format change notice

Notes

Le format des données des flux de télémétrie n’est pas affecté par cette modification.The telemetry stream data format is unaffected by this change. Seuls les flux de données des appareils et des modèles d’appareils sont affectés.Only the devices and device templates streams of data are affected.

Si vous avez déjà une exportation de données dans votre application en préversion, dans laquelle les flux Appareils et Modèles d’appareil sont activés, mettez à jour votre exportation d’ici le 30 juin 2020.If you have an existing data export in your preview application with the Devices and Device templates streams turned on, update your export by 30 June 2020. Cette condition s’applique aux exportations vers le stockage Blob Azure, Azure Event Hubs et Azure Service Bus.This requirement applies to exports to Azure Blob storage, Azure Event Hubs, and Azure Service Bus.

À partir du 3 février 2020, toutes les nouvelles exportations des applications où sont activés les appareils et les modèles d’appareils auront le format de données décrit plus haut.Starting 3 February 2020, all new exports in applications with Devices and Device templates enabled will have the data format described above. Toutes les exportations créées avant cette date sont conservées dans l’ancien format de données jusqu’au 30 juin 2020. Après cela, ces exportations seront automatiquement migrées au nouveau format de données.All exports created before this date remain on the old data format until 30 June 2020, at which time these exports will automatically be migrated to the new data format. Le nouveau format de données correspond aux objets de type appareil, propriété d’appareil, propriété cloud d’appareil et modèle d’appareil dans l’API publique IoT Central.The new data format matches the device, device property, device cloud property, and device template objects in the IoT Central public API.

Pour les appareils, les différences notables entre l’ancien format de données et le nouveau sont les suivantes :For Devices, notable differences between the old data format and the new data format include:

  • L’@id a été supprimé pour les appareils, deviceId a été remplacé par id@id for device is removed, deviceId is renamed to id
  • L’indicateur provisioned a été ajouté pour décrire l’état de provisionnement de l’appareilprovisioned flag is added to describe the provisioning status of the device
  • L’indicateur approved a été ajouté pour décrire l’état d’approbation de l’appareilapproved flag is added to describe the approval state of the device
  • Les properties, y compris les propriétés d’appareil et les propriétés cloud, correspondent à des entités de l’API publiqueproperties including device and cloud properties, matches entities in the public API

Pour les modèles d’appareil, les différences notables entre l’ancien format de données et le nouveau sont les suivantes :For Device templates, notable differences between the old data format and the new data format include:

  • L’@id des modèles d’appareil a été remplacé par id@id for device template is renamed to id
  • Le @type des modèles d’appareil a été remplacé par types et correspond désormais à un tableau@type for the device template is renamed to types, and is now an array

Appareils (format déprécié à partir du 3 février 2020)Devices (format deprecated as of 3 February 2020)

{
  "@id":"<id-value>",
  "@type":"Device",
  "displayName":"Airbox",
  "data":{
    "$cloudProperties":{
        "Color":"blue"
    },
    "EnvironmentalSensor":{
      "thsensormodel":{
        "reported":{
          "value":"Neque quia et voluptatem veritatis assumenda consequuntur quod.",
          "$lastUpdatedTimestamp":"2019-09-30T20:35:43.8478978Z"
        }
      },
      "pm25sensormodel":{
        "reported":{
          "value":"Aut alias odio.",
          "$lastUpdatedTimestamp":"2019-09-30T20:35:43.8478978Z"
        }
      }
    },
    "urn_azureiot_DeviceManagement_DeviceInformation":{
      "totalStorage":{
        "reported":{
          "value":27900.9730905171,
          "$lastUpdatedTimestamp":"2019-09-30T20:35:43.8478978Z"
        }
      },
      "totalMemory":{
        "reported":{
          "value":4667.82916715811,
          "$lastUpdatedTimestamp":"2019-09-30T20:35:43.8478978Z"
        }
      }
    }
  },
  "instanceOf":"<template-id>",
  "deviceId":"<device-id>",
  "simulated":true
}

Modèles d’appareil (format déprécié à partir du 3 février 2020)Device templates (format deprecated as of 3 February 2020)

{
  "@id":"<template-id>",
  "@type":"DeviceModelDefinition",
  "displayName":"Airbox",
  "capabilityModel":{
    "@id":"<id>",
    "@type":"CapabilityModel",
    "implements":[
      {
        "@id":"<id>",
        "@type":"InterfaceInstance",
        "name":"EnvironmentalSensor",
        "schema":{
          "@id":"<id>",
          "@type":"Interface",
          "comment":"Requires temperature and humidity sensors.",
          "description":"Provides functionality to report temperature, humidity. Provides telemetry, commands and read-write properties",
          "displayName":"Environmental Sensor",
          "contents":[
            {
              "@id":"<id>",
              "@type":"Telemetry",
              "description":"Current temperature on the device",
              "displayName":"Temperature",
              "name":"temp",
              "schema":"double",
              "unit":"Units/Temperature/celsius",
              "valueDetail":{
                "@id":"<id>",
                "@type":"ValueDetail/NumberValueDetail",
                "minValue":{
                  "@value":"50"
                }
              },
              "visualizationDetail":{
                "@id":"<id>",
                "@type":"VisualizationDetail"
              }
            },
            {
              "@id":"<id>",
              "@type":"Telemetry",
              "description":"Current humidity on the device",
              "displayName":"Humidity",
              "name":"humid",
              "schema":"integer"
            },
            {
              "@id":"<id>",
              "@type":"Telemetry",
              "description":"Current PM2.5 on the device",
              "displayName":"PM2.5",
              "name":"pm25",
              "schema":"integer"
            },
            {
              "@id":"<id>",
              "@type":"Property",
              "description":"T&H Sensor Model Name",
              "displayName":"T&H Sensor Model",
              "name":"thsensormodel",
              "schema":"string"
            },
            {
              "@id":"<id>",
              "@type":"Property",
              "description":"PM2.5 Sensor Model Name",
              "displayName":"PM2.5 Sensor Model",
              "name":"pm25sensormodel",
              "schema":"string"
            }
          ]
        }
      },
      {
        "@id":"<id>",
        "@type":"InterfaceInstance",
        "name":"urn_azureiot_DeviceManagement_DeviceInformation",
        "schema":{
          "@id":"<id>",
          "@type":"Interface",
          "displayName":"Device information",
          "contents":[
            {
              "@id":"<id>",
              "@type":"Property",
              "comment":"Total available storage on the device in kilobytes. Ex. 20480000 kilobytes.",
              "displayName":"Total storage",
              "name":"totalStorage",
              "displayUnit":"kilobytes",
              "schema":"long"
            },
            {
              "@id":"<id>",
              "@type":"Property",
              "comment":"Total available memory on the device in kilobytes. Ex. 256000 kilobytes.",
              "displayName":"Total memory",
              "name":"totalMemory",
              "displayUnit":"kilobytes",
              "schema":"long"
            }
          ]
        }
      }
    ],
    "displayName":"AAEONAirbox52"
  },
  "solutionModel":{
    "@id":"<id>",
    "@type":"SolutionModel",
    "cloudProperties":[
      {
        "@id":"<id>",
        "@type":"CloudProperty",
        "displayName":"Color",
        "name":"Color",
        "schema":"string",
        "valueDetail":{
          "@id":"<id>",
          "@type":"ValueDetail/StringValueDetail"
        },
        "visualizationDetail":{
          "@id":"<id>",
          "@type":"VisualizationDetail"
        }
      }
    ]
  }
}

Étapes suivantesNext steps

Maintenant que vous savez comment exporter vos données vers Azure Event Hubs, Azure Service Bus ou Stockage Blob Azure, passez à l’étape suivante :Now that you know how to export your data to Azure Event Hubs, Azure Service Bus, and Azure Blob storage, continue to the next step: