0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于pahomqtt 1.1.0设计的一套MQTT客户端程序

RTThread物联网操作系统 来源:RTThread物联网操作系统 2020-06-28 09:30 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

背景介绍

目前 RT-Thread 的 paho-mqtt 软件包,是基于 pahomqtt 1.1.0 设计的一套 MQTT 客户端程序。从实际使用中,和论坛反馈中出现如下问题:

只支持 Qos=1,不支持 Qos=0 和 Qos=2 的情况;

数据发送可能出现粘包情况;

功能配置较少,且资源占用较高;

针对上述 mqtt 软件包实际使用问题,RT-Thread 推出 mqtt2.0 版本软件包,即 uMQTT 软件包,符合 MQTT 3.1.1 协议规范,并完善之前存在问题。

uMQTT 软件包介绍

框架图

umqtt_框架图

功能特点

保活机制

uMQTT 具有心跳断连,短时间内重试心跳连接功能

避免短时间内大量订阅发布消息与心跳请求冲突

重连机制

多种重连机制,为您网络连接的稳定性保驾护航。

连接过程中,连接失败进行多次重连尝试

保活机制失败后,进行多次重连尝试

数据接收失败后,进行多次重连尝试

多客户端

同时兼容多个客户端运行工作,便于同个设备连接多个服务器

同步异步

支持用户在复杂情况下订阅发布的需求。

支持同步订阅发送功能,保证开发请求数据同步

异步订阅发送,资源开销小,系统任务运行速率更高。

QOS0/1/2

完美支持 QOS 0/1/2 的订阅发布请求,让用户不用再关心信息的重发机制,直接交给软件包处理

订阅发布

支持基本的订阅发布功能,实现 mqtt 协议规定功能

多功能参数可配置可裁剪

重连时间间隔、重连次数、心跳周期、最大订阅数量、保活机制、重连机制等等参数功能可裁剪可配置,满足开发者再复杂、简单等各种开发环境下的使用需求

资源占用小

所有功能开启,占用空间足够小,适用低资源的 MCU

接口简单,使用方便

每个功能都有独立的接口,接口简单但功能完善,让开发者用最少的接口实现各类需求。

各类软件包对比

uMQTT 软件包获取

menuconfig 配置获取软件包和示例代码

打开 RT-Thread 提供的 ENV 工具,使用menuconfig配置软件包,
启用 uMQTT 软件包,并配置使能测试例程 (Enable MQTT example), 如下所示:

1RT-Threadonlinepackages 2IoT-internetofthings---> 3[*]umqtt:Alightweight,powerful,customizable,easy-to-useandembeddablemqttclientforRT-Thread.---> 4[*]EnableMQTTexample#开启UMQTT例程

使用 pkgs --update 命令下载软件包;

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 软件包
    +关注

    关注

    0

    文章

    113

    浏览量

    12088
  • RT-Thread
    +关注

    关注

    32

    文章

    1540

    浏览量

    44280

原文标题:使用RT-Thread uMQTT软件包,掌握 MQTT 开发新技能

文章出处:【微信号:RTThread,微信公众号:RTThread物联网操作系统】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    agile_ftp传输文件时客户端报错误怎么解决?

    ]客户端使用的filezilla [size=21.3333px] [size=21.3333px]现象: [size=21.3333px]filezilla客户端可以正常上传文件,但传输完毕时客户端会报
    发表于 11-05 10:49

    libmodbus库问题:TCP模式下客户端超时断开后无法再次重连怎么解决?

    进行次收发后断开连接,再次启动短连接进行通讯时被提示:”服务器拒绝“ 综上2种情况,libmodbus该如何修改才能让支持让断开的客户端再次连接? =
    发表于 10-14 08:17

    SOLIDWORKS PDM Professional安装部署指南:从服务器到客户端的详细步骤

    份详尽的SOLIDWORKS PDM Professional安装指南,面向IT管理员,涵盖从SQL Server配置、服务器安装到客户端设置的全过程,确保您高效、正确地完成PDM系统部署
    的头像 发表于 09-11 17:37 1001次阅读

    【HZ-RK3568开发板免费体验】MQTT服务搭建与客户端移植

    图中可以看出消息的订阅与发布,发小消息要带上主题和消息,MQTT客户端既可以是消息的发布者也可以是消息的订阅者。 MQTT协议的连接和会话 Figure ‑ MQTT协议的连接和会
    发表于 08-30 21:05

    Python modbus-tk如何获得客户端信息?

    Python modbus-tk如何获得客户端信息
    发表于 08-07 06:01

    是否可以将客户端控件与CYW920706WCDEVAL起使用?

    是否可以将客户端控件与CYW920706WCDEVAL起使用? 我想用它来发现蓝牙 BR/EDR,然后将其与其他设备配对。 有客户端控制的下载链接或文档吗? 另外,你有 AIROC Connect 蓝牙应用
    发表于 07-04 07:50

    CYBT-413061上的RFCOMM_Serial_Port SPP演示,AIROC客户端控制应用程序不起作用,什么原因引起的?

    正常,但当启动客户端控制应用程序并打开串行端口时,却什么也没发生--所有控件都是灰色的。 然后,我还按照说明中的建议从 Windows 10 PC 上运行 BTSpy 并进行连接 - 客户端控制应用
    发表于 07-02 06:05

    Modbus TCP连接多个客户端解决方法-深圳市振鑫通信科技

    ZP-MBS008多主站模块是实现Modbus-TCP连接多个客户端或者服务器通讯设备
    的头像 发表于 06-25 11:07 1284次阅读
    Modbus TCP连接多个<b class='flag-5'>客户端</b>解决方法-深圳市振鑫通信科技

    精通 MQTT:消息队列遥测传输指南!

    ,解释了其关键组件,并演示了如何使用Python实现MQTT客户端MQTT代理MQTT系统的核心是代理,它负责管理客户端之间的消息交换。
    的头像 发表于 06-16 16:56 828次阅读
    精通 <b class='flag-5'>MQTT</b>:消息队列遥测传输指南!

    如何在MQTT中发布和订阅实体

    MQTT中发布和订阅实体(主题)是MQTT通信的核心操作,下面将详细介绍其原理、步骤以及示例代码,帮助你全面理解这过程。 MQTT
    的头像 发表于 05-20 17:21 1015次阅读

    MKW45B41Z客户端无法从服务器获取服务是为什么?

    。MKW45B41Z (自定义板) 充当中央设备客户端角色。MKW45 客户端扫描外围设备(NRF 连接)设备并连接到外围设备(NRF 连接)设备。连接 MKW45(自定义板卡)后,客户端无法从服务器
    发表于 03-28 07:40

    如何构建MCP客户端

    Anthropic开源了一套MCP协议,它为连接AI系统与数据源提供了个通用的、开放的标准,用单协议取代了碎片化的集成方式。本文教你从零打造个MCP
    的头像 发表于 03-20 09:32 2249次阅读
    如何构建MCP<b class='flag-5'>客户端</b>

    《DNESP32S3使用指南-IDF版_V1.6》第五十五章 基于MQTT协议连接阿里云服务器

    实现的,所以我们只需要在单片机实现 TCP 客户端程序并使用 lwIP提供的MQTT文件来连接阿里云服务器。本章分为如下几个部分:55.1 MQT
    发表于 03-18 09:22

    百问MQTT协议分析 - 报文分析①

    服务的每个客户端都有唯客户端标识符(ClientId) 。客户端和服务都必须使用 Cli
    发表于 12-13 09:41

    百问MQTT协议分析 - MQTT简述及协议报文格式组成

    16.1 mqtt协议介绍 16.1.1 概述 ​MQTT客户端服务架构的发布/订阅模式的消息传输协议。它的设计思想是轻巧、开放、简
    发表于 12-13 09:29