Create Device


创建设备。

操作权限

需授权的资源

所需操作权限

设备管理

Full Access

开始前准备

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

请求格式

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

请求参数(URI)

名称

位置(Path/Query)

必需/可选

数据类型

描述

orgId

Query

必需

String

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

请求参数(Body)

名称

必需/可选

数据类型

描述

productKey

必需

String

设备的 product key。

deviceName

必需

StringI18n

设备名称,见 国际化名称结构体 >>

timezone

必需

String

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

deviceAttributes

可选

Map

设备属性。

deviceKey

可选

String

设备的 Device Key。

deviceDesc

可选

String

设备描述信息。

deviceTags

可选

Map

设备标签。

响应参数

名称

数据类型

描述

data

DeviceCreateResult 结构体

设备创建返回结果,见 DeviceCreateResult 结构体>>

DeviceCreateResult 结构体

名称

数据类型

描述

productKey

String

设备的 product key。

deviceKey

String

设备的 device key。

deviceSecret

String

设备的连接秘钥。

assetId

String

资产 ID。

错误码

名称

错误信息

描述

11702

DeviceKey existed

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

11714

Generate deviceKey failed

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

11739

Exceed max device size

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

示例 1

请求示例

url:https://{apigw-address}/connect-service/v2.1/devices?action=create&orgId=yourOrgId
method: POST
requestBody:
{
    "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"
    }
}

返回示例

{
    "code":0,
    "msg":"OK",
    "requestId":"fd79d0f5-69c5-4fa8-add4-69f5ca1b635f",
    "data":{
        "assetId":"Uvmm5AXU",
        "productKey":"yourProductKey",
        "deviceKey":"yourDeviceKey",
        "deviceSecret":"yourDeviceSecret"
    }
}

Java SDK 调用示例

package com.envisioniot.enos.api.sample.connect_service.device;

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.CreateDeviceRequest;
import com.envisioniot.enos.connect_service.v2_1.device.CreateDeviceResponse;


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


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

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

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

    }
}