diff --git a/README.md b/README.md index d45b784..36a4808 100644 --- a/README.md +++ b/README.md @@ -3,3 +3,25 @@ A bridge between sonos and ? ![Build](https://github.com/simojenki/bonob/workflows/Build/badge.svg) + +## Running + +bonob is ditributed via docker and can be run in a number of ways + +### Full sonos device auto-discovery by using docker --network host +``` +docker run \ + -e PORT=3000 \ + -p 3000 \ + --network host \ + simojenki/bonob +``` + +### Full sonos device auto-discovery by using a sonos seed device, without requiring docker host networking +``` +docker run \ + -e PORT=3000 \ + -e BONOB_SONOS_SEED_HOST=192.168.1.123 \ + -p 3000 \ + simojenki/bonob +``` \ No newline at end of file diff --git a/src/sonos.ts b/src/sonos.ts index bd6ddee..45962d9 100644 --- a/src/sonos.ts +++ b/src/sonos.ts @@ -23,7 +23,10 @@ const asDevice = (sonosDevice: SonosDevice) => ({ port: sonosDevice.Port, }); -const setupDiscovery = (manager: SonosManager, sonosSeedHost?: string): Promise => { +const setupDiscovery = ( + manager: SonosManager, + sonosSeedHost?: string +): Promise => { if (sonosSeedHost == undefined || sonosSeedHost == "") { logger.info("Trying to auto discover sonos devices"); return manager.InitializeWithDiscovery(10); @@ -35,14 +38,24 @@ const setupDiscovery = (manager: SonosManager, sonosSeedHost?: string): Promise< export function autoDiscoverySonos(sonosSeedHost?: string): Sonos { const manager = new SonosManager(); - - setupDiscovery(manager, sonosSeedHost).then((r) => { - if (r) logger.info({ devices: manager.Devices.map(asDevice) }); - else logger.warn("Failed to auto discover hosts!"); - }); + + setupDiscovery(manager, sonosSeedHost) + .then((r) => { + if (r) logger.info({ devices: manager.Devices.map(asDevice) }); + else logger.warn("Failed to auto discover hosts!"); + }) + .catch((e) => { + logger.warn(`Failed to find sonos devices ${e}`); + }); return { - devices: () => manager.Devices.map(asDevice), + devices: () => { + try { + return manager.Devices.map(asDevice) + }catch(e) { + return [] + } + }, }; }