adafruit / Adafruit_MQTT_Library

Arduino library for MQTT support
MIT License
566 stars 292 forks source link

Add support for retain flag when publishing #216

Closed ben-willmore closed 1 year ago

ben-willmore commented 1 year ago

This is an updated version of https://github.com/Fapiko/Adafruit_MQTT_Library/tree/retain-flag which uses function overloading instead of optional parameters, as suggested in #169. This would also resolve #20 and #161.

// Example usage
Adafruit_MQTT_Client mqtt(&client, MQTT_SERVER, MQTT_SERVERPORT, MQTT_USERNAME, MQTT_KEY);

Adafruit_MQTT_Publish feed1 = Adafruit_MQTT_Publish(&mqtt, "/feeds/feed1");
feed1.publish("retain", true); // retain
feed1.publish("discard", false); // don't retain
feed1.publish("discard"); // don't retain

Adafruit_MQTT_Publish feed2 = Adafruit_MQTT_Publish(&mqtt, "/feeds/feed2");
feed2.publish(1, true); // retain
feed2.publish(0, false); // don't retain
feed2.publish(0); // don't retain

Adafruit_MQTT_Publish feed3 = Adafruit_MQTT_Publish(&mqtt, "/feeds/feed3");
feed3.publish(1.0, true); // retain
feed3.publish(0.0, false); // don't retain
feed3.publish(0.0); // don't retain

mqtt.publish("/feeds/feed4", "retain", true); // retain
mqtt.publish("/feeds/feed4", "discard", false); // don't retain
mqtt.publish("/feeds/feed4", "discard"); // don't retain
brentru commented 1 year ago

@ben-willmore Thank you for the PR. Are you interested in possibly adding an example, similar to the one you have above but within examples/, to serve as documentation for example usage?

ben-willmore commented 1 year ago

Sure, I will push an example when I get a chance (probably a couple of days).

brentru commented 1 year ago

@ben-willmore Thank you for the Pull Request!

ben-willmore commented 1 year ago

@brentru Thank you too for working on it, I'm pleased to see this feature get merged.