Update Device


更新设备。assetId(或 productKeydeviceKey)为请求字段,其他字段为更新字段。

操作权限

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

约束条件

请求格式

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

请求参数(URI)

注解

以下非必须字段中,必须提供 assetIdproductKey + deviceKey 的组合,用于指定设备。

名称 位置(Path/Query) 必需/可选 数据类型 描述
orgId Query 必需 String 资产所属的组织 ID。如何获取 orgId 信息>>
assetId Query 可选(见上述注解) String 资产 ID。如何获取 assetId 信息>>
productKey Query 可选(见上述注解) String 设备的 product key,需与 deviceKey 一起使用。
deviceKey Query 可选(见上述注解) String 设备的 device key,需与 productKey 一起使用。
isPatchUpdate Query 可选 Boolean

是否是局部更新。

  • true (默认):只更新参数中指定字段的值。
  • false:更新所有字段的值,即未指定值的字段将被置空。

请求参数(Body)

名称 必需/可选 数据类型 描述
timezone 可选 String 欲更新的设备所在时区。
deviceName 可选 StringI18n 欲更新的设备名称。其结构参见 国际化名称结构体
deviceAttributes 可选 Map 欲更新的设备属性
deviceTags 可选 Map(key 为 String,value 为 String) 欲更新的设备 tags。标签的作用与表示方法>>
deviceDesc 可选 String 欲更新的设备描述信息。

示例

请求示例

url: https://{apigw-address}/connect-service/v2.1/devices?action=update&orgId=yourOrgId&assetId=yourAssetId
method: POST
requestBody:
{
        "deviceTags": {
                "test": "test_value"
        },
        "deviceAttributes": {
                "int11": 617
        },
        "deviceName": {
                "defaultValue": "testforname",
                "i18nValue": {}
        },
        "deviceDesc": "test for updatedevice"
}

返回示例

{
        "code": 0,
        "msg": "OK",
        "requestId": "0d61752e-0633-4846-abb1-b6fb39801a5f",
        "data": null
}

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

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

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

        String orgId = "yourOrgId";
        String assetId = "yourAssetId";
        UpdateDeviceRequest request=new UpdateDeviceRequest();
        request.setOrgId(orgId);
        request.setAssetId(assetId);
        request.setDeviceDesc("yourDeviceDesc");
        request.setTimezone("yourTimeZone");
        Map<String, Object> deviceAttributes=new HashMap<>();
        deviceAttributes.put("yourAttributeId",yourAttributeValue);
        Map<String, String> deviceTags=new HashMap<>();
        deviceTags.put("yourTagKey","yourTagValue");
        request.setDeviceAttributes(deviceAttributes);
        request.setDeviceTags(deviceTags);

        StringI18n stringI18n=new StringI18n();
        stringI18n.setDefaultValue("testforname");
        request.setDeviceName(stringI18n);
        UpdateDeviceResponse response = Poseidon.config(PConfig.init().appKey(appKey).appSecret(appSecret).debug())
                .url(serverUrl)
                .getResponse(request, UpdateDeviceResponse.class);

    }
}