背景一:
本次海外设备开发,物联网设备和平台之间切换使用新的物模型协议对接,该格式基于MQTT实现,所以需要连接MQTT和物模型基本概念和原理。(缺一张实际应用框架图)
背景二:
车路协同设备和平台之间通过MQTT协议对接,理论和实际代码结合,输出一份资料记录一下,做个基础普及。
带着问题来学习
MQTT(消息队列遥测传输) 是ISO 标准(ISO/IEC PRF 20922)下基于发布/订阅范式的消息协议。它工作在 TCP/IP协议族上,是为硬件性能低下的远程设备以及网络状况糟糕的情况下而设计的发布/订阅型消息协议,为此,它需要一个消息中间件 。
MQTT是一个基于客户端-服务器的消息发布/订阅传输协议。
MQTT 入门介绍
https://www.runoob.com/w3cnote/mqtt-intro.html
https://blog.csdn.net/qq_28877125/article/details/78325003
在MQTT通讯过程中,有三种身份,分别是发布者(publisher)、代理(broker)、和订阅者(subscriber)
MQTT标准协议
MQTT V5.0基于早期的v3.1.1标准,它具有重要的更新,同时最大限度地减少与现有版本的不兼容性。
关键节点:
参考资料
ISO:国际标准化组织、非政府组织
IEC:国际电工委员会
IBM:国际商业机器公司或万国商业机器公司
OASIS:结构化信息标准促进组织
MQTT 3.1.1 协议中文版
MQTT 5.0 协议中文版
软件、资料
目标:掌握基本概念、原理、场景使用、如何开发。
嵌入式设备一般是作为订阅者或发布者存在的,也就是TCP Client。
MQTT是标准化的协议,网上有很多封装好的开源库,只需交叉编译移植到设备中,应用调用开源库API即可。
开源库选择:paho.mqtt.c
Linux下载安装(交叉编译根据README自行配置、这里仅贴一个示例)
git clone https://github.com/eclipse/paho.mqtt.c.git
cd paho.mqtt.c
make
sudo make install
嵌入式设备MQTT开发,若使用paho.mqtt.c开源库,总会涉及到部分平台要使用TLS证书认证,具体库代码如何配置见:使用paho_mqtt_c库实现mqtt的ssl加密通讯
关注点:
实际开发过程中,设备端和平台端分别是由不同部门、甚至不同公司开发的,所以开发过程中的自测需要自己搭建测试环境或依托公司已有的测试环境,MQTT测试环境主要就是搭建代理服务器。
MQTT测试环境
设备调试内容主要有:
补充资料:
paho.mqtt.c API接口描述
https://blog.csdn.net/guozhongwei1/article/details/85207169
Paho -物联网 MQTT C Cient的实现和详解
https://www.cnblogs.com/homejim/p/8196763.html
其他MQTT库:
https://github.com/eclipse/paho.mqtt.embedded-c
设备和平台若使用MQTT协议对接,当对方提供协议时、需关注如下信息:
MQTT版本:代理可兼容3.1.1和5.0,但若是数据协议使用MQTT 5.0新特性时或代理仅支持5.0时,设备程序需要改代码。
不同登录认证方式,设计MQTT代理的不同配置,可以在不同端口设置不同登录认证方式。
问题:
1.同一端口MQTT是否可以同时支持匿名登录与用户名和密码认证?
可以直接使用网络上的一些代理服务器+Client工具来进行设备功能调测。
这里只做基本介绍和使用步骤,详细操作看这里:mosquitto 测试MQTT TLS单向认证和双向认证
mosquitto 介绍
Eclipse mosquito是一个开源(EPL/EDL许可的)消息代理,它实现了MQTT协议版本5.0、3.1.1和3.1。mosquito是轻量级的,适用于所有设备,从低功耗的单板计算机到完整的服务器。
mosquitto 使用步骤
注意:
1.配置TLS证书时,证书文件可以在借助linux下openssl生成,证书文件可以跨平台使用。
2.可以通过MQTT.fx来进行验证服务器配置是否生效。(切换配置时、最好更换端口)
MQTT协议-MQTT协议简介及协议原理
https://blog.csdn.net/jiesa/article/details/50635222
阿里云物联网平台:Paho-MQTT C接入示例
https://www.alibabacloud.com/help/zh/doc-detail/146611.htm#title-0a4-2nq-kat
Paho 项目介绍
http://wiki.eclipse.org/Paho
MQTT协议的优缺点
https://blog.csdn.net/anxianfeng55555/article/details/80908958
https://www.ebyte.com/new-view-info.aspx?id=1178