Skip to content

Commit

Permalink
fix: Adjusted discovery
Browse files Browse the repository at this point in the history
  • Loading branch information
svrooij committed Feb 15, 2023
1 parent 0b0b401 commit 0dbd867
Showing 1 changed file with 10 additions and 4 deletions.
14 changes: 10 additions & 4 deletions src/ha-discovery.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import { SonosDevice } from "@svrooij/sonos/lib";
import DeviceDescription from "@svrooij/sonos/lib/models/device-description";
import { GetZoneInfoResponse } from "@svrooij/sonos/lib/services";

interface AutoDiscoveryDevice {
identifiers?: string[];
Expand Down Expand Up @@ -36,14 +37,18 @@ export interface AutoDiscoveryMessage {
}

export class HaAutoDiscovery {
private static deviceDescriptionForSonos(sonos: SonosDevice, description: DeviceDescription, prefix: string): AutoDiscoveryDevice {
private static deviceDescriptionForSonos(sonos: SonosDevice, description: DeviceDescription, zoneInfo: GetZoneInfoResponse, prefix: string): AutoDiscoveryDevice {
return {
identifiers: [sonos.Uuid],
manufacturer: description.manufacturer,
model: description.modelName,
name: sonos.Name,
sw_version: description.softwareVersion,
connections: [["host", `${sonos.Host}:${sonos.Port}`], ["mqtt", `${prefix}/${sonos.Uuid}`]]
connections: [
["host", `${sonos.Host}:${sonos.Port}`],
["mqtt", `${prefix}/${sonos.Uuid}`],
["mac", `${zoneInfo.MACAddress}`],
]
};
}

Expand All @@ -53,7 +58,7 @@ export class HaAutoDiscovery {
payload: {
device: device,
device_class: 'speaker',
icon: 'mdi:speaker',
icon: device.model?.includes('Playbar') ? 'mdi:soundbar' : 'mdi:speaker',
name: name,
state_topic: `${prefix}/${uuid}`,
command_topic: `${prefix}/${uuid}/control`,
Expand Down Expand Up @@ -83,7 +88,8 @@ export class HaAutoDiscovery {

public static async GenerateAutoDiscoveryMessages(sonos: SonosDevice, prefix = 'sonos'): Promise<AutoDiscoveryMessage[]> {
const description = await sonos.GetDeviceDescription();
const deviceDescription = HaAutoDiscovery.deviceDescriptionForSonos(sonos, description, prefix);
const zoneInfo = await sonos.DevicePropertiesService.GetZoneInfo();
const deviceDescription = HaAutoDiscovery.deviceDescriptionForSonos(sonos, description, zoneInfo, prefix);
return [
HaAutoDiscovery.autoDiscoverMediaPlayer(sonos.Name, sonos.Uuid, deviceDescription, prefix),
//HaAutoDiscovery.autoDiscoverCrossfadeSwitch(sonos.Name, sonos.Uuid, deviceDescription, prefix, discoveryPrefix)
Expand Down

0 comments on commit 0dbd867

Please sign in to comment.