设备接入 IOTDA-设备影子:业务流程

时间:2024-09-27 17:32:54

业务流程

修改设备属性值

修改desired区属性值,如果设备在线,则设备影子直接同步设备属性值到设备,否则等待设备上线或上报数据时,再同步设备属性值到设备。

  1. 用户通过控制台或应用服务器修改设备属性值。消息样例如下:
    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
      } ]
    }
  2. 物联网平台 修改desired区属性值。
  3. 物联网平台返回响应消息。
  4. 物联网平台判断设备上线或上报数据。
  5. 物联网平台将设备属性同步到设备。消息样例如下:
    Topic: $oc/devices/{device_id}/sys/properties/set/request_id={request_id} 
    数据格式:  
    {
        "object_device_id": "{object_device_id} ",
        "services": [
            {
                "service_id": "Temperature",
                "properties": {
                    "value": 57,
                    "value2": 60
                }
            },
            {
                "service_id": "Battery",
                "properties": {
                    "level": 80,
                    "level2": 90
                }
            }
        ]
    }
  6. 设备返回响应消息。设备影子desired区的属性值发送给设备后,需要设备回响应表示已收到请求。消息样例如下:
    Topic:$oc/devices/{device_id}/sys/properties/set/response/request_id={request_id}
    数据格式:  
    {
        "result_code": 0,
        "result_desc": "success"
    }

7.设备上报数据,当设备进行属性上报时,平台会存储设备最新上报的设备属性值。

  • 设备上报属性时,物联网平台修改设备影子reported区属性值为设备上报的设备属性值。消息样例如下:
Topic: $oc/devices/{device_id}/sys/properties/report   
数据格式:
{
    "services": [
        {
            "service_id": "Temperature",
            "properties": {
                "value": 57,
                "value2": 60
            },
            "event_time": "20151212T121212Z"
        },
        {
            "service_id": "Battery",
            "properties": {
                "level": 80,
                "level2": 90
            },
            "event_time": "20151212T121212Z"
        }
    ]
}
  • 设备主动删除设备影子的reported区
    • 设备主动删除reported区service下的单个属性
      设备上报属性时,将属性设置为null,平台会将该属性从设备影子reported区删除,消息样例如下:
      Topic: $oc/devices/{device_id}/sys/properties/report  
      {
          "services": [
              {
                  "service_id": "Temperature",
                  "properties": {
                      "value": null,
                      "value2": 60
                  },
                  "event_time": "20151212T121212Z"
              }
          ]
      }
    • 设备主动删除影子reported区的service下的全部的属性
      设备上报属性时,将service对应的properties设置为{}时,平台会将reported区该service模块下所有属性从设备影子reported区删除,消息样例如下:
      Topic: $oc/devices/{device_id}/sys/properties/report 
      {
          "services": [
              {
                  "service_id": "Temperature",
                  "properties": {},
                  "event_time": "20151212T121212Z"
              }
          ]
      }

查询设备属性值

设备影子保存的是设备最新的设备属性值,一旦设备属性值产生变化,设备会将设备属性值同步到设备影子。用户便可以及时获取查询结果,无需关注设备是否在线。

  1. 用户通过控制台或应用服务器查询设备属性值。消息样例如下:
    GET https://{Endpoint}/v5/iot/{project_id}/devices/{device_id}/shadow
    Content-Type: application/json
    X-Auth-Token: ********
    Instance-Id: ********
  2. 物联网平台返回desired属性值和report属性值,即期望值和上报值。消息样例如下:

    Status Code: 200 OK

    Content-Type: application/json
    
    {
      "device_id" : "********",
      "shadow" : [ {
        "desired" : {
          "properties" : {
            "temperature" : "60"
          },
          "event_time" : "20151212T121212Z"
        },
        "service_id" : "WaterMeter",
        "reported" : {
          "properties" : {
            "temperature" : "60"
          },
          "event_time" : "20151212T121212Z"
        },
        "version" : 1
      } ]
    }
support.huaweicloud.com/usermanual-iothub/iot_01_0049.html