Clear old availability topic when device is renamed. #5244

This commit is contained in:
Koen Kanters
2022-01-21 20:21:18 +01:00
parent ef2f28019b
commit 64f83d74b7
2 changed files with 9 additions and 4 deletions
+7 -4
View File
@@ -91,10 +91,13 @@ export default class Availability extends Extension {
}
override async start(): Promise<void> {
this.eventBus.onEntityRenamed(this, (data) =>
data.entity.isDevice() &&
utils.isAvailabilityEnabledForDevice(data.entity, settings.get()) &&
this.publishAvailability(data.entity, false, true));
this.eventBus.onEntityRenamed(this, (data) => {
if (data.entity.isDevice() && utils.isAvailabilityEnabledForDevice(data.entity, settings.get())) {
this.mqtt.publish(`${data.from}/availability`, null, {retain: true, qos: 0});
this.publishAvailability(data.entity, false, true);
}
});
this.eventBus.onDeviceRemoved(this, (data) => clearTimeout(this.timers[data.ieeeAddr]));
this.eventBus.onDeviceLeave(this, (data) => clearTimeout(this.timers[data.ieeeAddr]));
this.eventBus.onDeviceAnnounce(this, (data) => this.retrieveState(data.device));
+2
View File
@@ -262,6 +262,8 @@ describe('Availability', () => {
MQTT.events.message('zigbee2mqtt/bridge/request/device/rename', stringify({from: 'bulb_color', to: 'bulb_new_name'}));
await flushPromises();
expect(MQTT.publish).toHaveBeenCalledWith('zigbee2mqtt/bulb_color/availability',
null, {retain: true, qos: 0}, expect.any(Function));
expect(MQTT.publish).toHaveBeenCalledWith('zigbee2mqtt/bulb_new_name/availability',
'online', {retain: true, qos: 0}, expect.any(Function));
await advancedTime(utils.hours(12));