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 *****/