MQTT配置說明
-
MQTT_TOPIC_LEN_MAX
配置客戶端支持最大的主題名長度,主題是支持通配符的,如果主題太長則會被截斷,默認值為64。
#define MQTT_TOPIC_LEN_MAX 64
-
MQTT_ACK_HANDLER_NUM_MAX
配置mqtt等待應答列表的最大記錄個數,對于qos1、qos2服務質量有要求的可以將其設置大一點,當然也必須資源跟得上,它主要是保證qos1、qos2的mqtt報文能準確到達服務器,默認值為64。
#define MQTT_ACK_HANDLER_NUM_MAX 64
-
MQTT_DEFAULT_BUF_SIZE
默認的讀寫數據緩沖區的大小,根據要收發數據量修改即可,默認值為1024。
#define MQTT_DEFAULT_BUF_SIZE 1024
-
MQTT_DEFAULT_CMD_TIMEOUT
默認的命令超時,它主要是用于socket讀寫超時(還包括等待響應的時間、重連等待時間等),默認值為5000。
#define MQTT_DEFAULT_CMD_TIMEOUT 5000
-
MQTT_MAX_CMD_TIMEOUT
設置最大的命令超時時間,默認值是20000。
#define MQTT_MAX_CMD_TIMEOUT 20000
-
MQTT_MIN_CMD_TIMEOUT
設置最小的命令超時時間,默認值是1000。
#define MQTT_MIN_CMD_TIMEOUT 1000
-
MQTT_KEEP_ALIVE_INTERVAL
設置默認的保活時間,它主要是保證MQTT客戶端與服務器的保持活性連接,單位為 秒 ,默認值為50。比如MQTT客戶端與服務器在指定時間間隔內沒有發送數據,有沒有接收到數據,此時MQTT客戶端會發送一個心跳包,確認一下這個連接是否存在,如果收到服務器的應答,那么說明這個連接還是存在的,可以隨時收發數據,而如果不存在了,就嘗試重連或者清除會話。
#define MQTT_KEEP_ALIVE_INTERVAL 50 // unit: second
-
MQTT_VERSION
選擇MQTT協議的版本,默認為4,表示使用MQTT 3.1.1版本,而3則表示使用MQTT 3.1版本。
#define MQTT_VERSION 4 // 4 is mqtt 3.1.1
-
MQTT_RECONNECT_DEFAULT_DURATION
設置默認的重連時間間隔,當發生掉線時,會以這個時間間隔嘗試重連,默認值為1000。
#define MQTT_RECONNECT_DEFAULT_DURATION 1000
-
MQTT_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_TLS
salof相關的配置
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_LINUX
-
USE_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
-
客戶端
+關注
關注
1文章
290瀏覽量
16726 -
配置
+關注
關注
1文章
189瀏覽量
18418 -
MQTT
+關注
關注
5文章
653瀏覽量
22588
發布評論請先 登錄
相關推薦
評論