mqtt配置说明mqtt_topic_len_max
配置客户端支持最大的主题名长度,主题是支持通配符的,如果主题太长则会被截断,默认值为64。
#define mqtt_topic_len_max 64mqtt_ack_handler_num_max
配置mqtt等待应答列表的最大记录个数,对于qos1、qos2服务质量有要求的可以将其设置大一点,当然也必须资源跟得上,它主要是保证qos1、qos2的mqtt报文能准确到达服务器,默认值为64。
#define mqtt_ack_handler_num_max 64mqtt_default_buf_size
默认的读写数据缓冲区的大小,根据要收发数据量修改即可,默认值为1024。
#define mqtt_default_buf_size 1024mqtt_default_cmd_timeout
默认的命令超时,它主要是用于socket读写超时(还包括等待响应的时间、重连等待时间等),默认值为5000。
#define mqtt_default_cmd_timeout 5000mqtt_max_cmd_timeout
设置最大的命令超时时间,默认值是20000。
#define mqtt_max_cmd_timeout 20000mqtt_min_cmd_timeout
设置最小的命令超时时间,默认值是1000。
#define mqtt_min_cmd_timeout 1000mqtt_keep_alive_interval
设置默认的保活时间,它主要是保证mqtt客户端与服务器的保持活性连接,单位为 秒 ,默认值为50。比如mqtt客户端与服务器在指定时间间隔内没有发送数据,有没有接收到数据,此时mqtt客户端会发送一个心跳包,确认一下这个连接是否存在,如果收到服务器的应答,那么说明这个连接还是存在的,可以随时收发数据,而如果不存在了,就尝试重连或者清除会话。
#define mqtt_keep_alive_interval 50 // unit: secondmqtt_version
选择mqtt协议的版本,默认为4,表示使用mqtt 3.1.1版本,而3则表示使用mqtt 3.1版本。
#define mqtt_version 4 // 4 is mqtt 3.1.1mqtt_reconnect_default_duration
设置默认的重连时间间隔,当发生掉线时,会以这个时间间隔尝试重连,默认值为1000。
#define mqtt_reconnect_default_duration 1000mqtt_thread_stack_size
mqtt内部维护一个线程,需要设置默认的线程属性信息,mqtt_thread_stack_size表示线程栈的大小,默认值是2048。在linux环境下可以是不需要理会这些参数的,而在rtos平台则需要配置,如果不使用mbedtls,线程栈2048字节已足够,而使用mbedtls加密后,需要配置4096字节以上
#define mqtt_thread_stack_size 2048 // 线程栈mqtt_thread_prio
设置线程优先级,默认为5。
#define mqtt_thread_prio 5 // 线程优先级mqtt_thread_tick
设置线程优时间片,默认为50。
#define mqtt_thread_tick 50 // 线程时间片mqtt_network_type_no_tls
设置是否需要支持tls加密传输,如果定义了该宏,则表示不支持tls加密传输,否则默认将支持tls加密传输。
#define mqtt_network_type_no_tlssalof相关的配置salof 全称是:synchronous asynchronous log output framework(同步异步日志输出框架),它是一个同步异步日志输出框架,可以在空闲时候输出对应的日志信息,并且该库与mqttclient无缝衔接。
log_level
配置对应的日志输出级别,它支持以下4种级别:err_level、warn_level、info_level、debug_level。
#define base_level (0) #define err_level (base_level + 1) /* 日志输出级别:错误级别(高优先级) */ #define warn_level (err_level + 1) /* 日志输出级别:警告级别(中优先级) */ #define info_level (warn_level + 1) /* 日志输出级别:信息级别(低优先级) */ #define debug_level (info_level + 1) /* 日志输出级别:调试级别(更低优先级) */#define log_level warn_level /* 日志输出级别 */use_salof
如果该宏大于0,则表示使用salof指定的后端作为日志输出,反之则使用printf作为日志输出接口。
#define use_salof (1u)salof_os
设置salof日志库的操作系统,有以下选项:use_linux、use_tencentos、use_freertos、use_rtt。
#define salof_os use_linuxuse_idle_hook
如果该宏大于0,则表示在操作系统中的空闲钩子函数中输出日志,反之则通过线程异步处理或者同步处理。
#define use_idle_hook (0u)log_color
如果该宏大于0,则表示输出的日志是带有颜色的(需要终端的支持),反之则没有颜色。
#define log_color (1u)log_ts
如果该宏大于0,则表示输出的日志是带有时间戳的,反之则没有时间戳。
#define log_ts (0u)log_tar
如果该宏大于0,则表示输出的日志是带有标签的(任务名字),反之则没有标签。
#define log_tar (0u)salof_buff_size
设置日志库salof输出库的buf缓冲区大小,即最大一次性能输出多少个字节。
#define salof_buff_size (512u)salof_fifo_size
设置日志库salof的fifo缓冲区大小,即最能缓存多少个字节的日志数据。
#define salof_fifo_size (1024*4u)salof_task_stack_size
如果使用了空闲线程输出日志,则配置salof线程栈的大小。
#define salof_task_stack_size (2048u)salof_task_tick
如果使用了空闲线程输出日志,则配置salof线程栈的时间片大小。
#define salof_task_tick (50u)使用mqttclient裁剪配置工具我们可以通过配置很方便地裁剪我们需要的功能,设置上述mqtt客户端的默认参数,完全不需要手动修改代码,直接使用工具裁剪配置即可。
打开在线mqttclient裁剪配置工具:https://jiejietop.gitee.io/mqtt/mqtt-config.html
它支持裁剪配置相关的头文件,配置客户端默认的一些参数:
mqtt-config-tool01
还支持配置salof同步异步日志相关的信息,以保证日志能正常运作,配置完成后生成对应的代码,然后覆盖掉原本的mqtt客户端配置即可,如果不知道如何配置,那就导入默认的配置即可。
mqtt-config-tool02
如果是初次接触,看不懂上面配置的信息,没关系,我很贴心地准备了配置的宏定义及其描述信息,保证你能看得懂的。
mqtt-config-tool03
脉冲电机速度和什么有关系
AMD EPYC 9004系列正式发布:升级支持DDR5内存,最高频率4800MHz
电流互感器有哪些常见故障
光纤的种类与特性
台积电正评估在日本设立材料研发中心的可能
MQTT在线配置裁剪工具
光耦AT817的作用
魅族两款5G新机获得3C认证
Dialog最新完整的“墙到电池”充电芯片组解决方案
BYCOO电动牙刷清洁无死角,口腔敏感人群的最爱
详解通用运动控制的设备集成方案
PCB热管理与填铜过孔
基于RTDS的超高压线路保护装置的试验研究
苹果再一次“改变”世界,iOS 6地图各种坑爹图欣赏
区块链在数字医疗的落地应用
基于51单片机的带时间显示的红绿灯设计
5G技术重新定义汽车工业 车联网迎更大发展契机
移动硬盘
XILINX推出ISE Design Suite 13.2最新版
我国将建设首个「人工智能星座」