Batch Create Devices


批量创建设备。使用前确保环境已更新 EnOS 2.3 CU 3

操作权限

需授权的资源 所需操作权限
设备管理 Full Access

开始前准备

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

请求格式

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

请求参数(URI)

名称 位置(Path/Query) 必需/可选 数据类型 描述
orgId Query 必需 String 资产所属的组织 ID。如何获取 orgId 信息>>

请求参数(Body)

名称 必需/可选 数据类型 描述
deviceList 必需 CreateOption 结构体数组 创建设备的参数。其结构参见 CreateOption 结构体

CreateOption 结构体

名称 必需/可选 数据类型 描述
productKey 必需 String 设备的 product key。
deviceName 必需 StringI18n 设备名称。结构参见 国际化名称结构体
timezone 必需 String 设备所在时区。时区表示方法 >>
deviceAttributes 可选 Map 设备属性。
deviceKey 可选 String 设备的 Device Key。
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 设备的连接秘钥。
assetId String 资产 ID。

错误码

代码 错误信息 描述
11702 DeviceKey already exists deviceKey 在数据库中已存在( deviceKey 提供的情况下)。
11714 Generate deviceKey failed 暂时无法分配设备的key( deviceKey 未提供的情况下),请重试。
11739 Exceed max device size 该操作将导致超过产品下限定的设备数量。

示例

请求示例

url:https://{apigw-address}/connect-service/v2.1/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"
      }
    }
  ]
}

返回示例

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

Java SDK 调用示例

import com.envision.apim.poseidon.config.PConfig;
import com.envision.apim.poseidon.core.Poseidon;
import com.envisioniot.enos.api.common.constant.common.StringI18n;
import com.envisioniot.enos.connect_service.v2_1.device.BatchCreateDeviceRequest;
import com.envisioniot.enos.connect_service.v2_1.device.BatchCreateDeviceResponse;
import com.envisioniot.enos.connect_service.v2_1.device.CreateDeviceRequest;
import com.envisioniot.enos.connect_service.v2_1.device.CreateDeviceResponse;
import com.envisioniot.enos.connect_service.vo.DeviceCreateVo;

import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;

public class CreateDeviceBatch {
    public static void main(String[] args) {
      final String appKey = "yourAppKey";
      final String appSecret = "yourAppSecret";
      final String serverUrl = "yourServerUrl";
      final String orgId = "yourOrgID";

      BatchCreateDeviceRequest request = new BatchCreateDeviceRequest();
      request.setOrgId(orgId);

      DeviceCreateVo deviceCreateVo = new DeviceCreateVo();
      deviceCreateVo.setProductKey("yourProductKey");
      StringI18n stringI18n = new StringI18n();
      stringI18n.setDefaultValue("Device Name");
      Map<String, Object> deviceAttributes = new HashMap<>();
      //deviceAttributes.put("serial",111111);
      Map<String, String> deviceTags = new HashMap<>();
      deviceTags.put("tag1", "tag value");
      deviceCreateVo.setDeviceAttributes(deviceAttributes);
      deviceCreateVo.setDeviceTags(deviceTags);
      deviceCreateVo.setTimezone("+08:00");
      deviceCreateVo.setDeviceName(stringI18n);

      DeviceCreateVo deviceCreateVo2 = new DeviceCreateVo();
      deviceCreateVo2.setProductKey("yourProductKey2");
      StringI18n stringI18n2 = new StringI18n();
      stringI18n2.setDefaultValue("Device Name 2");
      Map<String, Object> device2Attributes = new HashMap<>();
      //device2Attributes.put("serial",222222);
      Map<String, String> device2Tags = new HashMap<>();
      device2Tags.put("tag2", "tag value");
      deviceCreateVo2.setDeviceAttributes(device2Attributes);
      deviceCreateVo2.setDeviceTags(device2Tags);
      deviceCreateVo2.setTimezone("+08:00");
      deviceCreateVo2.setDeviceName(stringI18n2);
      request.setDeviceList(Arrays.asList(deviceCreateVo,deviceCreateVo2));

      BatchCreateDeviceResponse response = Poseidon.config(PConfig.init().appKey(appKey).appSecret(appSecret).debug())
        .url(serverUrl)
        .getResponse(request, BatchCreateDeviceResponse.class);
  }
}