Added a method publish() to publish MQTT data.

This commit is contained in:
Fabian Schlenz 2019-07-19 06:09:47 +02:00
parent cc472c72df
commit f319f4b97f

View File

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