From e792f8bc8cfbf8c5c3e073310a06e67c5f564758 Mon Sep 17 00:00:00 2001 From: Koen Kanters Date: Thu, 30 Apr 2020 19:06:17 +0200 Subject: [PATCH] Prevent sending Home Assistant discovery messages when not connected to MQTT yet. #3451 --- lib/extension/homeassistant.js | 2 +- lib/mqtt.js | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/lib/extension/homeassistant.js b/lib/extension/homeassistant.js index eedd940df..9be18a156 100644 --- a/lib/extension/homeassistant.js +++ b/lib/extension/homeassistant.js @@ -1967,7 +1967,7 @@ class HomeAssistant extends Extension { } onZigbeeEvent(type, data, resolvedEntity) { - if (resolvedEntity && type !== 'deviceLeave') { + if (resolvedEntity && type !== 'deviceLeave' && this.mqtt.isConnected()) { this.discover(resolvedEntity); } } diff --git a/lib/mqtt.js b/lib/mqtt.js index 3650cbffe..1294eda7b 100644 --- a/lib/mqtt.js +++ b/lib/mqtt.js @@ -95,11 +95,15 @@ class MQTT extends events.EventEmitter { this.emit('message', {topic, message: message.toString()}); } + isConnected() { + return this.client && !this.client.reconnecting; + } + async publish(topic, payload, options, base=settings.get().mqtt.base_topic) { topic = `${base}/${topic}`; options = {qos: 0, retain: false, ...options}; - if (!this.client || this.client.reconnecting) { + if (!this.isConnected()) { logger.error(`Not connected to MQTT server!`); logger.error(`Cannot send message: topic: '${topic}', payload: '${payload}`); return;