Replace Device¶
在资产ID(assetId
)不改变的情况下更换一个设备。该接口将注销已注册设备的原始Device Key及Device Secret,为其重新分配Device Key,生成新的Device Secret,并重置设备为未激活状态。新设备可以通过更换后的Device Key连接EnOS,新旧设备的数据将通过资产ID进行关联。
操作权限¶
需授权的资源 |
所需操作权限 |
---|---|
设备管理 |
Full Access |
请求格式¶
POST https://{apigw-address}/connect-service/v2.1/devices?action=replaceDevice
请求参数(URI)¶
备注
以下非必须字段中,必须提供 assetId
或 productKey
+ deviceKey
的组合,用于指定设备。
名称 |
位置(Path/Query) |
必需/可选 |
数据类型 |
描述 |
---|---|---|---|---|
orgId |
Query |
必需 |
String |
资产所属的组织ID。 如何获取orgId信息>> |
assetId |
Query |
可选 |
String |
资产ID。 如何获取Asset ID信息>> |
productKey |
Query |
可选 |
String |
设备的Product Key. |
deviceKey |
Query |
可选 |
String |
设备的Device Key. |
请求参数(Body)¶
名称 |
必需/可选 |
数据类型 |
描述 |
---|---|---|---|
newDeviceKey |
必需 |
String |
新设备的Device Key。支持英文字母、数字、连字符(-)、下划线(_)、圆点(.)及冒号(:),长度限制4~64,特殊字符最多支持三个。 |
响应参数¶
名称 |
数据类型 |
描述 |
---|---|---|
data |
DeviceReplaceResult结构体 |
设备替换结果信息,见 DeviceReplaceResult结构体>> |
DeviceReplaceResult结构体 ¶
名称 |
数据类型 |
描述 |
---|---|---|
assetId |
String |
资产ID。 |
productKey |
String |
设备的Product Key. |
deviceKey |
String |
设备的Device Key. |
deviceSecret |
String |
由系统分配的新设备的密钥。 |
错误码¶
代码 |
描述 |
---|---|
11704 |
新旧Device Key相同。 |
11702 |
新的Device Key在数据库中已存在。 |
示例¶
请求示例¶
POST https://{apigw-address}/connect-service/v2.1/devices?action=replaceDevice&orgId=yourOrgId&assetId=yourAssetId
{
"newDeviceKey":"yourNewDeviceKey"
}
返回示例¶
{
"code":0,
"msg":"OK",
"requestId":"fa377585-8240-4d1e-ad9d-a8d820873142",
"data":{
"assetId":"yourAssetId",
"productKey":"yourProductKey",
"deviceKey":"yourNewDeviceKey",
"deviceSecret":"yourDeviceSecret"
}
}
Java SDK调用示例¶
public class ReplaceDevice {
public static void main(String[] args) {
final String appKey = "yourAppAccessKe";
final String appSecret = "yourAppSecretKey";
final String serverUrl = "http://{apigw-address}";
final String orgId = "yourOrgId";
final String assetId = "yourAssetId";
String newDeviceKey = "yourNewDeviceKey";
ReplaceDeviceRequest request = new ReplaceDeviceRequest();
request.setOrgId(orgId);
request.setAssetId(assetId);
request.setNewDeviceKey(newDeviceKey);
ReplaceDeviceResponse response = Poseidon.config(PConfig.init().appKey(appKey).appSecret(appSecret).debug())
.url(serverUrl)
.getResponse(request, ReplaceDeviceResponse.class);
DeviceReplaceResult replaceResult = response.getData();
String newDeviceSecret = replaceResult.getDeviceSecret();
System.out.println(newDeviceSecret);
System.out.println(response);
System.out.println(response.getData());
}
}