diff --git a/lib/extension/homeassistant.js b/lib/extension/homeassistant.js index 6ce6fe82e..12fc0c1a8 100644 --- a/lib/extension/homeassistant.js +++ b/lib/extension/homeassistant.js @@ -995,7 +995,10 @@ class HomeAssistant extends Extension { } getDiscoveryTopic(config, resolvedEntity) { - const key = resolvedEntity.type === 'device' ? resolvedEntity.device.ieeeAddr : resolvedEntity.group.groupID; + const key = resolvedEntity.type === 'device' ? + resolvedEntity.device.ieeeAddr : + `${settings.get().mqtt.base_topic.split('') + .map((s) => s.charCodeAt(0).toString()).join('')}_${resolvedEntity.group.groupID}`; return `${config.type}/${key}/${config.object_id}/config`; } diff --git a/test/homeassistant.test.js b/test/homeassistant.test.js index 76303eaca..00e021266 100644 --- a/test/homeassistant.test.js +++ b/test/homeassistant.test.js @@ -76,7 +76,7 @@ describe('HomeAssistant extension', () => { }; expect(MQTT.publish).toHaveBeenCalledWith( - 'homeassistant/light/9/light/config', + 'homeassistant/light/1221051039810110150109113116116_9/light/config', stringify(payload), { retain: true, qos: 0 }, expect.any(Function), @@ -100,7 +100,7 @@ describe('HomeAssistant extension', () => { }; expect(MQTT.publish).toHaveBeenCalledWith( - 'homeassistant/switch/9/switch/config', + 'homeassistant/switch/1221051039810110150109113116116_9/switch/config', stringify(payload), { retain: true, qos: 0 }, expect.any(Function), @@ -1703,7 +1703,7 @@ describe('HomeAssistant extension', () => { }; expect(MQTT.publish).toHaveBeenCalledWith( - 'homeassistant/light/9/light/config', + 'homeassistant/light/1221051039810110150109113116116_9/light/config', stringify(payload), { retain: true, qos: 0 }, expect.any(Function),