Closed CircuitSetup closed 3 years ago
@presslab-us were you seeing this on your end while testing? I'm seeing random characters in what is being sent. I'm guessing one of the arrays is getting filled with null and need some kind of termination instead.
I reverted to the previous code (with Strings) in mqtt_publish, and it worked without issue.
I checked out master and tested it and I didn't see any problems. What text are you using for base topic and prefix? I am using "emon/main" for base topic, and I tested both "" and "123" for prefix.
In any case, I did see a potential bug. Because sprintf()
has variable arguments the compiler may not know to properly cast the String
to a char *
. Why don't you try this and see if it helps:
diff --git a/Software/EmonESP/src_6chan/mqtt.cpp b/Software/EmonESP/src_6chan/mqtt.cpp
index c80b2fd..c5a9f57 100644
--- a/Software/EmonESP/src_6chan/mqtt.cpp
+++ b/Software/EmonESP/src_6chan/mqtt.cpp
@@ -101,7 +101,7 @@ void mqtt_publish(const char * data)
{
const char * data_ptr = data;
char * topic_ptr = mqtt_topic_prefix;
- topic_ptr += sprintf(mqtt_topic_prefix, "%s/%s", mqtt_topic, mqtt_feed_prefix);
+ topic_ptr += sprintf(mqtt_topic_prefix, "%s/%s", mqtt_topic.c_str(), mqtt_feed_prefix.c_str());
do
{
this was fixed in the latest version
The formatting of mqtt_topic_prefix, I believe, is causing a disconnection from the MQTT broker. Have to investigate this further.