设备影子概览

物联网平台提供设备影子功能,用于缓存设备上报的状态数据和应用程序下发的指令信息。设备在线时,可以直接获取物联网平台指令;设备离线后,再次上线可以主动拉取物联网平台指令。本文主要介绍设备影子的应用场景和使用方法。

什么是设备影子

设备影子是一个JSON文档,用于存储设备上报状态数据和应用程序期望状态信息。JSON数据格式的详细说明,请参见设备影子JSON详解

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

与设置设备期望属性值区别

设备影子与设置设备期望属性值功能,都是在物联网平台云端存储期望数据,设备上线后获取对应的期望数据,实现对相应业务逻辑的控制。两功能的应用范围不同,说明如下。

功能项区别
设置设备期望属性值应用范围单一,仅设置设备的物模型属性值。使用该功能前,必须为设备定义物模型属性。

若需设置设备物模型属性的期望值,使用该功能即可。使用示例,请参见设置期望属性值控制灯泡状态

设备影子应用范围更广,且不依赖物模型属性定义,可设置设备状态等数据。具体应用场景,请参见下文描述。

设备影子的设置说明,请参见设备影子JSON详解

应用场景

在以下场景中,您可选择使用设备影子功能,获取设备上报数据和应用程序期望数据。

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

    场景描述:

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

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

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

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

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

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

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

    应用程序下发指令

查看与更新设备影子

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

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

  1. 登录物联网平台控制台
  2. 实例概览页面,选择目标环境,找到对应的实例,单击实例ID或备注名称。
    重要 目前仅开通企业版实例服务的地域下,执行此步骤。其他地域,请跳过此步骤。地域及实例的支持说明,请参见实例概述
    实例概览
  3. 在左侧导航栏,选择设备管理 > 设备
  4. 单击对应设备的查看按钮,进入设备详情页面。
  5. 单击设备影子,页面显示设备上报的影子状态。
    设备影子
  6. 单击更新影子,在“desired”部分,填入期望设备状态。

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

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

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

相关API

GetDeviceShadow:获取设备影子。

UpdateDeviceShadow:更新设备影子。