Arduino Uno — сообщение MQTT с использованием PUBSUB на ESP8266
Я пытаюсь написать код, включающий сообщения MQTT для управления реле ESP8266 (устройством Sonoff), используя библиотеку PubSub
.
По какой-то неизвестной мне причине - не отправляются сообщения размером более 99 символов. Это известное ограничение? можно ли это изменить?
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);
}
@Guy . D, 👍0
1 ответ
Лучший ответ:
▲ 2
Максимальный размер пакета MQTT в PubSubClient составляет 128 байт. Ведь вся информация заголовка MQTT оставляет для сообщения только 99 байт.
Вы можете изменить его, отредактировав файл PubSubClient.h
:
#ifndef MQTT_MAX_PACKET_SIZE
#define MQTT_MAX_PACKET_SIZE 128
#endif
Как сказано в PubSubClient README.md:
- Максимальный размер сообщения, включая заголовок, по умолчанию составляет 128 байт. Это можно настроить с помощью
MQTT_MAX_PACKET_SIZE
вPubSubClient.h
.
,
@Majenko
Смотрите также:
- Как подключиться к MQTT брокеру с помощью TLS?
- Преобразование byte* в int в Arduino
- esp32-cam публикует изображение в mqtt
- ESP8266 глубокий сон и MQTT
- ESP-01 неправильно просыпается после глубокого сна
- Приведение от 'char*' к 'char' теряет точность
- Публиковать данные json в mqtt
- Не удалось подключиться к брокеру MQTT через esp8266/32 и pub/sub client
Можете ли вы указать его местоположение?, @Guy . D
Местоположение файла или местоположение внутри файла?, @Majenko
извините- местоположение файла, @Guy . D
Он находится там, где вы его установили., @Majenko
Является ли это частью библиотеки
pubsub
?, @Guy . DЕсли это та же библиотека, о которой я знаю, то да., @Majenko
какое допустимое значение?, @Guy . D
Все, что влезет в доступную память. Определите, какой размер вам понадобится., @Majenko