物联网平台提供设备影子功能,用于缓存设备状态。设备在线时,可以直接获取物联网平台指令;设备离线后,再次上线可以主动拉取物联网平台指令。

什么是设备影子

设备影子是一个JSON文档,用于存储设备上报状态、应用程序期望状态信息。

每个设备有且只有一个设备影子,设备可以通过MQTT获取和设置设备影子来同步状态,该同步可以是影子同步给设备,也可以是设备同步给影子。

应用场景

  • 应用程序请求获取设备状态。

    场景描述:

    • 设备网络不稳定,设备频繁上下线,无法正常响应应用程序的请求。
    • 设备网络稳定,同时响应多个应用程序的请求,即使响应的结果一样,设备本身处理能力有限,也会无法负载多次请求。

    使用设备影子机制,设备状态变更,只需同步状态给设备影子一次,应用程序请求获取设备状态,不论应用程序请求数量,和设备是否联网在线,都可从设备影子中获取设备当前状态,实现应用程序与设备解耦。

    应用程序获取设备影子中状态的流程图如下,其中数据流转过程,请参见设备主动上报状态

    设备网络不稳定
  • 应用程序下发指令给设备,变更设备状态。

    场景描述:设备处于下线状态,或设备网络不稳定,设备频繁上下线,应用程序发送控制指令给设备,设备不在线,指令就会发送失败。

    使用设备影子机制,可以将应用程序下发的指令,携带时间戳存储到设备影子中。设备再上线时,获取设备影子中指令,并根据时间戳确定是否执行。

    应用程序更新设备状态的流程图如下,其中数据流转过程,请参见应用程序改变设备状态设备主动获取影子内容设备主动删除影子属性

    应用程序下发指令

查看与更新设备影子

您需在设备端完成设备影子功能开发,具体内容,请参见设备影子

完成设备开发和接入后,您可以在物联网平台控制台,查看设备影子信息,更新设备影子状态。

  1. 登录物联网平台控制台
  2. 实例概览页面,找到对应的实例,单击实例进入实例详情页面。
    实例概览
  3. 在左侧导航栏,选择设备管理 > 设备
  4. 单击对应设备的查看按钮,进入设备详情页面。
  5. 单击设备影子,页面显示设备上报的影子状态。
    设备影子
  6. 单击更新影子,在“desired”部分,填入期望设备状态。

    设备影子文档格式,请参见设备影子JSON详解

    设备在线时,设备影子保存期望状态,设备通过订阅Topic直接获得期望状态。

    设备离线时,设备影子缓存期望状态,设备上线后,主动从物联网平台拉取最新期望状态。

相关API

GetDeviceShadow:获取设备影子。

UpdateDeviceShadow:更新设备影子。