设备影子(联通用户专用)
非联通用户请查看设备接入服务。
概述
物联网平台支持创建设备的“影子”。设备影子是一个JSON文件,用于存储设备的在线状态、设备最近一次上报的设备属性值、应用服务器期望下发的配置。每个设备有且只有一个设备影子,设备可以获取和设置设备影子以此来同步设备属性值,这个同步可以是影子同步给设备,也可以是设备同步给影子。
- desired区用于存储对设备属性的配置,即期望值。当需要修改设备的服务属性值时,可修改设备影子的desired属性值,设备在线时,desired属性值立即同步到设备。如果设备不在线,待设备上线或上报数据时,desired属性值同步到设备。
- report区用于存储设备最新上报的设备属性值,即上报值。当设备上报数据时,平台刷新report属性值为设备上报的设备属性值。
物联网平台仅支持对LWM2M协议的设备提供设备影子功能,对于希望通过设备影子修改的属性,在定义Profile文件时,需遵循LWM2M协议中定义的属性,且属性类型为“W”。LWM2M标准规范参见《OMA-TS-LightweightM2M-V1_0_2-20180209-A.pdf》。
应用场景
适合采用LWM2M协议的设备,特别是资源受限低功耗设备,长期处于休眠状态的场景。
-
修改设备属性值:用户通过设备配置更新功能修改设备的属性值,由于设备可能长时间处于离线状态,修改设备属性值的操作不能及时下发给设备。在这种情况下,物联网平台可以将修改设备的属性信息存储在设备影子中,待设备上线后,将修改的设备属性值同步给设备,从而完成设备属性值的修改。
业务流程
修改设备属性值
修改desired属性值,如果设备在线,则设备影子直接同步设备属性值到设备,否则等待设备上线或上报数据时,再同步设备属性值到设备。
- 用户通过控制台或应用服务器修改设备属性值。消息样例如下:
Method: PUT request: https://server:port/iocm/app/shadow/v1.5.0/devices/devices/{deviceId}?appId={appId} Header: app_key: ****** Authorization: Bearer ****** Content-Type: application/json Body: { "serviceDesireds": [ { "serviceId": "Temperature", "desired": { "targetTemperature": 35 } } ] }
- 物联网平台修改desired属性值。
- 物联网平台返回响应消息。
- 物联网平台判断设备上线或上报数据。
- 物联网平台将设备属性同步到设备。
- 设备返回响应消息。
- 当设备上报数据时,物联网平台修改report属性值为设备上报的设备属性值。
查询设备属性值
设备影子保存的是设备最新的设备属性值,一旦设备属性值产生变化,设备会将设备属性值同步到设备影子。用户便可以及时获取查询结果,无需关注设备是否在线。
- 用户通过控制台或应用服务器查询设备属性值。消息样例如下:
Method: GET request: https://server:port/iocm/app/shadow/v1.5.0/devices/{deviceId} Header: app_key: ****** Authorization: Bearer ****** Content-Type: application/json
- 物联网平台返回desired属性值和report属性值,即期望值和上报值。消息样例如下:
response: Status Code: 200 OK Content-Type: application/json Body: { "deviceId": "******", "gatewayId": "******", "nodeType": "******", "createTime": "******", "lastModifiedTime": "******", "deviceInfo": "******""services": [ { "serviceId": "******", "reportedProps": "******", "desiredProps": "******", "eventTime": "******", "serviceType": "******" }, ] }
查询和修改设备影子
查询设备影子
方法1:应用服务器调用查询设备影子接口。
方法2:登录物联网平台控制台,点击右上角“进入设备管理服务”。单击左下角,在设备列表中,单击具体的设备进入到设备的详情页面,在“设备影子”页签中,可以查看当前设备属性数据,包括“上报值”和“期望值”,如下图所示。
- 如果当前界面中看到“上报值”与“期望值”不一致,原因可能是设备未在线,暂时存储在设备影子中,待同步给设备,期望值会存在深色底纹。
- 如果当前界面看到的“上报值”与“期望值”一致,则表示设备最近一次上报的属性值与用户期望下发的属性值一致,期望值为白色底纹。
修改设备影子
方法1:应用服务器调用修改设备影子接口。
方法2:登录物联网平台控制台,点击右上角“进入设备管理服务”。在设备列表中,单击具体的设备进入到设备的详情页面,在“设备影子”页签右上角选择“属性配置”,在弹出窗口中输入服务属性对应的期望值。