设备接入 IoTDA设备接入 IoTDA

更新时间:2021/09/06 GMT+08:00
分享

配置设备影子预期数据

接口说明

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

设备影子介绍:

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

  • 每个设备有且只有一个设备影子,由设备ID唯一标识
  • 设备影子仅保存最近一次设备的上报数据和预期数据
  • 无论该设备是否在线,都可以通过该影子获取和设置设备的属性
  • 设备上线或者设备上报属性时,如果desired区和reported区存在差异,则将差异部分下发给设备,配置的预期属性需在产品模型中定义且method具有可写属性“W”才可下发

调试

您可以在API Explorer中调试该接口。

URI

请求方法

PUT

URI

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

传输协议

HTTPS

请求参数

名称

必选/可选

类型

位置

说明

X-Auth-Token

必选

String

Header

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

Instance-Id

可选

String

Header

参数说明:实例ID。物理多租下各实例的唯一标识,一般华为云租户无需携带该参数,仅在物理多租场景下从管理面访问API时需要携带该参数。

project_id

必选

String

Path

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

device_id

必选

String

Path

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

取值范围:长度不超过128,只允许字母、数字、下划线(_)、连接符(-)的组合。

shadow

可选

List<UpdateDesired>

Body

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

表1 UpdateDesired

名称

必选/可选

类型

说明

service_id

必选

String

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

desired

必选

Object

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

version

可选

Long

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

响应参数

名称

类型

说明

device_id

String

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

shadow

List<DeviceShadowData>

设备影子数据结构体。

表2 DeviceShadowData

名称

类型

说明

service_id

String

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

desired

DeviceShadowProperties Object

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

reported

DeviceShadowProperties Object

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

version

Long

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

表3 DeviceShadowProperties

名称

类型

说明

properties

Object

设备影子的属性数据,Json格式,里面是一个个键值对,每个键都是产品模型中属性的参数名(property_name),目前如样例所示只支持一层结构。

event_time

String

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

请求示例

PUT https://{Endpoint}/v5/iot/{project_id}/devices/{device_id}/shadow
Content-Type: application/json
X-Auth-Token: ********
Instance-Id: ********

{
  "shadow" : [ {
    "desired" : {
      "temperature" : "60"
    },
    "service_id" : "WaterMeter",
    "version" : 1
  } ]
}

响应示例

Status Code: 200 OK

Content-Type: application/json

{
  "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" : 1
  } ]
}

错误码

HTTP状态码

错误码

错误码英文描述

错误码中文描述

处理建议

400

IOTDA.000006

Invalid input data.

请求参数不合法

请排查请求参数是否符合华为云文档要求。

IOTDA.000008

Invalid input. Bad request, for more detail, refer to the error message.

请求的格式不正确,如json非法,mediaType不正确等。

请排查该请求的请求格式是否正确。

IOTDA.013002

The properties of deviceServiceCapability do not exist.

产品的属性不存在

请排查该产品是否有属性信息,若没有,可调用修改产品接口添加属性。

IOTDA.013003

Operation not allowed. The product is unavailable.

未知的产品类型

请排查设备是否有产品ID, 若没有,可调用修改设备信息接口添加产品ID。

403

IOTDA.000021

Operation not allowed. User not found by IAM token or the authorized user has not subscribed IOTDA service.

没有找到IAM Token所对应的用户信息或该用户没有订阅设备接入服务(IOTDA)

请排查IAM Token所在用户是否订阅了设备接入服务(IOTDA)。

IOTDA.001006

Operation not allowed. Application not found by authorized user or the authorized user has no application.

用户下没有应用或应用与用户不匹配

请排查用户下是否有应用或是否有指定的应用。

IOTDA.013004

Operation not allowed. You have no Write permission.

您没有可写的权限

请排查您的产品属性是否是可写的,若不是,可调用修改产品的接口将属性改成可写。

404

IOTDA.013000

The product does not exist.

产品不存在

请排查请求参数是否正确或产品是否已经在平台注册。

IOTDA.014000

The device does not exist.

设备不存在

请排查请求参数是否有误并确认是否有在平台注册该设备。

409

IOTDA.014030

The version of serviceId %s conflicts

该serviceId的版本号冲突

请使用正确的版本号进行配置

500

IOTDA.000001

Internal server error.

服务器内部错误

请联系华为工程师分析解决。

IOTDA.000020

Decrypt IAM token failed.

IAM Token解析失败

请联系华为工程师分析解决。

分享:

    相关文档

    相关产品