
# 更新终端设备孪生 - UpdateDeviceTwin
#### 功能介绍
该API用于更新终端设备孪生。
#### 调试
您可以在[API Explorer](https://console.huaweicloud.com/apiexplorer/#/openapi/IEF/doc?api=UpdateDeviceTwin)中调试该接口，支持自动认证鉴权。API Explorer可以自动生成SDK代码示例，并提供SDK代码示例调试功能。
#### 授权信息
账号具备所有API的调用权限，如果使用账号下的IAM用户调用当前API，该IAM用户需具备调用API所需的权限，具体权限要求请参见[权限和授权项](https://support.huaweicloud.com/api-ief/ief_02_1003.html)。
#### URI
PUT /v2/{project_id}/edgemgr/devices/{device_id}/twin
表1路径参数 
| 参数         | 是否必选 | 参数类型   | 描述   |
|:---|:---|:---|:---|
| project_id | 是    | String | 项目ID |
| device_id  | 是    | String | 设备ID |
#### 请求参数
表2请求Header参数 
| 参数              | 是否必选 | 参数类型   | 描述                                                        |
|:---|:---|:---|:---|
| Content-Type    | 是    | String | 消息体的类型（格式），默认取值为"application/json"。                       |
| X-Auth-Token    | 是    | String | 用户Token。 通过调用IAM服务获取用户Token接口获取（响应消息头中X-Subject-Token的值）。 |
| ief-instance-id | 否    | String | 企业版实例ID，专业版实例为空值。                                         |
   
表3请求Body参数 
| 参数                | 是否必选 | 参数类型                                                                                        | 描述                         |
|:---|:---|:---|:---|
| twin              | 否    | Map\<String,[ValueInTwin]\>                         | 终端设备动态属性                   |
| property_visitors | 否    | Map\<String,[ValueInPropertyVisitors]\> | 孪生属性配置，与access_protocol关联。 |
   
 表4ValueInTwin 
| 参数       | 是否必选 | 参数类型                                                   | 描述         |
|:---|:---|:---|:---|
| excepted | 否    | [Excepted] object | 动态属性的期望信息  |
| optional | 否    | Boolean                                                | 动态属性的实际信息  |
| metadata | 否    | [metadata] object | 动态属性的元数据信息 |
   
 表5Excepted 
| 参数       | 是否必选 | 参数类型                                                   | 描述                                                                          |
|:---|:---|:---|:---|
| value    | 否    | String                                                 | 动态属性的初始值，最大长度512，value允许英文字母、数字、下划线、中划线、点、逗号、冒号、/、@、+、?、\^、=、%、\&、\~、#、!、\* |
| metadata | 否    | [metadata] object | 期望值设置的时间信息                                                                  |
   
 表6metadata 
| 参数   | 是否必选 | 参数类型   | 描述                                                                 |
|:---|:---|:---|:---|
| type | 否    | String | 属性类型标识，string\|int\|float\|boolean（boolean类型为true或false），默认为string |
   
 表7ValueInPropertyVisitors 
| 参数                | 是否必选 | 参数类型                                                                     | 描述                                                                                      |
|:---|:---|:---|:---|
| register_type     | 否    | [ValueInAttributes] object | 寄存器类型，value值字段可选为CoilsRegisters、HoldingRegisters、DiscreteInputsRegisters、InputRegisters |
| access_mode       | 否    | [ValueInAttributes] object | 访问模式，value值字段可选为r和r/w                                                                   |
| register_index    | 否    | [ValueInAttributes] object | 寄存器偏移地址，value值字段取值范围0-65535                                                             |
| register_num      | 否    | [ValueInAttributes] object | 寄存器个数                                                                                   |
| scale_index       | 否    | [ValueInAttributes] object | 缩放因子                                                                                    |
| original_datatype | 否    | [ValueInAttributes] object | 原始数据类型                                                                                  |
| expected_datatype | 否    | [ValueInAttributes] object | 期望数据类型                                                                                  |
| is_registerswap   | 否    | [ValueInAttributes] object | 是否交换寄存器顺序                                                                               |
| is_swap           | 否    | [ValueInAttributes] object | 是否交换高低字节                                                                                |
| sample_interval   | 否    | [ValueInAttributes] object | 数据采集间隔，取值范围为1-3600                                                                      |
| data_min          | 否    | [ValueInAttributes] object | 原始数据值区间最小值，与原始数据类型关联                                                                    |
| data_max          | 否    | [ValueInAttributes] object | 原始数据值区间最大值，与原始数据类型关联                                                                    |
| node_id           | 否    | [ValueInAttributes] object | 节点id                                                                                    |
| browse_name       | 否    | [ValueInAttributes] object | 节点名称                                                                                    |
   
 表8ValueInAttributes 
| 参数       | 是否必选 | 参数类型                                                   | 描述                                                                       |
|:---|:---|:---|:---|
| value    | 是    | String                                                 | value 最大长度512，value允许英文字母、数字、下划线、中划线、点、逗号、冒号、/、@、+、?、\^、=、%、\&、\~、#、!、\* |
| optional | 否    | Boolean                                                | 标识属性是否可选，默认为true                                                         |
| metadata | 否    | [Metadata] object | 静态属性的元数据信息，默认为{"type": "string"}                                         |
   
 表9Metadata 
| 参数   | 是否必选 | 参数类型   | 描述                                                                 |
|:---|:---|:---|:---|
| type | 否    | String | 属性类型标识，string\|int\|float\|boolean（boolean类型为true或false），默认为string |
   
#### 响应参数
**状态码：200**
表10响应Body参数 
| 参数                | 参数类型                                                                                         | 描述       |
|:---|:---|:---|
| property_visitors | Map\<String,[ValueInPropertyVisitors]\> | 孪生属性配置   |
| twin              | Map\<String,[ValueInTwinResponse]\>         | 终端设备动态属性 |
   
 表11ValueInPropertyVisitors 
| 参数                | 参数类型                                                                      | 描述                                                                                      |
|:---|:---|:---|
| register_type     | [ValueInAttributes] object | 寄存器类型，value值字段可选为CoilsRegisters、HoldingRegisters、DiscreteInputsRegisters、InputRegisters |
| access_mode       | [ValueInAttributes] object | 访问模式，value值字段可选为r和r/w                                                                   |
| register_index    | [ValueInAttributes] object | 寄存器偏移地址，value值字段取值范围0-65535                                                             |
| register_num      | [ValueInAttributes] object | 寄存器个数                                                                                   |
| scale_index       | [ValueInAttributes] object | 缩放因子                                                                                    |
| original_datatype | [ValueInAttributes] object | 原始数据类型                                                                                  |
| expected_datatype | [ValueInAttributes] object | 期望数据类型                                                                                  |
| is_registerswap   | [ValueInAttributes] object | 是否交换寄存器顺序                                                                               |
| is_swap           | [ValueInAttributes] object | 是否交换高低字节                                                                                |
| sample_interval   | [ValueInAttributes] object | 数据采集间隔，取值范围为1-3600                                                                      |
| data_min          | [ValueInAttributes] object | 原始数据值区间最小值，与原始数据类型关联                                                                    |
| data_max          | [ValueInAttributes] object | 原始数据值区间最大值，与原始数据类型关联                                                                    |
| node_id           | [ValueInAttributes] object | 节点id                                                                                    |
| browse_name       | [ValueInAttributes] object | 节点名称                                                                                    |
   
 表12ValueInAttributes 
| 参数       | 参数类型                                                    | 描述                                                                       |
|:---|:---|:---|
| value    | String                                                  | value 最大长度512，value允许英文字母、数字、下划线、中划线、点、逗号、冒号、/、@、+、?、\^、=、%、\&、\~、#、!、\* |
| optional | Boolean                                                 | 标识属性是否可选，默认为true                                                         |
| metadata | [Metadata] object | 静态属性的元数据信息，默认为{"type": "string"}                                         |
   
 表13ValueInTwinResponse 
| 参数       | 参数类型                                                                | 描述                               |
|:---|:---|:---|
| excepted | [ExceptedActual] object | 动态属性的期望信息                        |
| actual   | [ExceptedActual] object | 动态属性的实际信息                        |
| metadata | [Metadata] object             | 动态属性的元数据信息                       |
| optional | Boolean                                                             | 标识属性是否可选，默认为true，继承模板的属性默认为false |
   
 表14ExceptedActual 
| 参数    | 参数类型   | 描述                                                                          |
|:---|:---|:---|
| value | String | 动态属性的初始值，最大长度512，value允许英文字母、数字、下划线、中划线、点、逗号、冒号、/、@、+、?、\^、=、%、\&、\~、#、!、\* |
   
 表15Metadata 
| 参数   | 参数类型   | 描述                                                                 |
|:---|:---|:---|
| type | String | 属性类型标识，string\|int\|float\|boolean（boolean类型为true或false），默认为string |
   
#### 请求示例
更新终端设备孪生，设置动态属性的初始值为"running"。
```
{
  "twin" : {
    "devicestate" : {
      "expected" : {
        "value" : "running"
      }
    }
  },
  "property_visitors" : { }
}
```
#### 响应示例
**状态码：200**
ok
```
{
  "twin" : {
    "devicestate" : {
      "expected" : {
        "value" : "running",
        "metadata" : {
          "timestamp" : 1523514289
        }
      },
      "actual" : {
        "value" : "stop",
        "metadata" : {
          "timestamp" : 1523514289
        }
      },
      "optional" : true,
      "metadata" : {
        "type" : "string"
      }
    }
  },
  "property_visitors" : { }
}
```
#### 状态码
| 状态码 | 描述 |
|:---|:---|
| 200 | ok |
   
#### 错误码
请参见[错误码](https://support.huaweicloud.com/api-ief/ErrorCode.html)。
