V2.4 Batch Create Devices¶
批量创建设备。
使用此 API 前,确保已安装 EnOS 2.4 CU1 或更新版本。
操作权限¶
使用此 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 |
|
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 |
|
msg |
String |
成功时返回 OK ;如果返回其他值,则为失败。 |
data |
DeviceCreateResult 结构体 |
单个设备创建返回结果,其结构参见 DeviceCreateResult 结构体。 |
DeviceCreateResult 结构体 ¶
名称 |
数据类型 |
描述 |
---|---|---|
productKey |
String |
设备的 product key。 |
deviceKey |
String |
设备的 Device Key。 |
deviceSecret |
String |
设备连接密钥,仅当 |
sessionKey |
String |
配合解密 deviceSecret 的参数,仅当 |
assetId |
String |
资产 ID。 |
错误码¶
代码 |
错误信息 |
描述 |
---|---|---|
11702 |
DeviceKey already exists |
|
11714 |
Generate deviceKey failed |
暂时无法分配设备的key( |
11739 |
Exceed max device size |
该操作将导致超过产品下限定的设备数量。 |
11858 |
Unable to find public key |
由于应用的服务帐号未创建 RSA 密钥对,无法获取 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 示例: