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) );