ESP32-WROOM-32E,MQTT报错mqtt_message_receive:transport_read() error:errno=128

news/2024/11/16 10:34:41/

ESP32-WROOM-32E,MQTT使用采坑经验之transport_read() error:errno=128

配置MQTT的是 esp_mqtt_client_config_t 结构体,里面包含了MQTT的信息,可根据具体场景配置。

问题

使用MQTT建立连接后,不收发数据,每隔35秒会有如下报错:

mqtt_message_receive:transport_read() error:errno=128 mqtt_process_receive:mqtt_message_receive() returned -1

分析

百度直接搜报错内容不容易找到,还是需要找mqtt有关的内容才发现。大概操作如下:

一、设置client id:类似于IP冲突可能会导致如上报错。

二、设置保持连接:
disable_auto_reconnect = false;
结构体中这样描述:
bool disable_auto_reconnect; /*!< this mqtt client will reconnect to server (when errors/disconnect). Set disable_auto_reconnect=true to disable */

三、设置心跳间隔
keepalive = 10;
原先出现问题时观察到35秒就出现一次报错。考虑到mq要确定终端是否在线,可能有心跳来维持在线。
结构体中这样描述:
int keepalive; /*!< mqtt keepalive, default is 120 seconds */

四、设置连接协议
esp_mqtt_transport_t transport; /*!< overrides URI transport /
int out_buffer_size; /
!< size of MQTT output buffer. If not defined, both output and input buffers have the same size defined as buffer_size /
int buffer_size; /
!< size of MQTT send/receive buffer, default is 1024 (only receive buffer size if out_buffer_size defined) */
这三个是要一起写的,不然会报错。

解决

具体程序如下:

    esp_mqtt_client_config_t mqtt_cfg = {.host = "icsdn", //MQTT 地址.port = 111,    //MQTT端口.username = "77",//用户名字.password = "7777",//密码.client_id = client_id,//设置mqtt的client id.disable_auto_reconnect = false,//设置保持连接.keepalive = 10,//设置心跳间隔.transport = MQTT_TRANSPORT_OVER_TCP,//设置连接协议.out_buffer_size = 2048,//设置发送缓冲区大小.buffer_size = 2048,    //设置接收缓冲区大小};  

以上数据是随意写的。


http://www.ppmy.cn/news/892704.html

相关文章

【Intel Parallel编译器(icc icpc ifort)Linux-centos7系统安装配置】

(toc) Intel Parallel编译器(icc icpc ifort)Linux系统安装配置 本篇文章主要讲解在linux系统centos7.5/centos7.9版本中&#xff0c;Intel编译器的安装、环境导入、并行库调用以及在不同centos版本中安装时缺少32位库的解决方案等内容。 一、★Intel编译器定义 Intel Paralle…

x64保护模式_IA-32e

IA-32e 内核x64位&#xff0c;内核是64位的&#xff0c;用户可以是64也可以是32位。但是内核一定是64位的。 强制平坦段&#xff0c;段基址必须是0&#xff0c;不支持TSS段切换了。把32位硬件不用的给删了。 MSR寄存器 这是x64独有的。 MSR寄存器c0000080如果位81&#xf…

【操作系统】X86架构的64位操作系统探索

背景 8086 系列芯片的成功带领英特尔 IA-32 指令集架构占据芯片市场的主导地位。20 世纪末&#xff0c;英特尔与惠普一同针对 64 位芯片展开研究&#xff0c;并推出 IA-64 指令集架构。然而&#xff0c;该架构与已经流行的 IA-32 架构不兼容&#xff0c;这导致它的发展受到阻碍…

启明云端分享|乐鑫ESP32-WROOM-32E和ESP32-WROOM-32UE两款模组的区别

提示&#xff1a;ESP32-WROOM-32E 和 ESP32-WROOM-32UE 是两款通用型 Wi-FiBTBLE MCU 模组&#xff0c;功能强大&#xff0c;用途广 泛&#xff0c;可以用于低功耗传感器网络和要求极高的任务&#xff0c;例如语音编码、音频流和 MP3 解码等。 这两款模组在应用中&#xff0c;有…

import错误:undefined symbol: _ZN6caffe26detail37_typeMetaDataInstance_preallocated_32E

在使用DCN_V2时遇到了这个错误&#xff0c; 发现还是这个包没装好得原因&#xff0c;所以解决办法就是&#xff0c;cd进入这个包的文件夹 然后依次操作这两句 cd /root/data/snake-master/lib/csrc/extreme_utils rm -r build python setup.py develop 问题解决&#xff01;…

情感分析之情绪原因识别

一. 情绪原因识别概述 1.1 什么是情绪原因识别 大部分针对情绪分析的研究主要集中在情绪识别和情绪分类方面&#xff0c;只关注情绪的类别&#xff0c;属于比较浅层的情绪分析任务。情绪原因识别是近年来出现的深层次文本分析与理解的研究&#xff0c;它能针对文本中出现的情…

ESP32学习笔记(一) 芯片型号介绍

ESP32学习笔记(一) 芯片型号介绍 目录: ESP32学习笔记(一) 芯片型号介绍 ESP32学习笔记(二) 开发环境搭建 VSCodeplatformio ESP32学习笔记(三) 硬件资源介绍 ESP32学习笔记(四) 串口通信 ESP32学习笔记(五) 外部中断 ESP32学习笔记(六) 定时器 ESP32学习笔记(七) 复位和时钟 …

Arduino-ESP32-WROOM-32E—PulseSensor传感器测心率

1、下载ESP32驱动 2、右击以管理员身份运行 3、运行完成后&#xff0c;即可安装成功。打开Adruino&#xff0c;选中如图开发板 4、双击打开.ino文件 5、 选择合适的开发板型号和端口 6、 安装库文件ESP32time、U8g2、PulseSensor Playground 7、修改为自己的传感器S口连接的引脚…