Skip to content

Commit 7240c55

Browse files
authored
Merge pull request #299 from tim-hellhake/friendlyName-topic-postfixes
Use friendlyName for topic postfixes
2 parents 1a16c55 + ee4af1e commit 7240c55

File tree

2 files changed

+7
-4
lines changed

2 files changed

+7
-4
lines changed

src/zigbee2mqtt/zigbee2mqtt-adapter.ts

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,8 @@ export class Zigbee2MqttAdapter extends Adapter {
4949

5050
private client?: mqtt.Client;
5151

52+
private deviceByFriendlyName: Record<string, Zigbee2MqttDevice> = {};
53+
5254
constructor(
5355
addonManager: AddonManagerProxy,
5456
private config: Config,
@@ -101,13 +103,13 @@ export class Zigbee2MqttAdapter extends Adapter {
101103
if (topic.endsWith(DEVICES_POSTFIX)) {
102104
this.handleDevices(client, json);
103105
} else if (parts.length == 2) {
104-
const id = parts[1];
105-
const device = this.getDevice(id) as Zigbee2MqttDevice;
106+
const friendlyName = parts[1];
107+
const device = this.deviceByFriendlyName[friendlyName];
106108

107109
if (device) {
108110
device.update(json);
109111
} else {
110-
console.log(`Could not find device with id ${id}`);
112+
console.log(`Could not find device with friendlyName ${friendlyName}`);
111113
}
112114
} else if (topic.endsWith(PERMIT_RESPONSE_POSTFIX)) {
113115
const response: Response = json;
@@ -181,6 +183,7 @@ export class Zigbee2MqttAdapter extends Adapter {
181183
if (!existingDevice) {
182184
const device = new Zigbee2MqttDevice(this, id, deviceDefinition, client, this.prefix);
183185
this.handleDeviceAdded(device);
186+
this.deviceByFriendlyName[deviceDefinition.friendly_name as string] = device;
184187
} else if (debug()) {
185188
console.log(`Device ${id} already exists`);
186189
}

src/zigbee2mqtt/zigbee2mqtt-device.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ export class Zigbee2MqttDevice extends Device {
4141
topicPrefix: string
4242
) {
4343
super(adapter, id);
44-
this.deviceTopic = `${topicPrefix}/${id}`;
44+
this.deviceTopic = `${topicPrefix}/${deviceDefinition.friendly_name}`;
4545

4646
this.detectProperties(deviceDefinition);
4747

0 commit comments

Comments
 (0)