I'm trying to write code involving MQTT messages to operate an ESP8266 relay ( a Sonoff device ), using PubSub
library.
For some, unknown for me, reason - messages larger than 99 chars are not sent. It this a known limitation ? can it be changed ?
void pub_msg(char *inmsg){
char tmpmsg[255];
// sprintf(tmpmsg,"[Cl:oc:k] [%s] %s",deviceTopic, inmsg); ---> wish to add a time stamp
sprintf(tmpmsg,"[][%s] %s",deviceTopic, inmsg); ---> using this line just to find that 99 chars sent OK
Serial.print("published MSG:");
Serial.println(tmpmsg);
Serial.print("Total chars:");
Serial.println(strlen(tmpmsg));
client.publish(msgTopic, tmpmsg);
}
1 Answer 1
The maximum MQTT packet size in PubSubClient is 128 bytes. After all the MQTT header information that leaves only 99 bytes for a message.
You can change it by editing the PubSubClient.h
file:
#ifndef MQTT_MAX_PACKET_SIZE
#define MQTT_MAX_PACKET_SIZE 128
#endif
As it says in the PubSubClient README.md:
- The maximum message size, including header, is 128 bytes by default. This is configurable via
MQTT_MAX_PACKET_SIZE
inPubSubClient.h
.
-
Can you please refer to its location ?guyd– guyd2018年09月16日 18:59:05 +00:00Commented Sep 16, 2018 at 18:59
-
The location of the file, or the location within the file?Majenko– Majenko2018年09月16日 18:59:40 +00:00Commented Sep 16, 2018 at 18:59
-
-
It's wherever you installed it to.Majenko– Majenko2018年09月16日 19:03:28 +00:00Commented Sep 16, 2018 at 19:03
-
Is it part of
pubsub
library ?guyd– guyd2018年09月16日 19:04:03 +00:00Commented Sep 16, 2018 at 19:04