mirror of
https://github.com/Koenkk/zigbee2mqtt.git
synced 2026-07-21 11:01:59 +00:00
Homeassistant discovery: allow multiple homeassistant sensor/devics per device. #9
This commit is contained in:
+17
-11
@@ -72,17 +72,7 @@ class Controller {
|
||||
// Home assistant MQTT discovery
|
||||
if (settings.get().homeassistant_discovery && mappedModel.homeassistant &&
|
||||
!this.hassDiscoveryCache[device.ieeeAddr]) {
|
||||
const topic = `${mappedModel.homeassistant.type}/${device.ieeeAddr}/config`;
|
||||
const payload = mappedModel.homeassistant.discovery_payload;
|
||||
payload.state_topic = `${settings.get().mqtt.base_topic}/${friendlyName}`;
|
||||
payload.availability_topic = `${settings.get().mqtt.base_topic}/bridge/state`;
|
||||
payload.name = friendlyName;
|
||||
|
||||
if (payload.command_topic) {
|
||||
payload.command_topic = `${settings.get().mqtt.base_topic}/${friendlyName}/set`;
|
||||
}
|
||||
|
||||
this.mqtt.publish(topic, JSON.stringify(payload), true, null, 'homeassistant');
|
||||
this.homeassistantDiscover(mappedModel, device, friendlyName);
|
||||
this.hassDiscoveryCache[device.ieeeAddr] = true;
|
||||
}
|
||||
|
||||
@@ -164,6 +154,22 @@ class Controller {
|
||||
this.zigbee.publish(deviceID, message.cId, message.cmd, message.zclData, callback);
|
||||
});
|
||||
}
|
||||
|
||||
homeassistantDiscover(mappedModel, device, friendlyName) {
|
||||
mappedModel.homeassistant.forEach((discover) => {
|
||||
const topic = `${discover.type}/${device.ieeeAddr}/${discover.object_id}/config`;
|
||||
const payload = discover.discovery_payload;
|
||||
payload.state_topic = `${settings.get().mqtt.base_topic}/${friendlyName}`;
|
||||
payload.availability_topic = `${settings.get().mqtt.base_topic}/bridge/state`;
|
||||
payload.name = friendlyName;
|
||||
|
||||
if (payload.command_topic) {
|
||||
payload.command_topic = `${settings.get().mqtt.base_topic}/${friendlyName}/set`;
|
||||
}
|
||||
|
||||
this.mqtt.publish(topic, JSON.stringify(payload), true, null, 'homeassistant');
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = Controller;
|
||||
Reference in New Issue
Block a user