From 2abf55ccf8de35c2ec3463e29c31a80a35d7392b Mon Sep 17 00:00:00 2001 From: Koen Kanters Date: Sat, 21 Dec 2024 21:33:44 +0100 Subject: [PATCH] fix!: Change default `homeassistant.status_topic` to `homeassistant/status` (#25286) --- lib/extension/homeassistant.ts | 4 +--- lib/util/settings.schema.json | 2 +- lib/util/settings.ts | 2 +- test/extensions/bridge.test.ts | 2 +- test/extensions/homeassistant.test.ts | 8 ++++---- 5 files changed, 8 insertions(+), 10 deletions(-) diff --git a/lib/extension/homeassistant.ts b/lib/extension/homeassistant.ts index 8b6a02327a..19df2bfef5 100644 --- a/lib/extension/homeassistant.ts +++ b/lib/extension/homeassistant.ts @@ -46,7 +46,6 @@ const ACTION_PATTERNS: string[] = [ const ACCESS_STATE = 0b001; const ACCESS_SET = 0b010; const GROUP_SUPPORTED_TYPES: ReadonlyArray = ['light', 'switch', 'lock', 'cover']; -const DEFAULT_STATUS_TOPIC = 'homeassistant/status'; const COVER_OPENING_LOOKUP: ReadonlyArray = ['opening', 'open', 'forward', 'up', 'rising']; const COVER_CLOSING_LOOKUP: ReadonlyArray = ['closing', 'close', 'backward', 'back', 'reverse', 'down', 'declining']; const COVER_STOPPED_LOOKUP: ReadonlyArray = ['stopped', 'stop', 'pause', 'paused']; @@ -449,7 +448,6 @@ export default class HomeAssistant extends Extension { this.eventBus.onExposesChanged(this, async (data) => await this.discover(data.device)); await this.mqtt.subscribe(this.statusTopic); - await this.mqtt.subscribe(DEFAULT_STATUS_TOPIC); /** * Prevent unnecessary re-discovery of entities by waiting 5 seconds for retained discovery messages to come in. @@ -1748,7 +1746,7 @@ export default class HomeAssistant extends Extension { } else if (entity) { this.getDiscovered(entity).messages[topic] = {payload: stringify(message), published: true}; } - } else if ((data.topic === this.statusTopic || data.topic === DEFAULT_STATUS_TOPIC) && data.message.toLowerCase() === 'online') { + } else if (data.topic === this.statusTopic && data.message.toLowerCase() === 'online') { const timer = setTimeout(async () => { // Publish all device states. for (const entity of this.zigbee.devicesAndGroupsIterator(utils.deviceNotCoordinator)) { diff --git a/lib/util/settings.schema.json b/lib/util/settings.schema.json index 27c9837afb..68a47fee91 100644 --- a/lib/util/settings.schema.json +++ b/lib/util/settings.schema.json @@ -25,7 +25,7 @@ "type": "string", "title": "Home Assistant status topic", "description": "Home Assistant status topic", - "default": "hass/status", + "default": "homeassistant/status", "requiresRestart": true, "examples": ["homeassistant/status"] }, diff --git a/lib/util/settings.ts b/lib/util/settings.ts index 84112e5638..053091c122 100644 --- a/lib/util/settings.ts +++ b/lib/util/settings.ts @@ -28,7 +28,7 @@ export const defaults: RecursivePartial = { homeassistant: { enabled: false, discovery_topic: 'homeassistant', - status_topic: 'hass/status', + status_topic: 'homeassistant/status', legacy_action_sensor: false, experimental_event_entities: false, }, diff --git a/test/extensions/bridge.test.ts b/test/extensions/bridge.test.ts index 1753b12a3a..e6332a3f0a 100644 --- a/test/extensions/bridge.test.ts +++ b/test/extensions/bridge.test.ts @@ -240,7 +240,7 @@ describe('Extension: Bridge', () => { homeassistant: { enabled: false, discovery_topic: 'homeassistant', - status_topic: 'hass/status', + status_topic: 'homeassistant/status', legacy_action_sensor: false, experimental_event_entities: false, }, diff --git a/test/extensions/homeassistant.test.ts b/test/extensions/homeassistant.test.ts index d77bb83b10..1834f0d783 100644 --- a/test/extensions/homeassistant.test.ts +++ b/test/extensions/homeassistant.test.ts @@ -1348,9 +1348,9 @@ describe('Extension: HomeAssistant', () => { // @ts-expect-error private extension.state.load(); await resetExtension(); - expect(mockMQTT.subscribeAsync).toHaveBeenCalledWith('hass/status'); + expect(mockMQTT.subscribeAsync).toHaveBeenCalledWith('homeassistant/status'); mockMQTT.publishAsync.mockClear(); - await mockMQTTEvents.message('hass/status', 'online'); + await mockMQTTEvents.message('homeassistant/status', 'online'); await flushPromises(); await jest.runOnlyPendingTimersAsync(); await flushPromises(); @@ -1389,7 +1389,7 @@ describe('Extension: HomeAssistant', () => { await resetExtension(); await flushPromises(); mockMQTT.publishAsync.mockClear(); - await mockMQTTEvents.message('hass/status', 'offline'); + await mockMQTTEvents.message('homeassistant/status', 'offline'); await flushPromises(); await jest.runOnlyPendingTimersAsync(); await flushPromises(); @@ -1402,7 +1402,7 @@ describe('Extension: HomeAssistant', () => { extension.state.load(); await resetExtension(); mockMQTT.publishAsync.mockClear(); - await mockMQTTEvents.message('hass/status_different', 'offline'); + await mockMQTTEvents.message('homeassistant/status_different', 'offline'); await flushPromises(); await jest.runOnlyPendingTimersAsync(); await flushPromises();