docs and handling failures looking for sonos devices

This commit is contained in:
simojenki
2021-01-29 17:22:56 +11:00
parent 5cd98a5ea6
commit faf9c343a2
2 changed files with 42 additions and 7 deletions

View File

@@ -3,3 +3,25 @@
A bridge between sonos and ? A bridge between sonos and ?
![Build](https://github.com/simojenki/bonob/workflows/Build/badge.svg) ![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
```

View File

@@ -23,7 +23,10 @@ const asDevice = (sonosDevice: SonosDevice) => ({
port: sonosDevice.Port, port: sonosDevice.Port,
}); });
const setupDiscovery = (manager: SonosManager, sonosSeedHost?: string): Promise<boolean> => { const setupDiscovery = (
manager: SonosManager,
sonosSeedHost?: string
): Promise<boolean> => {
if (sonosSeedHost == undefined || sonosSeedHost == "") { if (sonosSeedHost == undefined || sonosSeedHost == "") {
logger.info("Trying to auto discover sonos devices"); logger.info("Trying to auto discover sonos devices");
return manager.InitializeWithDiscovery(10); return manager.InitializeWithDiscovery(10);
@@ -35,14 +38,24 @@ const setupDiscovery = (manager: SonosManager, sonosSeedHost?: string): Promise<
export function autoDiscoverySonos(sonosSeedHost?: string): Sonos { export function autoDiscoverySonos(sonosSeedHost?: string): Sonos {
const manager = new SonosManager(); const manager = new SonosManager();
setupDiscovery(manager, sonosSeedHost).then((r) => { setupDiscovery(manager, sonosSeedHost)
if (r) logger.info({ devices: manager.Devices.map(asDevice) }); .then((r) => {
else logger.warn("Failed to auto discover hosts!"); 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 { return {
devices: () => manager.Devices.map(asDevice), devices: () => {
try {
return manager.Devices.map(asDevice)
}catch(e) {
return []
}
},
}; };
} }