【MCU IOT MQTT】回顾下MQTT在MCU中,Linux中的使用

1 MQTT介绍

1.1 MQTT

MQTT是IOT设备联网时常用的一个协议。它基于TCP/IP,又封装了一层。他胜在简单,易于理解,故而在IOT领域应用较广。

1.2 常用的库

Pyho Mqtt

MQTT有官方的库,Pyho Mqtt库。这个库移植时,需要实现基本的收发功能。以及分配必要的数组大小。接受长度等。

CJson

虽然Mqtt的订阅,发布。可以分别出消息。但是如果裸传,还是需要手写解析库。CJSON是一个常用的格式。我们也用CJSON来拼接协议。这样上位机,下位机都方便。但是有个坏处就是,CJSON会让数据变大30%左右。如果对速率有需求。(比如一些低功耗设备,希望联网时间尽可能短,还是需要慎重考虑)。

1.3 如何使用,实现

自己架设TCP/IP

在1.2中,我们介绍了两个库,如果自己已经实现了TCP/IP,那么在这个基础上,实现MQTT即可。TCP/IP的实现笔者不太熟,不介绍了

模组形式

当下的很多模组,已经自带MQTT协议栈了,可以直接进行数据传输。无需移植MQTT库。类似某移的模组。使用AT指令Publish即可。

2 MQTT分析问题

使用后,不免碰到MQTT相关的问题。有两个强大的工具,可以帮助定位问题。

MQTTX

具体的使用,不赘述了。有很多。

它胜在可以订阅很多消息,并且能够导出文件,对于长时间的追踪很有效果。

MQTT Explorer、

具体的使用,不赘述了。

它的优点是,它是一个可视化的订阅软件,对于短期内追踪问题,很有效果,每个主题都能分开。定位问题很快。

二者都支持 # 订阅全部,或者只订阅某一个消息。

3 一些容易踩坑的点

  1. MQTT有多个版本的协议。V3,V3.1,V5
    在使用时,最好和上位机同事沟通下,保证使用的是同一个版本的MQTT协议,否则容易造成无法通信。
    它本质是由于,MQTT协议中,协议头有对协议版本的描述,如果不匹配,是无法解析正确的。

  2. MQTT的QOS等级,有的自带重传。要当心接收数组越界。并且,这个如果设置不对,也可能产生某些异常。

  3. 上位机是可以屏蔽其他软件订阅的。如果 2 中介绍的软件捕获不到,让上位机同时check下,是不是屏蔽了。Debug的时候,可以适当放开订阅条件。

本文是一个MQTT使用的大框架,水平有限。具体的细分领域不赘述,有非常多优秀的文章介绍…

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值