Add Sub-Device

给网关设备添加新的子设备(创建拓扑关系)。

操作权限

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

请求格式

POST https://{apigw-address}/connect-service/v2.1/device-topos?action=addSubDevice

请求参数(URI)

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

请求参数(Body)

名称 必需/可选 数据类型 描述
gateway 必需 DeviceIdentifier结构体 需要添加子设备的网关信息,见 DeviceIdentifier结构体>>
subDevices 必需 DeviceIdentifier结构体数组 需要添加到指定网关的子设备列表信息,见 DeviceIdentfier结构体>>

DeviceIdentifier结构体

注解

DeviceIdentifier 结构体中的字段都是非必选的,但必须提供 assetIdproductKey + deviceKey 的组合,用于指定设备。

名称 数据类型 描述
assetId String 资产ID。 如何获取Asset ID信息>>
productKey String 设备的Product Key.
deviceKey String 设备的Device Key.

错误码

代码 错误信息 描述
11738 Not Gateway 参数gateway不是网关设备。
11739 Exceed max device size 该操作将导致网关的子设备数量超过限定值。
99400 Invalid arguments 参数错误。

示例 1

请求示例

url:https://{apigw-address}/connect-service/v2.1/device-topos?action=addSubDevice&orgId=yourOrgId
method: POST
requestBody:
{
        "subDevices":[
                {
                        "assetId":"yourAssetId"
                }
        ],
        "gateway":{
                "assetId":"yourAssetId2"
        }
}

返回示例

{
        "code":0,
        "msg":"OK",
        "requestId":"5246f91c-f9ce-485c-a9f2-4cd8b7e1f0df",
        "data":null
}

Java SDK调用示例

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

import com.envision.apim.poseidon.config.PConfig;
import com.envision.apim.poseidon.core.Poseidon;
import com.envisioniot.enos.connect_service.v2_1.device.topo.AddSubDeviceRequest;
import com.envisioniot.enos.connect_service.v2_1.device.topo.AddSubDeviceResponse;
import com.envisioniot.enos.connect_service.vo.DeviceIdentifier;

import java.util.ArrayList;
import java.util.List;

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

        AddSubDeviceRequest request = new AddSubDeviceRequest();
        request.setOrgId(orgId);
        request.setGateway(new DeviceIdentifier("J1Rqyaqz"));
        List<DeviceIdentifier> deviceList = new ArrayList<>();
        deviceList.add(new DeviceIdentifier("zGeKTDrw"));
        deviceList.add(new DeviceIdentifier("Fi0HQ8FO"));

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