MQTT(Message Queuing Telemetry Transport Protocol)的全称是消息队列遥感传输协议的缩写,是一种基于轻量级代理的发布/订阅模式的消息传输协议,运行在TCP协议栈之上,为其提供有序、可靠、双向连接的网络连接保证。
发布/订阅的关系可以简单理解为:我订了一份人民日报,以后每一期的人民日报我都能读到,但是我没订中国日报,虽然中国日报在不断发行,但是我永远也读不到中国日报。你没订人民日报,你也永远读不到人民日报。假如有一天人民日报不再发行,虽然我订了人民日报,我也没法继续读到人民日报。(好像成了绕口令~~)。人民日报和读者的关系替换成智能设备和监控工具就行了。
MQTT的相关概念:
endpoint(实例)物接入IoT Hub的服务实例,每一个实例代表一个完整的物接入服务。
principal(身份)principal即身份,是一个抽象概念,表示连接设备(thing)的身份,基于身份可以对设备进行权限管理。每个设备thing可以绑定一个身份principal,每个身份principal拥有一个策略policy。
policy(策略)策略,表示每个身份对于对应设备所具备的权限,可以为身份principal设置对应的策略policy,一个principal对应一个policy。
topic(主题)每一个策略policy都需要指定一个主题topic,在进行使用物接入服务之前,需要先为我们即将开展的订阅发布信息创建一个主题名称,该主题应用于MQTT客户端。
找了几张图以方便理解:
请注意:以上介绍纯粹是为了凑字数,关键内容在后面
以下以百度云物接入和物管理为例了解如何在云平台上监控设备。
物接入的目的是建立设备和云的关系,具体的数据传输和设备监控需要自己用SDK实现。
物管理的目的更进一步,虽然数据仍然需要自己传输,但是云平台提供了模型、影子、参数的管理方式,还提供了时序数据库。
物接入(IoT Hub)可以免费使用100万条/月。只需要创建实例,会自动生成TCP、SSL、WSS三种连接方式,接下来就是订阅、发布、数据传输了。
先订阅
然后发布一条数据试试
回到订阅,可以看到已经接收到了数据
其中的QoS标志位代表含义:
QoS=0,协议对此等级应用信息不要求回应确认,也没有重发机制,这类信息可能会发生消息丢失或重复,取决于TCP/IP提供的尽最大努力交互的数据包服务。
最少一次(At least once delivery):QoS=1,确保信息到达,但消息重复可能发生,发送者如果在指定时间内没有收到PUBACK控制报文,应用信息会被重新发送。
仅仅一次(Exactlyonce delivery):QoS=2,最高级别的服务质量,消息丢失和重复都是不可接受的。
在云平台上可以看到订阅、发布信息量
信息是默认不存储的。
物管理(IoT Device)功能更丰富,比如我要监控环境的温度、湿度、静电,可以通过以下步骤实现。
1.建立物模型,设置属性
2.建立物影子
其中的数据存储需要开通时序数据库TSDB(2元/月)
3.订阅
4.以JSON格式发布数据
reported为可选字段,代表物影子中设备上报的最新状态。
desired为可选字段,代表控制端期望设备变换到的目标状态。
“profileVersion”为可选字段,当未指定profileVersion时,物管理接收设备影子更新请求后,会将profileVersion自动加1;若指定profileVersion,物管理会检查请求中的profileVersion是否大于当前的profileVersion。只有在大于的情况,物管理才会接受设备端的请求,更新设备影子,并将profileVersion更新到相应的版本。
5.在云平台上查看已接收到的订阅消息
其中的数据来源于发布者,已经更新。
6.分析时序数据
可以在已经开通的TSDB上查看图表或导出数据
7.更进一步的可以使用物可视(IoT Visualization)设计可视化结果
(支持自动刷新)
(全文结束,如果觉得不错请赞赏哦亲)
笔者简介:
领取专属 10元无门槛券
私享最新 技术干货