更新时间:2024-05-29 GMT+08:00

配置设备影子预期数据

功能介绍

应用服务器可调用此接口配置设备影子的预期属性(desired区),当设备上线或者设备上报属性时把属性下发给设备。

设备影子介绍: 设备影子是一个用于存储和检索设备当前状态信息的JSON文档。

  • 每个设备有且只有一个设备影子,由设备ID唯一标识

  • 设备影子用于存储设备上报的(状态)属性和应用程序期望的设备(状态)属性

  • 无论该设备是否在线,都可以通过该影子获取和设置设备的属性

  • 设备上线或者设备上报属性时,如果desired区和reported区存在差异,则将差异部分下发给设备,配置的预期属性需在产品模型中定义且method具有可写属性“W”才可下发

  • 该接口仅支持配置单个设备的设备影子的预期数据,如需多个设备的设备影子配置,请参见 创建批量任务

限制: 设备影子JSON文档中的key不允许特殊字符:点(.)、dollar符号($)、空char(十六进制的ASCII码为00)。如果包含了以上特殊字符则无法正常刷新影子文档。

调试

您可以在API Explorer中调试该接口,支持自动认证鉴权。API Explorer可以自动生成SDK代码示例,并提供SDK代码示例调试功能。

URI

PUT /v5/iot/{project_id}/devices/{device_id}/shadow

表1 路径参数

参数

是否必选

参数类型

描述

project_id

String

参数说明:项目ID。获取方法请参见 获取项目ID

device_id

String

参数说明:设备ID,用于唯一标识一个设备。在注册设备时直接指定,或者由物联网平台分配获得。由物联网平台分配时,生成规则为"product_id" + "" + "node_id"拼接而成。 取值范围:长度不超过128,只允许字母、数字、下划线()、连接符(-)的组合。

请求参数

表2 请求Header参数

参数

是否必选

参数类型

描述

X-Auth-Token

String

参数说明:用户Token。通过调用IAM服务 获取IAM用户Token接口获取,接口返回的响应消息头中“X-Subject-Token”就是需要获取的用户Token。简要的获取方法样例请参见 Token认证

Instance-Id

String

参数说明:实例ID。物理多租下各实例的唯一标识,建议携带该参数,在使用专业版时必须携带该参数。您可以在IoTDA管理控制台界面,选择左侧导航栏“总览”页签查看当前实例的ID,具体获取方式请参考 查看实例详情

表3 请求Body参数

参数

是否必选

参数类型

描述

shadow

Array of UpdateDesired objects

参数说明:设备影子期望值构体。

表4 UpdateDesired

参数

是否必选

参数类型

描述

service_id

String

参数说明:设备的服务ID,在设备关联的产品模型中定义。

最小长度:1

最大长度:256

desired

Object

参数说明:设备影子期望属性数据,Json格式,里面是一个个键值对,每个键都是产品模型中属性的参数名(property_name),目前如样例所示只支持一层结构;如果想要删除整个desired可以填写空Object(例如"desired":{}),如果想要删除某一个属性期望值可以将属性置位null(例如{"temperature":null})

version

Long

参数说明:设备影子的版本,携带该参数时平台会校验值必须等于当前影子版本,初始从0开始。

响应参数

状态码: 200

表5 响应Body参数

参数

参数类型

描述

device_id

String

设备ID,用于唯一标识一个设备。在注册设备时直接指定,或者由物联网平台分配获得。由物联网平台分配时,生成规则为"product_id" + "_" + "node_id"拼接而成。

shadow

Array of DeviceShadowData objects

设备影子数据结构体。

表6 DeviceShadowData

参数

参数类型

描述

service_id

String

设备的服务ID,在设备关联的产品模型中定义。

最小长度:1

最大长度:256

desired

DeviceShadowProperties object

用户最近一次对设备下发的预期数据,Json格式,里面是一个个键值对,每个键都是产品模型中属性的参数名(property_name)。

reported

DeviceShadowProperties object

设备最近一次上报的属性数据,Json格式,里面是一个个键值对,每个键都是产品模型中属性的参数名(property_name)。

version

Long

设备影子的版本,携带该参数时平台会校验值必须等于当前影子版本,初始从0开始。

表7 DeviceShadowProperties

参数

参数类型

描述

properties

Object

设备影子的属性数据,Json格式,里面是一个个键值对,每个键都是产品模型中属性的参数名(property_name),目前如样例所示只支持一层结构。 注意:JSON结构的key当前不支持特殊字符:点(.)、dollar符号($)、空char(十六进制的ASCII码为00),key为以上特殊字符无法正常刷新设备影子

event_time

String

事件操作时间,格式:yyyyMMdd'T'HHmmss'Z',如20151212T121212Z。

最大长度:256

请求示例

  • 配置设备影子预期数据,temperature的期望值为60。

    PUT https://{endpoint}/v5/iot/{project_id}/devices/{device_id}/shadow
    
    {
      "shadow" : [ {
        "service_id" : "WaterMeter",
        "desired" : {
          "temperature" : "60"
        },
        "version" : 1
      } ]
    }
  • 删除设备影子预期数据,将设备影子中属性temperature的期望值删除。

    PUT https://{endpoint}/v5/iot/{project_id}/devices/{device_id}/shadow
    
    {
      "shadow" : [ {
        "service_id" : "WaterMeter",
        "desired" : {
          "temperature" : null
        },
        "version" : 2
      } ]
    }

响应示例

状态码: 200

OK

{
  "device_id" : "40fe3542-f4cc-4b6a-98c3-61a49ba1acd4",
  "shadow" : [ {
    "service_id" : "WaterMeter",
    "desired" : {
      "properties" : {
        "temperature" : "60"
      },
      "event_time" : "20151212T121212Z"
    },
    "reported" : {
      "properties" : {
        "temperature" : "60"
      },
      "event_time" : "20151212T121212Z"
    },
    "version" : 2
  } ]
}

状态码

状态码

描述

200

OK

400

Bad Request

401

Unauthorized

403

FORBIDDEN

404

Not Found

409

CONFLICT

500

INTERNAL SERVER ERROR

错误码

请参见错误码