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
结构体中的字段都是非必选的,但必须提供 assetId
或 productKey
+ 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);
}
}