PubSubClient — MQTT_MAX_PACKET_SIZE Как рассчитывается

Я использую ESP32 и хочу исключить возможную ошибку MQTT. В PubSubClient для MQTT_MAX_PACKET_SIZE установлено значение 256. Является ли 256 размером только для сообщения? если нет, то что остается только для сообщений?

, 👍1


1 ответ


Лучший ответ:

3

Это максимальный размер всего пакета. В publish() эта проверка выполняется:

if (MQTT_MAX_PACKET_SIZE < MQTT_MAX_HEADER_SIZE + 2+strlen(topic) + plength) {

Таким образом, максимальная длина полезной нагрузки сообщения будет

MQTT_MAX_PACKET_SIZE - MQTT_MAX_HEADER_SIZE - 2 - strlen(topic)

MQTT_MAX_HEADER_SIZE определяется как 5, поэтому, если у вас есть, например, тема из 20 символов, у вас останется 256 - 5 - 2 - 20 = 229 байтов для ваша полезная нагрузка.

,