天天看点

mqtt中clientid怎么查_mbed-os 蜂窝模组接入mqtt-broker

mqtt中clientid怎么查_mbed-os 蜂窝模组接入mqtt-broker

前段时间将mbed-os的cellular组件调试完成,花了几天时间测试基础的socket对底层的impl接口针对测试硬件板载的cdma模组进行了一些适配优化。

为了验证socket接口的稳定性准备将mqtt集成起来跑一下,先做一些准备,找了一台已经淘汰了的笔记本,刚好是安装了ubuntu系统的,这样搭建个mq-broker还是很方便的。可选的mq-broker很多,选择熟悉语言的可控性高。暂定使用mqtt官方的mosquitto,克隆代码编译之后,基本配置好用户/主题就能跑了。为了验证服务器的可用性以免嵌入式端调试不确定性,使用官方推荐的MQTT.fx工具连接服务器测试,pubish / subscribe 正常运行。关于mosquitto的配置和使用这里就不展开说明了,直接看官方的文档熟悉一下编译出来的那几个可执行文件的命令行参数就行了,还是比较简单的。

另外关于cellular是需要公网ip的,家里的电信网络是有动态公网ip的,只需绑定一个ddns域名就能测试了。这部分如果有阿里云也是没问题的,如果想用自己的内网机器用frp代理下也行的,后面计划用这种方式内网使用树莓派独立部署mosquito,可玩性高。

将mebd-os官方的mqtt库集成到原来的cellular测试工程中,这个库的底层也是ibm实现的是c库,mbed-os官方做了一层c++封装,也做了大量的测试具体的可以看该仓库下的TESTS目录。

#include 
           

这里关于cellular的物理层重连机制就没有将之前测试稳定的代码集成过来了,需要注意mbedos-cellular官方明确说了是不支持重连的,所以这部分之前有花挺多时间熟悉代码并完成了拨号断线重连机制,这里只测试mqtt的库故简单处理 iface->connect() 首次等待连接完成才进行后续操作。

mqtt中clientid怎么查_mbed-os 蜂窝模组接入mqtt-broker

mqtt-broker日志

为了测试我们添加一个和板子clientid一样的主题

A00000565D7021

,cellular板子往这个topic上发送三种类型的消息,分别是QoS0/QoS1/QoS2。再用MQTT.fx订阅这个主题,这样就可以用MQTT.fx收到板子发出的消息了。同时我们也用MQTT.fx往板子订阅的主题上发送消息,板子也可以收到这个调试软件发的消息,实现双向通讯。如果有其他的cellular板子相互订阅他们的主题就能够实现互联互通了,手里板子是有多的,无奈没有sim卡了,暂时不做测试。

mqtt中clientid怎么查_mbed-os 蜂窝模组接入mqtt-broker

mqtt.fx-subscribe消息

用MQTT.fx给板子订阅的主题发送hello消息,cellular板子能够收到消息。

mqtt中clientid怎么查_mbed-os 蜂窝模组接入mqtt-broker

mqtt.fx-publish消息

板子收到subscribe消息内容为 hello 日志如下

[
           

其他 celluar板子完整的运行日志,比较多开启了AT的debug功能,前期分析问题很重要。

[