mirror of
https://github.com/emsesp/EMS-ESP32.git
synced 2025-12-07 16:29:51 +03:00
added MQTT will topic & payload
This commit is contained in:
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user