Azure 'da IoT verilerini hedeflere dışarı aktarmaExport IoT data to destinations in Azure

Bu konu, Yöneticiler için geçerlidir.This topic applies to administrators.

Bu makalede, Azure IoT Central 'da veri dışarı aktarma özelliğinin nasıl kullanılacağı açıklanır.This article describes how to use the data export feature in Azure IoT Central. Bu özellik verilerinizi azure Event Hubs, Azure Service Busveya Azure Blob Storage örneklerine sürekli olarak dışa aktarmanıza olanak tanır.This feature lets you export your data continuously to Azure Event Hubs, Azure Service Bus, or Azure Blob storage instances. Veri dışa aktarma JSON biçimini kullanır ve Telemetriyi, cihaz bilgilerini ve cihaz şablonu bilgilerini içerebilir.Data export uses the JSON format and can include telemetry, device information, and device template information. İçin, bu verileri kullan:Use the exported data for:

  • Sıcak yol öngörüleri ve analizi.Warm-path insights and analytics. Bu seçenek, Azure Stream Analytics özel kuralların tetiklenmesi, Azure Logic Apps özel iş akışlarını tetiklenmesi veya dönüştürülecek Azure Işlevleri aracılığıyla geçirilmesidir.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.
  • Microsoft Power BI 'de Azure Machine Learning veya uzun süreli eğilim analizinde eğitim modelleri gibi soğuk yol analizi.Cold-path analytics such as training models in Azure Machine Learning or long-term trend analysis in Microsoft Power BI.

Not

Veri dışarı aktarmayı açtığınızda, bu andan itibaren yalnızca verileri alırsınız.When you turn on data export, you get only the data from that moment onward. Şu anda veri dışa aktarma kapalı olduğunda veriler bir saat için alınamaz.Currently, data can't be retrieved for a time when data export was off. Daha fazla geçmiş verileri sürdürmek için, verilerin dışarı aktarılmasını erken açın.To retain more historical data, turn on data export early.

Ön koşullarPrerequisites

IoT Central uygulamanızda yönetici olmanız veya veri dışa aktarma izinlerinizin olması gerekir.You must be an administrator in your IoT Central application, or have Data export permissions.

Dışarı aktarma hedefini ayarlaSet up export destination

Dışarı aktarma hedefi, veri dışa aktarma işlemini yapılandırmadan önce mevcut olmalıdır.Your export destination must exist before you configure your data export.

Event Hubs ad alanı oluşturmaCreate Event Hubs namespace

Uygulamasına dışarı aktarmak için mevcut bir Event Hubs ad alanınız yoksa, aşağıdaki adımları izleyin:If you don't have an existing Event Hubs namespace to export to, follow these steps:

  1. Azure Portal yeni bir Event Hubs ad alanıoluşturun.Create a new Event Hubs namespace in the Azure portal. Azure Event Hubs docs'ta daha fazla bilgi edinebilirsiniz.You can learn more in Azure Event Hubs docs.

  2. Bir abonelik seçin.Choose a subscription. IoT Central uygulamanızla aynı abonelikte olmayan diğer aboneliklerdeki verileri dışarı aktarabilirsiniz.You can export data to other subscriptions that aren't in the same subscription as your IoT Central application. Bu durumda bir bağlantı dizesi kullanarak bağlanırsınız.You connect using a connection string in this case.

  3. Event Hubs ad alanında bir olay hub 'ı oluşturun.Create an event hub in your Event Hubs namespace. Ad alanına gidin ve bir olay hub 'ı örneği oluşturmak için en üstteki + Olay Hub 'ını seçin.Go to your namespace, and select + Event Hub at the top to create an event hub instance.

Service Bus ad alanı oluşturCreate Service Bus namespace

Uygulamasına dışarı aktarmak için mevcut bir Service Bus ad alanınız yoksa, aşağıdaki adımları izleyin:If you don't have an existing Service Bus namespace to export to, follow these steps:

  1. Azure Portal yeni bir Service Bus ad alanıoluşturun.Create a new Service Bus namespace in the Azure portal. Azure Service Bus docs' de daha fazla bilgi edinebilirsiniz.You can learn more in Azure Service Bus docs.

  2. Bir abonelik seçin.Choose a subscription. IoT Central uygulamanızla aynı abonelikte olmayan diğer aboneliklerdeki verileri dışarı aktarabilirsiniz.You can export data to other subscriptions that aren't in the same subscription as your IoT Central application. Bu durumda bir bağlantı dizesi kullanarak bağlanırsınız.You connect using a connection string in this case.

  3. Uygulamasına dışarı aktarmak için bir kuyruk veya konu oluşturmak için Service Bus ad alanına gidin ve + Queue veya + konu başlığınıseçin.To create a queue or topic to export to, go to your Service Bus namespace, and select + Queue or + Topic.

Dışarı aktarma hedefi olarak Service Bus seçtiğinizde, kuyruklar ve konuların oturumları veya yinelenen algılama özelliği etkin olmalıdır.When you choose Service Bus as an export destination, the queues and topics must not have Sessions or Duplicate Detection enabled. Bu seçeneklerden biri etkinleştirilirse, bazı iletiler kuyruğunuza veya konuya ulaşmayacaktır.If either of those options are enabled, some messages won't arrive in your queue or topic.

Depolama hesabı oluşturCreate storage account

' A dışa aktarılacak mevcut bir Azure depolama hesabınız yoksa, aşağıdaki adımları izleyin:If you don't have an existing Azure storage account to export to, follow these steps:

  1. Azure Portal yeni bir depolama hesabıoluşturun.Create a new storage account in the Azure portal. Yeni Azure Blob depolama hesapları veya Azure Data Lake Storage v2 depolama hesaplarıoluşturma hakkında daha fazla bilgi edinebilirsiniz.You can learn more about creating new Azure Blob storage accounts or Azure Data Lake Storage v2 storage accounts. Veri dışa aktarma, yalnızca blok bloblarını destekleyen depolama hesaplarına veri yazabilir.Data export can only write data to storage accounts that support block blobs. Aşağıdaki listede, bilinen uyumlu depolama hesabı türleri gösterilmektedir:The following list shows the known compatible storage account types:

    Performans katmanıPerformance Tier Hesap türüAccount Type
    StandartStandard Genel Amaçlı v2General Purpose V2
    StandartStandard Genel Amaçlı v1General Purpose V1
    StandartStandard Blob depolamaBlob storage
    PremiumPremium Blob depolamayı engelleBlock Blob storage
  2. Depolama hesabınızda bir kapsayıcı oluşturun.Create a container in your storage account. Depolama hesabınıza gidin.Go to your storage account. BLOB hizmetialtında bloblara gözatamıyorum' ı seçin.Under Blob Service, select Browse Blobs. Yeni bir kapsayıcı oluşturmak için üst kısımdaki + kapsayıcı ' yı seçin.Select + Container at the top to create a new container.

Veri dışarı aktarma ayarlamaSet up data export

Verilerin dışarı aktarılacağı bir hedef olduğuna göre, verileri dışarı aktarma işlemini ayarlamak için aşağıdaki adımları izleyin.Now that you have a destination to export data to, follow these steps to set up data export.

  1. IoT Central uygulamanızda oturum açın.Sign in to your IoT Central application.

  2. Sol bölmede veri dışa aktar' ı seçin.In the left pane, select Data export.

    İpucu

    Sol bölmede veri dışa aktarma 'yı görmüyorsanız, uygulamanızda veri dışarı aktarma yapılandırma izniniz yok demektir.If you don't see Data export in the left pane, then you don't have permissions to configure data export in your app. Verilerin dışarı aktarılmasını ayarlamak için bir yöneticiye danışın.Talk to an administrator to set up data export.

  3. Sağ üst köşedeki + Yeni düğmesini seçin.Select the + New button in the top right. Dışarı aktarmanın hedefi olarak azure Event Hubs, Azure Service Busveya Azure Blob depolamadan birini seçin.Choose one of Azure Event Hubs, Azure Service Bus, or Azure Blob storage as the destination of your export. Uygulama başına en fazla dışarı aktarma sayısı beştir.The maximum number of exports per application is five.

    Yeni veri dışarı aktarma oluştur

  4. Aşağı açılan liste kutusunda Event Hubs adalanınızı, Service Bus ad alanını, depolama hesabı ad alanınıseçin veya bir bağlantı dizesi girin.In the drop-down list box, select your Event Hubs namespace, Service Bus namespace, Storage Account namespace, or Enter a connection string.

    • Depolama hesapları, Event Hubs ad alanları ve Service Bus ad alanlarını IoT Central uygulamanızla aynı abonelikte görürsünüz.You only see storage accounts, Event Hubs namespaces, and Service Bus namespaces in the same subscription as your IoT Central application. Bu aboneliğin dışında bir hedefe aktarmak istiyorsanız, bir bağlantı dizesi girin ' i seçin ve sonraki adıma bakın.If you want to export to a destination outside of this subscription, choose Enter a connection string and see the next step.
    • Ücretsiz fiyatlandırma planı kullanılarak oluşturulan uygulamalar için, veri dışa aktarma 'yı yapılandırmanın tek yolu bir bağlantı dizesidir.For apps created using the free pricing plan, the only way to configure data export is through a connection string. Ücretsiz fiyatlandırma planındaki uygulamalar ilişkili bir Azure aboneliğine sahip değildir.Apps on the free pricing plan don't have an associated Azure subscription.

    Yeni Olay Hub 'ı oluştur

  5. Seçim Bir bağlantı dizesi girin' i seçerseniz, Bağlantı dizenizi yapıştırmanız için yeni bir kutu belirir.(Optional) If you chose Enter a connection string, a new box appears for you to paste your connection string. İçin bağlantı dizesini almak için:To get the connection string for your:

    • Event Hubs veya Service Bus, Azure portal ad alanına gidin:Event Hubs or Service Bus, go to the namespace in the Azure portal:
      • Ayarlaraltında, paylaşılan erişim ilkeleri ' ni seçin.Under Settings, select Shared Access Policies
      • Varsayılan RootManageSharedAccessKey seçin veya yeni bir tane oluşturunChoose the default RootManageSharedAccessKey or create a new one
      • Birincil veya ikincil bağlantı dizesini kopyalayınCopy either the primary or secondary connection string
    • Depolama hesabı, Azure portal depolama hesabına gidin:Storage account, go to the storage account in the Azure portal:
      • Ayarlaraltında erişim anahtarları ' nı seçin.Under Settings, select Access keys
      • KEY1 bağlantı dizesini veya key2 bağlantı dizesini kopyalayınCopy either the key1 connection string or the key2 connection string
  6. Aşağı açılan liste kutusundan bir olay hub 'ı, kuyruğu, konuyu veya kapsayıcıyı seçin.Choose an event hub, queue, topic, or container from the drop-down list box.

  7. Dışarı aktarılacak veriler' in altında, türü üzerineayarlayarak dışarı aktarılacak veri türlerini seçin.Under Data to export, choose the types of data to export by setting the type to On.

  8. Verilerin dışarı aktarılmasını açmak için etkin geçiş özelliğinin Açıkolduğundan emin olun.To turn on data export, make sure the Enabled toggle is On. Kaydet’i seçin.Select Save.

  9. Birkaç dakika sonra verileriniz seçtiğiniz hedefte görüntülenir.After a few minutes, your data appears in your chosen destination.

İçeriği ve biçimi dışarı aktarExport contents and format

İçe aktarılmış telemetri verileri, yalnızca telemetri değerlerinin kendileri değil, cihazlarınızın IoT Central gönderildiği iletinin tamamını içerir.Exported telemetry data contains the entirety of the message your devices sent to IoT Central, not just the telemetry values themselves. İçe aktarılmış cihazlar verileri tüm cihazların özelliklerine ve meta verilerine yapılan değişiklikleri içerir ve bu cihaz şablonları tüm cihaz şablonlarında değişiklikler içerir.Exported devices data contains changes to properties and metadata of all devices, and exported device templates contains changes to all device templates.

Event Hubs ve Service Bus için veriler neredeyse gerçek zamanlı olarak verilir.For Event Hubs and Service Bus, data is exported in near-realtime. Veriler body ÖZELLIKTE ve JSON biçimindedir.The data is in the body property and is in JSON format. Örnekler için aşağıya bakın.See below for examples.

BLOB depolama için, veriler dakikada bir kez, son içe aktarma dosyasından bu yana yapılan değişiklikleri içeren her bir dosyayla birlikte verilir.For Blob storage, data is exported once per minute, with each file containing the batch of changes since the last exported file. Verilen veriler JSON biçiminde üç klasöre yerleştirilir.Exported data is placed in three folders in JSON format. Depolama hesabınızdaki varsayılan yollar şunlardır:The default paths in your storage account are:

  • Telemetri: {Container}/{app-id}/telemetry/{yyyy}/{mm}/{dd}/{hh}/{mm}/{filename}Telemetry: {container}/{app-id}/telemetry/{YYYY}/{MM}/{dd}/{hh}/{mm}/{filename}
  • Cihazlar: {Container}/{app-id}/Devices/{yyyy}/{mm}/{dd}/{ss}/{mm}/{filename}Devices: {container}/{app-id}/devices/{YYYY}/{MM}/{dd}/{hh}/{mm}/{filename}
  • Cihaz şablonları: {Container}/{App-ID}/devicetemplates/{yyyy}/{mm}/{dd}/{ss}/{mm}/{filename}Device templates: {container}/{app-id}/deviceTemplates/{YYYY}/{MM}/{dd}/{hh}/{mm}/{filename}

Azure portal içe aktarılmış dosyalara gitmek için dosyaya gidin ve blobu Düzenle sekmesini seçin.To browse the exported files in the Azure portal, navigate to the file and select the Edit blob tab.

TelemetriTelemetry

Event Hubs ve Service Bus için IoT Central bir cihazdan iletiyi aldıktan sonra yeni bir iletiyi hızlı bir şekilde dışarı aktarır.For Event Hubs and Service Bus, IoT Central exports a new message quickly after it receives the message from a device. Her bir dışarıya gönderilen ileti, cihazın, JSON biçiminde gövde özelliğinde gönderildiği tam iletiyi içerir.Each exported message contains the full message the device sent in the body property in JSON format.

BLOB depolama için, iletiler toplu ve dakikada bir kez verilir.For Blob storage, messages are batched and exported once per minute. İçeri aktarılmış dosyalar, blob depolamaya IoT Hub ileti yönlendirme tarafından içeri aktarılmış ileti dosyalarıyla aynı biçimi kullanır.The exported files use the same format as the message files exported by IoT Hub message routing to blob storage.

Not

BLOB depolama için, contentType: application/JSON cihazlarınızın ve contentEncoding:utf-8 (veya utf-16 utf-32) içeren iletiler göndermesini sağlayın.For Blob storage, ensure that your devices are sending messages that have contentType: application/JSON and contentEncoding:utf-8 (or utf-16, utf-32). Bir örnek için IoT Hub belgelerine bakın.See the IoT Hub documentation for an example.

Telemetriyi Gönderen cihaz, cihaz KIMLIĞI tarafından temsil edilir (aşağıdaki bölümlere bakın).The device that sent the telemetry is represented by the device ID (see the following sections). Cihazların adlarını almak için, cihaz verilerini dışarı aktarın ve cihaz iletisinin DeviceID 'Siyle eşleşen connectiondeviceıd 'yi kullanarak her iletiyi ilişkilendirin.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.

Aşağıdaki örnek, bir olay hub 'ından veya Service Bus sırasından veya konusundan alınan bir iletiyi gösterir: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"
}

Bu ileti gönderme cihazının cihaz KIMLIĞINI içermez.This message doesn't include the device ID of the sending device.

Azure Stream Analytics sorgusundaki ileti verilerinden cihaz KIMLIĞINI almak için Getmetadatapropertyvalue işlevini kullanın.To retrieve the device ID from the message data in an Azure Stream Analytics query, use the GetMetadataPropertyValue function. Bir örnek için, Stream Analytics, Azure işlevleri ve SendGrid kullanarak azure IoT Central özel kurallarla genişletmeiçindeki sorguya bakın.For an example, see the query in Extend Azure IoT Central with custom rules using Stream Analytics, Azure Functions, and SendGrid.

Azure Databricks veya Apache Spark çalışma alanındaki cihaz KIMLIĞINI almak için SystemProperties' i kullanın.To retrieve the device ID in an Azure Databricks or Apache Spark workspace, use systemProperties. Bir örnek için, Azure Databricks kullanarak özel analizler Ile Azure IoT Central 'Yi genişletenDatabricks çalışma alanına bakın.For an example, see the Databricks workspace in Extend Azure IoT Central with custom analytics using Azure Databricks.

Aşağıdaki örnekte, blob depolamaya aktarılmış bir kayıt gösterilmektedir: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
  }
}

CihazlarDevices

Anlık görüntüdeki her ileti veya kayıt, bir cihazdaki bir veya daha fazla değişikliği, son dışarıya alınan iletiden bu yana cihaz ve bulut özelliklerini temsil eder.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. İleti şunları içerir:The message includes the:

  • idIoT Central cihazid of the device in IoT Central
  • displayNameCihazındisplayName of the device
  • İçindeki cihaz şablonu KIMLIĞIinstanceOfDevice template ID in instanceOf
  • simulatedcihaz sanal bir cihaz ise, true bayrağısimulated flag, true if the device is a simulated device
  • provisionedcihaz sağlandıysa, doğru bayrağıprovisioned flag, true if the device has been provisioned
  • approvedcihaz veri göndermek üzere onaylanmışsa, doğru bayrağıapproved flag, true if the device has been approved to send data
  • Özellik değerleriProperty values
  • propertiesCihaz ve bulut özellikleri değerlerini eklemeproperties including device and cloud properties values

Silinen cihazlar aktarılmaz.Deleted devices aren't exported. Şu anda, silinen cihazlar için, aktarılmış iletilerde hiçbir gösterge yok.Currently, there are no indicators in exported messages for deleted devices.

Event Hubs ve Service Bus için IoT Central, cihaz verilerini içeren iletileri olay hub 'ınıza veya Service Bus kuyruğuna veya konuya neredeyse gerçek zamanlı olarak gönderir.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.

BLOB depolama için, en son yazılan son bir dakikada bir kez aktarıldığından, tüm değişiklikleri içeren yeni bir anlık görüntüFor Blob storage, a new snapshot containing all the changes since the last one written is exported once per minute.

Aşağıdaki örnek ileti, bir olay hub 'ında veya Service Bus kuyruğu veya konusunun cihazlar ve özellikler hakkındaki bilgileri gösterir: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>"
}

Bu anlık görüntü, blob depolamada cihazları ve özellik verilerini gösteren örnek bir iletidir.This snapshot is an example message that shows devices and properties data in Blob storage. İçe aktarılmış dosyalar kayıt başına tek bir satır içerir.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" }
}

Cihaz şablonlarıDevice templates

Her ileti veya anlık görüntü kaydı, yayımlanan bir cihaz şablonunda yapılan son dışarıya alınan iletiden itibaren bir veya daha fazla değişikliği temsil eder.Each message or snapshot record represents one or more changes to a published device template since the last exported message. Her ileti veya kayıtta gönderilen bilgiler şunları içerir:Information sent in each message or record includes:

  • idYukarıdaki cihazların akışıyla eşleşen instanceOf cihaz şablonuid of the device template that matches the instanceOf of the devices stream above
  • displayNamecihaz şablonudisplayName of the device template
  • Cihaz capabilityModel interfaces, ve telemetri, Özellikler ve komut tanımlarını dahilThe device capabilityModel including its interfaces, and the telemetry, properties, and commands definitions
  • cloudPropertiestanımlarcloudProperties definitions
  • Satır içi ve başlangıç değerlerini içerencapabilityModelOverrides and initial values, inline with the capabilityModel

Silinen cihaz şablonları aktarılmaz.Deleted device templates aren't exported. Şu anda, Silinen cihaz şablonları için, aktarılmış iletilerde hiçbir gösterge yok.Currently, there are no indicators in exported messages for deleted device templates.

Event Hubs ve Service Bus için IoT Central, cihaz şablonu verilerini içeren iletileri olay hub 'ınıza veya Service Bus kuyruğuna veya konuya neredeyse gerçek zamanlı olarak gönderir.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.

BLOB depolama için, en son yazılan son bir dakikada bir kez aktarıldığından, tüm değişiklikleri içeren yeni bir anlık görüntüFor Blob storage, a new snapshot containing all the changes since the last one written is exported once per minute.

Bu örnek, Olay Hub 'ında veya Service Bus kuyruğu veya konusunun cihaz şablonları verileri hakkında bir ileti gösterir: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>"
  }
}

Bu örnek anlık görüntü, blob depolamada cihaz ve özellik verilerini içeren bir ileti gösterir.This example snapshot shows a message that contains device and properties data in Blob storage. İçe aktarılmış dosyalar kayıt başına tek bir satır içerir.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"]
                  }
              }
          ]
      }
  }

Veri biçimi değişiklik bildirimiData format change notice

Not

Telemetri akış veri biçimi bu değişiklikten etkilenmez.The telemetry stream data format is unaffected by this change. Yalnızca cihazlar ve cihaz şablonu veri akışları etkilenir.Only the devices and device templates streams of data are affected.

Önizleme uygulamanızda cihazlar ve cihaz şablonları akışları açık olan bir veri dışa aktarma Işlemi varsa, 30 Haziran 2020 tarihinekadar dışarı aktarmayı güncelleştirin.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. Bu gereksinim, Azure Blob depolama, Azure Event Hubs ve Azure Service Bus dışarı aktarmalar için geçerlidir.This requirement applies to exports to Azure Blob storage, Azure Event Hubs, and Azure Service Bus.

1 Şubat 2020 ' den başlayarak, cihazlar ve cihaz şablonları etkin olan uygulamalardaki tüm yeni dışarı aktarımlar yukarıda açıklanan veri biçimine sahip olacaktır.Starting 3 February 2020, all new exports in applications with Devices and Device templates enabled will have the data format described above. Bu tarihten önce oluşturulan tüm dışarı aktarımlar, 30 Haziran 2020 ' e kadar eski veri biçiminde kalır. bu zaman, bu dışarı aktarmalar otomatik olarak yeni veri biçimine geçirilir.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. Yeni veri biçimi cihaz, cihaz özelliği, cihaz bulutu özelliğive IoT Central genel API 'sindeki cihaz şablonu nesneleriyle eşleşir.The new data format matches the device, device property, device cloud property, and device template objects in the IoT Central public API.

Cihazlariçin eski veri biçimi ve yeni veri biçimi arasındaki önemli farklar şunlardır:For Devices, notable differences between the old data format and the new data format include:

  • @idcihaz kaldırıldığında, deviceId olarak yeniden adlandırılırid@id for device is removed, deviceId is renamed to id
  • provisionedCihazın sağlama durumunu açıklamaya yönelik bayrak eklenirprovisioned flag is added to describe the provisioning status of the device
  • approvedCihazın onay durumunu açıklamaya yönelik bayrak eklenirapproved flag is added to describe the approval state of the device
  • propertiesCihaz ve bulut özellikleri dahil, ortak API 'deki varlıklarla eşleşirproperties including device and cloud properties, matches entities in the public API

Cihaz şablonlarında, eski veri biçimi ve yeni veri biçimi arasındaki önemli farklar şunlardır:For Device templates, notable differences between the old data format and the new data format include:

  • @idcihaz şablonu için yeniden adlandırıldıid@id for device template is renamed to id
  • @typecihaz şablonu için olarak typesyeniden adlandırılır ve artık bir dizidir@type for the device template is renamed to types, and is now an array

Cihazlar (biçim 3 Şubat 2020 itibariyle kullanım dışı)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
}

Cihaz şablonları (biçim 3 Şubat 2020 itibariyle kullanım dışı)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"
        }
      }
    ]
  }
}

Sonraki adımlarNext steps

Artık verilerinizi Azure Event Hubs, Azure Service Bus ve Azure Blob depolama 'ya aktarmayı öğrenmiş olduğunuza göre, sonraki adıma geçin: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: