@homebridge-plugins/homebridge-eufy-security 5.0.0-beta.34 → 5.0.0-beta.36

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.
Files changed (86) hide show
  1. package/CONTRIBUTING.md +9 -17
  2. package/config.schema.json +6 -0
  3. package/dist/account/ownership.js +16 -16
  4. package/dist/account/ownership.js.map +1 -1
  5. package/dist/account/persistence.js +24 -74
  6. package/dist/account/persistence.js.map +1 -1
  7. package/dist/account/temporary-authentication.js +2 -2
  8. package/dist/account/temporary-authentication.js.map +1 -1
  9. package/dist/configuration.js +18 -25
  10. package/dist/configuration.js.map +1 -1
  11. package/dist/device/member-evidence.js +1 -1
  12. package/dist/device/member-evidence.js.map +1 -1
  13. package/dist/device/member-trust.js +14 -32
  14. package/dist/device/member-trust.js.map +1 -1
  15. package/dist/device/snapshot.js +5 -17
  16. package/dist/device/snapshot.js.map +1 -1
  17. package/dist/diagnostics.js +246 -300
  18. package/dist/diagnostics.js.map +1 -1
  19. package/dist/homekit/adapter.js +4 -1
  20. package/dist/homekit/adapter.js.map +1 -1
  21. package/dist/homekit/adapters/battery.js +3 -3
  22. package/dist/homekit/adapters/battery.js.map +1 -1
  23. package/dist/homekit/adapters/camera-controls.js +15 -37
  24. package/dist/homekit/adapters/camera-controls.js.map +1 -1
  25. package/dist/homekit/adapters/camera-streaming.js +9 -19
  26. package/dist/homekit/adapters/camera-streaming.js.map +1 -1
  27. package/dist/homekit/adapters/contact.js +5 -5
  28. package/dist/homekit/adapters/contact.js.map +1 -1
  29. package/dist/homekit/adapters/doorbell.js +3 -15
  30. package/dist/homekit/adapters/doorbell.js.map +1 -1
  31. package/dist/homekit/adapters/lock.js +15 -214
  32. package/dist/homekit/adapters/lock.js.map +1 -1
  33. package/dist/homekit/adapters/motion.js +2 -2
  34. package/dist/homekit/adapters/motion.js.map +1 -1
  35. package/dist/homekit/adapters/package-sensor.js +2 -2
  36. package/dist/homekit/adapters/package-sensor.js.map +1 -1
  37. package/dist/homekit/adapters/security-system.js +11 -211
  38. package/dist/homekit/adapters/security-system.js.map +1 -1
  39. package/dist/homekit/adapters/siren.js +5 -33
  40. package/dist/homekit/adapters/siren.js.map +1 -1
  41. package/dist/homekit/adapters/smart-light.js +19 -217
  42. package/dist/homekit/adapters/smart-light.js.map +1 -1
  43. package/dist/homekit/coverage-matrix.js +8 -65
  44. package/dist/homekit/coverage-matrix.js.map +1 -1
  45. package/dist/homekit/device-control.js +249 -13
  46. package/dist/homekit/device-control.js.map +1 -1
  47. package/dist/homekit/reconciler.js +5 -5
  48. package/dist/homekit/reconciler.js.map +1 -1
  49. package/dist/media/last-successful-image.js +3 -20
  50. package/dist/media/last-successful-image.js.map +1 -1
  51. package/dist/media/live-preview.js +163 -42
  52. package/dist/media/live-preview.js.map +1 -1
  53. package/dist/media/live-stream.js +108 -67
  54. package/dist/media/live-stream.js.map +1 -1
  55. package/dist/media/recording.js +37 -120
  56. package/dist/media/recording.js.map +1 -1
  57. package/dist/media/snapshot.js +1 -9
  58. package/dist/media/snapshot.js.map +1 -1
  59. package/dist/media/station-live-sessions.js +0 -15
  60. package/dist/media/station-live-sessions.js.map +1 -1
  61. package/dist/platform.js +10 -10
  62. package/dist/platform.js.map +1 -1
  63. package/dist/runtime/channel.js +91 -69
  64. package/dist/runtime/channel.js.map +1 -1
  65. package/dist/runtime/owner.js +6 -6
  66. package/dist/runtime/owner.js.map +1 -1
  67. package/dist/runtime/sdk-client.js +3 -14
  68. package/dist/runtime/sdk-client.js.map +1 -1
  69. package/dist/runtime/tracker.js +8 -38
  70. package/dist/runtime/tracker.js.map +1 -1
  71. package/dist/storage.js +1 -1
  72. package/dist/storage.js.map +1 -1
  73. package/dist/ui/runtime-channel-client.js +145 -282
  74. package/dist/ui/runtime-channel-client.js.map +1 -1
  75. package/dist/ui/server.js +39 -53
  76. package/dist/ui/server.js.map +1 -1
  77. package/homebridge-ui/public/app.css +150 -78
  78. package/homebridge-ui/public/i18n/en.json +14 -2
  79. package/homebridge-ui/public/i18n/fr.json +14 -2
  80. package/homebridge-ui/public/index.html +59 -10
  81. package/homebridge-ui/public/js/app.js +206 -42
  82. package/homebridge-ui/public/js/dashboard.js +4 -19
  83. package/package.json +3 -7
  84. package/homebridge-ui/public/js/legacy-settings.js +0 -37
  85. package/homebridge-ui/public/js/profile-wizard.js +0 -31
  86. package/homebridge-ui/public/js/setup-wizard.js +0 -52
@@ -1,4 +1,4 @@
1
- import { ArmingMode, CapabilityNotSupportedError } from '@mega-yfue/eufy-sdk';
1
+ import { ArmingMode } from '@mega-yfue/eufy-sdk';
2
2
  /**
3
3
  * What each HomeKit security state means where the user assigned nothing.
4
4
  *
@@ -17,6 +17,8 @@ const DEFAULT_ARMING_MODES = {
17
17
  * decides which one a station reporting that mode reads as, and the first assignment wins.
18
18
  */
19
19
  const SLOT_ORDER = ['home', 'away', 'night', 'off'];
20
+ import { ownService, } from '../adapter.js';
21
+ import { PersistentMemberWrites } from '../device-control.js';
20
22
  export const SECURITY_SYSTEM_ADAPTER_KEY = 'arming.security-system';
21
23
  const SECURITY_SYSTEM_STATES = new WeakMap();
22
24
  const ARMING_MODE_READ = {
@@ -37,208 +39,6 @@ const ARMING_ALARM_EVENT = {
37
39
  id: 'arming.alarm.event',
38
40
  kind: 'event',
39
41
  };
40
- const OPERATION_DEADLINE_MS = 8_000;
41
- const RECONCILIATION_WINDOW_MS = 60_000;
42
- /** Serializes arming writes while exposing only a bounded target projection. */
43
- class SecurityModeWrites {
44
- issue;
45
- communicationFailure;
46
- operationFailure;
47
- isNonRetryable;
48
- diagnose;
49
- restore;
50
- active;
51
- queued;
52
- reconciliation;
53
- projection;
54
- blockedError;
55
- detached = false;
56
- constructor(issue, communicationFailure, operationFailure, isNonRetryable, diagnose, restore) {
57
- this.issue = issue;
58
- this.communicationFailure = communicationFailure;
59
- this.operationFailure = operationFailure;
60
- this.isNonRetryable = isNonRetryable;
61
- this.diagnose = diagnose;
62
- this.restore = restore;
63
- }
64
- read() {
65
- return this.projection;
66
- }
67
- request(value) {
68
- if (this.blockedError) {
69
- return Promise.reject(this.blockedError);
70
- }
71
- this.projection = value;
72
- return new Promise((resolve, reject) => {
73
- const request = {
74
- value,
75
- settled: false,
76
- deadline: undefined,
77
- resolve,
78
- reject,
79
- };
80
- request.deadline = setTimeout(() => this.timeout(request), OPERATION_DEADLINE_MS);
81
- if (!this.active) {
82
- this.start({ value, requests: [request], reconciled: false, abandoned: false });
83
- }
84
- else if (this.queued) {
85
- this.queued.value = value;
86
- this.queued.reconciled = false;
87
- this.queued.requests.push(request);
88
- }
89
- else {
90
- this.queued = { value, requests: [request], reconciled: false, abandoned: false };
91
- }
92
- });
93
- }
94
- observe() {
95
- if (this.active) {
96
- this.active.reconciled = true;
97
- }
98
- if (this.queued) {
99
- this.queued.reconciled = true;
100
- }
101
- this.projection = undefined;
102
- if (this.reconciliation) {
103
- clearTimeout(this.reconciliation);
104
- this.reconciliation = undefined;
105
- }
106
- if (!this.blockedError) {
107
- this.diagnose('operation', false, 'recovered');
108
- }
109
- this.diagnose('reconciliation', false, 'recovered');
110
- }
111
- detach() {
112
- this.detached = true;
113
- if (this.reconciliation) {
114
- clearTimeout(this.reconciliation);
115
- }
116
- for (const request of [...(this.active?.requests ?? []), ...(this.queued?.requests ?? [])]) {
117
- this.settle(request, 'reject', this.communicationFailure());
118
- }
119
- this.active = undefined;
120
- this.queued = undefined;
121
- this.projection = undefined;
122
- this.reconciliation = undefined;
123
- }
124
- start(batch) {
125
- if (this.detached) {
126
- return;
127
- }
128
- if (this.reconciliation) {
129
- clearTimeout(this.reconciliation);
130
- this.reconciliation = undefined;
131
- }
132
- this.active = batch;
133
- Promise.resolve()
134
- .then(() => this.issue(batch.value))
135
- .then(() => this.complete(batch), (error) => this.fail(batch, error));
136
- }
137
- complete(batch) {
138
- if (this.active !== batch) {
139
- return;
140
- }
141
- if (batch.abandoned && this.queued?.requests.some(({ settled }) => !settled)) {
142
- this.active = undefined;
143
- this.startQueued();
144
- return;
145
- }
146
- for (const request of batch.requests) {
147
- this.settle(request, 'resolve');
148
- }
149
- if (batch.abandoned && !batch.reconciled) {
150
- this.projection = batch.value;
151
- this.restore();
152
- }
153
- this.diagnose('operation', false, 'recovered');
154
- if (!batch.reconciled) {
155
- this.reconciliation = setTimeout(() => {
156
- this.reconciliation = undefined;
157
- this.projection = undefined;
158
- this.restore();
159
- this.diagnose('reconciliation', true, 'expired');
160
- }, RECONCILIATION_WINDOW_MS);
161
- }
162
- this.active = undefined;
163
- this.startQueued();
164
- }
165
- fail(batch, cause) {
166
- if (this.active !== batch) {
167
- return;
168
- }
169
- const error = this.operationFailure(cause);
170
- for (const request of batch.requests) {
171
- this.settle(request, 'reject', error);
172
- }
173
- const nonRetryable = this.isNonRetryable(cause);
174
- if (nonRetryable) {
175
- this.blockedError = error;
176
- for (const request of this.queued?.requests ?? []) {
177
- this.settle(request, 'reject', error);
178
- }
179
- this.queued = undefined;
180
- }
181
- this.projection = this.queued?.value;
182
- this.restore();
183
- if (batch.abandoned && !nonRetryable) {
184
- this.active = undefined;
185
- this.startQueued();
186
- return;
187
- }
188
- this.diagnose('operation', true, nonRetryable ? 'capability-not-supported' : 'operation-failure');
189
- this.active = undefined;
190
- this.startQueued();
191
- }
192
- timeout(request) {
193
- if (request.settled) {
194
- return;
195
- }
196
- this.settle(request, 'reject', this.communicationFailure());
197
- this.diagnose('operation', true, 'timeout');
198
- if (this.active?.requests.every(({ settled }) => settled)) {
199
- this.active.abandoned = true;
200
- this.projection = this.queued?.value;
201
- this.restore();
202
- return;
203
- }
204
- if (this.queued) {
205
- this.queued.requests = this.queued.requests.filter(({ settled }) => !settled);
206
- if (this.queued.requests.length === 0) {
207
- this.queued = undefined;
208
- this.projection = this.active?.value;
209
- }
210
- else {
211
- this.queued.value = this.queued.requests.at(-1).value;
212
- }
213
- }
214
- }
215
- startQueued() {
216
- const queued = this.queued;
217
- this.queued = undefined;
218
- if (!queued) {
219
- return;
220
- }
221
- queued.requests = queued.requests.filter(({ settled }) => !settled);
222
- if (queued.requests.length > 0) {
223
- queued.value = queued.requests.at(-1).value;
224
- this.projection = queued.reconciled ? undefined : queued.value;
225
- this.start(queued);
226
- }
227
- }
228
- settle(request, result, error) {
229
- if (request.settled) {
230
- return;
231
- }
232
- request.settled = true;
233
- clearTimeout(request.deadline);
234
- if (result === 'resolve') {
235
- request.resolve();
236
- }
237
- else {
238
- request.reject(error);
239
- }
240
- }
241
- }
242
42
  const COVERAGE = [ARMING_MODE_READ, ARMING_MODE_WRITE, ARMING_MODE_EVENT, ARMING_ALARM_EVENT].map(({ id }) => id);
243
43
  /** Complete HomeKit policy for evidenced arming modes and alarm events. */
244
44
  export const SECURITY_SYSTEM_ADAPTER = {
@@ -311,8 +111,7 @@ function attachSecuritySystem(context) {
311
111
  reason: 'recovered',
312
112
  });
313
113
  context.observed('arming-capability-unavailable');
314
- const service = accessory.getServiceById(hap.Service.SecuritySystem, SECURITY_SYSTEM_ADAPTER_KEY) ??
315
- accessory.addService(hap.Service.SecuritySystem, accessory.displayName, SECURITY_SYSTEM_ADAPTER_KEY);
114
+ const service = ownService(accessory, hap.Service.SecuritySystem, accessory.displayName, SECURITY_SYSTEM_ADAPTER_KEY);
316
115
  const previousState = SECURITY_SYSTEM_STATES.get(service);
317
116
  const owner = Symbol('security-system-owner');
318
117
  const state = previousState ?? {
@@ -361,7 +160,7 @@ function attachSecuritySystem(context) {
361
160
  const sdkMode = (value) => {
362
161
  const mode = SLOT_ORDER.filter((slot) => slotState[slot] === value).map((slot) => assigned[slot])[0];
363
162
  if (mode === undefined) {
364
- throw new hap.HapStatusError(hap.HAPStatus.INVALID_VALUE_IN_REQUEST);
163
+ throw new hap.HapStatusError(-70410 /* hap.HAPStatus.INVALID_VALUE_IN_REQUEST */);
365
164
  }
366
165
  return mode;
367
166
  };
@@ -417,9 +216,7 @@ function attachSecuritySystem(context) {
417
216
  alarmType.updateValue(hap.Characteristic.SecuritySystemAlarmType.NO_ALARM);
418
217
  return { event: 'arming-mode-changed', observation: mode.exact ? 'valid' : 'malformed' };
419
218
  };
420
- state.writes ??= new SecurityModeWrites((value) => state.arming.setMode(sdkMode(value)), () => new hap.HapStatusError(hap.HAPStatus.SERVICE_COMMUNICATION_FAILURE), (error) => new hap.HapStatusError(error instanceof CapabilityNotSupportedError
421
- ? hap.HAPStatus.NOT_ALLOWED_IN_CURRENT_STATE
422
- : hap.HAPStatus.SERVICE_COMMUNICATION_FAILURE), (error) => error instanceof CapabilityNotSupportedError, (condition, active, reason) => {
219
+ state.writes ??= new PersistentMemberWrites(hap, (value) => state.arming.setMode(sdkMode(value)), (condition, active, reason) => {
423
220
  const code = condition === 'operation' ? 'arming-operation-failed' : 'arming-reconciliation-expired';
424
221
  if (condition === 'operation') {
425
222
  state.operationFault = active;
@@ -432,13 +229,16 @@ function attachSecuritySystem(context) {
432
229
  if (!active) {
433
230
  context.observed(code);
434
231
  }
435
- }, () => {
232
+ }, (cause) => {
233
+ if (cause === 'completed') {
234
+ return;
235
+ }
436
236
  const mode = readMode();
437
237
  const value = state.writes.read() ?? (mode.exact ? mode.state : undefined);
438
238
  if (value !== undefined) {
439
239
  target.updateValue(value);
440
240
  }
441
- });
241
+ }, { holdAbandoned: true });
442
242
  updateStatusFault();
443
243
  observeMode();
444
244
  current.onGet(() => state.alarmTriggered ? hap.Characteristic.SecuritySystemCurrentState.ALARM_TRIGGERED : readMode().state);
@@ -1 +1 @@
1
- {"version":3,"file":"security-system.js","sourceRoot":"","sources":["../../../src/homekit/adapters/security-system.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"security-system.js","sourceRoot":"","sources":["../../../src/homekit/adapters/security-system.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,5 @@
1
+ import { ownService, } from '../adapter.js';
2
+ import { observationReader } from '../device-control.js';
1
3
  export const SIREN_ADAPTER_KEY = 'siren.test';
2
4
  const SIREN_ACTIVE_REQUIREMENT = {
3
5
  id: 'siren.active.read',
@@ -60,43 +62,13 @@ function attachSiren(context) {
60
62
  reason: 'recovered',
61
63
  });
62
64
  }
63
- const service = accessory.getServiceById(hap.Service.Switch, SIREN_ADAPTER_KEY) ??
64
- accessory.addService(hap.Service.Switch, accessory.displayName, SIREN_ADAPTER_KEY);
65
+ const service = ownService(accessory, hap.Service.Switch, accessory.displayName, SIREN_ADAPTER_KEY);
65
66
  const state = { owner: Symbol('siren-owner') };
66
67
  SIREN_STATES.set(service, state);
67
68
  const on = service.getCharacteristic(hap.Characteristic.On);
69
+ const readBoolean = observationReader(context, 'boolean', 'invalid-siren-active-observation');
68
70
  const readActive = () => {
69
- let active;
70
- try {
71
- active = siren.active;
72
- }
73
- catch {
74
- context.diagnose({
75
- code: 'invalid-siren-active-observation',
76
- capability: 'siren',
77
- member: 'active',
78
- active: true,
79
- reason: 'sdk-fault',
80
- });
81
- throw new hap.HapStatusError(hap.HAPStatus.SERVICE_COMMUNICATION_FAILURE);
82
- }
83
- if (typeof active !== 'boolean') {
84
- context.diagnose({
85
- code: 'invalid-siren-active-observation',
86
- capability: 'siren',
87
- member: 'active',
88
- active: true,
89
- reason: active === undefined ? 'missing' : 'malformed',
90
- });
91
- throw new hap.HapStatusError(hap.HAPStatus.SERVICE_COMMUNICATION_FAILURE);
92
- }
93
- context.diagnose({
94
- code: 'invalid-siren-active-observation',
95
- capability: 'siren',
96
- member: 'active',
97
- active: false,
98
- reason: 'recovered',
99
- });
71
+ const active = readBoolean('siren', 'active', () => siren.active);
100
72
  context.observed('invalid-siren-active-observation');
101
73
  return active;
102
74
  };
@@ -1 +1 @@
1
- {"version":3,"file":"siren.js","sourceRoot":"","sources":["../../../src/homekit/adapters/siren.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"siren.js","sourceRoot":"","sources":["../../../src/homekit/adapters/siren.ts"],"names":[],"mappings":"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"}