分享一些资料: STM32与MQTT协议

2019-12-10 18:07发布

MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)是IBM开发的一个即时通讯协议,有可能成为物联网的重要组成部分。该协议支持所有平台,几乎可以把所有联网物品和外部连接起来,被用来当做传感器和致动器(比如通过Twitter让房屋联网)的通信协议。

MQTT协议是为大量计算能力有限,且工作在低带宽、不可靠的网络的远程传感器和控制设备通讯而设计的协议,它具有以下主要的几项特性:
1、使用发布/订阅消息模式,提供一对多的消息发布,解除应用程序耦合;
2、对负载内容屏蔽的消息传输;
3、使用 TCP/IP 提供网络连接;
4、有三种消息发布服务质量:
        “至多一次”,消息发布完全依赖底层 TCP/IP 网络。会发生消息丢失或重复。这一级别可用于如下情况,环境传感器数据,丢失一次读记录无所谓,因为不久后还会有第二次发送。
        “至少一次”,确保消息到达,但消息重复可能会发生。
        “只有一次”,确保消息到达一次。这一级别可用于如下情况,在计费系统中,消息重复或丢失会导致不正确的结果。
5、小型传输,开销很小(固定长度的头部是 2 字节),协议交换最小化,以降低网络流量;
6、使用 Last Will 和 Testament 特性通知有关各方客户端异常中断的机制.

然并卵...
分享一些相关资料...

服务端基于 ActvieMQ 和 Mosquittor 消息中间件,ActvieMQ Java 运行环境,消耗资源比较大, Mosquittor  消耗资源少很多,可以运行在树莓派和Beagleboard Black的debian系统上。
ActvieMQ:http://activemq.apache.org/
Mosquittor:http://mosquitto.org/

2.jpg (230.63 KB, 下载次数: 2) 下载附件 2015-7-17 20:27 上传

MQTT_3.1protocol_Specific中文版.pdf (1.95 MB, 下载次数: 1401) 2015-7-17 20:21 上传 点击文件名下载附件
STM32F103_MQTT_USART2.rar (121.88 KB, 下载次数: 1962) 2015-7-17 20:14 上传 点击文件名下载附件
mqtt-spy.rar (6.21 MB, 下载次数: 640) 2015-7-17 20:20 上传 点击文件名下载附件
org.eclipse.paho.mqtt.embedded-c-1.0.0.zip (143.16 KB, 下载次数: 880) 2015-7-17 20:21 上传 点击文件名下载附件
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
99条回答
lindabell
1楼-- · 2019-12-16 11:25
xwiron 发表于 2015-8-2 16:46
每个MQTT命令消息的消息头都包含一个固定的报头。有些消息需要一个可变的报头和一个payload。

我表达的不清楚
我想说的固定帧头是指在整个协议里具有唯一性的,用于判断协议的开始。
MQTT这个的这个固定报头,只是字节数固定而已,不能作为协议的开始的标记
3050311118
2楼-- · 2019-12-16 13:45
楼主你那个是基于什么编译环境啊 ,MDK打不开
Shaopus
3楼-- · 2019-12-16 16:30
3050311118 发表于 2015-8-2 22:11
楼主你那个是基于什么编译环境啊 ,MDK打不开

你MDK的版本太低了。
fhqiplj
4楼-- · 2019-12-16 19:07
麻烦问一下,相对于coap协议来说mqtt有什么优势?

或者说对于LWM2M,MQTT有什么优势?
xwiron
5楼-- · 2019-12-16 19:14
 精彩回答 2  元偷偷看……
fhqiplj
6楼-- · 2019-12-16 22:04
xwiron 发表于 2015-8-3 11:54
对我来说,因为ACTVIEMQ和MOSQUITTO支持MQTT,这些消息中间件软件已经很完善了,基于这两个软件就可以做 ...

在以前的应用中,觉得MQTT需要保持连接,而且QOS=1的方式对于MCU来说可能比较麻烦。因为对于QOS=1需要检测服务器端的返回报文,这样就需要维护一个发送队列,还要做超时处理。
lwm2m是将服务器端放到了设备上,控制端比如手机只是在需要的时候去查询设备的状态,不需要维持链路(基于IPv6的环境),而且Coap和Rest可以直接语义互转,对于上层开发来说会更容易,还有一点mbed已经支持了coap,理论上说以后arm会将coap作为内置库来用。而且om2m等国际大组织在推进和演化coap/lwm2m,个人觉得的coap相对来说在物联网层面上优于mqtt。

一周热门 更多>