diff --git a/README.md b/README.md index 7ff5c83..0df8ed6 100644 --- a/README.md +++ b/README.md @@ -45,3 +45,4 @@ BONOB_SONOS_SEED_HOST | undefined | sonos device seed host for discovery, or omm BONOB_SONOS_SERVICE_NAME | bonob | service name for sonos BONOB_SONOS_SERVICE_ID | 246 | service id for sonos BONOB_NAVIDROME_URL | http://localhost:4533 | URL for navidrome +BONOB_SONOS_AUTO_REGISTER | false | Whether or not to try and auto-register on startup diff --git a/src/app.ts b/src/app.ts index 210d85f..e21ffbf 100644 --- a/src/app.ts +++ b/src/app.ts @@ -18,8 +18,18 @@ const bonob = bonobService( WEB_ADDRESS, "AppLink" ); + +const sonosSystem = sonos(SONOS_DEVICE_DISCOVERY, SONOS_SEED_HOST); +if(process.env["BONOB_SONOS_AUTO_REGISTER"] == "true") { + sonosSystem.register(bonob).then(success => { + if(success) { + logger.info(`Successfully registered ${bonob.name}(SID:${bonob.sid}) with sonos`) + } + }) +} + const app = server( - sonos(SONOS_DEVICE_DISCOVERY, SONOS_SEED_HOST), + sonosSystem, bonob, WEB_ADDRESS, new Navidrome( diff --git a/src/server.ts b/src/server.ts index 2b31589..2cf9f52 100644 --- a/src/server.ts +++ b/src/server.ts @@ -19,7 +19,7 @@ export const BONOB_ACCESS_TOKEN_HEADER = "bonob-access-token"; function server( sonos: Sonos, - bonobService: Service, + service: Service, webAddress: string | "http://localhost:4534", musicService: MusicService, linkCodes: LinkCodes = new InMemoryLinkCodes(), @@ -40,12 +40,12 @@ function server( Promise.all([sonos.devices(), sonos.services()]).then( ([devices, services]) => { const registeredBonobService = services.find( - (it) => it.sid == bonobService.sid + (it) => it.sid == service.sid ); res.render("index", { devices, services, - bonobService, + bonobService: service, registeredBonobService, }); } @@ -53,7 +53,7 @@ function server( }); app.post("/register", (_, res) => { - sonos.register(bonobService).then((success) => { + sonos.register(service).then((success) => { if (success) { res.render("success", { message: `Successfully registered`, @@ -68,7 +68,7 @@ function server( app.get(LOGIN_ROUTE, (req, res) => { res.render("login", { - bonobService, + bonobService: service, linkCode: req.query.linkCode, loginRoute: LOGIN_ROUTE, }); @@ -102,10 +102,10 @@ function server( res.type("application/xml").send(` - Linking sonos with ${bonobService.name} + Linking sonos with ${service.name} - Lier les sonos à la ${bonobService.name} + Lier les sonos à la ${service.name} `); diff --git a/src/sonos.ts b/src/sonos.ts index c8271d5..a73c008 100644 --- a/src/sonos.ts +++ b/src/sonos.ts @@ -156,6 +156,8 @@ export function autoDiscoverySonos(sonosSeedHost?: string): Sonos { return false; } + logger.info(`Registering ${service.name}(SID:${service.sid}) with sonos device ${anyDevice.Name} @ ${anyDevice.Host}`) + const customd = `http://${anyDevice.Host}:${anyDevice.Port}/customsd`; const csrfToken = await axios.get(customd).then((response) =>