设备影子
概述
物联网平台支持创建设备的“影子”。设备影子是一个JSON文件,用于存储设备的在线状态、设备最近一次上报的设备属性值、应用服务器期望下发的配置。每个设备有且只有一个设备影子,设备可以获取和设置设备影子以此来同步设备属性值,这个同步可以是影子同步给设备,也可以是设备同步给影子。
- desired区用于存储对设备属性的配置,即期望值。当需要修改设备的服务属性值时,可修改设备影子的desired属性值,设备在线时,desired属性值立即同步到设备。如果设备不在线,待设备上线或上报数据时,desired属性值同步到设备。
- report区用于存储设备最新上报的设备属性值,即上报值。当设备上报数据时,平台刷新report属性值为设备上报的设备属性值。
- 设备影子可以通过调用应用侧API接口配置,也可以通过登录控制台,在设备详情->设备影子->属性配置页面配置。(设备影子主要针对设备属性配置,它的配置依赖产品模型)。
- 设备影子配置属于异步命令,物联网平台会直接回复配置响应,然后平台通过设备在线状态,决定立即下发还是缓存下发。
- 设备上线后,影子服务会下发desired值给设备,待设备属性上报时,影子服务检查属性值与下发的desired值是否匹配。若匹配,则说明影子数据在设备侧配置成功,缓存清除;若不匹配,则说明影子数据在设备侧未配置成功,在下次设备上线或属性上报时,会继续下发缓存desired值给设备,直到下发配置成功。
应用场景
适合资源受限低功耗设备,长期处于休眠状态的场景。
业务流程
修改设备属性值
修改desired属性值,如果设备在线,则设备影子直接同步设备属性值到设备,否则等待设备上线或上报数据时,再同步设备属性值到设备。
- 用户通过控制台或应用服务器修改设备属性值。消息样例如下:
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 } ] }
- 物联网平台修改desired属性值。
- 物联网平台返回响应消息。
- 物联网平台判断设备上线或上报数据。
- 物联网平台将设备属性同步到设备。
- 设备返回响应消息。
- 当设备上报数据时,物联网平台修改report属性值为设备上报的设备属性值。
查询设备属性值
设备影子保存的是设备最新的设备属性值,一旦设备属性值产生变化,设备会将设备属性值同步到设备影子。用户便可以及时获取查询结果,无需关注设备是否在线。
- 用户通过控制台或应用服务器查询设备属性值。消息样例如下:
GET https://{Endpoint}/v5/iot/{project_id}/devices/{device_id}/shadow Content-Type: application/json X-Auth-Token: ******** Instance-Id: ********
- 物联网平台返回desired属性值和report属性值,即期望值和上报值。消息样例如下:
Content-Type: application/json { "device_id" : "40fe3542-f4cc-4b6a-98c3-61a49ba1acd4", "shadow" : [ { "desired" : { "properties" : { "temperature" : "60" }, "event_time" : "20151212T121212Z" }, "service_id" : "WaterMeter", "reported" : { "properties" : { "temperature" : "60" }, "event_time" : "20151212T121212Z" }, "version" : 1 } ] }
查询和修改设备影子
查询设备影子
方法1:应用服务器调用查询设备影子数据接口。
修改设备影子
方法1:应用服务器调用配置设备影子预期数据接口。
方法2:登录控制台,在左侧导航栏点击“设备”,单击具体的设备进入到设备的详情页面,在“设备影子”页面,单击“属性配置”,在弹出窗口中输入服务属性对应的期望值。