万物互联IoT-001 MQTT基本示例

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)设计可视化结果

(支持自动刷新)

(全文结束,如果觉得不错请赞赏哦亲)

笔者简介:

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180627G120W700?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券