From fa8593c8985601c23aaae29d74acbb1ea8fa88e5 Mon Sep 17 00:00:00 2001 From: Koen Kanters Date: Tue, 8 Jun 2021 15:58:10 +0200 Subject: [PATCH] Log and publish friendly_name on deviceLeave. https://github.com/Koenkk/zigbee2mqtt/issues/7725 --- lib/controller.js | 4 +++- lib/extension/bridge.js | 7 ++++++- test/bridge.test.js | 2 +- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/lib/controller.js b/lib/controller.js index 9508d5a7..4e546f27 100644 --- a/lib/controller.js +++ b/lib/controller.js @@ -266,7 +266,9 @@ class Controller { } else { /* istanbul ignore else */ if (type === 'deviceLeave') { - logger.warn(`Device '${name || data.ieeeAddr}' left the network`); + const settingsDevice = settings.getDevice(data.ieeeAddr); + logger.warn(`Device '${settingsDevice ? settingsDevice.friendlyName : data.ieeeAddr}' ` + + `left the network`); this.state.remove(data.ieeeAddr); } } diff --git a/lib/extension/bridge.js b/lib/extension/bridge.js index 3b21f232..d91c31d7 100644 --- a/lib/extension/bridge.js +++ b/lib/extension/bridge.js @@ -122,7 +122,12 @@ class Bridge extends Extension { payload = { friendly_name: resolvedEntity.settings.friendlyName, ieee_address: ieeeAddress, }; - } else payload = {ieee_address: ieeeAddress}; // deviceLeave + } else { + // deviceLeave + const settingsDevice = settings.getDevice(ieeeAddress); + payload = {ieee_address: ieeeAddress, + friendly_name: settingsDevice ? settingsDevice.friendlyName : null}; + } await this.mqtt.publish( 'bridge/event', diff --git a/test/bridge.test.js b/test/bridge.test.js index 10765f23..18d9b158 100644 --- a/test/bridge.test.js +++ b/test/bridge.test.js @@ -196,7 +196,7 @@ describe('Bridge', () => { expect(MQTT.publish).toHaveBeenCalledTimes(2); expect(MQTT.publish).toHaveBeenCalledWith( 'zigbee2mqtt/bridge/event', - stringify({"type":"device_leave","data":{"ieee_address":"0x000b57fffec6a5b2"}}), + stringify({"type":"device_leave","data":{"ieee_address":"0x000b57fffec6a5b2","friendly_name":"bulb"}}), { retain: false, qos: 0 }, expect.any(Function) );