1 mqtt 通信协议简介
1.1 概述
mqtt(message queuing telemetry transport,消息队列遥测传输协议),是一种基
于发布/订阅(publish/subscribe)模式的“轻量级”通讯协议,该协议构建于 tcp/ip 协议上,
由 ibm 在 1999 年发布。mqtt 最大优点在于,可以极少的代码和有限的带宽,为连接远
程设备提供实时可靠的消息服务。
mqtt 是轻量、简单、开放和易于实现的,同时作为一种低开销、低带宽占用的即时
通讯协议,使其在物联网、小型设备、移动应用等方面有较广泛的应用。
mqtt 具有如下特点:
(1) 轻量可靠:mqtt 的报文格式精简、紧凑,可在严重受限的硬件设备和低带宽、
高延迟的网络上实现稳定传输。
(2) 发布/订阅模式(publish/subscribe):发布/订阅模式的优点在于发布者与订阅者的
解耦,实现异步协议。即订阅者与发布者无需建立直接连接,亦无需同时在线。
(3) 为物联网而生:提供心跳机制、遗嘱消息、qos 质量等级 + 离线消息、主题和
安全管理等全面的物联网应用特性。
(4) 生态更完善:覆盖范围广,已成为众多云厂商物联网平台的标准通信协议
1.2 应用场景
mqtt 作为一种低开销,低带宽占用的即时通讯协议,可以极少的代码和带宽为联网
设备提供实时可靠的消息服务,适用于硬件资源有限的设备及带宽有限的网络环境。常
见的应用场景如下:
(1) 物联网 m2m 通信,物联网大数据采集。
(2) 移动即时消息及消息推送。
(3) 智能硬件、智能家居、智能电器。
(4) 车联网通信,电动车站桩采集。
(5) 智慧城市、远程医疗、远程教育。
(6) 电力能源、石油能源。
1.3 mosquitto 工具安装
mosquitto 是一款开源的 mqtt 消息代理(服务器)软件,提供轻量级的、支持可发
布/可订阅的的消息推送模式。我司提供的评估板文件系统已支持 mosquitto 工具,本文
mqtt_client 案例采用 mosquitto 工具演示 mqtt 通信协议的通信功能。由于上位机 ubuntu
系统作为通信对象,因此需在 ubuntu 终端执行如下命令安装 mosquitto 工具。
host# sudo apt-get install mosquitto-clients
2 mqtt_client 案例
2.1 案例说明
案例功能:使用 libmosquitto(mqtt version 3.1.1 client library)的 api 与 mqtt 代理服
务器通信。基于 mqtt 通信协议,实现发布和订阅消息功能。
程序流程图如下图所示。
2.2 案例测试
本案例使用公网 mqtt hivemq 服务器与上位机 ubuntu mosquitto 工具通信。请通过
网线将评估板千兆网口 eth0 rgmii 和上位机连接至公网,确保可正常访问互联网。
下表提供了可用的在线公共 mqtt 服务器,可根据需要自行切换。
评估板启动,将案例 bin 目录下 mqtt_client 可执行文件拷贝至评估板文件系统的任意
目录下,执行如下命令查看程序参数说明。
target#
./mqtt_client --help
2.2.1
评估板发布/上位机订阅
在上位机执行如下命令,使用 mosquitto_sub 工具订阅 mqtt 主题。
host# mosquitto_sub -h broker.hivemq.com -p 1883 -t test/data
参数解析:
-h:指定 mqtt 服务器;
-p:指定 mqtt 服务器 tcp 端口;
-t:定义 mqtt 主题,可自定义命名。
=
在评估板文件系统执行如下命令发布消息至 mqtt 服务器。
target#
./mqtt_client -h broker.hivemq.com -p 1883 -m publish -t test/data -m
'www.tronlong.com'
2.3 案例编译
将案例 src 文件夹拷贝至 ubuntu 工作目录下,请先确保已参考 linux 系统使用手册编
译过 linuxsdk,构建 t507 处理器对应的 gcc 编译器。进入 src 目录执行如下命令,使用
linuxsdk 开发包目录下的 gcc 编译器进行案例编译。编译完成后,将在当前目录下生成
可执行文件。
host# cc=/home/tronlong/t507/linuxsdk/out/t507/tlt507-evm/longan/buildroot/host/usr
/bin/aarch64-linux-gnu-gcc make
2.4 关键代码
(1) 创建 mosquitto 实例。
(2) 设置回调函数。
(3) 连接 mqtt 服务器。
(4) 发布消息。
(5) 订阅主题
3 mqtt_sinewave_pub 案例
3.1 案例说明
案例功能:使用 libmosquitto(mqtt version 3.1.1 client library)的 api 与 mqtt 代理服
务器通信。评估板生成正弦波数据,每秒发送 512 个采样点的数据至 mqtt 服务器;上
位机通过 web 页面从 mqtt 服务器接收到数据后,将会绘制波形。
程序流程图如下图所示。
3.2 案例测试
本案例使用公网 mqtt hivemq 服务器与上位机 ubuntu web 程序通信。请通过网线
将评估板千兆网口 eth0 rgmii 和上位机连接至公网,确保可正常访问互联网。
评估板启动,将案例 bin 目录下 mqtt_sinewave_pub 可执行文件拷贝至评估板文件系
统的任意目录下,执行如下命令查看程序参数说明。
target#
./mqtt_sinewave_pub --help
执行如下命令运行程序,连接 mqtt 服务器,并发送正弦波数据至 mqtt 服 务器。
target#
./mqtt_sinewave_pub -h broker.hive
mq.com -p 1883
评估板程序运行后,将案例toolsweb_mqtt_sub目录下 index.html 文件,使用上位
机浏览器打开。在弹出的 web 页面(如下图),依次输入 mqtt 服务器:broker.hivemq.com,
端口号:8000,最后点击连接,web 页面将会从 mqtt 服务器获取正弦波数据并进行波
形绘制。
备注:arm 端 mqtt 通信协议基于 tcp 协议,web 端 mqtt 通信协议基于 websocket 协
议,因此使用的端口号不同。
3.3 案例编译
将案例 src 文件夹拷贝至 ubuntu 工作目录下,请先确保已参考 linux 系统使用手册编
译过 linuxsdk,构建 t507 处理器对应的 gcc 编译器。进入 src 目录执行如下命令,使用
linuxsdk 开发包目录下的 gcc 编译器进行案例编译。编译完成后,将在当前目录下生成
可执行文件。
host# cc=/home/tronlong/t507/linuxsdk/out/t507/tlt507-evm/longan/buildroot/host/usr
/bin/aarch64-linux-gnu-gcc make
3.4 关键代码
(1) 创建 mosquitto 实例。
(2) 设置回调函数。
(3) 连接 mqtt 服务器。
(4) 发送数据。
手机的运行内存6g和8g的区别是什么
电感线圈的分类及特性
五种PCB集成电路装配办法
魅族发布真无线耳机POP2s,号称全面升级,带来高品质的声乐体验
小米6plus什么时候上市?小米6plus最新消息:小米Note2降价至冰点,为的是给小米6让路?然而小米6Plus却要发布了?
TLT507-MQTT通信协议案例
盘点当前主流显示器接口
微软将把即将推出的Windows 10X作为竞争对手来推广
华为OV三足鼎立,占据安卓手机半壁江山!占据市场份额秒杀其他一切安卓机!
视频监控技术发展或将会对企业和市场产生以下三大影响
慧灵用机械臂为中医发展插上“智慧翅膀”
基于蜂窝移动通信网络的物联网技术和应用
多项技术促进智能自动化与机器人技术相结合
通用Tensilica软件堆栈提供最佳边缘AI性能
三星和SK Hynix将于9月中止与华为的业务
东芝模拟IC业务发展战略:大力推进车载、通信等产品
TMS320VC5410的BOOT设计与实现?
德标汽车电线结构及性能介绍
荷兰研究人员研发出新的金属3D打印技术打印精度可以达到几微米尺度
物联网是本届MWCS中国电信重点展示的项目