图1 设备影子服务业务流图

 

一、基本概念

1、设备影子服务,由云端提供,还是设备端也会集成这个服务?

云端  提供  影子服务。

2、设备影子服务,存在形式?

影子服务,就是一个 json 文件。每个设备有且仅有  一个影子服务。

3、设备影子服务,的作用?

影子服务json 文件,用来存储  设备上报状态值  以及  业务系统期望值。是持久化存储的。

设备端

1、设备端可以通过,有发布 全向的topic,上报(MQTT协议)设备当前的运行状态reported,给到影子存储。

2、设备端重新上线后,通过订阅影子服务的topic,获取(走MQTT协议)到业务端给设备设置的desired值;

IoT云端

1、存储设备上报状态;

2、存储业务服务器对设备desired期望值的修改结果;

3、将业务服务器对设备desired期望值,通过影子服务具有发布权限的topic,推送给设备;

业务服务器端

1、调用影子服务的设备状态获取接口,获取(HTTP协议)到设备当前运行状态;

2、调用影子服务的设备desired值设置接口,将对设备的desired期望值,推送给到影子服务;

二、业务流程详解

阿里云IOT平台设备影子样例

1、设备端通过,有发布 权限的topic,上报(MQTT协议)设备当前的运行状态reported,给到影子存储。通信报文,示例如下:

更新成功后,在IoT物联网控制台,设备详情的设备影子中,可以查看完整的设备影子JSON文件,如下图:

 

 上报成功,且更新了云端设备影子后,设备端会收到云端下发的响应报文,如下:

 

 2、业务服务器端调用影子服务的设备状态获取接口,获取(走HTTP协议)到设备当前运行状态;

影子服务的设备状态获取接口:GetDeviceShadow。业务服务器获取到设备状态数据(reported),示例代码如下(Node.js):

 

 返回结果如下,其中 ShadowMessage 为设备影子JSON的字符串形式,如下图:

 

 3、业务服务器调用影子服务的设备desired值设置接口,将对设备的desired期望值,推送给到影子服务;

影子服务的设备desired值设置接口名:UpdateDeviceShadow。业务服务器给设备设置期望值(desired),代码示例如下(Node.js):

设置成功后,在IoT物联网控制台,可以查看最新影子文件,如下图:

 

 业务服务器的设置值同步到影子服务后。在线的设备会实时收到设备影子消息推送,内容如下:

 

如果设备不在线,当再次上线时,可以主动获取设备影子。实例代码如下:

 

获取成功后,云端回复设备影子消息推送,内容如下:

 

参考资料

IoT物联网平台「设备影子」开发实战_IoT物联网技术-CSDN博客IoT物联网平台提供设备影子功能,在云端通过一个JSON文件持久化存储设备上报状态值和业务系统的期望值。每个设备有且只有一个设备影子,设备可以通过MQTT协议获取期望值desired和设置...https://blog.csdn.net/klandor2008/article/details/114770715

更多推荐