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);

    }
}