matterbridge-dynalite 0.1.2 → 0.2.1

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/CHANGELOG.md CHANGED
@@ -1,5 +1,18 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.2.1 — 2026-11-08
4
+
5
+ - Heard on the bus: an area the bus told only presets of is asked of the gateway once whether it has a temperature, so heating areas are offered as thermostats rather than lights. Until it has answered, both are offered.
6
+ - Matterbridge's own dialog: the password is masked (its form did not take the field's widget inside a list), and the Gateways section points to the plugin's own settings page.
7
+
8
+ ## 0.2.0 — 2026-11-08
9
+
10
+ - A settings page of the plugin's own, opened with the globe button by the plugin in Matterbridge's list (in a large dialog, full screen on a phone, or a tab of its own):
11
+ - gateways, areas and channels laid out compactly, each area on one row, with only the fields its type uses;
12
+ - "Test connection" tries the gateway's web pages and its DyNet port before saving, and says when a port connects but has no routes;
13
+ - "Heard on the bus" lists every area the bus has told of since start, with its channels, presets or temperature, to add with a click.
14
+ - Setpoints read "setpoint changed to" when changed at the thermostat, and "setpoint" when only told.
15
+
3
16
  ## 0.1.2 — 2026-10-15
4
17
 
5
18
  - Described as "Matterbridge Signify Dynalite plugin", like the other plugins in Matterbridge's list (it is also the log prefix).
package/README.md CHANGED
@@ -50,6 +50,18 @@ Restart Matterbridge, open the plugin's settings and add your gateway(s).
50
50
 
51
51
  ## Configuration
52
52
 
53
+ ### The settings page
54
+
55
+ The plugin has a settings page of its own: the globe button by the plugin in Matterbridge's plugin list opens it (double-click it for a tab of its own). There you can:
56
+
57
+ - add gateways, areas and channels, each area on one row with only the fields its type uses;
58
+ - **Test connection**: the gateway's web pages and its DyNet port are tried before you save, and a port that connects but carries nothing is pointed out (it needs routes in the gateway);
59
+ - see what is **heard on the bus**: every area since the plugin started, with its channels, presets or temperature, added with one click.
60
+
61
+ Saved settings take effect when Matterbridge restarts. Matterbridge's own configuration dialog edits the same settings.
62
+
63
+ ### The settings file
64
+
53
65
  Everything is set in the plugin's settings in the Matterbridge frontend, and saved as `matterbridge-dynalite.config.json`:
54
66
 
55
67
  ```json
@@ -0,0 +1,147 @@
1
+ /* Matterbridge's own colours when the page is shown in its dialog (app.js copies
2
+ them from the parent page); these when it is opened on its own. */
3
+ :root {
4
+ --primary-color: #2196f3;
5
+ --main-bg-color: #26292d;
6
+ --div-bg-color: #1b1d21;
7
+ --main-text-color: #fff;
8
+ --div-border-color: color-mix(in srgb, var(--main-text-color) 18%, transparent);
9
+ --main-grey-color: #9a9a9a;
10
+ --ok: #22c55e;
11
+ --bad: #ef4444;
12
+ --warn: #f59e0b;
13
+ color-scheme: dark;
14
+ }
15
+ @media (prefers-color-scheme: light) {
16
+ :root:not([data-from-parent]) {
17
+ --main-bg-color: #f0f0f0;
18
+ --div-bg-color: #fff;
19
+ --main-text-color: #212121;
20
+ --main-grey-color: #616161;
21
+ color-scheme: light;
22
+ }
23
+ }
24
+
25
+ * { box-sizing: border-box; }
26
+ html, body { margin: 0; }
27
+ body {
28
+ background: var(--div-bg-color);
29
+ color: var(--main-text-color);
30
+ font: 14px/1.45 Roboto, system-ui, -apple-system, "Segoe UI", sans-serif;
31
+ padding: 16px 16px 84px;
32
+ }
33
+ h1 { font-size: 20px; margin: 0; }
34
+ h2 { font-size: 16px; margin: 0; }
35
+ h3 { font-size: 13px; margin: 0; text-transform: uppercase; letter-spacing: 0.04em; color: var(--main-grey-color); }
36
+ p { margin: 4px 0 0; }
37
+ .muted { color: var(--main-grey-color); font-size: 13px; }
38
+ .top { margin-bottom: 16px; }
39
+
40
+ .card {
41
+ border: 1px solid var(--div-border-color);
42
+ border-radius: 10px;
43
+ padding: 16px;
44
+ margin-bottom: 16px;
45
+ background: color-mix(in srgb, var(--main-bg-color) 35%, var(--div-bg-color));
46
+ }
47
+ .card-head { display: flex; align-items: center; gap: 12px; margin-bottom: 12px; }
48
+ .card-head h2 { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
49
+
50
+ .grid { display: grid; gap: 12px; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); }
51
+ label.field { display: flex; flex-direction: column; gap: 4px; font-size: 12px; color: var(--main-grey-color); min-width: 0; }
52
+ label.check { display: inline-flex; align-items: center; gap: 6px; font-size: 13px; cursor: pointer; }
53
+ .hint { font-size: 12px; color: var(--main-grey-color); }
54
+
55
+ input, select {
56
+ font: inherit;
57
+ color: var(--main-text-color);
58
+ background: var(--div-bg-color);
59
+ border: 1px solid var(--div-border-color);
60
+ border-radius: 6px;
61
+ padding: 7px 9px;
62
+ min-width: 0;
63
+ width: 100%;
64
+ }
65
+ input[type="checkbox"] { width: auto; accent-color: var(--primary-color); }
66
+ input:focus, select:focus { outline: 2px solid color-mix(in srgb, var(--primary-color) 60%, transparent); outline-offset: 0; }
67
+ input.num { width: 5.5em; }
68
+
69
+ button {
70
+ font: inherit;
71
+ font-size: 13px;
72
+ border-radius: 6px;
73
+ padding: 7px 12px;
74
+ border: 1px solid var(--div-border-color);
75
+ background: transparent;
76
+ color: var(--main-text-color);
77
+ cursor: pointer;
78
+ white-space: nowrap;
79
+ }
80
+ button:hover:not(:disabled) { border-color: var(--primary-color); }
81
+ button:disabled { opacity: 0.45; cursor: default; }
82
+ button.primary { background: var(--primary-color); border-color: var(--primary-color); color: #fff; font-weight: 600; }
83
+ button.danger:hover:not(:disabled) { border-color: var(--bad); color: var(--bad); }
84
+ button.small { padding: 3px 8px; font-size: 12px; }
85
+ button.icon { padding: 3px 8px; line-height: 1; }
86
+
87
+ details { margin-top: 12px; }
88
+ summary { cursor: pointer; color: var(--main-grey-color); font-size: 13px; }
89
+ details[open] summary { margin-bottom: 10px; }
90
+
91
+ .section { margin-top: 18px; }
92
+ .section-head { display: flex; align-items: center; gap: 10px; margin-bottom: 8px; }
93
+ .section-head h3 { flex: 1; }
94
+
95
+ /* Areas: one row each; on a narrow screen the row folds. */
96
+ .area {
97
+ display: grid;
98
+ grid-template-columns: 5.5em minmax(8em, 1fr) 8.5em minmax(14em, 2fr) auto;
99
+ gap: 8px;
100
+ align-items: start;
101
+ padding: 10px 0;
102
+ border-top: 1px solid var(--div-border-color);
103
+ }
104
+ .area .what { display: flex; flex-direction: column; gap: 6px; }
105
+ .chips { display: flex; flex-wrap: wrap; gap: 6px; }
106
+ .chip {
107
+ display: inline-flex; align-items: center; gap: 6px;
108
+ border: 1px solid var(--div-border-color); border-radius: 999px;
109
+ padding: 2px 4px 2px 10px; font-size: 12px; background: var(--div-bg-color);
110
+ }
111
+ .chip input:not([type="checkbox"]) { border: none; padding: 2px 0; background: transparent; width: 9em; font-size: 12px; }
112
+ .chip .check { font-size: 12px; color: var(--main-grey-color); gap: 4px; }
113
+ .chip .no { color: var(--main-grey-color); font-variant-numeric: tabular-nums; }
114
+ .chip button { border: none; padding: 0 6px; }
115
+ .inline { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 10px; font-size: 13px; }
116
+ .inline input.num { padding: 4px 6px; }
117
+
118
+ .result { margin-top: 10px; display: flex; flex-direction: column; gap: 4px; font-size: 13px; }
119
+ .ok { color: var(--ok); }
120
+ .bad { color: var(--bad); }
121
+ .warn { color: var(--warn); }
122
+
123
+ .seen { display: flex; flex-direction: column; }
124
+ .seen-row { display: grid; grid-template-columns: 5.5em 1fr auto; gap: 8px; align-items: center; padding: 6px 0; border-top: 1px solid var(--div-border-color); font-size: 13px; }
125
+ .seen-row .acts { display: flex; gap: 6px; flex-wrap: wrap; justify-content: flex-end; }
126
+ .tag { font-size: 11px; border-radius: 4px; padding: 1px 6px; border: 1px solid var(--div-border-color); color: var(--main-grey-color); }
127
+
128
+ .problems { border-left: 3px solid var(--warn); padding: 6px 10px; margin-bottom: 16px; font-size: 13px; }
129
+ .problems li { margin: 2px 0; }
130
+
131
+ .bar {
132
+ position: fixed; left: 0; right: 0; bottom: 0;
133
+ display: flex; align-items: center; gap: 10px;
134
+ padding: 12px 16px;
135
+ background: var(--div-bg-color);
136
+ border-top: 1px solid var(--div-border-color);
137
+ }
138
+ .bar #status { flex: 1; min-width: 0; }
139
+
140
+ @media (max-width: 720px) {
141
+ .area { grid-template-columns: 5em 1fr auto; }
142
+ .area .type { grid-column: 1 / 3; }
143
+ .area .what { grid-column: 1 / -1; }
144
+ .area .del { grid-row: 1; grid-column: 3; }
145
+ .seen-row { grid-template-columns: 4.5em 1fr; }
146
+ .seen-row .acts { grid-column: 1 / -1; justify-content: flex-start; }
147
+ }
@@ -0,0 +1,410 @@
1
+ // The plugin's own settings page: served by Matterbridge at
2
+ // /plugins/matterbridge-dynalite/ and shown in its dialog (or a tab of its own).
3
+ // It reads and saves the gateways through the plugin's API (platform.onFetch),
4
+ // tries a gateway's settings before they are saved, and offers the areas and
5
+ // channels heard on the bus, to add with a click. Plain JavaScript, no build.
6
+
7
+ const api = (path, init) =>
8
+ fetch(`api/${path}`, { headers: { 'Content-Type': 'application/json' }, ...init }).then(async (r) => {
9
+ if (!r.ok) throw new Error((await r.json().catch(() => ({}))).error ?? `${r.status} ${r.statusText}`);
10
+ return r.json();
11
+ });
12
+
13
+ let gateways = [];
14
+ let saved = '[]';
15
+ let seen = [];
16
+ const tests = new Map(); // gateway index → result, or 'busy'
17
+ const openMore = new Set(); // gateways whose "More gateway settings" is open
18
+
19
+ // -- look: Matterbridge's colours when inside its dialog -----------------------
20
+
21
+ function takeParentColours() {
22
+ try {
23
+ const parent = window.parent !== window ? window.parent.document : null;
24
+ if (!parent) return;
25
+ const css = getComputedStyle(parent.body);
26
+ // Not its border colour: in its dark theme that is the background's own.
27
+ const names = ['--primary-color', '--main-bg-color', '--div-bg-color', '--main-text-color', '--main-grey-color'];
28
+ let any = false;
29
+ for (const n of names) {
30
+ const v = css.getPropertyValue(n).trim();
31
+ if (v) {
32
+ document.documentElement.style.setProperty(n, v);
33
+ any = true;
34
+ }
35
+ }
36
+ if (any) document.documentElement.setAttribute('data-from-parent', '');
37
+ } catch {
38
+ // another origin: keep our own colours
39
+ }
40
+ }
41
+
42
+ // -- small DOM helpers ------------------------------------------------------------
43
+
44
+ function h(tag, attrs = {}, ...children) {
45
+ const el = document.createElement(tag);
46
+ for (const [k, v] of Object.entries(attrs)) {
47
+ if (v === undefined || v === null || v === false) continue;
48
+ if (k.startsWith('on')) el.addEventListener(k.slice(2), v);
49
+ else if (k === 'value') el.value = v;
50
+ else if (k === 'checked') el.checked = v;
51
+ else el.setAttribute(k, v === true ? '' : v);
52
+ }
53
+ for (const c of children.flat()) if (c !== null && c !== undefined && c !== false) el.append(c);
54
+ return el;
55
+ }
56
+
57
+ const num = (v) => (v === '' || v === null || v === undefined || Number.isNaN(Number(v)) ? undefined : Number(v));
58
+
59
+ function field(label, input, hint) {
60
+ return h('label', { class: 'field' }, label, input, hint ? h('span', { class: 'hint' }, hint) : null);
61
+ }
62
+
63
+ function text(obj, key, attrs = {}) {
64
+ return h('input', { value: obj[key] ?? '', ...attrs, oninput: (e) => set(obj, key, e.target.value.trim() || undefined) });
65
+ }
66
+
67
+ function number(obj, key, attrs = {}) {
68
+ return h('input', { type: 'number', inputmode: 'numeric', value: obj[key] ?? '', ...attrs, oninput: (e) => set(obj, key, num(e.target.value)) });
69
+ }
70
+
71
+ function check(obj, key, label, fallback = false) {
72
+ return h('label', { class: 'check' }, h('input', { type: 'checkbox', checked: obj[key] ?? fallback, onchange: (e) => set(obj, key, e.target.checked) }), label);
73
+ }
74
+
75
+ function set(obj, key, value) {
76
+ if (value === undefined) delete obj[key];
77
+ else obj[key] = value;
78
+ changed();
79
+ }
80
+
81
+ // -- state ------------------------------------------------------------------------
82
+
83
+ function changed() {
84
+ const dirty = JSON.stringify(gateways) !== saved;
85
+ document.getElementById('save').disabled = !dirty;
86
+ status(dirty ? 'Unsaved changes.' : '');
87
+ }
88
+
89
+ function status(message, cls = 'muted') {
90
+ const el = document.getElementById('status');
91
+ el.textContent = message;
92
+ el.className = cls;
93
+ }
94
+
95
+ async function load() {
96
+ const { gateways: g, problems } = await api('config');
97
+ gateways = JSON.parse(JSON.stringify(g ?? []));
98
+ saved = JSON.stringify(gateways);
99
+ render(problems ?? []);
100
+ changed();
101
+ }
102
+
103
+ async function save() {
104
+ const button = document.getElementById('save');
105
+ button.disabled = true;
106
+ status('Saving …');
107
+ try {
108
+ const { saved: ok, problems } = await api('config', { method: 'PUT', body: JSON.stringify({ gateways }) });
109
+ if (!ok) throw new Error((problems ?? []).join(' '));
110
+ saved = JSON.stringify(gateways);
111
+ render(problems ?? []);
112
+ status('Saved. Restart Matterbridge to apply the new settings.', 'ok');
113
+ } catch (err) {
114
+ status(`Not saved: ${err.message}`, 'bad');
115
+ button.disabled = false;
116
+ }
117
+ }
118
+
119
+ async function refreshSeen() {
120
+ try {
121
+ seen = await api('seen');
122
+ } catch {
123
+ seen = [];
124
+ }
125
+ for (const [i, gw] of gateways.entries()) {
126
+ const box = document.getElementById(`seen-${i}`);
127
+ if (box) box.replaceWith(seenPanel(gw, i));
128
+ }
129
+ }
130
+
131
+ // -- rendering --------------------------------------------------------------------
132
+
133
+ function render(problems = []) {
134
+ const app = document.getElementById('app');
135
+ const parts = [
136
+ problems.length ? h('ul', { class: 'problems' }, problems.map((p) => h('li', {}, p))) : null,
137
+ gateways.length
138
+ ? gateways.map((gw, i) => gatewayCard(gw, i))
139
+ : h('div', { class: 'card' }, h('h2', {}, 'No gateway yet'), h('p', { class: 'muted' }, 'Add your Dynalite Ethernet gateway (PDEG, DDNG and similar) to begin.')),
140
+ ];
141
+ app.replaceChildren(...parts.flat().filter(Boolean));
142
+ }
143
+
144
+ function gatewayCard(gw, i) {
145
+ gw.areas ??= [];
146
+ const result = tests.get(i);
147
+ return h(
148
+ 'section',
149
+ { class: 'card' },
150
+ h(
151
+ 'div',
152
+ { class: 'card-head' },
153
+ h('h2', {}, gw.name || `Gateway ${i + 1}`),
154
+ h('button', { type: 'button', onclick: () => test(i), disabled: result === 'busy' || !gw.host }, result === 'busy' ? 'Testing …' : 'Test connection'),
155
+ h('button', {
156
+ type: 'button',
157
+ class: 'danger',
158
+ onclick: () => {
159
+ if (!confirm(`Remove gateway ${gw.name || i + 1} and its areas?`)) return;
160
+ gateways.splice(i, 1);
161
+ tests.clear();
162
+ render();
163
+ changed();
164
+ },
165
+ }, 'Remove'),
166
+ ),
167
+ h(
168
+ 'div',
169
+ { class: 'grid' },
170
+ field('Name', text(gw, 'name', { placeholder: 'Home', required: true }), 'Part of every device\'s identity: keep it once set.'),
171
+ field('Address', text(gw, 'host', { placeholder: '192.168.1.50', required: true }), 'The gateway\'s web pages: an IP or host name.'),
172
+ field('DyNet TCP port', number(gw, 'dynetPort', { min: 1, max: 65535, placeholder: 'e.g. 50000' }), 'For live updates. Empty: polled only.'),
173
+ ),
174
+ result && result !== 'busy' ? testResult(result) : null,
175
+ h(
176
+ 'details',
177
+ { open: openMore.has(i), ontoggle: (e) => (e.target.open ? openMore.add(i) : openMore.delete(i)) },
178
+ h('summary', {}, 'More gateway settings'),
179
+ h(
180
+ 'div',
181
+ { class: 'grid' },
182
+ field('Read every area every … minutes', number(gw, 'pollMinutes', { min: 1, max: 1440, placeholder: gw.dynetPort ? '60' : '5' }), 'A check with live updates; the only source without.'),
183
+ field('Fade for commands, seconds', number(gw, 'fadeSeconds', { min: 0, max: 600, step: 0.1, placeholder: '2' })),
184
+ field('Username', text(gw, 'username', { autocomplete: 'off' }), 'Only if the gateway asks for one.'),
185
+ field('Password', h('input', { type: 'password', value: gw.password ?? '', autocomplete: 'new-password', oninput: (e) => set(gw, 'password', e.target.value || undefined) })),
186
+ ),
187
+ h('div', { class: 'inline', style: 'margin-top:10px' }, check(gw, 'https', 'HTTPS'), check(gw, 'allowSelfSigned', 'Accept its self-signed certificate')),
188
+ ),
189
+ areasSection(gw, i),
190
+ seenPanel(gw, i),
191
+ );
192
+ }
193
+
194
+ function testResult(r) {
195
+ const line = (label, x) => h('div', { class: x.ok ? 'ok' : 'bad' }, `${x.ok ? '✓' : '✗'} ${label}: ${x.message}`);
196
+ return h('div', { class: 'result' }, line('Web pages', r.http), r.dynet ? line('DyNet port', r.dynet) : h('div', { class: 'muted' }, 'No DyNet port set: live updates are off.'));
197
+ }
198
+
199
+ async function test(i) {
200
+ tests.set(i, 'busy');
201
+ render();
202
+ try {
203
+ tests.set(i, await api('test', { method: 'POST', body: JSON.stringify(gateways[i]) }));
204
+ } catch (err) {
205
+ tests.set(i, { http: { ok: false, message: err.message } });
206
+ }
207
+ render();
208
+ }
209
+
210
+ function areasSection(gw, gi) {
211
+ const sorted = [...gw.areas].sort((a, b) => (a.area ?? 1e9) - (b.area ?? 1e9));
212
+ return h(
213
+ 'div',
214
+ { class: 'section' },
215
+ h(
216
+ 'div',
217
+ { class: 'section-head' },
218
+ h('h3', {}, `Areas (${gw.areas.length})`),
219
+ h('button', { type: 'button', class: 'small', onclick: () => addArea(gw, { type: 'light' }) }, '+ Light'),
220
+ h('button', { type: 'button', class: 'small', onclick: () => addArea(gw, { type: 'thermostat' }) }, '+ Thermostat'),
221
+ ),
222
+ gw.areas.length ? sorted.map((a) => areaRow(gw, a)) : h('p', { class: 'muted' }, 'None yet. Add one, or pick from what the bus has said below.'),
223
+ );
224
+ }
225
+
226
+ function addArea(gw, area) {
227
+ gw.areas.push(area);
228
+ render();
229
+ changed();
230
+ }
231
+
232
+ function areaRow(gw, a) {
233
+ a.type ??= 'light';
234
+ const what =
235
+ a.type === 'thermostat'
236
+ ? h(
237
+ 'div',
238
+ { class: 'what' },
239
+ h('div', { class: 'inline' }, 'Setpoints from', number(a, 'minSetpoint', { class: 'num', step: 0.5, placeholder: '5' }), 'to', number(a, 'maxSetpoint', { class: 'num', step: 0.5, placeholder: '30' }), '°C'),
240
+ )
241
+ : lightDetails(a);
242
+ return h(
243
+ 'div',
244
+ { class: 'area' },
245
+ field('Area', number(a, 'area', { min: 1, max: 65535, required: true })),
246
+ field('Name', text(a, 'name', { placeholder: 'Kitchen', required: true })),
247
+ h(
248
+ 'div',
249
+ { class: 'type' },
250
+ field(
251
+ 'Type',
252
+ h(
253
+ 'select',
254
+ {
255
+ onchange: (e) => {
256
+ a.type = e.target.value;
257
+ render();
258
+ changed();
259
+ },
260
+ },
261
+ h('option', { value: 'light', selected: a.type !== 'thermostat' }, 'Light'),
262
+ h('option', { value: 'thermostat', selected: a.type === 'thermostat' }, 'Thermostat'),
263
+ ),
264
+ ),
265
+ ),
266
+ what,
267
+ h('button', {
268
+ type: 'button',
269
+ class: 'icon danger del',
270
+ title: 'Remove the area',
271
+ 'aria-label': 'Remove the area',
272
+ onclick: () => {
273
+ gw.areas.splice(gw.areas.indexOf(a), 1);
274
+ render();
275
+ changed();
276
+ },
277
+ }, '✕'),
278
+ );
279
+ }
280
+
281
+ function lightDetails(a) {
282
+ a.channels ??= [];
283
+ const add = h('input', { class: 'num', type: 'number', min: 1, max: 255, placeholder: 'ch' });
284
+ const addChannel = () => {
285
+ const c = num(add.value);
286
+ if (!c || a.channels.some((x) => x.channel === c)) return;
287
+ a.channels.push({ channel: c });
288
+ a.channels.sort((x, y) => x.channel - y.channel);
289
+ render();
290
+ changed();
291
+ };
292
+ add.addEventListener('keydown', (e) => e.key === 'Enter' && addChannel());
293
+ return h(
294
+ 'div',
295
+ { class: 'what' },
296
+ a.channels.length
297
+ ? h(
298
+ 'div',
299
+ { class: 'chips' },
300
+ a.channels.map((c) =>
301
+ h(
302
+ 'span',
303
+ { class: 'chip' },
304
+ h('span', { class: 'no' }, `ch ${c.channel}`),
305
+ h('input', { value: c.name ?? '', placeholder: `${a.name || 'Area'} ${c.channel}`, 'aria-label': `Name of channel ${c.channel}`, oninput: (e) => set(c, 'name', e.target.value.trim() || undefined) }),
306
+ h('label', { class: 'check', title: 'Off for a relay that only switches' }, h('input', { type: 'checkbox', checked: c.dimmable !== false, onchange: (e) => set(c, 'dimmable', e.target.checked ? undefined : false) }), 'dim'),
307
+ h('button', {
308
+ type: 'button',
309
+ title: `Remove channel ${c.channel}`,
310
+ onclick: () => {
311
+ a.channels.splice(a.channels.indexOf(c), 1);
312
+ render();
313
+ changed();
314
+ },
315
+ }, '✕'),
316
+ ),
317
+ ),
318
+ )
319
+ : h(
320
+ 'div',
321
+ { class: 'inline' },
322
+ 'One light, switched by presets: on',
323
+ number(a, 'onPreset', { class: 'num', min: 1, placeholder: '1' }),
324
+ 'off',
325
+ number(a, 'offPreset', { class: 'num', min: 1, placeholder: '4' }),
326
+ ),
327
+ h('div', { class: 'inline' }, add, h('button', { type: 'button', class: 'small', onclick: addChannel }, '+ Channel'), h('span', { class: 'hint' }, a.channels.length ? 'Each channel is its own light.' : 'Or add channels: each its own light.')),
328
+ );
329
+ }
330
+
331
+ function seenPanel(gw, gi) {
332
+ const mine = seen.find((s) => s.gateway === gw.name);
333
+ const box = h('div', { class: 'section', id: `seen-${gi}` });
334
+ const head = h('div', { class: 'section-head' }, h('h3', {}, 'Heard on the bus'));
335
+ if (!mine) {
336
+ box.append(head, h('p', { class: 'muted' }, gw.dynetPort ? 'Nothing yet. Save and restart with a DyNet port set, then use a panel or a scene: what the bus says shows here.' : 'Set a DyNet port to see the areas and channels the bus talks about.'));
337
+ return box;
338
+ }
339
+ if (mine.live !== 'connected') head.append(h('span', { class: 'warn' }, mine.live === 'off' ? 'live updates off' : 'not connected'));
340
+ box.append(head);
341
+ if (!mine.areas.length) {
342
+ box.append(h('p', { class: 'muted' }, 'Nothing heard yet. Press a panel or choose a scene.'));
343
+ return box;
344
+ }
345
+ const rows = mine.areas.map((s) => {
346
+ const known = gw.areas.find((a) => a.area === s.area);
347
+ const bits = [
348
+ !s.thermostat && !s.channels.length && !s.checked ? 'asking the gateway …' : null,
349
+ s.thermostat ? `thermostat${s.temperature !== undefined ? `, ${s.temperature.toFixed(1)} °C` : ''}` : null,
350
+ s.channels.length ? `channels ${s.channels.join(', ')}` : null,
351
+ s.presets.length ? `presets ${s.presets.join(', ')}` : null,
352
+ ].filter(Boolean);
353
+ const acts = known
354
+ ? [h('span', { class: 'tag' }, 'added'), ...addMissingChannels(known, s)]
355
+ : [
356
+ // Presets only, and the gateway not asked yet: heating areas tell presets too, so either.
357
+ s.thermostat || (!s.channels.length && !s.checked)
358
+ ? h('button', { type: 'button', class: 'small', onclick: () => addArea(gw, { area: s.area, name: `Area ${s.area}`, type: 'thermostat' }) }, 'Add as thermostat')
359
+ : null,
360
+ // A thermostat that told no channel is no light.
361
+ s.thermostat && !s.channels.length
362
+ ? null
363
+ : h('button', {
364
+ type: 'button',
365
+ class: 'small',
366
+ onclick: () => addArea(gw, { area: s.area, name: `Area ${s.area}`, type: 'light', channels: s.channels.map((channel) => ({ channel })) }),
367
+ }, s.channels.length ? `Add as light (${s.channels.length} ch)` : 'Add as light'),
368
+ ];
369
+ return h('div', { class: 'seen-row' }, h('strong', {}, `Area ${s.area}`), h('span', { class: 'muted' }, bits.join(' · ') || `${s.count} packet(s)`), h('div', { class: 'acts' }, acts));
370
+ });
371
+ box.append(h('div', { class: 'seen' }, rows));
372
+ return box;
373
+ }
374
+
375
+ function addMissingChannels(area, s) {
376
+ if (area.type !== 'light') return [];
377
+ const have = new Set((area.channels ?? []).map((c) => c.channel));
378
+ const missing = s.channels.filter((c) => !have.has(c));
379
+ if (!missing.length) return [];
380
+ return [
381
+ h('button', {
382
+ type: 'button',
383
+ class: 'small',
384
+ onclick: () => {
385
+ area.channels = [...(area.channels ?? []), ...missing.map((channel) => ({ channel }))].sort((x, y) => x.channel - y.channel);
386
+ render();
387
+ changed();
388
+ },
389
+ }, `+ ch ${missing.join(', ')}`),
390
+ ];
391
+ }
392
+
393
+ // -- start ------------------------------------------------------------------------
394
+
395
+ takeParentColours();
396
+ document.getElementById('save').addEventListener('click', save);
397
+ document.getElementById('add-gateway').addEventListener('click', () => {
398
+ gateways.push({ name: gateways.length ? `Gateway ${gateways.length + 1}` : 'Home', host: '', areas: [] });
399
+ render();
400
+ changed();
401
+ });
402
+ window.addEventListener('beforeunload', (e) => {
403
+ if (JSON.stringify(gateways) !== saved) e.preventDefault();
404
+ });
405
+ load()
406
+ .then(refreshSeen)
407
+ .catch((err) => {
408
+ document.getElementById('app').replaceChildren(h('p', { class: 'bad' }, `Could not read the settings: ${err.message}. Is the plugin running?`));
409
+ });
410
+ setInterval(refreshSeen, 5000);
@@ -0,0 +1,24 @@
1
+ <!doctype html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="utf-8" />
5
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
6
+ <title>Signify Dynalite settings</title>
7
+ <link rel="stylesheet" href="app.css" />
8
+ <script type="module" src="app.js"></script>
9
+ </head>
10
+ <body>
11
+ <header class="top">
12
+ <div>
13
+ <h1>Signify Dynalite</h1>
14
+ <p class="muted">Gateways, areas and channels for Matterbridge. Saved settings take effect when Matterbridge restarts.</p>
15
+ </div>
16
+ </header>
17
+ <main id="app"><p class="muted">Loading …</p></main>
18
+ <footer class="bar">
19
+ <span id="status" role="status" class="muted"></span>
20
+ <button id="add-gateway" class="ghost" type="button">Add gateway</button>
21
+ <button id="save" class="primary" type="button" disabled>Save</button>
22
+ </footer>
23
+ </body>
24
+ </html>
package/dist/bridge.d.ts CHANGED
@@ -32,6 +32,26 @@ export interface Logger {
32
32
  debug(message: string): void;
33
33
  }
34
34
  export type DeviceKind = 'dimmable' | 'onoff' | 'thermostat';
35
+ /** What the bus has said about one area since the plugin started: to find areas and channels to add. */
36
+ export interface SeenArea {
37
+ area: number;
38
+ /** Channels a level was set or told for. */
39
+ channels: number[];
40
+ /** Presets chosen or told. */
41
+ presets: number[];
42
+ /** A temperature or setpoint was told, or the gateway gave one when asked: a thermostat. */
43
+ thermostat: boolean;
44
+ /** The gateway was asked whether it has a temperature (for an area the bus told only presets of). */
45
+ checked: boolean;
46
+ /** The last temperature told, °C. */
47
+ temperature?: number;
48
+ /** Set up in this plugin already (as what). */
49
+ configured?: 'light' | 'thermostat';
50
+ /** When last heard (ISO). */
51
+ last: string;
52
+ /** Packets heard. */
53
+ count: number;
54
+ }
35
55
  export interface Device {
36
56
  id: string;
37
57
  kind: DeviceKind;
@@ -57,6 +77,9 @@ export declare class GatewayBridge {
57
77
  /** The level a channel light was last on at, to go back to when switched on. */
58
78
  private readonly lastLevel;
59
79
  private readonly reads;
80
+ private readonly seen;
81
+ /** Areas whose temperature the gateway was asked for, and the answer (undefined: none). */
82
+ private readonly asked;
60
83
  private pollTimer?;
61
84
  private live?;
62
85
  private stopped;
@@ -69,6 +92,15 @@ export declare class GatewayBridge {
69
92
  start(): Promise<void>;
70
93
  stop(): void;
71
94
  handleEvent(event: DynetEvent): void;
95
+ /** Every area the bus has said something about since start, newest first. */
96
+ seenAreas(): SeenArea[];
97
+ /**
98
+ * Heating areas tell their presets on the bus as lights do, and a temperature
99
+ * only now and then: the gateway is asked, once per area, whether the areas
100
+ * the bus told only presets of have one. Settles when every ask has an answer.
101
+ */
102
+ identify(): Promise<void>;
103
+ private note;
72
104
  /** Read one area again after *fadeSeconds* (plus a little); a newer change puts it off. */
73
105
  readArea(area: number, fadeSeconds?: number): void;
74
106
  refreshAll(): Promise<void>;
package/dist/bridge.js CHANGED
@@ -23,6 +23,9 @@ export class GatewayBridge {
23
23
  /** The level a channel light was last on at, to go back to when switched on. */
24
24
  lastLevel = new Map();
25
25
  reads = new Map();
26
+ seen = new Map();
27
+ /** Areas whose temperature the gateway was asked for, and the answer (undefined: none). */
28
+ asked = new Map();
26
29
  pollTimer;
27
30
  live;
28
31
  stopped = false;
@@ -97,6 +100,7 @@ export class GatewayBridge {
97
100
  handleEvent(event) {
98
101
  if (!('area' in event) || event.area === undefined)
99
102
  return;
103
+ this.note(event.area, event);
100
104
  const devices = this.byArea.get(event.area);
101
105
  if (!devices)
102
106
  return; // not an area this bridge shows
@@ -140,6 +144,69 @@ export class GatewayBridge {
140
144
  return; // questions, the time, what is not known: nothing to show
141
145
  }
142
146
  }
147
+ /** Every area the bus has said something about since start, newest first. */
148
+ seenAreas() {
149
+ return [...this.seen.entries()]
150
+ .map(([area, s]) => {
151
+ const config = this.gateway.areas.find((a) => a.area === area);
152
+ return {
153
+ area,
154
+ channels: [...s.channels].sort((a, b) => a - b),
155
+ presets: [...s.presets].sort((a, b) => a - b),
156
+ thermostat: s.thermostat,
157
+ checked: this.asked.has(area),
158
+ ...(s.temperature !== undefined ? { temperature: s.temperature } : {}),
159
+ ...(config ? { configured: config.type } : {}),
160
+ last: s.last.toISOString(),
161
+ count: s.count,
162
+ };
163
+ })
164
+ .sort((a, b) => a.area - b.area);
165
+ }
166
+ /**
167
+ * Heating areas tell their presets on the bus as lights do, and a temperature
168
+ * only now and then: the gateway is asked, once per area, whether the areas
169
+ * the bus told only presets of have one. Settles when every ask has an answer.
170
+ */
171
+ async identify() {
172
+ const open = [...this.seen.entries()].filter(([area, s]) => !s.thermostat && s.channels.size === 0 && !this.asked.has(area) && !this.gateway.areas.some((a) => a.area === area));
173
+ for (const [area, s] of open) {
174
+ this.asked.set(area, undefined);
175
+ try {
176
+ const t = await this.api.getTemperature(area);
177
+ this.asked.set(area, t);
178
+ if (t !== undefined) {
179
+ s.thermostat = true;
180
+ s.temperature ??= t;
181
+ }
182
+ }
183
+ catch (err) {
184
+ // No answer: taken for no thermostat, and not asked again, to keep the gateway free for commands.
185
+ this.log.debug(`${this.gateway.name}: area ${area}: ${err.message}`);
186
+ }
187
+ }
188
+ }
189
+ note(area, event) {
190
+ let s = this.seen.get(area);
191
+ if (!s) {
192
+ s = { channels: new Set(), presets: new Set(), thermostat: false, last: new Date(), count: 0 };
193
+ this.seen.set(area, s);
194
+ }
195
+ s.last = new Date();
196
+ s.count++;
197
+ if (event.kind === 'channel' && event.channel !== undefined)
198
+ s.channels.add(event.channel);
199
+ if (event.kind === 'request' && event.asks === 'level' && event.channel !== undefined)
200
+ s.channels.add(event.channel);
201
+ if (event.kind === 'preset' && event.channel === undefined)
202
+ s.presets.add(event.preset);
203
+ if (event.kind === 'temperature') {
204
+ s.thermostat = true;
205
+ s.temperature = event.temperature;
206
+ }
207
+ if (event.kind === 'setpoint')
208
+ s.thermostat = true;
209
+ }
143
210
  // -- reading -----------------------------------------------------------------
144
211
  /** Read one area again after *fadeSeconds* (plus a little); a newer change puts it off. */
145
212
  readArea(area, fadeSeconds = 0) {
@@ -1 +1 @@
1
- {"version":3,"file":"bridge.js","sourceRoot":"","sources":["../src/bridge.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bridge.js","sourceRoot":"","sources":["../src/bridge.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAa,QAAQ,EAAgB,MAAM,aAAa,CAAC;AAChE,OAAO,EAAE,QAAQ,EAAmB,WAAW,EAAE,MAAM,YAAY,CAAC;AACpE,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AA0DtC,6FAA6F;AAC7F,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,CAAC;AAClC,+EAA+E;AAC/E,MAAM,CAAC,MAAM,UAAU,GAAG,GAAG,CAAC;AAE9B,MAAM,QAAQ,GAAW,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,SAAS,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,SAAS,EAAE,CAAC;AAElG,MAAM,OAAO,aAAa;IAeb;IACQ;IACA;IACA;IACA;IAlBV,OAAO,GAAa,EAAE,CAAC;IACf,IAAI,GAAG,IAAI,GAAG,EAAkB,CAAC;IACjC,MAAM,GAAG,IAAI,GAAG,EAAoB,CAAC;IACtD,gFAAgF;IAC/D,SAAS,GAAG,IAAI,GAAG,EAAkB,CAAC;IACtC,KAAK,GAAG,IAAI,GAAG,EAA0B,CAAC;IAC1C,IAAI,GAAG,IAAI,GAAG,EAAiI,CAAC;IACjK,2FAA2F;IAC1E,KAAK,GAAG,IAAI,GAAG,EAA8B,CAAC;IACvD,SAAS,CAAkB;IAC3B,IAAI,CAAa;IACjB,OAAO,GAAG,KAAK,CAAC;IAExB,YACW,OAAgB,EACR,GAAe,EACf,IAAgB,EAChB,MAAc,QAAQ,EACtB,SAAS,EAAE,WAAW,EAAE,aAAa,EAAE,SAAS,EAAE,UAAU,EAAE;QAJtE,YAAO,GAAP,OAAO,CAAS;QACR,QAAG,GAAH,GAAG,CAAY;QACf,SAAI,GAAJ,IAAI,CAAY;QAChB,QAAG,GAAH,GAAG,CAAmB;QACtB,WAAM,GAAN,MAAM,CAAwD;QAE/E,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YACjC,MAAM,IAAI,GAAa,EAAE,CAAC;YAC1B,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;gBAC/B,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;YAC3H,CAAC;iBAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACtC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;YACtH,CAAC;iBAAM,CAAC;gBACN,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;oBAC9B,IAAI,CAAC,IAAI,CAAC;wBACR,EAAE,EAAE,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC;wBAChD,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO;wBACvC,IAAI,EAAE,CAAC,CAAC,IAAI;wBACZ,IAAI,EAAE,IAAI,CAAC,IAAI;wBACf,OAAO,EAAE,CAAC,CAAC,OAAO;wBAClB,MAAM,EAAE,IAAI;qBACb,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YACD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YACjC,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;gBACrB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBACrB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;YACzB,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,aAAa;QACf,OAAO,IAAI,CAAC,IAAI,EAAE,SAAS,KAAK,IAAI,CAAC;IACvC,CAAC;IAED,uGAAuG;IACvG,KAAK,CAAC,KAAK;QACT,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACrB,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC;QACzC,IAAI,SAAS,EAAE,CAAC;YACd,IAAI,CAAC,IAAI,GAAG,IAAI,SAAS,CAAC;gBACxB,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE,4CAA4C;gBAC7E,IAAI,EAAE,SAAS;gBACf,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE;oBACb,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;wBAAE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;oBAC5E,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;gBACtB,CAAC;gBACD,WAAW,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,gBAAgB,SAAS,IAAI,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,cAAc,EAAE,CAAC;gBACxH,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,YAAY,CAAC,EAAE,CAAC;aACpE,CAAC,CAAC;YACH,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QACpB,CAAC;QACD,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;QACxB,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,MAAM,CAAC;QAChD,IAAI,CAAC,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,KAAK,IAAI,CAAC,UAAU,EAAE,EAAE,KAAK,CAAC,CAAC;IACpE,CAAC;IAED,IAAI;QACF,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC;QAClB,IAAI,IAAI,CAAC,SAAS;YAAE,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAClD,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;YAAE,YAAY,CAAC,CAAC,CAAC,CAAC;QACrD,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC;IAED,+EAA+E;IAE/E,WAAW,CAAC,KAAiB;QAC3B,IAAI,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS;YAAE,OAAO;QAC3D,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAC7B,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC5C,IAAI,CAAC,OAAO;YAAE,OAAO,CAAC,gCAAgC;QAEtD,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;YACnB,KAAK,aAAa;gBAChB,KAAK,MAAM,CAAC,IAAI,OAAO;oBAAE,IAAI,CAAC,CAAC,IAAI,KAAK,YAAY;wBAAE,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;gBACrH,OAAO;YACT,KAAK,UAAU;gBACb,KAAK,MAAM,CAAC,IAAI,OAAO;oBAAE,IAAI,CAAC,CAAC,IAAI,KAAK,YAAY;wBAAE,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;gBAC/G,OAAO;YACT,KAAK,QAAQ;gBACX,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;oBACxB,IAAI,CAAC,CAAC,IAAI,KAAK,YAAY,IAAI,CAAC,CAAC,OAAO,KAAK,SAAS,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;wBACnH,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;oBACrE,CAAC;gBACH,CAAC;gBACD,+EAA+E;gBAC/E,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,SAAS,CAAC;oBAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;gBAC3G,OAAO;YACT,KAAK,KAAK;gBACR,KAAK,MAAM,CAAC,IAAI,OAAO;oBAAE,IAAI,CAAC,CAAC,IAAI,KAAK,YAAY;wBAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;gBAC3F,OAAO;YACT,KAAK,SAAS,CAAC,CAAC,CAAC;gBACf,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,SAAS,IAAI,CAAC,KAAK,CAAC,OAAO,KAAK,SAAS,IAAI,CAAC,CAAC,OAAO,KAAK,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;gBAC3H,oGAAoG;gBACpG,KAAK,MAAM,CAAC,IAAI,GAAG;oBAAE,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;gBACpD,OAAO;YACT,CAAC;YACD,KAAK,MAAM;gBACT,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;gBAC7B,OAAO;YACT;gBACE,OAAO,CAAC,0DAA0D;QACtE,CAAC;IACH,CAAC;IAED,6EAA6E;IAC7E,SAAS;QACP,OAAO,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;aAC5B,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE;YACjB,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;YAC/D,OAAO;gBACL,IAAI;gBACJ,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;gBAC/C,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;gBAC7C,UAAU,EAAE,CAAC,CAAC,UAAU;gBACxB,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;gBAC7B,GAAG,CAAC,CAAC,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACtE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC9C,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE;gBAC1B,KAAK,EAAE,CAAC,CAAC,KAAK;aACf,CAAC;QACJ,CAAC,CAAC;aACD,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;IACrC,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,QAAQ;QACZ,MAAM,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,MAAM,CAC1C,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CACnI,CAAC;QACF,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC;YAC7B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;YAChC,IAAI,CAAC;gBACH,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;gBAC9C,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;gBACxB,IAAI,CAAC,KAAK,SAAS,EAAE,CAAC;oBACpB,CAAC,CAAC,UAAU,GAAG,IAAI,CAAC;oBACpB,CAAC,CAAC,WAAW,KAAK,CAAC,CAAC;gBACtB,CAAC;YACH,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,kGAAkG;gBAClG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,UAAU,IAAI,KAAM,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;YAClF,CAAC;QACH,CAAC;IACH,CAAC;IAEO,IAAI,CAAC,IAAY,EAAE,KAAiB;QAC1C,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC5B,IAAI,CAAC,CAAC,EAAE,CAAC;YACP,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,GAAG,EAAE,EAAE,OAAO,EAAE,IAAI,GAAG,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;YAC/F,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QACzB,CAAC;QACD,CAAC,CAAC,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;QACpB,CAAC,CAAC,KAAK,EAAE,CAAC;QACV,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS;YAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC3F,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS;YAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACrH,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS;YAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACxF,IAAI,KAAK,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;YACjC,CAAC,CAAC,UAAU,GAAG,IAAI,CAAC;YACpB,CAAC,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC;QACpC,CAAC;QACD,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU;YAAE,CAAC,CAAC,UAAU,GAAG,IAAI,CAAC;IACrD,CAAC;IAED,+EAA+E;IAE/E,2FAA2F;IAC3F,QAAQ,CAAC,IAAY,EAAE,WAAW,GAAG,CAAC;QACpC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACrC,IAAI,OAAO;YAAE,YAAY,CAAC,OAAO,CAAC,CAAC;QACnC,MAAM,CAAC,GAAG,UAAU,CAAC,GAAG,EAAE;YACxB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACxB,KAAK,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,GAAU,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,kBAAkB,IAAI,YAAY,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QACxI,CAAC,EAAE,CAAC,WAAW,IAAI,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QACxD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAC1B,CAAC;IAED,KAAK,CAAC,UAAU;QACd,IAAI,MAAM,GAAG,CAAC,CAAC;QACf,IAAI,KAAK,GAAG,EAAE,CAAC;QACf,KAAK,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC;YAC1D,IAAI,IAAI,CAAC,OAAO;gBAAE,OAAO;YACzB,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,CAAC;gBAAE,MAAM,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YAC3E,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YAC/B,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,EAAE,CAAC;gBACT,KAAK,KAAM,GAAa,CAAC,OAAO,CAAC;gBACjC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,UAAU,IAAI,KAAM,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;YAClF,CAAC;QACH,CAAC;QACD,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YACpD,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,gGAAgG,CAAC,CAAC,CAAC,EAAE,CAAC;YACtK,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,MAAM,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,0BAA0B,KAAK,KAAK,IAAI,EAAE,CAAC,CAAC;QAClH,CAAC;IACH,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,IAAY;QAC5B,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;YAC5C,IAAI,CAAC,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;gBAC5B,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;gBACxD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;gBAClD,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC,CAAC;YACxD,CAAC;iBAAM,IAAI,CAAC,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;gBACnC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;gBACvD,IAAI,KAAK,KAAK,SAAS;oBAAE,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;YACpD,CAAC;iBAAM,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;gBACrC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;gBAC9C,IAAI,MAAM,KAAK,SAAS;oBAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,KAAK,CAAC,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;YACzF,CAAC;QACH,CAAC;IACH,CAAC;IAEO,SAAS,CAAC,CAAS,EAAE,KAAa;QACxC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YACd,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;YAChC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QAC7C,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;IAED,+EAA+E;IAE/E,KAAK,CAAC,OAAO,CAAC,EAAU,EAAE,MAAM,GAAG,IAAI,CAAC,MAAM;QAC5C,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;QACnC,IAAI,CAAC,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;YAC5B,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,KAAK,OAAO;gBAAE,MAAM,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC7F,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC;QACjH,CAAC;QACD,IAAI,CAAC,YAAY,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,EAAU,EAAE,MAAM,GAAG,IAAI,CAAC,MAAM;QAC7C,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;QACnC,IAAI,CAAC,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;YAC5B,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,KAAK,OAAO;gBAAE,MAAM,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QAC9F,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;QACxD,CAAC;QACD,IAAI,CAAC,YAAY,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IAC/B,CAAC;IAED,0DAA0D;IAC1D,KAAK,CAAC,UAAU,CAAC,EAAU,EAAE,OAAe,EAAE,MAAM,GAAG,IAAI,CAAC,MAAM;QAChE,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;QACnC,IAAI,CAAC,CAAC,OAAO,KAAK,SAAS,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO;YAAE,OAAO,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;QAC7H,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QAClD,IAAI,KAAK,GAAG,CAAC;YAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;QAC7C,MAAM,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;QAC1D,IAAI,CAAC,YAAY,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IAC/B,CAAC;IAED,yEAAyE;IACzE,KAAK,CAAC,WAAW,CAAC,EAAU,EAAE,OAAe;QAC3C,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,YAAY,CAAC,CAAC;QACxC,MAAM,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,KAAK,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC;QAC5F,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,WAAW,CAAC,EAAE,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,6BAA6B;QAC9H,MAAM,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAC1C,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAY,MAAM;QAChB,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IACzC,CAAC;IAED,2GAA2G;IACnG,YAAY,CAAC,CAAS,EAAE,MAAc;QAC5C,IAAI,CAAC,IAAI,CAAC,aAAa;YAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC;IAChE,CAAC;IAEO,MAAM,CAAC,EAAU,EAAE,IAA4B;QACrD,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC5B,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,MAAM,IAAI,IAAI,EAAE,EAAE,CAAC,CAAC;QACrG,OAAO,CAAC,CAAC;IACX,CAAC;CACF;AAED,SAAS,KAAK,CAAC,EAAU;IACvB,OAAO,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AAC/C,CAAC"}
package/dist/dynet.js CHANGED
@@ -297,7 +297,8 @@ export function describe(event) {
297
297
  case 'temperature':
298
298
  return `${where}: ${event.temperature.toFixed(2)} °C`;
299
299
  case 'setpoint':
300
- return `${where}: set to ${event.setpoint.toFixed(2)} °C`;
300
+ // 0x56 as it is changed at the thermostat; 0x57 as it is told.
301
+ return `${where}: setpoint${event.packet[2] === 0x56 ? ' changed to' : ''} ${event.setpoint.toFixed(2)} °C`;
301
302
  }
302
303
  }
303
304
  /** The "who are you?" a gateway asks of all devices about every three seconds (DyNet2 0x82): too frequent to log. */
package/dist/dynet.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"dynet.js","sourceRoot":"","sources":["../src/dynet.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dynet.js","sourceRoot":"","sources":["../src/dynet.ts"],"names":[],"mappings":"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"}
@@ -23,6 +23,14 @@ export declare class DynalitePlatform extends MatterbridgeDynamicPlatform {
23
23
  constructor(matterbridge: PlatformMatterbridge, log: AnsiLogger, config: PlatformConfig);
24
24
  onStart(reason?: string): Promise<void>;
25
25
  onConfigure(): Promise<void>;
26
+ /**
27
+ * The settings page's API, at /plugins/matterbridge-dynalite/api/<path>:
28
+ * GET config the gateways as set, and what is wrong with them
29
+ * PUT config save new gateways ({ gateways }); a restart applies them
30
+ * GET seen per gateway, every area the bus has told of since start
31
+ * POST test try a gateway's address and DyNet port before saving
32
+ */
33
+ onFetch(method: string, path?: string, _query?: Record<string, unknown>, body?: unknown): Promise<unknown>;
26
34
  onShutdown(reason?: string): Promise<void>;
27
35
  private createEndpoint;
28
36
  private showLight;
package/dist/platform.js CHANGED
@@ -10,6 +10,7 @@
10
10
  import { dimmableLight, MatterbridgeDynamicPlatform, MatterbridgeEndpoint, onOffLight, thermostat as thermostatDeviceType, } from 'matterbridge';
11
11
  import { GatewayBridge } from './bridge.js';
12
12
  import { readConfig } from './config.js';
13
+ import { probe } from './probe.js';
13
14
  import { GatewayHttp } from './gateway.js';
14
15
  /** Matter levels run 1–254; DynaDash and the gateway speak percent. */
15
16
  export function percentToLevel(percent) {
@@ -89,6 +90,47 @@ export class DynalitePlatform extends MatterbridgeDynamicPlatform {
89
90
  bridge.start().catch((err) => this.log.error(`${bridge.gateway.name}: ${err.message}`));
90
91
  }
91
92
  }
93
+ // -- the plugin's own page (apps/frontend) -----------------------------------
94
+ /**
95
+ * The settings page's API, at /plugins/matterbridge-dynalite/api/<path>:
96
+ * GET config the gateways as set, and what is wrong with them
97
+ * PUT config save new gateways ({ gateways }); a restart applies them
98
+ * GET seen per gateway, every area the bus has told of since start
99
+ * POST test try a gateway's address and DyNet port before saving
100
+ */
101
+ async onFetch(method, path, _query, body) {
102
+ if (path === 'config' && method === 'GET') {
103
+ return { gateways: this.config.gateways ?? [], problems: readConfig(this.config).problems };
104
+ }
105
+ if (path === 'config' && method === 'PUT') {
106
+ const gateways = body?.gateways;
107
+ if (!Array.isArray(gateways))
108
+ return { saved: false, problems: ['No gateways sent.'] };
109
+ const next = { ...this.config, gateways: gateways };
110
+ this.saveConfig(next);
111
+ if (typeof this.wssSendRestartRequired === 'function')
112
+ this.wssSendRestartRequired();
113
+ this.log.info(`Settings saved from the plugin's page (${gateways.length} gateway(s)); restart to apply them`);
114
+ return { saved: true, problems: readConfig(next).problems };
115
+ }
116
+ if (path === 'seen' && method === 'GET') {
117
+ // Not waited for: what the gateway answers shows at the page's next look.
118
+ for (const b of this.bridges)
119
+ void b.identify();
120
+ return this.bridges.map((b) => ({
121
+ gateway: b.gateway.name,
122
+ live: b.gateway.dynetPort ? (b.liveConnected ? 'connected' : 'not connected') : 'off',
123
+ areas: b.seenAreas(),
124
+ }));
125
+ }
126
+ if (path === 'test' && method === 'POST') {
127
+ const s = body;
128
+ if (!s?.host)
129
+ return { http: { ok: false, message: 'No address.' } };
130
+ return probe(s);
131
+ }
132
+ return undefined;
133
+ }
92
134
  async onShutdown(reason) {
93
135
  for (const bridge of this.bridges)
94
136
  bridge.stop();
@@ -1 +1 @@
1
- {"version":3,"file":"platform.js","sourceRoot":"","sources":["../src/platform.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"platform.js","sourceRoot":"","sources":["../src/platform.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Trying a gateway's settings before they are saved: does its web server
3
+ * answer, does its DyNet port take a connection, and does anything come on it?
4
+ * A port that connects but stays silent is one the gateway routes nothing to.
5
+ */
6
+ export interface ProbeSettings {
7
+ host: string;
8
+ https?: boolean;
9
+ allowSelfSigned?: boolean;
10
+ username?: string;
11
+ password?: string;
12
+ dynetPort?: number;
13
+ }
14
+ export interface ProbeResult {
15
+ http: {
16
+ ok: boolean;
17
+ message: string;
18
+ };
19
+ dynet?: {
20
+ ok: boolean;
21
+ message: string;
22
+ bytes: number;
23
+ };
24
+ }
25
+ /** How long the DyNet port is listened to: a gateway asks "who are you?" about every three seconds. */
26
+ export declare const LISTEN_MS = 4000;
27
+ export declare function probe(s: ProbeSettings, listenMs?: number): Promise<ProbeResult>;
package/dist/probe.js ADDED
@@ -0,0 +1,68 @@
1
+ /**
2
+ * Trying a gateway's settings before they are saved: does its web server
3
+ * answer, does its DyNet port take a connection, and does anything come on it?
4
+ * A port that connects but stays silent is one the gateway routes nothing to.
5
+ */
6
+ import net from 'node:net';
7
+ import { GatewayHttp, GatewayTimeoutError, GatewayUnreachableError } from './gateway.js';
8
+ /** How long the DyNet port is listened to: a gateway asks "who are you?" about every three seconds. */
9
+ export const LISTEN_MS = 4000;
10
+ export async function probe(s, listenMs = LISTEN_MS) {
11
+ const result = { http: await probeHttp(s) };
12
+ if (s.dynetPort)
13
+ result.dynet = await probeDynet(s.host.replace(/:\d+$/, ''), s.dynetPort, listenMs);
14
+ return result;
15
+ }
16
+ async function probeHttp(s) {
17
+ const api = new GatewayHttp({
18
+ host: s.host,
19
+ https: s.https,
20
+ allowSelfSigned: s.allowSelfSigned,
21
+ username: s.username,
22
+ password: s.password,
23
+ timeoutMs: 4000,
24
+ });
25
+ try {
26
+ await api.getPreset(1);
27
+ return { ok: true, message: 'The gateway answers.' };
28
+ }
29
+ catch (err) {
30
+ const port = /:(\d+)$/.exec(s.host)?.[1];
31
+ const hint = port && !['80', '443'].includes(port) ? ` Is ${port} its web server? Its web pages are usually on 80.` : '';
32
+ if (err instanceof GatewayUnreachableError)
33
+ return { ok: false, message: `Cannot reach it: ${err.message}.${hint}` };
34
+ if (err instanceof GatewayTimeoutError)
35
+ return { ok: false, message: `No answer in time.${hint}` };
36
+ return { ok: false, message: `${err.message}${hint}` };
37
+ }
38
+ }
39
+ function probeDynet(host, port, listenMs) {
40
+ return new Promise((resolve) => {
41
+ let bytes = 0;
42
+ let connected = false;
43
+ const socket = net.connect({ host, port });
44
+ const done = (r) => {
45
+ clearTimeout(timer);
46
+ socket.destroy();
47
+ resolve(r);
48
+ };
49
+ const timer = setTimeout(() => {
50
+ if (!connected)
51
+ done({ ok: false, message: `No connection to port ${port} in time.`, bytes });
52
+ }, 4000);
53
+ socket.on('connect', () => {
54
+ connected = true;
55
+ clearTimeout(timer);
56
+ setTimeout(() => done(bytes > 0
57
+ ? { ok: true, message: `Port ${port} connects and the gateway sends on it.`, bytes }
58
+ : {
59
+ ok: false,
60
+ message: `Port ${port} connects, but nothing came on it in ${listenMs / 1000} s. In the gateway's routing, route Comm Port 1 (the bus), Internal Messages and the Web Socket port to it.`,
61
+ bytes,
62
+ }), listenMs);
63
+ });
64
+ socket.on('data', (d) => (bytes += d.length));
65
+ socket.on('error', (err) => done({ ok: false, message: `Port ${port}: ${err.message}`, bytes }));
66
+ });
67
+ }
68
+ //# sourceMappingURL=probe.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"probe.js","sourceRoot":"","sources":["../src/probe.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "title": "Matterbridge Dynalite plugin",
3
- "description": "matterbridge-dynalite: Signify Dynalite lights and heating, straight from the Ethernet gateway",
3
+ "description": "Signify Dynalite lights and heating, straight from the Ethernet gateway.",
4
4
  "type": "object",
5
5
  "properties": {
6
6
  "name": { "title": "Plugin Name", "type": "string", "readOnly": true, "ui:widget": "hidden" },
@@ -8,7 +8,7 @@
8
8
  "version": { "title": "Plugin Version", "type": "string", "readOnly": true, "ui:widget": "hidden" },
9
9
  "gateways": {
10
10
  "title": "Gateways",
11
- "description": "One entry per Dynalite Ethernet gateway (PDEG, DDNG and similar).",
11
+ "description": "One entry per Dynalite Ethernet gateway (PDEG, DDNG and similar). Easier: the plugin's own settings page, opened with the globe button by the plugin in the list, tests the gateway and lists the areas and channels heard on the bus, to add with a click.",
12
12
  "type": "array",
13
13
  "items": {
14
14
  "type": "object",
@@ -32,7 +32,7 @@
32
32
  "default": false
33
33
  },
34
34
  "username": { "title": "Username", "description": "Only if the gateway asks for HTTP authentication.", "type": "string" },
35
- "password": { "title": "Password", "type": "string", "ui:widget": "password" },
35
+ "password": { "title": "Password", "type": "string", "format": "password", "ui:widget": "password" },
36
36
  "dynetPort": {
37
37
  "title": "DyNet TCP port (live updates)",
38
38
  "description": "A TCP server port set up on the gateway (connection Trunk, DyNet 1 or DyNet2), e.g. 50000. Changes made anywhere — wall panels, timers, other apps — then show at once. Leave empty to rely on polling. If another program already uses that port, give this plugin a port of its own.",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "matterbridge-dynalite",
3
- "version": "0.1.2",
3
+ "version": "0.2.1",
4
4
  "description": "Matterbridge Signify Dynalite plugin",
5
5
  "author": "https://github.com/jonaskul",
6
6
  "license": "Apache-2.0",
@@ -9,6 +9,7 @@
9
9
  "types": "dist/module.d.ts",
10
10
  "files": [
11
11
  "dist",
12
+ "apps/frontend/build",
12
13
  "matterbridge-dynalite.schema.json",
13
14
  "matterbridge-dynalite.config.json",
14
15
  "README.md",