homebridge-sonos-scenes 0.1.2 → 0.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +19 -0
- package/broker/.env.example +5 -0
- package/broker/README.md +41 -0
- package/broker/package.json +15 -0
- package/broker/src/server.mjs +151 -0
- package/config.schema.json +44 -0
- package/dist/src/cloud/brokerClient.d.ts +20 -0
- package/dist/src/cloud/brokerClient.js +57 -0
- package/dist/src/cloud/brokerClient.js.map +1 -0
- package/dist/src/config.js +31 -1
- package/dist/src/config.js.map +1 -1
- package/dist/src/types.d.ts +13 -0
- package/dist/src/ui/serverApi.d.ts +7 -0
- package/dist/src/ui/serverApi.js +26 -0
- package/dist/src/ui/serverApi.js.map +1 -1
- package/docs/cloud-broker.md +143 -0
- package/examples/config.example.json +10 -0
- package/homebridge-ui/public/index.html +424 -20
- package/homebridge-ui/server.js +9 -0
- package/package.json +4 -2
package/README.md
CHANGED
|
@@ -39,6 +39,11 @@ homebridge-ui/
|
|
|
39
39
|
examples/
|
|
40
40
|
config.example.json
|
|
41
41
|
sample-topology.json
|
|
42
|
+
docs/
|
|
43
|
+
cloud-broker.md
|
|
44
|
+
broker/
|
|
45
|
+
README.md
|
|
46
|
+
src/server.mjs
|
|
42
47
|
test/
|
|
43
48
|
```
|
|
44
49
|
|
|
@@ -84,6 +89,19 @@ The Homebridge project’s verified-plugin guidance also expects the plugin to b
|
|
|
84
89
|
- `tv` source loading is disabled by default and remains transport-gated.
|
|
85
90
|
- Favorites rely on URIs exposed through the local transport; some complex favorite types may need more transport-specific handling later.
|
|
86
91
|
|
|
92
|
+
## Local Only Vs Local + Cloud
|
|
93
|
+
|
|
94
|
+
The intended product shape is now:
|
|
95
|
+
|
|
96
|
+
- `local_only`: today’s supported mode. It keeps discovery, grouping, line-in, TV, and directly playable favorites on the local Sonos path.
|
|
97
|
+
- `local_plus_cloud`: a future mode for users who choose to run their own Sonos cloud broker for favorites and playlists that are not reliable over the local path.
|
|
98
|
+
|
|
99
|
+
This project does not host that broker for users. The goal is an optional self-hosted companion service, not a shared multi-tenant cloud run by the plugin maintainer.
|
|
100
|
+
|
|
101
|
+
The config model already reserves a `cloud` section so advanced users and future versions do not need a breaking config redesign later. The broker contract is documented in [docs/cloud-broker.md](docs/cloud-broker.md).
|
|
102
|
+
|
|
103
|
+
There is also an early self-hosted broker scaffold in [broker/README.md](broker/README.md). It is not wired into scene execution yet, but it gives self-hosters a concrete service shape and a live `/v1/status` endpoint to target.
|
|
104
|
+
|
|
87
105
|
## Official Sonos References
|
|
88
106
|
|
|
89
107
|
These docs informed the product boundaries and future cloud-adapter shape:
|
|
@@ -99,5 +117,6 @@ These docs informed the product boundaries and future cloud-adapter shape:
|
|
|
99
117
|
## Current Gaps
|
|
100
118
|
|
|
101
119
|
- The local transport is MVP-level and best-effort for advanced favorites and TV input handling.
|
|
120
|
+
- The `local_plus_cloud` mode is a planned architecture boundary only; the self-hosted broker contract is documented, but broker-backed playback is not wired into the runtime yet.
|
|
102
121
|
- Subscription-driven refresh is still represented by the transport abstraction, but not yet fully wired for live event propagation.
|
|
103
122
|
- `npm audit` currently reports a high-severity advisory in the transitive `ip` dependency pulled in by `sonos`.
|
package/broker/README.md
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# sonos-scenes-broker
|
|
2
|
+
|
|
3
|
+
This is the first self-hosted broker scaffold for `homebridge-sonos-scenes`.
|
|
4
|
+
|
|
5
|
+
It is intentionally small:
|
|
6
|
+
|
|
7
|
+
- it starts a local HTTP server
|
|
8
|
+
- it exposes `GET /healthz`
|
|
9
|
+
- it exposes `GET /v1/status`
|
|
10
|
+
- it reserves the future Sonos broker routes with `501 Not Implemented` responses
|
|
11
|
+
|
|
12
|
+
It does **not** implement Sonos OAuth or Sonos cloud playback yet. The point of this scaffold is to give self-hosters a concrete package and endpoint shape to build from.
|
|
13
|
+
|
|
14
|
+
## Run It
|
|
15
|
+
|
|
16
|
+
```bash
|
|
17
|
+
cd broker
|
|
18
|
+
node src/server.mjs
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
With environment variables:
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
BROKER_PORT=8787
|
|
25
|
+
BROKER_HOST=127.0.0.1
|
|
26
|
+
BROKER_API_KEY=replace-me
|
|
27
|
+
node src/server.mjs
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
## Current Endpoints
|
|
31
|
+
|
|
32
|
+
- `GET /healthz`
|
|
33
|
+
- `GET /v1/status`
|
|
34
|
+
- `GET /v1/households`
|
|
35
|
+
- `GET /v1/households/:householdId/groups`
|
|
36
|
+
- `GET /v1/households/:householdId/favorites`
|
|
37
|
+
- `GET /v1/households/:householdId/playlists`
|
|
38
|
+
- `POST /v1/groups/:groupId/favorites/load`
|
|
39
|
+
- `POST /v1/groups/:groupId/playlists/load`
|
|
40
|
+
|
|
41
|
+
The `status` endpoint is meant to be usable by the Homebridge plugin right away for configuration checks. The other endpoints are placeholders for the future Sonos OAuth and cloud-control work.
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "sonos-scenes-broker",
|
|
3
|
+
"version": "0.0.1",
|
|
4
|
+
"private": true,
|
|
5
|
+
"description": "Self-hosted Sonos cloud broker scaffold for homebridge-sonos-scenes.",
|
|
6
|
+
"type": "module",
|
|
7
|
+
"scripts": {
|
|
8
|
+
"start": "node src/server.mjs",
|
|
9
|
+
"dev": "node --watch src/server.mjs"
|
|
10
|
+
},
|
|
11
|
+
"engines": {
|
|
12
|
+
"node": ">=18.20.0"
|
|
13
|
+
},
|
|
14
|
+
"license": "MIT"
|
|
15
|
+
}
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
import { createServer } from "node:http";
|
|
2
|
+
|
|
3
|
+
const port = Number(process.env.BROKER_PORT || 8787);
|
|
4
|
+
const host = process.env.BROKER_HOST || "127.0.0.1";
|
|
5
|
+
const brokerName = process.env.BROKER_NAME || "sonos-scenes-broker";
|
|
6
|
+
const apiKey = (process.env.BROKER_API_KEY || "").trim();
|
|
7
|
+
const docsUrl = process.env.BROKER_DOCS_URL || "https://github.com/applemanj/homebridge-sonos-scenes/blob/main/docs/cloud-broker.md";
|
|
8
|
+
|
|
9
|
+
function writeJson(response, statusCode, payload) {
|
|
10
|
+
response.writeHead(statusCode, {
|
|
11
|
+
"content-type": "application/json; charset=utf-8",
|
|
12
|
+
"cache-control": "no-store",
|
|
13
|
+
});
|
|
14
|
+
response.end(JSON.stringify(payload, null, 2));
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
function bearerToken(request) {
|
|
18
|
+
const header = request.headers.authorization || "";
|
|
19
|
+
const match = /^Bearer\s+(.+)$/i.exec(header);
|
|
20
|
+
return match?.[1]?.trim() || "";
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
function isAuthorized(request) {
|
|
24
|
+
if (!apiKey) {
|
|
25
|
+
return true;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
return bearerToken(request) === apiKey;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
async function readJsonBody(request) {
|
|
32
|
+
const chunks = [];
|
|
33
|
+
for await (const chunk of request) {
|
|
34
|
+
chunks.push(Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk));
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
if (chunks.length === 0) {
|
|
38
|
+
return {};
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
const raw = Buffer.concat(chunks).toString("utf8");
|
|
42
|
+
return raw.trim().length > 0 ? JSON.parse(raw) : {};
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
function notImplemented(response, route, extra = {}) {
|
|
46
|
+
writeJson(response, 501, {
|
|
47
|
+
ok: false,
|
|
48
|
+
route,
|
|
49
|
+
mode: "scaffold",
|
|
50
|
+
message: "This broker scaffold reserves the route, but Sonos OAuth and cloud playback are not implemented yet.",
|
|
51
|
+
...extra,
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
const server = createServer(async (request, response) => {
|
|
56
|
+
const url = new URL(request.url || "/", `http://${request.headers.host || `${host}:${port}`}`);
|
|
57
|
+
const pathname = url.pathname;
|
|
58
|
+
const method = request.method || "GET";
|
|
59
|
+
|
|
60
|
+
if (method === "GET" && pathname === "/healthz") {
|
|
61
|
+
writeJson(response, 200, {
|
|
62
|
+
ok: true,
|
|
63
|
+
name: brokerName,
|
|
64
|
+
mode: "scaffold",
|
|
65
|
+
});
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
if (method === "GET" && pathname === "/v1/status") {
|
|
70
|
+
writeJson(response, 200, {
|
|
71
|
+
ok: true,
|
|
72
|
+
name: brokerName,
|
|
73
|
+
version: "0.0.1",
|
|
74
|
+
mode: "scaffold",
|
|
75
|
+
oauthConfigured: false,
|
|
76
|
+
features: ["favorites", "playlists"],
|
|
77
|
+
docsUrl,
|
|
78
|
+
message: "Broker scaffold is running. Sonos OAuth is not configured yet.",
|
|
79
|
+
});
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
if (!isAuthorized(request)) {
|
|
84
|
+
writeJson(response, 401, {
|
|
85
|
+
ok: false,
|
|
86
|
+
message: "Unauthorized. Supply the configured broker bearer token.",
|
|
87
|
+
});
|
|
88
|
+
return;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
try {
|
|
92
|
+
if (method === "GET" && pathname === "/v1/households") {
|
|
93
|
+
notImplemented(response, pathname, {
|
|
94
|
+
households: [],
|
|
95
|
+
});
|
|
96
|
+
return;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
if (method === "GET" && /^\/v1\/households\/[^/]+\/groups$/.test(pathname)) {
|
|
100
|
+
notImplemented(response, pathname, {
|
|
101
|
+
groups: [],
|
|
102
|
+
players: [],
|
|
103
|
+
});
|
|
104
|
+
return;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
if (method === "GET" && /^\/v1\/households\/[^/]+\/favorites$/.test(pathname)) {
|
|
108
|
+
notImplemented(response, pathname, {
|
|
109
|
+
favorites: [],
|
|
110
|
+
});
|
|
111
|
+
return;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
if (method === "GET" && /^\/v1\/households\/[^/]+\/playlists$/.test(pathname)) {
|
|
115
|
+
notImplemented(response, pathname, {
|
|
116
|
+
playlists: [],
|
|
117
|
+
});
|
|
118
|
+
return;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
if (method === "POST" && /^\/v1\/groups\/[^/]+\/favorites\/load$/.test(pathname)) {
|
|
122
|
+
const body = await readJsonBody(request);
|
|
123
|
+
notImplemented(response, pathname, {
|
|
124
|
+
received: body,
|
|
125
|
+
});
|
|
126
|
+
return;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
if (method === "POST" && /^\/v1\/groups\/[^/]+\/playlists\/load$/.test(pathname)) {
|
|
130
|
+
const body = await readJsonBody(request);
|
|
131
|
+
notImplemented(response, pathname, {
|
|
132
|
+
received: body,
|
|
133
|
+
});
|
|
134
|
+
return;
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
writeJson(response, 404, {
|
|
138
|
+
ok: false,
|
|
139
|
+
message: `No route matched ${method} ${pathname}.`,
|
|
140
|
+
});
|
|
141
|
+
} catch (error) {
|
|
142
|
+
writeJson(response, 500, {
|
|
143
|
+
ok: false,
|
|
144
|
+
message: error instanceof Error ? error.message : String(error),
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
});
|
|
148
|
+
|
|
149
|
+
server.listen(port, host, () => {
|
|
150
|
+
console.log(`${brokerName} listening on http://${host}:${port}`);
|
|
151
|
+
});
|
package/config.schema.json
CHANGED
|
@@ -73,6 +73,50 @@
|
|
|
73
73
|
}
|
|
74
74
|
}
|
|
75
75
|
},
|
|
76
|
+
"cloud": {
|
|
77
|
+
"title": "Cloud",
|
|
78
|
+
"type": "object",
|
|
79
|
+
"properties": {
|
|
80
|
+
"mode": {
|
|
81
|
+
"title": "Control Mode",
|
|
82
|
+
"type": "string",
|
|
83
|
+
"default": "local_only",
|
|
84
|
+
"oneOf": [
|
|
85
|
+
"local_only",
|
|
86
|
+
"local_plus_cloud"
|
|
87
|
+
]
|
|
88
|
+
},
|
|
89
|
+
"broker": {
|
|
90
|
+
"title": "Broker",
|
|
91
|
+
"type": "object",
|
|
92
|
+
"properties": {
|
|
93
|
+
"url": {
|
|
94
|
+
"title": "Broker URL",
|
|
95
|
+
"type": "string"
|
|
96
|
+
},
|
|
97
|
+
"apiKey": {
|
|
98
|
+
"title": "Broker API Key",
|
|
99
|
+
"type": "string"
|
|
100
|
+
},
|
|
101
|
+
"timeoutMs": {
|
|
102
|
+
"title": "Broker Timeout (ms)",
|
|
103
|
+
"type": "integer",
|
|
104
|
+
"default": 8000
|
|
105
|
+
},
|
|
106
|
+
"routeFavorites": {
|
|
107
|
+
"title": "Route Favorites Through Broker",
|
|
108
|
+
"type": "boolean",
|
|
109
|
+
"default": true
|
|
110
|
+
},
|
|
111
|
+
"routePlaylists": {
|
|
112
|
+
"title": "Route Playlists Through Broker",
|
|
113
|
+
"type": "boolean",
|
|
114
|
+
"default": true
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
},
|
|
76
120
|
"scenes": {
|
|
77
121
|
"title": "Scenes",
|
|
78
122
|
"type": "array",
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { CloudBrokerConfig } from "../types";
|
|
2
|
+
export type CloudBrokerFeature = "favorites" | "playlists";
|
|
3
|
+
export interface CloudBrokerStatus {
|
|
4
|
+
ok: boolean;
|
|
5
|
+
name?: string;
|
|
6
|
+
version?: string;
|
|
7
|
+
features: CloudBrokerFeature[];
|
|
8
|
+
docsUrl?: string;
|
|
9
|
+
mode?: "scaffold" | "live";
|
|
10
|
+
oauthConfigured?: boolean;
|
|
11
|
+
message?: string;
|
|
12
|
+
}
|
|
13
|
+
export declare class CloudBrokerClient {
|
|
14
|
+
private readonly config;
|
|
15
|
+
constructor(config: CloudBrokerConfig);
|
|
16
|
+
get configured(): boolean;
|
|
17
|
+
get baseUrl(): string | undefined;
|
|
18
|
+
getStatus(): Promise<CloudBrokerStatus>;
|
|
19
|
+
private request;
|
|
20
|
+
}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CloudBrokerClient = void 0;
|
|
4
|
+
function trimTrailingSlash(value) {
|
|
5
|
+
return value.replace(/\/+$/g, "");
|
|
6
|
+
}
|
|
7
|
+
class CloudBrokerClient {
|
|
8
|
+
config;
|
|
9
|
+
constructor(config) {
|
|
10
|
+
this.config = config;
|
|
11
|
+
}
|
|
12
|
+
get configured() {
|
|
13
|
+
return typeof this.config.url === "string" && this.config.url.trim().length > 0;
|
|
14
|
+
}
|
|
15
|
+
get baseUrl() {
|
|
16
|
+
if (!this.configured) {
|
|
17
|
+
return undefined;
|
|
18
|
+
}
|
|
19
|
+
return trimTrailingSlash(this.config.url.trim());
|
|
20
|
+
}
|
|
21
|
+
async getStatus() {
|
|
22
|
+
return this.request("/v1/status", {
|
|
23
|
+
method: "GET",
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
async request(path, init) {
|
|
27
|
+
if (!this.baseUrl) {
|
|
28
|
+
throw new Error("No cloud broker URL is configured.");
|
|
29
|
+
}
|
|
30
|
+
const controller = new AbortController();
|
|
31
|
+
const timeout = setTimeout(() => controller.abort(), this.config.timeoutMs);
|
|
32
|
+
try {
|
|
33
|
+
const response = await fetch(`${this.baseUrl}${path}`, {
|
|
34
|
+
...init,
|
|
35
|
+
headers: {
|
|
36
|
+
Accept: "application/json",
|
|
37
|
+
...(this.config.apiKey
|
|
38
|
+
? {
|
|
39
|
+
Authorization: `Bearer ${this.config.apiKey}`,
|
|
40
|
+
}
|
|
41
|
+
: {}),
|
|
42
|
+
...init.headers,
|
|
43
|
+
},
|
|
44
|
+
signal: controller.signal,
|
|
45
|
+
});
|
|
46
|
+
if (!response.ok) {
|
|
47
|
+
throw new Error(`Cloud broker request failed: ${response.status} ${response.statusText}`);
|
|
48
|
+
}
|
|
49
|
+
return await response.json();
|
|
50
|
+
}
|
|
51
|
+
finally {
|
|
52
|
+
clearTimeout(timeout);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
exports.CloudBrokerClient = CloudBrokerClient;
|
|
57
|
+
//# sourceMappingURL=brokerClient.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"brokerClient.js","sourceRoot":"","sources":["../../../src/cloud/brokerClient.ts"],"names":[],"mappings":";;;AAeA,SAAS,iBAAiB,CAAC,KAAa;IACtC,OAAO,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;AACpC,CAAC;AAED,MAAa,iBAAiB;IACC;IAA7B,YAA6B,MAAyB;QAAzB,WAAM,GAAN,MAAM,CAAmB;IAAG,CAAC;IAE1D,IAAI,UAAU;QACZ,OAAO,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;IAClF,CAAC;IAED,IAAI,OAAO;QACT,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACrB,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,OAAO,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,GAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IACpD,CAAC;IAED,KAAK,CAAC,SAAS;QACb,OAAO,IAAI,CAAC,OAAO,CAAoB,YAAY,EAAE;YACnD,MAAM,EAAE,KAAK;SACd,CAAC,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,OAAO,CAAI,IAAY,EAAE,IAAiB;QACtD,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;QACxD,CAAC;QAED,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;QACzC,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAE5E,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,EAAE,EAAE;gBACrD,GAAG,IAAI;gBACP,OAAO,EAAE;oBACP,MAAM,EAAE,kBAAkB;oBAC1B,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM;wBACpB,CAAC,CAAC;4BACE,aAAa,EAAE,UAAU,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;yBAC9C;wBACH,CAAC,CAAC,EAAE,CAAC;oBACP,GAAG,IAAI,CAAC,OAAO;iBAChB;gBACD,MAAM,EAAE,UAAU,CAAC,MAAM;aAC1B,CAAC,CAAC;YAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,MAAM,IAAI,KAAK,CAAC,gCAAgC,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;YAC5F,CAAC;YAED,OAAO,MAAM,QAAQ,CAAC,IAAI,EAAO,CAAC;QACpC,CAAC;gBAAS,CAAC;YACT,YAAY,CAAC,OAAO,CAAC,CAAC;QACxB,CAAC;IACH,CAAC;CACF;AArDD,8CAqDC"}
|
package/dist/src/config.js
CHANGED
|
@@ -15,12 +15,25 @@ const DEFAULT_TRANSPORT = {
|
|
|
15
15
|
requestTimeoutMs: 5000,
|
|
16
16
|
allowTvSource: false,
|
|
17
17
|
};
|
|
18
|
+
const DEFAULT_CLOUD_BROKER = {
|
|
19
|
+
timeoutMs: 8000,
|
|
20
|
+
routeFavorites: true,
|
|
21
|
+
routePlaylists: true,
|
|
22
|
+
};
|
|
23
|
+
const DEFAULT_CLOUD = {
|
|
24
|
+
mode: "local_only",
|
|
25
|
+
broker: { ...DEFAULT_CLOUD_BROKER },
|
|
26
|
+
};
|
|
18
27
|
function createDefaultPlatformConfig() {
|
|
19
28
|
return {
|
|
20
29
|
platform: types_1.PLATFORM_NAME,
|
|
21
30
|
name: "Sonos Scenes",
|
|
22
31
|
logLevel: "info",
|
|
23
32
|
transport: { ...DEFAULT_TRANSPORT },
|
|
33
|
+
cloud: {
|
|
34
|
+
mode: DEFAULT_CLOUD.mode,
|
|
35
|
+
broker: { ...DEFAULT_CLOUD.broker },
|
|
36
|
+
},
|
|
24
37
|
scenes: [],
|
|
25
38
|
};
|
|
26
39
|
}
|
|
@@ -134,6 +147,22 @@ function normalizePlatformConfig(config) {
|
|
|
134
147
|
...(config?.transport ?? {}),
|
|
135
148
|
kind: "local",
|
|
136
149
|
};
|
|
150
|
+
const cloud = {
|
|
151
|
+
mode: config?.cloud?.mode === "local_plus_cloud" ? "local_plus_cloud" : "local_only",
|
|
152
|
+
broker: {
|
|
153
|
+
...DEFAULT_CLOUD_BROKER,
|
|
154
|
+
...(config?.cloud?.broker ?? {}),
|
|
155
|
+
url: typeof config?.cloud?.broker?.url === "string" ? config.cloud.broker.url.trim() : undefined,
|
|
156
|
+
apiKey: typeof config?.cloud?.broker?.apiKey === "string" ? config.cloud.broker.apiKey.trim() : undefined,
|
|
157
|
+
timeoutMs: Math.max(1000, asNumber(config?.cloud?.broker?.timeoutMs, DEFAULT_CLOUD_BROKER.timeoutMs)),
|
|
158
|
+
routeFavorites: typeof config?.cloud?.broker?.routeFavorites === "boolean"
|
|
159
|
+
? config.cloud.broker.routeFavorites
|
|
160
|
+
: DEFAULT_CLOUD_BROKER.routeFavorites,
|
|
161
|
+
routePlaylists: typeof config?.cloud?.broker?.routePlaylists === "boolean"
|
|
162
|
+
? config.cloud.broker.routePlaylists
|
|
163
|
+
: DEFAULT_CLOUD_BROKER.routePlaylists,
|
|
164
|
+
},
|
|
165
|
+
};
|
|
137
166
|
return {
|
|
138
167
|
...defaults,
|
|
139
168
|
...config,
|
|
@@ -147,6 +176,7 @@ function normalizePlatformConfig(config) {
|
|
|
147
176
|
: defaults.logLevel,
|
|
148
177
|
defaultHouseholdId: typeof config?.defaultHouseholdId === "string" ? config.defaultHouseholdId : undefined,
|
|
149
178
|
transport,
|
|
179
|
+
cloud,
|
|
150
180
|
scenes: Array.isArray(config?.scenes) ? config.scenes.map((scene) => normalizeScene(scene)) : [],
|
|
151
181
|
};
|
|
152
182
|
}
|
|
@@ -187,7 +217,7 @@ function validateSource(scene, household, transport, result) {
|
|
|
187
217
|
}
|
|
188
218
|
if (favorite.playable === false) {
|
|
189
219
|
result.errors.push(favorite.unsupportedReason
|
|
190
|
-
?? `Favorite "${favorite.name}" is not playable through the active local transport.`);
|
|
220
|
+
?? `Favorite "${favorite.name}" is not playable through the active local transport. Use Local Only scenes for line-in and directly playable favorites, or add a Sonos cloud broker in a future Local + Cloud setup.`);
|
|
191
221
|
}
|
|
192
222
|
return;
|
|
193
223
|
}
|
package/dist/src/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"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"}
|
package/dist/src/types.d.ts
CHANGED
|
@@ -4,6 +4,7 @@ export declare const PLATFORM_NAME = "SonosScenes";
|
|
|
4
4
|
export type LogLevel = "debug" | "info" | "warn" | "error";
|
|
5
5
|
export type SceneSourceKind = "favorite" | "line_in" | "tv";
|
|
6
6
|
export type SceneTrigger = "on" | "off" | "test";
|
|
7
|
+
export type CloudControlMode = "local_only" | "local_plus_cloud";
|
|
7
8
|
export interface FavoriteSource {
|
|
8
9
|
kind: "favorite";
|
|
9
10
|
favoriteId: string;
|
|
@@ -56,12 +57,24 @@ export interface LocalTransportConfig {
|
|
|
56
57
|
requestTimeoutMs: number;
|
|
57
58
|
allowTvSource: boolean;
|
|
58
59
|
}
|
|
60
|
+
export interface CloudBrokerConfig {
|
|
61
|
+
url?: string;
|
|
62
|
+
apiKey?: string;
|
|
63
|
+
timeoutMs: number;
|
|
64
|
+
routeFavorites: boolean;
|
|
65
|
+
routePlaylists: boolean;
|
|
66
|
+
}
|
|
67
|
+
export interface SonosCloudConfig {
|
|
68
|
+
mode: CloudControlMode;
|
|
69
|
+
broker: CloudBrokerConfig;
|
|
70
|
+
}
|
|
59
71
|
export interface ScenesPlatformConfig extends PlatformConfig {
|
|
60
72
|
platform: typeof PLATFORM_NAME;
|
|
61
73
|
name: string;
|
|
62
74
|
logLevel: LogLevel;
|
|
63
75
|
defaultHouseholdId?: string;
|
|
64
76
|
transport: LocalTransportConfig;
|
|
77
|
+
cloud: SonosCloudConfig;
|
|
65
78
|
scenes: SceneDefinition[];
|
|
66
79
|
}
|
|
67
80
|
export interface SonosHouseholdSummary {
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { CloudBrokerClient } from "../cloud/brokerClient";
|
|
1
2
|
import type { SceneDefinition, SceneRunResult, ScenesPlatformConfig, TopologySnapshot, ValidationResult } from "../types";
|
|
2
3
|
export declare function createDefaultUiConfig(): ScenesPlatformConfig;
|
|
3
4
|
export declare function discoverForUi(configInput: Partial<ScenesPlatformConfig> | undefined): Promise<{
|
|
@@ -9,3 +10,9 @@ export declare function validateSceneForUi(configInput: Partial<ScenesPlatformCo
|
|
|
9
10
|
snapshot: TopologySnapshot;
|
|
10
11
|
}>;
|
|
11
12
|
export declare function runTestForUi(configInput: Partial<ScenesPlatformConfig> | undefined, sceneInput: Partial<SceneDefinition>): Promise<SceneRunResult>;
|
|
13
|
+
export declare function checkBrokerForUi(configInput: Partial<ScenesPlatformConfig> | undefined): Promise<{
|
|
14
|
+
configured: boolean;
|
|
15
|
+
url?: string;
|
|
16
|
+
status?: Awaited<ReturnType<CloudBrokerClient["getStatus"]>>;
|
|
17
|
+
error?: string;
|
|
18
|
+
}>;
|
package/dist/src/ui/serverApi.js
CHANGED
|
@@ -4,7 +4,9 @@ exports.createDefaultUiConfig = createDefaultUiConfig;
|
|
|
4
4
|
exports.discoverForUi = discoverForUi;
|
|
5
5
|
exports.validateSceneForUi = validateSceneForUi;
|
|
6
6
|
exports.runTestForUi = runTestForUi;
|
|
7
|
+
exports.checkBrokerForUi = checkBrokerForUi;
|
|
7
8
|
const config_1 = require("../config");
|
|
9
|
+
const brokerClient_1 = require("../cloud/brokerClient");
|
|
8
10
|
const discoveryService_1 = require("../discoveryService");
|
|
9
11
|
const logger_1 = require("../logger");
|
|
10
12
|
const sceneRunner_1 = require("../sceneRunner");
|
|
@@ -49,4 +51,28 @@ async function runTestForUi(configInput, sceneInput) {
|
|
|
49
51
|
const scene = (0, config_1.normalizeScene)(sceneInput);
|
|
50
52
|
return services.sceneRunner.runTest(scene);
|
|
51
53
|
}
|
|
54
|
+
async function checkBrokerForUi(configInput) {
|
|
55
|
+
const config = (0, config_1.normalizePlatformConfig)(configInput);
|
|
56
|
+
const client = new brokerClient_1.CloudBrokerClient(config.cloud.broker);
|
|
57
|
+
if (!client.configured) {
|
|
58
|
+
return {
|
|
59
|
+
configured: false,
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
try {
|
|
63
|
+
const status = await client.getStatus();
|
|
64
|
+
return {
|
|
65
|
+
configured: true,
|
|
66
|
+
url: client.baseUrl,
|
|
67
|
+
status,
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
catch (error) {
|
|
71
|
+
return {
|
|
72
|
+
configured: true,
|
|
73
|
+
url: client.baseUrl,
|
|
74
|
+
error: error instanceof Error ? error.message : String(error),
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
}
|
|
52
78
|
//# sourceMappingURL=serverApi.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serverApi.js","sourceRoot":"","sources":["../../../src/ui/serverApi.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"serverApi.js","sourceRoot":"","sources":["../../../src/ui/serverApi.ts"],"names":[],"mappings":"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"}
|