V2.4 Batch Create Devices


批量创建设备。


操作权限


使用此 API 前,确保服务账号已被授予包含下列服务和操作权限的策略。有关授权服务账号的更多信息,参见 管理服务账号


需授权的服务

所需操作权限

设备管理服务

Full Access

前提条件


  • 确保已存在用于创建此设备的产品。

  • 确保已阅读设备相关的 使用限制

请求格式


POST https://{apigw-address}/connect-service/v2.4/devices?action=batchCreate

请求参数(URI)


名称

位置(Path/Query)

必需/可选

数据类型

描述

orgId

Query

必需

String

资产所属的组织 ID。如何获取 orgId 信息>>

请求参数(Body)


名称

必需/可选

数据类型

描述

deviceList

必需

CreateOption 结构体数组

创建设备的参数。其结构参见 CreateOption 结构体

requireSecret

可选

Boolean

  • true:返回 deviceSecretsessionKey。需确保已为服务帐号创建 RSA 密钥对。创建 RSA 密钥对 >>

  • false (默认):不返回 deviceSecretsessionKey

CreateOption 结构体


名称

必需/可选

数据类型

描述

productKey

必需

String

设备的 product key。如何获取设备的 productKey 信息>>

deviceName

必需

StringI18n

设备名称。结构参见 国际化名称结构体

timezone

必需

String

设备所在时区。时区表示方法 >>

deviceAttributes

可选

Map

设备属性。

deviceKey

可选

String

设备的 Device Key。如何获取设备的 deviceKey 信息>>

deviceDesc

可选

String

设备描述信息。

deviceTags

可选

Map

设备标签。如何使用标签 >>

响应参数


名称

数据类型

描述

data

EnosBatchEachData 结构体数组

成功或失败消息列表。其结构参见 EnosBatchEachData 结构体

successSize

Integer

成功数。

totalSize

Integer

总数。

EnosBatchEachData 结构体


名称

数据类型

描述

code

Integer

更新成功或失败的指示码:
  • 0: 成功,

  • -1: 失败。

msg

String

成功时返回 OK ;如果返回其他值,则为失败。

data

DeviceCreateResult 结构体

单个设备创建返回结果,其结构参见 DeviceCreateResult 结构体

DeviceCreateResult 结构体


名称

数据类型

描述

productKey

String

设备的 product key。

deviceKey

String

设备的 Device Key。

deviceSecret

String

设备连接密钥,仅当 requireSecrettrue 时返回。返回值已经过加密处理。如何解密 Device Secret >>

sessionKey

String

配合解密 deviceSecret 的参数,仅当 requireSecrettrue 时返回。返回值已经过加密处理。如何解密 Device Secret >>

assetId

String

资产 ID。

错误码


代码

错误信息

描述

11702

DeviceKey already exists

deviceKey 在数据库中已存在( deviceKey 提供的情况下)。

11714

Generate deviceKey failed

暂时无法分配设备的key( deviceKey 未提供的情况下),请重试。

11739

Exceed max device size

该操作将导致超过产品下限定的设备数量。

11858

Unable to find public key

由于应用的服务帐号未创建 RSA 密钥对,无法获取 RSA 公钥,因此无法请求 requireSecret。请先为服务帐号 创建 RSA 密钥对

99400

Invalid arguments

参数错误。本次请求创建的设备数量超过当前组织设置的单次批量创建最大设备数量限制。更多信息,参见 使用限制

示例

请求示例


url:https://{apigw-address}/connect-service/v2.4/devices?action=batchCreate&orgId=yourOrgId
method: POST
requestBody:
{
  "deviceList":
  [
    {
      "productKey": "yourProductKey",
      "deviceName":
      {
        "defaultValue": "Device Name",
        "i18nValue":
        {
            "zh_CN": "设备名称",
            "en_US": "Device Name"
        }
      },
      "timezone": "+08:00",
      "deviceAttributes":
      {
        "serial": 111111
      },
      "deviceDesc": "Device description",
      "deviceTags":
      {
        "tag1": "tag value"
      }
    },
    {
      "productKey": "yourProductKey2",
      "deviceName":
      {
        "defaultValue": "Device Name 2",
        "i18nValue":
        {
            "zh_CN": "设备名称 2",
            "en_US": "Device Name 2"
        }
      },
      "timezone": "+08:00",
      "deviceAttributes":
      {
        "serial": 222222
      },
      "deviceDesc": "Device description 2",
      "deviceTags":
      {
        "tag2": "tag value"
      }
    }
  ],
  "requireSecret": true
}

返回示例


{
  "code": 0,
  "msg": "OK",
  "requestId": "21938538-9266-495d-b1b9-b15597ad3e1f",
  "data":
  [
    {
      "code": 0,
      "msg": "OK",
      "data":
      {
        "assetId": "yourAssetId",
        "productKey": "yourProductKey",
        "deviceKey": "yourDeviceKey",
        "deviceSecret":"EncryptedDeviceSecret1",
        "sessionKey":"EncryptedSessionKey1"
      }
    },
    {
      "code": 0,
      "msg": "OK",
      "data":
      {
        "assetId": "yourAssetId2",
        "productKey": "yourProductKey2",
        "deviceKey": "yourDeviceKey2",
        "deviceSecret":"EncryptedDeviceSecret2",
        "sessionKey":"EncryptedSessionKey2"
      }
    }
  ],
  "successSize": 2,
  "totalSize": 2
}

SDK 示例


你可以在 Github 上获取接入服务的 SDK 示例: