阿里云 MQTT 协议学习总结(二) - Go语言中文社区

阿里云 MQTT 协议学习总结(二)


写在前面: 最近开始熟悉了wifi模块介入MQTT协议的一些认证方法和通信格式,本篇主要介绍影子设备和Json文档。欢迎大家共同交流,QQ:993650814.

 

正文:

一、

阿里云 MQTT 协议学习总结(一)

二、影子设备

    1、影子设备就是一个Json文档,用于存储设备上报状态,或者应用端期望状态信息。

   2、每个设备有且只有一个影子设备,设备可以通过MQTT获取和设置自己对应的影子设备以此来达到设备跟影子设备的同步。

  3、应用端也可以通过获取或设置影子设备,来达到获取设备最新状态或者下发期望状态的作用。

三、设备影子数据流

  1、物联网平台为为每个设备定义了两个Topic,来实现数据流转

  (1)、topic/shadow/update/${productKey}/${deviceName}  设备和应用程序发送消息到此Topic,物联网平台收到消息后,会将消息中的状态更新到影子设备中。

  (2)、topic/shadow/get/${productKey}/${deviceName}  设备影子更新状态到此Topic,设备订阅此Topic的消息后,就会收到此Topic发过来的消息。

2、下面以灯泡举例,productkey:10000;deviceName:lightbulb,设备以QoS=1发布订阅定义的两个Topic,举例说明设备、设

备影子以及应用程序之间的通信。

第一步、设备主动上报状态:

 当灯泡联网后,设备使用Topic/shadow/update/10000/lightbulb上报最新消息到影子设备,Jason格式如下:

第二步、设备影子接收到灯泡上报的消息后,更新Jason文档

第三步,影子设备更新状态后,会返回结果给灯泡,发送消息到 topic /shadow/get/10000/lightbulb,灯泡订阅此Topic。

  若更新成功,发送到Topic的消息为:

更新失败,发送到Topic的消息:

 

2、应用程序改变设备状态

第一步、 应用程序发送消息到 Topic  /shadow/update/10000/lightbulb/中,消息码流如下:

  

第二步、设备影子更新文档,为

第三步、设备影子更新完成后,交给消息发送到topic/shadow/get/10000/lightbulb中,返回结果给设备。消息如下:

第四步、灯泡在线,并且订阅了topic/shadow/get/10000/lightbulb,就会收到消息,并根据请求文档中desired的值更新状态,将灯泡颜色变成绿色。

第五步、更新完之后,发消息到topic/shadow/update/10000/lightbulb中上报最新状态,消息如下:

第六步、上报状态成功后,设备影子会同步更新,此时的影子文档如下:

3、 设备主动获取影子设备内容

第一步、灯泡获取设备影子中保存的灯泡最新状态,发送固定消息到topic/shadow/update/10000/lightbulb中,具体的消息如下:

第二步、当设备影子收到这条消息时,发送消息到topic/shadow/get/10000/lightbulb中,灯泡订阅该topic,获得消息,消息内容如下:

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/weixin_40204595/article/details/81542514
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2020-06-06 09:43:45
  • 阅读 ( 1441 )
  • 分类:职场

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢