@nubisco/openbridge 0.35.0 → 0.37.0
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/dist/__tests__/device-health.test.d.ts +2 -0
- package/dist/__tests__/device-health.test.d.ts.map +1 -0
- package/dist/__tests__/device-health.test.js +92 -0
- package/dist/__tests__/device-health.test.js.map +1 -0
- package/dist/__tests__/server.test.js +78 -0
- package/dist/__tests__/server.test.js.map +1 -1
- package/dist/device-health.d.ts +54 -0
- package/dist/device-health.d.ts.map +1 -0
- package/dist/device-health.js +85 -0
- package/dist/device-health.js.map +1 -0
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +25 -15
- package/dist/server.js.map +1 -1
- package/package.json +5 -5
- package/ui-dist/assets/index-Bf3SQ8XP.css +32 -0
- package/ui-dist/assets/index-CJQyn8B3.js +106 -0
- package/ui-dist/index.html +2 -2
- package/ui-dist/assets/index-2VYwkqny.js +0 -106
- package/ui-dist/assets/index-ChxBGoRY.css +0 -32
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"device-health.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/device-health.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import { describe, it, expect } from 'vitest';
|
|
2
|
+
import { assessDeviceHealth, silenceThresholdSeconds, MIN_SILENCE_SECONDS, DEFAULT_INTERVAL_SECONDS, SILENT_INTERVALS, } from '../device-health.js';
|
|
3
|
+
const NOW = Date.parse('2026-09-23T12:00:00.000Z');
|
|
4
|
+
const agoSeconds = (s) => new Date(NOW - s * 1000).toISOString();
|
|
5
|
+
describe('silenceThresholdSeconds', () => {
|
|
6
|
+
it('never drops below the floor, however fast the device polls', () => {
|
|
7
|
+
// A gate polled every second must not be called stale four seconds later.
|
|
8
|
+
expect(silenceThresholdSeconds(1)).toBe(MIN_SILENCE_SECONDS);
|
|
9
|
+
expect(silenceThresholdSeconds(10)).toBe(MIN_SILENCE_SECONDS);
|
|
10
|
+
});
|
|
11
|
+
it('scales with a slow device so it is not permanently accused', () => {
|
|
12
|
+
// Five minutes between reports is healthy for some devices. A fixed
|
|
13
|
+
// two-minute threshold would mark it stale essentially always.
|
|
14
|
+
expect(silenceThresholdSeconds(300)).toBe(300 * SILENT_INTERVALS);
|
|
15
|
+
});
|
|
16
|
+
it('falls back to a default when the plugin declares nothing', () => {
|
|
17
|
+
expect(silenceThresholdSeconds()).toBe(Math.max(MIN_SILENCE_SECONDS, DEFAULT_INTERVAL_SECONDS * SILENT_INTERVALS));
|
|
18
|
+
});
|
|
19
|
+
});
|
|
20
|
+
describe('assessDeviceHealth', () => {
|
|
21
|
+
it('is ok while telemetry is arriving', () => {
|
|
22
|
+
const health = assessDeviceHealth({
|
|
23
|
+
telemetry: { _updatedAt: agoSeconds(5) },
|
|
24
|
+
pluginStatus: 'running',
|
|
25
|
+
now: NOW,
|
|
26
|
+
});
|
|
27
|
+
expect(health.status).toBe('ok');
|
|
28
|
+
expect(health.reason).toBeNull();
|
|
29
|
+
});
|
|
30
|
+
it('tolerates a missed poll rather than flickering', () => {
|
|
31
|
+
// One interval late, on a 10s device. Well inside the floor.
|
|
32
|
+
const health = assessDeviceHealth({
|
|
33
|
+
telemetry: { _updatedAt: agoSeconds(20) },
|
|
34
|
+
intervalSeconds: 10,
|
|
35
|
+
pluginStatus: 'running',
|
|
36
|
+
now: NOW,
|
|
37
|
+
});
|
|
38
|
+
expect(health.status).toBe('ok');
|
|
39
|
+
});
|
|
40
|
+
it('reports a device that has gone quiet, and says how long for', () => {
|
|
41
|
+
// The shape of the real outage: the plugin kept running, the device
|
|
42
|
+
// stopped answering, and nothing in the UI said so for 36 hours.
|
|
43
|
+
const health = assessDeviceHealth({
|
|
44
|
+
telemetry: { _updatedAt: agoSeconds(36 * 3600) },
|
|
45
|
+
intervalSeconds: 10,
|
|
46
|
+
pluginStatus: 'running',
|
|
47
|
+
now: NOW,
|
|
48
|
+
});
|
|
49
|
+
expect(health.status).toBe('stale');
|
|
50
|
+
expect(health.silentForSeconds).toBeCloseTo(36 * 3600, 0);
|
|
51
|
+
expect(health.reason).toMatch(/36 hours/);
|
|
52
|
+
// The two causes actually seen, named so the reader has somewhere to start.
|
|
53
|
+
expect(health.reason).toMatch(/address/i);
|
|
54
|
+
});
|
|
55
|
+
it('blames the plugin when the plugin is the reason, not the device', () => {
|
|
56
|
+
const health = assessDeviceHealth({
|
|
57
|
+
telemetry: { _updatedAt: agoSeconds(99999) },
|
|
58
|
+
pluginStatus: 'error',
|
|
59
|
+
now: NOW,
|
|
60
|
+
});
|
|
61
|
+
expect(health.status).toBe('stale');
|
|
62
|
+
expect(health.reason).toMatch(/plugin is error/);
|
|
63
|
+
// Saying "silent for a day" would be true and useless: nothing is polling.
|
|
64
|
+
expect(health.reason).not.toMatch(/No response/);
|
|
65
|
+
});
|
|
66
|
+
it('treats a device that has never reported as unknown, not as broken', () => {
|
|
67
|
+
// Covers both a device still starting up and a plugin that reports no
|
|
68
|
+
// telemetry at all. Neither is a fault, and neither should raise an alarm.
|
|
69
|
+
const health = assessDeviceHealth({ telemetry: {}, pluginStatus: 'running', now: NOW });
|
|
70
|
+
expect(health.status).toBe('unknown');
|
|
71
|
+
expect(health.reason).toBeNull();
|
|
72
|
+
expect(health.lastSeen).toBeNull();
|
|
73
|
+
});
|
|
74
|
+
it('ignores a stamp it cannot parse instead of inventing an age', () => {
|
|
75
|
+
const health = assessDeviceHealth({
|
|
76
|
+
telemetry: { _updatedAt: 'not a date' },
|
|
77
|
+
pluginStatus: 'running',
|
|
78
|
+
now: NOW,
|
|
79
|
+
});
|
|
80
|
+
expect(health.status).toBe('unknown');
|
|
81
|
+
});
|
|
82
|
+
it('never reports negative silence when a device clock runs ahead', () => {
|
|
83
|
+
const health = assessDeviceHealth({
|
|
84
|
+
telemetry: { _updatedAt: new Date(NOW + 60_000).toISOString() },
|
|
85
|
+
pluginStatus: 'running',
|
|
86
|
+
now: NOW,
|
|
87
|
+
});
|
|
88
|
+
expect(health.status).toBe('ok');
|
|
89
|
+
expect(health.silentForSeconds).toBe(0);
|
|
90
|
+
});
|
|
91
|
+
});
|
|
92
|
+
//# sourceMappingURL=device-health.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"device-health.test.js","sourceRoot":"","sources":["../../src/__tests__/device-health.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -152,6 +152,84 @@ describe('OpenBridge Server API', () => {
|
|
|
152
152
|
await server.close();
|
|
153
153
|
}
|
|
154
154
|
});
|
|
155
|
+
it("carries a device's declared actions through to the UI, and runs one", async () => {
|
|
156
|
+
// A reboot is spelled differently on every device family and missing from
|
|
157
|
+
// most, so the plugin declares what it has and the product renders only
|
|
158
|
+
// that. The descriptor is what makes the button appear; the control that
|
|
159
|
+
// shares its id is what runs.
|
|
160
|
+
writeConfig(baseConfig);
|
|
161
|
+
const { createServer } = await import('../server.js');
|
|
162
|
+
const { PluginRegistry } = await import('@nubisco/openbridge-core');
|
|
163
|
+
const registry = new PluginRegistry();
|
|
164
|
+
const instance = registry.register({ manifest: { name: 'actions-plugin', version: '1.0.0' } });
|
|
165
|
+
registry.updateStatus('actions-plugin', 'running');
|
|
166
|
+
instance.devices = {
|
|
167
|
+
'dev-1': {
|
|
168
|
+
id: 'dev-1',
|
|
169
|
+
name: 'Pool Filter',
|
|
170
|
+
widgetType: 'switch',
|
|
171
|
+
pluginId: 'actions-plugin',
|
|
172
|
+
actions: [{ id: 'reboot', label: 'Reboot', confirm: 'The whole box restarts.' }],
|
|
173
|
+
},
|
|
174
|
+
};
|
|
175
|
+
let ran = 0;
|
|
176
|
+
const controls = new Map([['dev-1::reboot', () => void ran++]]);
|
|
177
|
+
const server = await createServer(registry, null, null, [], new Set(), controls);
|
|
178
|
+
await listen(server);
|
|
179
|
+
try {
|
|
180
|
+
const listed = await (await fetch(`${BASE}/api/devices`)).json();
|
|
181
|
+
const device = listed.devices.find((d) => d.id === 'dev-1');
|
|
182
|
+
expect(device.actions).toEqual([{ id: 'reboot', label: 'Reboot', confirm: 'The whole box restarts.' }]);
|
|
183
|
+
const res = await fetch(`${BASE}/api/devices/dev-1/control`, {
|
|
184
|
+
method: 'POST',
|
|
185
|
+
headers: { 'Content-Type': 'application/json' },
|
|
186
|
+
body: JSON.stringify({ control: 'reboot', value: true }),
|
|
187
|
+
});
|
|
188
|
+
expect(res.status).toBe(200);
|
|
189
|
+
expect(ran).toBe(1);
|
|
190
|
+
}
|
|
191
|
+
finally {
|
|
192
|
+
await server.close();
|
|
193
|
+
}
|
|
194
|
+
});
|
|
195
|
+
it('reports a device that has stopped answering, rather than showing it as fine', async () => {
|
|
196
|
+
// The outage this exists for: the plugin kept running while the devices
|
|
197
|
+
// it polls had moved and gone silent, so every indicator stayed green.
|
|
198
|
+
// Plugin status and device health are different questions.
|
|
199
|
+
writeConfig(baseConfig);
|
|
200
|
+
const { createServer } = await import('../server.js');
|
|
201
|
+
const { PluginRegistry } = await import('@nubisco/openbridge-core');
|
|
202
|
+
const registry = new PluginRegistry();
|
|
203
|
+
const instance = registry.register({ manifest: { name: 'health-plugin', version: '1.0.0' } });
|
|
204
|
+
registry.updateStatus('health-plugin', 'running');
|
|
205
|
+
instance.devices = {
|
|
206
|
+
fresh: { id: 'fresh', name: 'Gate', widgetType: 'gate', pluginId: 'health-plugin' },
|
|
207
|
+
silent: { id: 'silent', name: 'Pool Filter', widgetType: 'switch', pluginId: 'health-plugin' },
|
|
208
|
+
never: { id: 'never', name: 'New Thing', widgetType: 'switch', pluginId: 'health-plugin' },
|
|
209
|
+
};
|
|
210
|
+
instance.telemetry = {
|
|
211
|
+
fresh: { _updatedAt: new Date().toISOString() },
|
|
212
|
+
silent: { _updatedAt: new Date(Date.now() - 36 * 3600 * 1000).toISOString() },
|
|
213
|
+
never: {},
|
|
214
|
+
};
|
|
215
|
+
const server = await createServer(registry, null, null, [], new Set(), new Map());
|
|
216
|
+
await listen(server);
|
|
217
|
+
try {
|
|
218
|
+
const { devices } = await (await fetch(`${BASE}/api/devices`)).json();
|
|
219
|
+
const byId = Object.fromEntries(devices.map((d) => [d.id, d]));
|
|
220
|
+
expect(byId.fresh.health.status).toBe('ok');
|
|
221
|
+
expect(byId.fresh.health.reason).toBeNull();
|
|
222
|
+
expect(byId.silent.health.status).toBe('stale');
|
|
223
|
+
expect(byId.silent.health.reason).toMatch(/36 hours/);
|
|
224
|
+
// The plugin is healthy, so the device must be blamed, not the plugin.
|
|
225
|
+
expect(byId.silent.pluginStatus).toBe('running');
|
|
226
|
+
// Never reported is not the same as broken.
|
|
227
|
+
expect(byId.never.health.status).toBe('unknown');
|
|
228
|
+
}
|
|
229
|
+
finally {
|
|
230
|
+
await server.close();
|
|
231
|
+
}
|
|
232
|
+
});
|
|
155
233
|
it('persists a Homebridge plugin by package name, not the platform name it registers under', async () => {
|
|
156
234
|
// The loader looks plugins up by npm package name. A compat plugin is
|
|
157
235
|
// registered under its *platform* name, so persisting the registry id
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.test.js","sourceRoot":"","sources":["../../src/__tests__/server.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"server.test.js","sourceRoot":"","sources":["../../src/__tests__/server.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Is a device still answering?
|
|
3
|
+
*
|
|
4
|
+
* This exists because of a real outage. Two Shellys and six bulbs lost their
|
|
5
|
+
* DHCP reservations, moved, and went unreachable for thirty-six hours. The
|
|
6
|
+
* daemon knew the whole time, in the sense that its log filled with timeouts
|
|
7
|
+
* and its poll loops stopped reporting, but the UI showed a tidy list of
|
|
8
|
+
* devices and said nothing at all. The failure was discovered from HomeKit.
|
|
9
|
+
*
|
|
10
|
+
* The signal was already being recorded and nobody was reading it.
|
|
11
|
+
* `reportTelemetry` stamps `_updatedAt` on every device of every plugin, so a
|
|
12
|
+
* device that has stopped answering is a device whose stamp has stopped
|
|
13
|
+
* moving. That is worth more than asking plugins to report health, because it
|
|
14
|
+
* needs no cooperation: a plugin that fails to poll cannot forget to say so,
|
|
15
|
+
* and a plugin written before this existed is covered anyway.
|
|
16
|
+
*
|
|
17
|
+
* Deliberately a pure function over a clock. Anything that decides whether to
|
|
18
|
+
* raise an alarm has to be testable without waiting for real time to pass.
|
|
19
|
+
*/
|
|
20
|
+
import type { DeviceHealth } from '@nubisco/openbridge-core';
|
|
21
|
+
/**
|
|
22
|
+
* Silence below this is never interesting, whatever the device's interval.
|
|
23
|
+
*
|
|
24
|
+
* A poll can be late for reasons that are not a fault: a slow device, a
|
|
25
|
+
* retried request, a busy host. Flagging a device that is one cycle behind
|
|
26
|
+
* would make the indicator meaningless within a day, and an indicator people
|
|
27
|
+
* learn to ignore is worse than no indicator, because it also discredits the
|
|
28
|
+
* true ones next to it.
|
|
29
|
+
*/
|
|
30
|
+
export declare const MIN_SILENCE_SECONDS = 120;
|
|
31
|
+
/**
|
|
32
|
+
* How many expected intervals of silence before saying so.
|
|
33
|
+
*
|
|
34
|
+
* Four rather than two: a device is allowed to miss a poll and still be
|
|
35
|
+
* healthy, and the cost of noticing an outage a minute later is far lower than
|
|
36
|
+
* the cost of an indicator that flickers.
|
|
37
|
+
*/
|
|
38
|
+
export declare const SILENT_INTERVALS = 4;
|
|
39
|
+
/** Default assumed reporting interval when a plugin does not declare one. */
|
|
40
|
+
export declare const DEFAULT_INTERVAL_SECONDS = 30;
|
|
41
|
+
export interface HealthInput {
|
|
42
|
+
/** The device's telemetry, as reported. `_updatedAt` is the field read. */
|
|
43
|
+
telemetry?: Record<string, unknown>;
|
|
44
|
+
/** `telemetryIntervalSeconds` from the descriptor, when declared. */
|
|
45
|
+
intervalSeconds?: number;
|
|
46
|
+
/** The owning plugin's status, which overrides everything below it. */
|
|
47
|
+
pluginStatus?: string;
|
|
48
|
+
/** Now, injected so this is testable. */
|
|
49
|
+
now?: number;
|
|
50
|
+
}
|
|
51
|
+
/** Seconds of silence tolerated for a device before it is called stale. */
|
|
52
|
+
export declare function silenceThresholdSeconds(intervalSeconds?: number): number;
|
|
53
|
+
export declare function assessDeviceHealth(input: HealthInput): DeviceHealth;
|
|
54
|
+
//# sourceMappingURL=device-health.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"device-health.d.ts","sourceRoot":"","sources":["../src/device-health.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAE5D;;;;;;;;GAQG;AACH,eAAO,MAAM,mBAAmB,MAAM,CAAA;AAEtC;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB,IAAI,CAAA;AAEjC,6EAA6E;AAC7E,eAAO,MAAM,wBAAwB,KAAK,CAAA;AAE1C,MAAM,WAAW,WAAW;IAC1B,2EAA2E;IAC3E,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACnC,qEAAqE;IACrE,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,uEAAuE;IACvE,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,yCAAyC;IACzC,GAAG,CAAC,EAAE,MAAM,CAAA;CACb;AAED,2EAA2E;AAC3E,wBAAgB,uBAAuB,CAAC,eAAe,CAAC,EAAE,MAAM,GAAG,MAAM,CAGxE;AAWD,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,WAAW,GAAG,YAAY,CAqCnE"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Silence below this is never interesting, whatever the device's interval.
|
|
3
|
+
*
|
|
4
|
+
* A poll can be late for reasons that are not a fault: a slow device, a
|
|
5
|
+
* retried request, a busy host. Flagging a device that is one cycle behind
|
|
6
|
+
* would make the indicator meaningless within a day, and an indicator people
|
|
7
|
+
* learn to ignore is worse than no indicator, because it also discredits the
|
|
8
|
+
* true ones next to it.
|
|
9
|
+
*/
|
|
10
|
+
export const MIN_SILENCE_SECONDS = 120;
|
|
11
|
+
/**
|
|
12
|
+
* How many expected intervals of silence before saying so.
|
|
13
|
+
*
|
|
14
|
+
* Four rather than two: a device is allowed to miss a poll and still be
|
|
15
|
+
* healthy, and the cost of noticing an outage a minute later is far lower than
|
|
16
|
+
* the cost of an indicator that flickers.
|
|
17
|
+
*/
|
|
18
|
+
export const SILENT_INTERVALS = 4;
|
|
19
|
+
/** Default assumed reporting interval when a plugin does not declare one. */
|
|
20
|
+
export const DEFAULT_INTERVAL_SECONDS = 30;
|
|
21
|
+
/** Seconds of silence tolerated for a device before it is called stale. */
|
|
22
|
+
export function silenceThresholdSeconds(intervalSeconds) {
|
|
23
|
+
const interval = intervalSeconds && intervalSeconds > 0 ? intervalSeconds : DEFAULT_INTERVAL_SECONDS;
|
|
24
|
+
return Math.max(MIN_SILENCE_SECONDS, interval * SILENT_INTERVALS);
|
|
25
|
+
}
|
|
26
|
+
function humanDuration(seconds) {
|
|
27
|
+
if (seconds < 90)
|
|
28
|
+
return `${Math.round(seconds)} seconds`;
|
|
29
|
+
const minutes = seconds / 60;
|
|
30
|
+
if (minutes < 90)
|
|
31
|
+
return `${Math.round(minutes)} minutes`;
|
|
32
|
+
const hours = minutes / 60;
|
|
33
|
+
if (hours < 48)
|
|
34
|
+
return `${Math.round(hours)} hours`;
|
|
35
|
+
return `${Math.round(hours / 24)} days`;
|
|
36
|
+
}
|
|
37
|
+
export function assessDeviceHealth(input) {
|
|
38
|
+
const now = input.now ?? Date.now();
|
|
39
|
+
// A plugin that is not running explains every one of its devices at once,
|
|
40
|
+
// and says something more useful than "silent for 3 hours" would. Checked
|
|
41
|
+
// first for that reason: the device is not the problem.
|
|
42
|
+
if (input.pluginStatus && input.pluginStatus !== 'running') {
|
|
43
|
+
return {
|
|
44
|
+
status: 'stale',
|
|
45
|
+
lastSeen: readStamp(input.telemetry),
|
|
46
|
+
silentForSeconds: silentFor(input.telemetry, now),
|
|
47
|
+
reason: `Its plugin is ${input.pluginStatus}, so nothing is polling this device.`,
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
const lastSeen = readStamp(input.telemetry);
|
|
51
|
+
if (!lastSeen) {
|
|
52
|
+
return {
|
|
53
|
+
status: 'unknown',
|
|
54
|
+
lastSeen: null,
|
|
55
|
+
silentForSeconds: null,
|
|
56
|
+
reason: null,
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
const silent = silentFor(input.telemetry, now) ?? 0;
|
|
60
|
+
const threshold = silenceThresholdSeconds(input.intervalSeconds);
|
|
61
|
+
if (silent < threshold) {
|
|
62
|
+
return { status: 'ok', lastSeen, silentForSeconds: silent, reason: null };
|
|
63
|
+
}
|
|
64
|
+
return {
|
|
65
|
+
status: 'stale',
|
|
66
|
+
lastSeen,
|
|
67
|
+
silentForSeconds: silent,
|
|
68
|
+
reason: `No response for ${humanDuration(silent)}. It may be powered off, or its address may have changed.`,
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
function readStamp(telemetry) {
|
|
72
|
+
const raw = telemetry?._updatedAt;
|
|
73
|
+
if (typeof raw !== 'string')
|
|
74
|
+
return null;
|
|
75
|
+
return Number.isNaN(Date.parse(raw)) ? null : raw;
|
|
76
|
+
}
|
|
77
|
+
function silentFor(telemetry, now) {
|
|
78
|
+
const stamp = readStamp(telemetry);
|
|
79
|
+
if (!stamp)
|
|
80
|
+
return null;
|
|
81
|
+
// Clamped at zero: a device whose clock runs ahead of the host would
|
|
82
|
+
// otherwise report negative silence, which reads as nonsense in the UI.
|
|
83
|
+
return Math.max(0, (now - Date.parse(stamp)) / 1000);
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=device-health.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"device-health.js","sourceRoot":"","sources":["../src/device-health.ts"],"names":[],"mappings":"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"}
|
package/dist/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAA;AAa7B,OAAO,KAAK,EAAE,cAAc,
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAA;AAa7B,OAAO,KAAK,EAAE,cAAc,EAA0C,MAAM,0BAA0B,CAAA;AAItG,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8CAA8C,CAAA;AASjF,OAAO,EAA4B,kBAAkB,EAAE,MAAM,cAAc,CAAA;AAC3E,OAAO,EAAE,kBAAkB,EAAE,CAAA;AAwC7B,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAEnD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAA;AAChE,OAAO,EAGL,KAAK,mBAAmB,EAEzB,MAAM,2BAA2B,CAAA;AAElC,MAAM,WAAW,OAAO;IACtB,mDAAmD;IACnD,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,6EAA6E;IAC7E,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,WAAW,EAAE,MAAM,CAAA;IACnB,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAWD,wBAAsB,YAAY,CAChC,QAAQ,EAAE,cAAc,EACxB,MAAM,GAAE,aAAa,GAAG,IAAW,EACnC,OAAO,GAAE,OAAO,GAAG,IAAW,EAC9B,kBAAkB,GAAE,MAAM,EAAO,EACjC,mBAAmB,GAAE,GAAG,CAAC,MAAM,CAAa,EAC5C,QAAQ,GAAE,GAAG,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAa,EAC3E,kBAAkB,GAAE,GAAG,CAAC,MAAM,CAAa,EAC3C,iBAAiB,GAAE,iBAAiB,GAAG,IAAW,EAClD,mBAAmB,GAAE,mBAAmB,GAAG,IAAW;AACtD;;;;GAIG;AACH,sBAAsB,GAAE,CAAC,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,GAAG,IAAI,CAAC,GAAG,IAAW;AAC5E,4EAA4E;AAC5E,mBAAmB,GAAE,CAAC,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC,GAAG,IAAW;AACxE,6EAA6E;AAC7E,YAAY,GAAE,cAAc,GAAG,IAAW,sSA2vD3C"}
|
package/dist/server.js
CHANGED
|
@@ -9,6 +9,7 @@ import { spawn } from 'child_process';
|
|
|
9
9
|
import { createRequire } from 'module';
|
|
10
10
|
import os from 'os';
|
|
11
11
|
const _req = createRequire(import.meta.url);
|
|
12
|
+
import { assessDeviceHealth } from './device-health.js';
|
|
12
13
|
import { Logger } from '@nubisco/openbridge-logger';
|
|
13
14
|
import { startMetrics, onMetrics, getHistory } from './metrics.js';
|
|
14
15
|
import { loadAuthConfig, registerAuthRoutes } from './auth.js';
|
|
@@ -439,7 +440,14 @@ deviceEvents = null) {
|
|
|
439
440
|
// lamp as a light rather than contradicting the inspector next to it.
|
|
440
441
|
const accessoryUuid = nativeAccessoryUuid?.(device.id) ?? null;
|
|
441
442
|
const homekitType = accessoryUuid ? (homekitServiceTypes?.typeForAccessory(accessoryUuid) ?? null) : null;
|
|
442
|
-
|
|
443
|
+
// Derived here rather than stored, so it is always current and there
|
|
444
|
+
// is no second copy of the truth to go stale on its own.
|
|
445
|
+
const health = assessDeviceHealth({
|
|
446
|
+
telemetry,
|
|
447
|
+
intervalSeconds: device.telemetryIntervalSeconds,
|
|
448
|
+
pluginStatus: instance.status,
|
|
449
|
+
});
|
|
450
|
+
devices.push({ ...device, name, telemetry, pluginStatus: instance.status, homekitType, health });
|
|
443
451
|
}
|
|
444
452
|
}
|
|
445
453
|
return { devices };
|
|
@@ -1376,22 +1384,24 @@ deviceEvents = null) {
|
|
|
1376
1384
|
log.info('Restart requested via API: respawning...');
|
|
1377
1385
|
await reply.send({ restarting: true });
|
|
1378
1386
|
setTimeout(() => {
|
|
1379
|
-
// In dev mode (OPENBRIDGE_DEV=true set by the dev script), tsx watch
|
|
1380
|
-
//
|
|
1381
|
-
|
|
1382
|
-
if (isTsx) {
|
|
1383
|
-
// Let tsx watch restart us
|
|
1384
|
-
process.exit(0);
|
|
1385
|
-
}
|
|
1386
|
-
else {
|
|
1387
|
-
const child = spawn(process.execPath, process.argv.slice(1), {
|
|
1388
|
-
detached: true,
|
|
1389
|
-
stdio: 'inherit',
|
|
1390
|
-
env: process.env,
|
|
1391
|
-
});
|
|
1392
|
-
child.unref();
|
|
1387
|
+
// In dev mode (OPENBRIDGE_DEV=true set by the dev script), tsx watch
|
|
1388
|
+
// detects the exit and restarts.
|
|
1389
|
+
if (process.env.OPENBRIDGE_DEV === 'true') {
|
|
1393
1390
|
process.exit(0);
|
|
1391
|
+
return;
|
|
1394
1392
|
}
|
|
1393
|
+
// Otherwise hand over to the same watchdog the self-update uses, which
|
|
1394
|
+
// starts a replacement only if nothing else has by the time it looks.
|
|
1395
|
+
//
|
|
1396
|
+
// Spawning our own replacement unconditionally, which is what this did,
|
|
1397
|
+
// is wrong anywhere a supervisor is watching: under OpenRC
|
|
1398
|
+
// `supervise-daemon` both the child and the supervisor's respawn come
|
|
1399
|
+
// up, one wins the port and the other dies on EADDRINUSE, and the
|
|
1400
|
+
// orphan holding 8582 and 51829 outlives the service that is supposed
|
|
1401
|
+
// to own them. That failure has been diagnosed on the Pi more than
|
|
1402
|
+
// once, and it looks like a crash loop rather than a bad restart.
|
|
1403
|
+
const bound = app.server.address();
|
|
1404
|
+
restartDaemon(typeof bound === 'object' && bound ? bound.port : 8582, (m) => log.info(m));
|
|
1395
1405
|
}, 300);
|
|
1396
1406
|
});
|
|
1397
1407
|
// ─── Logs ─────────────────────────────────────────────────────────────────
|