added MQTT will topic & payload

This commit is contained in:
proddy
2019-01-12 18:56:10 +01:00
parent 343703fa52
commit 6e3312c772
4 changed files with 23 additions and 10 deletions

View File

@@ -30,7 +30,8 @@ MyESP::MyESP() {
_mqtt_username = NULL; _mqtt_username = NULL;
_mqtt_retain = false; _mqtt_retain = false;
_mqtt_keepalive = 300; _mqtt_keepalive = 300;
_mqtt_will = NULL; _mqtt_will_topic = NULL;
_mqtt_will_payload = NULL;
_mqtt_base = NULL; _mqtt_base = NULL;
_mqtt_qos = 0; _mqtt_qos = 0;
_mqtt_reconnect_delay = MQTT_RECONNECT_DELAY_MIN; _mqtt_reconnect_delay = MQTT_RECONNECT_DELAY_MIN;
@@ -646,7 +647,7 @@ void MyESP::_mqttConnect() {
mqttClient.setClientId(_app_hostname); mqttClient.setClientId(_app_hostname);
mqttClient.setKeepAlive(_mqtt_keepalive); mqttClient.setKeepAlive(_mqtt_keepalive);
mqttClient.setCleanSession(false); mqttClient.setCleanSession(false);
mqttClient.setWill(_mqtt_will, _mqtt_qos, _mqtt_retain, "0"); // payload is 0 mqttClient.setWill(_mqtt_will_topic, _mqtt_qos, _mqtt_retain, _mqtt_will_payload);
if (_mqtt_username && _mqtt_password) { if (_mqtt_username && _mqtt_password) {
myDebug_P(PSTR("[MQTT] Connecting to MQTT using user %s"), _mqtt_username); myDebug_P(PSTR("[MQTT] Connecting to MQTT using user %s"), _mqtt_username);
@@ -686,7 +687,8 @@ void MyESP::setMQTT(char * mqtt_host,
unsigned long mqtt_keepalive, unsigned long mqtt_keepalive,
unsigned char mqtt_qos, unsigned char mqtt_qos,
bool mqtt_retain, bool mqtt_retain,
char * mqtt_will, char * mqtt_will_topic,
char * mqtt_will_payload,
mqtt_callback_f callback) { mqtt_callback_f callback) {
// can be empty // can be empty
if (!mqtt_host || *mqtt_host == 0x00) { if (!mqtt_host || *mqtt_host == 0x00) {
@@ -724,10 +726,17 @@ void MyESP::setMQTT(char * mqtt_host,
_mqtt_retain = mqtt_retain; _mqtt_retain = mqtt_retain;
// last will // last will
if (_mqtt_will) { if (!mqtt_will_topic || *mqtt_will_topic == 0x00) {
free(_mqtt_will); _mqtt_will_topic = NULL;
} else {
_mqtt_will_topic = strdup(mqtt_will_topic);
}
if (!mqtt_will_payload || *mqtt_will_payload == 0x00) {
_mqtt_will_payload = NULL;
} else {
_mqtt_will_payload = strdup(mqtt_will_payload);
} }
_mqtt_will = strdup(mqtt_will);
} }
// print contents of file // print contents of file

View File

@@ -98,7 +98,8 @@ class MyESP {
unsigned long mqtt_keepalive, unsigned long mqtt_keepalive,
unsigned char mqtt_qos, unsigned char mqtt_qos,
bool mqtt_retain, bool mqtt_retain,
char * mqtt_will, char * mqtt_will_topic,
char * mqtt_will_payload,
mqtt_callback_f callback); mqtt_callback_f callback);
// debug & telnet // debug & telnet
@@ -135,7 +136,8 @@ class MyESP {
unsigned long _mqtt_keepalive; unsigned long _mqtt_keepalive;
unsigned char _mqtt_qos; unsigned char _mqtt_qos;
bool _mqtt_retain; bool _mqtt_retain;
char * _mqtt_will; char * _mqtt_will_topic;
char * _mqtt_will_payload;
// wifi // wifi
DNSServer dnsServer; // For Access Point (AP) support DNSServer dnsServer; // For Access Point (AP) support

View File

@@ -994,7 +994,8 @@ void setup() {
// set up myESP for Wifi, MQTT, MDNS and Telnet // set up myESP for Wifi, MQTT, MDNS and Telnet
myESP.setTelnet(project_cmds, ArraySize(project_cmds), TelnetCommandCallback, TelnetCallback); // set up Telnet commands myESP.setTelnet(project_cmds, ArraySize(project_cmds), TelnetCommandCallback, TelnetCallback); // set up Telnet commands
myESP.setWIFI(WIFI_SSID, WIFI_PASSWORD, WIFICallback); myESP.setWIFI(WIFI_SSID, WIFI_PASSWORD, WIFICallback);
myESP.setMQTT(MQTT_HOST, MQTT_USER, MQTT_PASS, MQTT_BASE, MQTT_KEEPALIVE, MQTT_QOS, MQTT_RETAIN, MQTT_WILL, MQTTCallback); myESP.setMQTT(
MQTT_HOST, MQTT_USER, MQTT_PASS, MQTT_BASE, MQTT_KEEPALIVE, MQTT_QOS, MQTT_RETAIN, MQTT_WILL_TOPIC, MQTT_WILL_PAYLOAD, MQTTCallback);
myESP.setSettings(FSCallback, SettingsCallback); myESP.setSettings(FSCallback, SettingsCallback);
myESP.begin(APP_HOSTNAME, APP_NAME, APP_VERSION); // start it all up myESP.begin(APP_HOSTNAME, APP_NAME, APP_VERSION); // start it all up

View File

@@ -23,7 +23,8 @@
#define MQTT_BASE "home" #define MQTT_BASE "home"
#define MQTT_TOPIC_START "start" #define MQTT_TOPIC_START "start"
#define MQTT_TOPIC_START_PAYLOAD "start" #define MQTT_TOPIC_START_PAYLOAD "start"
#define MQTT_WILL "status" // for last will & testament #define MQTT_WILL_TOPIC "status" // for last will & testament topic name
#define MQTT_WILL_PAYLOAD "0" // for last will & testament payload
#define MQTT_RETAIN true #define MQTT_RETAIN true
#define MQTT_KEEPALIVE 300 #define MQTT_KEEPALIVE 300
#define MQTT_QOS 1 #define MQTT_QOS 1