Fix last seen not published when changed. https://github.com/Koenkk/zigbee2mqtt/issues/7423

This commit is contained in:
Koen Kanters 2021-10-02 10:49:47 +02:00
parent 0282011255
commit c28731957a
2 changed files with 16 additions and 0 deletions

View File

@ -150,6 +150,10 @@ class Controller {
// Call extensions
await this.callExtensions('start', this.extensions);
if (settings.get().advanced.last_seen && settings.get().advanced.last_seen !== 'disable') {
this.eventBus.onLastSeenChanged(this, (data) => this.publishEntityState(data.device, {}));
}
}
@bind async enableDisableExtension(enable: boolean, name: string): Promise<void> {

View File

@ -632,4 +632,16 @@ describe('Controller', () => {
expect(settings.get().advanced.homeassistant_legacy_entity_attributes).toBeFalsy();
expect(settings.get().advanced.legacy_api).toBeFalsy();
});
it('Should publish last seen changes', async () => {
settings.set(['advanced', 'last_seen'], 'epoch');
await controller.start();
await flushPromises();
MQTT.publish.mockClear();
const device = zigbeeHerdsman.devices.remote;
await zigbeeHerdsman.events.lastSeenChanged({device});
expect(MQTT.publish).toHaveBeenCalledTimes(1);
expect(MQTT.publish).toHaveBeenCalledWith(
'zigbee2mqtt/remote', stringify({"brightness":255,"last_seen":1000}), { qos: 0, retain: true }, expect.any(Function));
});
});