Eğitmen: Bir nem aygıtı için mantıksal arabirimin yapılandırılması

İki nem aygıtındaki aygıttaki algılayıcılar, olayları IoT aracına yayınlar. Her iki aygıttan gelen nem değerleri, tek bir nem okuması ile eşlenmektedir.

Bu görev hakkında

Bu senaryoda, aygıtlardan biri toplantı odası 1 'de yer alır ve diğer aygıt 2 numaralı toplantı odasında bulunur.

Aynı IoT aracı kuruluş eşgörünümünü ve Scenario: Configuring a common logical interface(Senaryo: Ortak mantıksal arabirimi yapılandırma) içinde kullandığınız kuruluş için bir API anahtarı ya da belirteci kullanın.

Bu senaryoda, bir aygıt tipi ve iki aygıt eşgörünümü yaratılır.

Aygıt eşgörünümlerine humiditySensor1 ve humiditySensor2denir. Aygıtlar nem olaylarını yayınlar. Nemlilik olayı aşağıdaki örnek bilgi yükine sahiptir:

{
  "hum" : 35
}

Nemlilik olayları iot-2/evt/humevt/fmt/jsonkonusunda yayınlanmıştır.

Not: Olay tanıtıcısı: humevt. Bu tiplerin bir nemlilik olayı fiziksel arabirime eklenmesi ve bu tipteki bir gelen olayla ilişkilendirilmiş bir özelliği mantıksal arabiriminizdeki bir özelliğe eşlemek için eşlemeleri tanımladığınızda bu tanıtıcı gereklidir. Bu senaryoda, mantıksal arabirimde tanımlanan özellik nemlilikolarak adlandırılır. Bu mantıksal arabirim, aşağıdaki yapıda bu tipte aygıtlara ilişkin durumu gösterir:
{
  "humidity" : <current humidity value in Celsius>
}

Kendi ortamınızda arabirimleri ayarlamak için aşağıdaki örnek senaryoyı kullanın.

Not: Diğer görevleri tamamlamak için, curl yanıtlarında oluşturulan tanıtıcıların tanıtıcılarını kaydetmeniz gerekir.

Başlamadan önce

Aygıt tipi ve aygıt eklenmesi

Bu senaryoda, bir aygıt tipi ve iki aygıt eşgörünümü varsayılır. Device instances humiditySensor1 and humiditySensor2 are associated with device type HumiditySensor.

You can create device types and devices, if needed, by using the IoT tool user interface, or by using REST APIs.

Aşağıdaki örnekte, REST API 'sini kullanarak HumiditySensor olarak adlandırılan bir aygıt tipinin nasıl oluşturulacağı gösterilmektedir:

curl --request POST \
    --url https://yourOrgID.{{site.data.keynote.software_base_url}}/api/v0002/device/types \
    --header 'authorization: Basic MK2fdJpobP6tOWlhgTR2a4Hklss2eXC7AZIxZWxPL9B8XlVwSZL=' \
    --header 'content-type: application/json' \
    --data '{"id" : "HumiditySensor", "description" : "The humidity sensor device type", "metadata": {"maxHumidityThreshold": 70}' \

Bir aygıt tipi ve aygıt oluştururken meta veri ekleyebilirsiniz. In this scenario, the following metadata is added to the device type HumiditySensor:

{
    "maxHumidityThreshold": 70
}

This metadata can be used when kurallar oluşturma that trigger if a humidity event that causes the nemlilik property of the device state to exceed a value of 70% is received by IoT from humiditySensor1 or humiditySensor2.

Aygıtları kaydettirin

Aşağıdaki örnekte, humiditySensor1adı verilen bir aygıt örneğinin nasıl kaydedileceği gösterilmektedir:

    curl --request POST \
        --url https://yourOrgID.{{site.data.keynote.software_base_url}}/api/v0002/device/types/HumiditySensor/devices \
        --header 'authorization: Basic MK2fdJpobP6tOWlhgTR2a4Hklss2eXC7AZIxZWxPL9B8XlVwSZL=' \
        --header 'content-type: application/json' \
        --data '{"deviceId": "humiditySensor1", "authToken": "password"}' \

Aşağıdaki örnekte, humiditySensor2adı verilen bir aygıt örneğinin nasıl kaydedileceği gösterilmektedir:

    curl --request POST \
        --url https://yourOrgID.{{site.data.keynote.software_base_url}}/api/v0002/device/types/HumiditySensor/devices \
        --header 'authorization: Basic MK2fdJpobP6tOWlhgTR2a4Hklss2eXC7AZIxZWxPL9B8XlVwSZL=' \
        --header 'content-type: application/json' \
        --data '{"deviceId": "humiditySensor2", "authToken": "password"}' \
Not: Bir aygıt, IoT aracı HTTP REST API 'si aracılığıyla HTTP isteğinde bulunduğunda, bir kullanıcı adı ve parola gerekir. Parola, bir aygıt kaydedildiğinde otomatik olarak üretilen ya da el ile belirtilen kimlik doğrulama simginin değeridir. If you are using an MQTT client, you must keep a note of the authentication token of your device as you need the token to retrieve device state by subscribing to a IoT topic string.

Adımlar

Adım 1: nemlilik olayının yapısını tanımlayın

Gelen nem olaylarının yapısını tanımlayan bir olay şeması dosyası oluşturun.

humEventSchema.jsonadında bir şema dosyası oluşturun. Bu dosya, bir gelen olayın bir nemlilik aygıtından yapısını tanımlar:

{
    "$schema": "http://json-schema.org/draft-04/schema#",
    "type" : "object",
    "title" : "humEventSchema",
    "description" : "defines the structure of a humidity event",
    "properties" : {
        "humidity" : {
            "description" : "Percentage humidity",
            "type" : "number",
            "minimum" : 0,
            "maximum" : 100,
            "default" : 0.0
        }
    },
    "required" : [
      "humidity"
    ]
}

İpucu: Gerekli olan bir ya da daha fazla özelliği işaretlemek için gerekli parametresini kullanın. Aygıt durumunu aygıt verileriyle güncellemek için gerekli özellikler, IoT aygıt iletisine eklenmelidir. Gerekli özelliği içermeyen bir ileti işlenmez.

Adım 2: Olay tipiniz için bir olay şeması kaynağı yaratın.

Bir olay şeması kaynağı yaratmak için şu API ' yi kullanın:

POST /draft/schemas

Şema tanımlama dosyası, çok parçalı bir POST (birden çok bölüm/form-data) içindeki IoT aracına geçirilir. POST ' un gövdesi en az iki parça içermelidir:

  • Dosyanın gerçek içeriği olarak dosyanın gerçek içeriğini içeren schemaFile olan bir ad.
  • Parçanın gövdesindeki şema kaynağının adını tanımlayan bir dizgi içeren ad adına sahip bir ad.

Daha fazla ayrıntı için yerel API belgelerinizde IoT aracı HTTP REST API ' ya bakın. Yerel belgelere erişmeye ilişkin ek bilgi için API ' lerkonusuna bakın.

Aşağıdaki örnek, humEventSchema.jsonolay şeması kaynağını yaratmak için CURL adresini nasıl kullanacağını göstermektedir:

curl --request POST \
  --url https://yourOrgID.{{site.data.keynote.software_base_url}}/api/v0002/draft/schemas \
  --header 'authorization: Basic MK2fdJpobP6tOWlhgTR2a4Hklss2eXC7AZIxZWxPL9B8XlVwSZL=' \
  --header 'content-type: multipart/form-data' \
  --form name=humEventSchema \
  --form 'schemaFile=@"/Users/ANOther/Documents/IoT/DeviceState/deviceStateDemo/setup/schemas/humEventSchema.json"'
Not: Örnek yetkilendirme değeri MK2fdJpobP6tOWlhgTR2a4Hklss2eXC7AZIxZWxPL9B8XlVwSZL= şu bilgilerden oluşur: {API Key}:{authorization token}; bu durumda Base64 kodlanır.

Aşağıdaki örnekte POST yöntemine bir yanıt gösterilmektedir:

{
  "name" : "humEventSchema",
  "createdBy" : "a-8x7nmj-9iqt56kfil",
  "contentType" : "application/octet-stream",
  "updated" : "2016-12-06T14:38:52Z",
  "schemaFileName" : "humEventSchema.json",
  "version" : "draft",
  "created" : "2016-12-06T14:38:52Z",
  "id" : "5846cd7c6522050001db0e20",
  "refs" : {
      "content" : "/api/v0002/draft/schemas/5846cd7c6522050001db0e20/content"
  },
  "schemaType" : "json-schema",
  "updatedBy" : "a-8x7nmj-9iqt56kfil"
}

Olay tipinize bir olay şeması eklediğinizde POST yöntemine yanıt olarak döndürülen 5846cd7c6522050001db0e20 şema tanıtıcısı gereklidir.

Adım 3: Olay şemasına gönderme yapan bir olay tipi yaratın

Her olay tipi, önceki örnekte, olay şeması kaynağını yaratmak için kullanılan POST yöntemine yanıt olarak döndürülen şema tanıtıcısını kullanarak, ilgili olay şemasına gönderme yapar.

Bir olay tipi yaratmak için şu API ' yi kullanın:

POST /draft/event/types

Taslak olay tipinin, gelen MQTT olayının yapısını tanımlayan şema tanımlamasına gönderme olması gerekir.

Daha fazla ayrıntı için yerel API belgelerinizde IoT aracı HTTP REST API ' ya bakın. Yerel belgelere erişmeye ilişkin ek bilgi için API ' lerkonusuna bakın.

Aşağıdaki örnekte, nem olayına ilişkin bir olay tipi yaratmak için cURL ' nin nasıl kullanılacağı gösterilmektedir:

curl --request POST \
  --url https://yourOrgID.{{site.data.keynote.software_base_url}}/api/v0002/draft/event/types \
  --header 'authorization: Basic MK2fdJpobP6tOWlhgTR2a4Hklss2eXC7AZIxZWxPL9B8XlVwSZL=' \
  --header 'content-type: application/json' \
  --data '{"name" : "humEvent", "schemaId" : "5846cd7c6522050001db0e20"}'

Olay şemasını olay tipine eklemek için 5846cd7c6522050001db0e20 şema tanıtıcısı kullanılır. Bu tanıtıcı, humEventSchema.jsonolay şeması kaynağını yaratmak için kullanılan POST yöntemine yanıt olarak döndürüldü.

Aşağıdaki örnekte POST yöntemine bir yanıt gösterilmektedir:

{
  "updated" : "2016-12-06T14:53:49Z",
  "schemaId" : "5846cd7c6522050001db0e20",
  "refs" : {
    "schema" : "/api/v0002/draft/schemas/5846cd7c6522050001db0e20"
  },
  "name" : "humEvent",
  "version" : "draft",
  "created" : "2016-12-06T14:53:49Z",
  "updatedBy" : "a-8x7nmj-9iqt56kfil",
  "id" : "5846cd7c6522050001db0e21",
  "createdBy" : "a-8x7nmj-9iqt56kfil"
}

POST yöntemine yanıt olarak döndürülen olay tipi tanıtıcısı 5846cd7c6522050001db0e21 , fiziksel arabirime bir olay tipi eklemek için kullanılır.

Adım 4: Fiziksel arabirim oluşturma

Fiziksel bir arabirim oluşturmak için aşağıdaki API ' yi kullanın:

POST /draft/physicalinterfaces

Daha fazla ayrıntı için yerel API belgelerinizde IoT aracı HTTP REST API ' ya bakın. Yerel belgelere erişmeye ilişkin ek bilgi için API ' lerkonusuna bakın.

Bu eğitmende, daha önce oluşturduğumuz olay tipi için bir fiziksel arabirime ihtiyacımız var.

Aşağıdaki örnekte, fiziksel arabirimi yaratmak için cURL ' nin nasıl kullanılacağı gösterilmektedir:

curl --request POST \
  --url https://yourOrgID.{{site.data.keynote.software_base_url}}/api/v0002/draft/physicalinterfaces \
  --header 'authorization: Basic MK2fdJpobP6tOWlhgTR2a4Hklss2eXC7AZIxZWxPL9B8XlVwSZL=' \
  --header 'content-type: application/json’ \
  --data '{"name" : "Hygrometer Physical Interface"}'

Aşağıdaki örnekte POST yöntemine bir yanıt gösterilmektedir:

{
  "updatedBy" : "a-8x7nmj-9iqt56kfil",
  "refs" : {
    "events" : "/api/v0002/draft/physicalinterfaces/5846cd7c6522050001db0e22/events"
  },
  "id" : "5846cd7c6522050001db0e22",
  "name" : "Hygrometer Physical Interface",
  "version" : "draft",
  "created" : "2016-12-07T09:09:51Z",
  "updated" : "2016-12-07T09:09:51Z",
  "createdBy" : "a-8x7nmj-9iqt56kfil"
}

Yanıtta döndürülen 5846cd7c6522050001db0e22 fiziksel arabirim tanıtıcısı, fiziksel arabirime derece derece cinsinden ölçülen bir sıcaklık olayı eklemek için çağrılan POST yönteminin URL adresinde kullanılır.

Adım 5: Olay tipini fiziksel arabirime ekleyin

Fiziksel arabiriminize bir olay tipi eklemek için aşağıdaki API ' yı kullanın:

POST /draft/physicalinterfaces/{physicalInterfaceId}/events

Daha fazla ayrıntı için yerel API belgelerinizde IoT aracı HTTP REST API ' ya bakın. Yerel belgelere erişmeye ilişkin ek bilgi için API ' lerkonusuna bakın.

Bu eğitmende, belirtilen olay tipi belirtilen fiziksel arabirimlere eklenir:

  • the humidity event humevt is added to the physical interface with identifier 5846cd7c6522050001db0e22 by using the eventId from the topic and the eventTypeTnt from the creation of the event schema resource.

The following example shows how to use cURL to add the humidity event humevt to the physical interface with the identifier 5846cd7c6522050001db0e22 :

curl --request POST \
  --url https://yourOrgID.{{site.data.keynote.software_base_url}}/api/v0002/draft/physicalinterfaces/5846cd7c6522050001db0e22/events \
  --header 'authorization: Basic MK2fdJpobP6tOWlhgTR2a4Hklss2eXC7AZIxZWxPL9B8XlVwSZL=' \
  --header 'content-type: application/json' \
  --data '{"eventId" : "humevt", "eventTypeId" : "5846cd7c6522050001db0e21"}'

Aşağıdaki örnekte POST yöntemine bir yanıt gösterilmektedir:

{
  "eventTypeId" : "5846cd7c6522050001db0e21",
  "eventId" : "humevt"
}

Adım 6: Fiziksel arabirimi bağlamak için aygıt tipini güncelleyin

Bir aygıt tipini güncellemek için şu API ' yi kullanın:

POST /draft/device/types/{typeId}/physicalinterface

Burada typeId aygıt tipi tanıtıcısıdır.

Daha fazla ayrıntı için yerel API belgelerinizde IoT aracı HTTP REST API ' ya bakın. Yerel belgelere erişmeye ilişkin ek bilgi için API ' lerkonusuna bakın.

In this scenario, device type HumiditySensor is updated to connect to physical interface 5846cd7c6522050001db0e22.

The following example shows how to use cURL to update device type HumiditySensor:

curl --request POST \
--url https://yourOrgID.{{site.data.keynote.software_base_url}}/api/v0002/draft/device/types/HumiditySensor/physicalinterface \
  --header 'authorization: Basic MK2fdJpobP6tOWlhgTR2a4Hklss2eXC7AZIxZWxPL9B8XlVwSZL=' \
  --header 'content-type: application/json' \
  --data '{"id" : "5846cd7c6522050001db0e22"}'

Aşağıdaki örnekte POST yöntemine bir yanıt gösterilmektedir:

{
  "updatedBy" : "a-8x7nmj-9iqt56kfil",
  "refs" : {
    "events" : "/api/v0002/draft/physicalinterfaces/5846cd7c6522050001db0e22/events"
  },
  "id" : "5846cd7c6522050001db0e22",
  "name" : "Hygrometer Physical Interface",
  "version" : "draft",
  "created" : "2016-12-07T09:09:51Z",
  "updated" : "2016-12-07T09:09:51Z",
  "createdBy" : "a-8x7nmj-9iqt56kfil"
}

Fiziksel arayüzünüzü ve mantıksal arabiriminizi eklediğinizde aygıt tanıtıcısı HumiditySensor gerekir.

Adım 7: Mantıksal bir arabirim şeması dosyası yaratma

Aşağıdaki örnekte, hygrometer.jsonolarak adlandırılan bir mantıksal arabirim şeması dosyasının nasıl yaratılacağı gösterilmektedir.

{
  "$schema": "http://json-schema.org/draft-04/schema#",
    "type" : "object",
    "title" : "hygrometerSchema",
    "description" : "Schema that defines the canonical interface for a hygrometer",
    "properties" : {
        "humidity" : {
            "description" : "percentage humidity",
            "type" : "number",
            "minimum" : 25,
            "default" : 0.0
        }
    },
    "required" : ["humidity"]
}

Adım 8: Mantıksal bir arabirim şeması kaynağı yaratma

Aşağıdaki örnekte, mantıksal bir arabirim oluşturmak için cURL ' nin nasıl kullanılacağı gösterilmektedir:

curl --request POST \
  --url https://yourOrgID.{{site.data.keynote.software_base_url}}/api/v0002/draft/logicalinterfaces \
  --header 'authorization: Basic MK2fdJpobP6tOWlhgTR2a4Hklss2eXC7AZIxZWxPL9B8XlVwSZL=' \
  --header 'content-type: application/json' \
  --data '{"name" : "Hygrometer Interface", "alias" : "IHygrometer", "schemaId" : "5846cd7c6522050001db0e23"}'

Aşağıdaki örnekte POST yöntemine bir yanıt gösterilmektedir:

{
  "createdBy" : "a-8x7nmj-9iqt56kfil",
  "refs" : {
      "schema" : "/api/v0002/draft/schemas/5846cd7c6522050001db0e23"
  },
  "schemaId" : "5846cd7c6522050001db0e23",
  "created" : "2016-12-06T16:53:27Z",
  "updatedBy" : "a-8x7nmj-9iqt56kfil",
  "id" : "5846cd7c6522050001db0e24",
  "updated" : "2016-12-06T16:53:27Z",
  "name" : "Hygrometer Interface",
  "alias" : "IHygrometer",
  "version" : "draft"
}

Adım 9: Mantıksal arabirim şemasına gönderme yapan bir mantıksal arabirim yaratma

Bir mantıksal arabirim oluşturmak için aşağıdaki API ' yi kullanın:

POST /draft/logicalinterfaces

İsteğe bağlı olarak, mantıksal arabiriminiz için anlamlı bir diğer ad belirleyebilirsiniz. Diğer ad, otomatik olarak oluşturulan mantıksal arabirim tanıtıcısını kullanmak yerine, bir aygıtın durumunu almak için kullanılan API çağrısında ya da konu dizgisi aboneliğinde başvurulabilir.

Not: Diğer ad 1-36 karakter uzunluğunda olmalı ve alfasayısal, kısa çizgi, nokta, alt çizgi karakterleri içerebilir. Diğer ad, 24 karakterden oluşan bir onaltılı dizilim olamaz.

Daha fazla ayrıntı için yerel API belgelerinizde IoT aracı HTTP REST API ' ya bakın. Yerel belgelere erişmeye ilişkin ek bilgi için API ' lerkonusuna bakın.

Bu senaryoda, mantıksal arabirim şemasını mantıksal arabirime eklemek için önceki yanıtta döndürülen 5846cd7c6522050001db0e23 şema tanıtıcısını kullanın.

Aşağıdaki örnekte, mantıksal bir arabirim oluşturmak için cURL ' nin nasıl kullanılacağı gösterilmektedir:

curl --request POST \
  --url https://yourOrgID.{{site.data.keynote.software_base_url}}/api/v0002/draft/logicalinterfaces \
  --header 'authorization: Basic MK2fdJpobP6tOWlhgTR2a4Hklss2eXC7AZIxZWxPL9B8XlVwSZL=' \
  --header 'content-type: application/json' \
  --data '{"name" : "Hygrometer Interface", "alias" : "IHygrometer", "schemaId" : "5846cd7c6522050001db0e23"}'

Aşağıdaki örnekte POST yöntemine bir yanıt gösterilmektedir:

{
  "createdBy" : "a-8x7nmj-9iqt56kfil",
  "refs" : {
      "schema" : "/api/v0002/draft/schemas/5846cd7c6522050001db0e23"
  },
  "schemaId" : "5846cd7c6522050001db0e23",
  "created" : "2016-12-06T16:53:27Z",
  "updatedBy" : "a-8x7nmj-9iqt56kfil",
  "id" : "5846cd7c6522050001db0e24",
  "updated" : "2016-12-06T16:53:27Z",
  "name" : "Hygrometer Interface",
  "alias" : "IHygrometermometer",
  "version" : "draft"
}

Bu senaryoda, mantıksal arabiriminizi aygıt tipine eklemek için POST yöntemine verilen yanıtta döndürülen 5846cd7c6522050001db0e24 mantıksal arabirim tanıtıcısını kullanın. Bu tanıtıcıyı, bir gelen aygıt olayını mantıksal arabirim tarafından tanımlanan bir özellik ile eşlemek için de kullanabilirsiniz. Aygıtın durumunu, HTTP REST API ' larını kullanarak ya da bir konu dizgisine abone olarak almak için mantıksal arabirim diğer adını IHimgrometer kullanabilirsiniz.

Adım 10: Mantıksal arabirimi aygıt tipine ekleyin.

The following example shows how to use cURL to add the logical interface 5846cd7c6522050001db0e24 which references logical interface schema identifier 5846cd7c6522050001db0e23 to the device type HumiditySensor:

curl --request POST \
--url https://yourOrgID.{{site.data.keynote.software_base_url}}/api/v0002/draft/device/types/HumiditySensor/logicalinterfaces \
--header 'authorization: Basic MK2fdJpobP6tOWlhgTR2a4Hklss2eXC7AZIxZWxPL9B8XlVwSZL=' \
--header 'content-type: application/json' \
--data '{"id": "5846cd7c6522050001db0e24"}'

Aşağıdaki örnekte POST yöntemine bir yanıt gösterilmektedir:

{
  "refs" : {
      "schema" : "/api/v0002/draft/schemas/5846cd7c6522050001db0e23"
  },
  "updated" : "2016-12-06T16:53:27Z",
  "updatedBy" : "a-8x7nmj-9iqt56kfil",
  "createdBy" : "a-8x7nmj-9iqt56kfil",
  "name" : "Hygrometer Interface",
  "version" : "draft",
  "created" : "2016-12-06T16:53:27Z",
  "id" : "5846cd7c6522050001db0e24",
  "schemaId" : "5846cd7c6522050001db0e23"
}

Adım 11: Eşlemeleri aygıt tipine ekleyin

Aşağıdaki örnek, HumiditySensoraygıt tipine eşleme eklemek için cURL ' un nasıl kullanılacağını gösterir:

curl --request POST \
  --url https://yourOrgID.{{site.data.keynote.software_base_url}}/api/v0002/draft/device/types/HumiditySensor/mappings \
  --header 'authorization: Basic MK2fdJpobP6tOWlhgTR2a4Hklss2eXC7AZIxZWxPL9B8XlVwSZL=' \
  --header 'content-type: application/json' \
  --data '{"logicalInterfaceId" : "5846cd7c6522050001db0e24","notificationStrategy": "on-state-change","propertyMappings" :  : {              "humevt" : {"humidity" : "$event.hum"}}}'

Aşağıdaki örnekte POST yöntemine bir yanıt gösterilmektedir:

{
  "logicalInterfaceId": "5846cd7c6522050001db0e24",
  "propertyMappings": {
    "humevt": {
      "humidity": "$event.hum"
    }
  },
  "notificationStrategy": "on-state-change",
  "version": "draft",
  "created": "2017-06-16T15:41:49Z",
  "createdBy": "a-8x7nmj-9iqt56kfil",
  "updated": "2017-06-16T15:41:49Z",
  "updatedBy": "a-8x7nmj-9iqt56kfil"
}

Adım 12: Aygıt tipine ilişkin yapılandırmayı etkinleştirin

Aşağıdaki örnekte, HumiditySensoraygıt tipine ilişkin yapılandırmanızı doğrulamak ve etkinleştirmek için cURL ' un nasıl kullanılacağı gösterilmektedir:

curl --request PATCH \
  --url https://yourOrgID.{{site.data.keynote.software_base_url}}/api/v0002/draft/device/types/HumiditySensor \
  --header 'authorization: Basic MK2fdJpobP6tOWlhgTR2a4Hklss2eXC7AZIxZWxPL9B8XlVwSZL=' \
  --header 'content-type: application/json' \
  --data '{
            "operation" : "activate-configuration"
          }'

Aşağıdaki örnek, PATCH yöntemine bir yanıt göstermektedir:

{
 "message": "CUDRS0520I: State update configuration for device type 'HumiditySensor' has been successfully submitted for activation",
  "details": {
    "id": "CUDRS0520I",
    "properties": ["HumiditySensor"]
  },
 "failures": []
}