ESP8266无法通过AWS IoT核心版通过MQTT接收消息

问题描述

我每PubSubClient使用this example连接到AWS IoT。具体来说,我正在尝试使用AWS IoT Fleet Provisioning,它涉及订阅和发布一些特殊的$aws/主题

连接正确建立,并且CloudWatch日志显示成功的ConnectSubscribePublish-InPublish-Out事件。但是,每当MCU收到一条消息时,它似乎就会断开连接。有什么作用?

解决方法

调试PubSubClient显示底层WiFiClientSecure实例由于以下错误而失去连接:

BR_ERR_TOO_LARGE: Incoming record is too large to be processed,or buffer is too small for the handshake message to send.

我收到的消息约为4 KB,因此我必须添加以下内容:

  wifi_ = new WiFiClientSecure();
  wifi_->setBufferSizes(4096,512);

从那里开始,PubSubClient有了自己的缓冲区,我也不得不提高它:

  mqtt_ = new PubSubClient(*wifi_);
  mqtt_->setBufferSize(4096);

进行这些更改使我能够成功地从AWS IoT接收这些消息。