Implement mqtt last will message. #267

This commit is contained in:
Koenkk committed 2018-08-13 19:21:55 +02:00
1 parent 6f4013fd94
commit 43260a3a83
1 file changed
+14 -3
+14 -3
View File
@@ -12,7 +12,14 @@ class MQTT {
const mqttSettings = settings.get().mqtt;
logger.info(`Connecting to MQTT server at ${mqttSettings.server}`);
const options = {};
const options = {
will: {
topic: this.prefixTopic('bridge/state'),
payload: 'offline',
retain: true,
},
};
if (mqttSettings.user && mqttSettings.password) {
options.username = mqttSettings.user;
options.password = mqttSettings.password;
@@ -68,8 +75,7 @@ class MQTT {
}
publish(topic, payload, options, callback, baseTopic) {
baseTopic = baseTopic ? baseTopic : settings.get().mqtt.base_topic;
topic = `${baseTopic}/${topic}`;
topic = this.prefixTopic(topic, baseTopic);
if (!this.client || this.client.reconnecting) {
logger.error(`Not connected to MQTT server!`);
@@ -81,6 +87,11 @@ class MQTT {
this.client.publish(topic, payload, options, callback);
}
prefixTopic(topic, baseTopic) {
baseTopic = baseTopic ? baseTopic : settings.get().mqtt.base_topic;
return `${baseTopic}/${topic}`;
}
log(type, message) {
const payload = {type: type, message: message};
this.publish('bridge/log', JSON.stringify(payload), {retain: false});