From f319f4b97f74bbba7b2d4c803d53b483339af17d Mon Sep 17 00:00:00 2001 From: Fabian Schlenz Date: Fri, 19 Jul 2019 06:09:47 +0200 Subject: [PATCH] Added a method publish() to publish MQTT data. --- simple_iot.h | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/simple_iot.h b/simple_iot.h index bee6829..d9b6c1a 100644 --- a/simple_iot.h +++ b/simple_iot.h @@ -78,6 +78,7 @@ public: bool act_on(String topic, IOTActionHandlerFunction f); bool report_on(String topic, IOTReportHandlerFunction f, unsigned long update_interval, bool use_cache); void log(const char* fmt, ...) __attribute__((format (printf, 2, 3))); + void publish(String topic, String payload, bool retain=false); }; /** @@ -338,10 +339,23 @@ void SimpleIOT::_mqtt_callback(char* top, byte* pl, uint len) { } void SimpleIOT::_mqtt_publish_report(String topic, String report) { + publish(topic, report, true); +} + +/** + * Publishes a message via MQTT. + * + * @param topic The topic to publish to. Will be appended to base_topic. + * @param payload The payload to publish. + * @param retain Whether to ask the broker to retain the message. + */ +void SimpleIOT::publish(String topic, String payload, bool retain) { + if (!_mqtt_enabled) return; String final_topic = String(_mqtt_topic); final_topic.concat(topic); - _mqtt_client.publish(final_topic.c_str(), report.c_str(), true); + _mqtt_client.publish(final_topic.c_str(), payload.c_str(), retain); } + /***** End of MQTT stuff *****/ /***** HTTP stuff *****/