@uboness/homebridge-tedee 0.1.1 → 0.2.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.
Files changed (43) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/README.md +59 -7
  3. package/config.schema.json +256 -106
  4. package/dist/bin/tedee-cleanup.d.ts +3 -0
  5. package/dist/bin/tedee-cleanup.d.ts.map +1 -0
  6. package/dist/bin/tedee-cleanup.js +85 -0
  7. package/dist/bin/tedee-cleanup.js.map +1 -0
  8. package/dist/device/device.d.ts +5 -3
  9. package/dist/device/device.d.ts.map +1 -1
  10. package/dist/device/device.js +13 -14
  11. package/dist/device/device.js.map +1 -1
  12. package/dist/device/index.d.ts +1 -0
  13. package/dist/device/index.d.ts.map +1 -1
  14. package/dist/device/index.js +1 -0
  15. package/dist/device/index.js.map +1 -1
  16. package/dist/device/lock.d.ts +24 -3
  17. package/dist/device/lock.d.ts.map +1 -1
  18. package/dist/device/lock.js +37 -7
  19. package/dist/device/lock.js.map +1 -1
  20. package/dist/settings.d.ts +8 -2
  21. package/dist/settings.d.ts.map +1 -1
  22. package/dist/settings.js +9 -2
  23. package/dist/settings.js.map +1 -1
  24. package/dist/tedee-bridge.d.ts +53 -0
  25. package/dist/tedee-bridge.d.ts.map +1 -0
  26. package/dist/tedee-bridge.js +182 -0
  27. package/dist/tedee-bridge.js.map +1 -0
  28. package/dist/tedee-client.d.ts +1 -6
  29. package/dist/tedee-client.d.ts.map +1 -1
  30. package/dist/tedee-client.js +27 -58
  31. package/dist/tedee-client.js.map +1 -1
  32. package/dist/tedee-platform.d.ts +10 -33
  33. package/dist/tedee-platform.d.ts.map +1 -1
  34. package/dist/tedee-platform.js +70 -148
  35. package/dist/tedee-platform.js.map +1 -1
  36. package/dist/webhook-server.d.ts +28 -0
  37. package/dist/webhook-server.d.ts.map +1 -0
  38. package/dist/{tedee-event-server.js → webhook-server.js} +52 -15
  39. package/dist/webhook-server.js.map +1 -0
  40. package/package.json +7 -4
  41. package/dist/tedee-event-server.d.ts +0 -25
  42. package/dist/tedee-event-server.d.ts.map +0 -1
  43. package/dist/tedee-event-server.js.map +0 -1
@@ -1,11 +1,8 @@
1
1
  import EventEmitter from 'node:events';
2
2
  import { createHash } from 'node:crypto';
3
- import { lookup } from 'node:dns/promises';
4
- import { networkInterfaces } from 'node:os';
5
3
  import { fetch } from 'undici';
6
4
  import { sleep } from "./common.js";
7
5
  import { WEBHOOK_INSTANCE_HEADER } from "./settings.js";
8
- import { TedeeEventServer } from "./tedee-event-server.js";
9
6
  const HEARTBEAT_INTERVAL_MS = 60_000;
10
7
  const START_MAX_ATTEMPTS = 5;
11
8
  // Tedee bridge caps the local API at ~1 request/second.
@@ -18,7 +15,6 @@ export class TedeeClient {
18
15
  #config;
19
16
  #logger;
20
17
  #emitter = new EventEmitter({ captureRejections: false });
21
- #server;
22
18
  #abort = new AbortController();
23
19
  #state = 'init';
24
20
  #queue = Promise.resolve();
@@ -26,21 +22,16 @@ export class TedeeClient {
26
22
  #heartbeatTimer;
27
23
  #reconnecting = false;
28
24
  #registration;
29
- #localHost;
25
+ #callbackId;
30
26
  constructor(config, logger) {
31
27
  this.#config = config;
32
28
  this.#logger = logger.getLogger('client');
33
29
  this.#emitter.setMaxListeners(1000);
34
- this.#server = new TedeeEventServer({
35
- port: config.webhook.port,
36
- instanceId: config.webhook.instanceId
37
- }, this.#logger);
38
- this.#server.on('event', event => { this.#emitter.emit('event', event); });
39
30
  }
40
31
  get state() {
41
32
  return this.#state;
42
33
  }
43
- async start() {
34
+ async start(registration) {
44
35
  if (this.#state === 'closed' || this.#state === 'closing') {
45
36
  throw new Error('Tedee client is closed');
46
37
  }
@@ -48,10 +39,7 @@ export class TedeeClient {
48
39
  return; // start was already called
49
40
  }
50
41
  this.#state = 'connecting';
51
- this.#localHost = await this.#resolveLocalHost();
52
- this.#logger.debug(`resolved local host [${this.#localHost}] for webhook server`);
53
- await this.#server.start();
54
- this.#registration = this.#buildRegistration();
42
+ this.#registration = registration;
55
43
  let lastError;
56
44
  for (let attempt = 0; attempt < START_MAX_ATTEMPTS; attempt++) {
57
45
  if (this.#aborted()) {
@@ -83,6 +71,7 @@ export class TedeeClient {
83
71
  if (this.#state === 'closed' || this.#state === 'closing') {
84
72
  return;
85
73
  }
74
+ await this.#removeCallback();
86
75
  await this.#shutdown();
87
76
  }
88
77
  on(event, handler) {
@@ -217,10 +206,12 @@ export class TedeeClient {
217
206
  const hash = createHash('sha256').update(`${this.#config.token}${timestamp}`).digest('hex');
218
207
  return `${hash}${timestamp}`;
219
208
  }
220
- async ensureCallback(registration, instanceId) {
209
+ async ensureCallback(registration) {
210
+ const instanceId = this.headerValue({ headers: registration.headers }, WEBHOOK_INSTANCE_HEADER);
221
211
  const callbacks = await this.listCallbacks();
222
212
  const ownedCallbacks = callbacks.filter(callback => {
223
- return callback.url === registration.url || this.headerValue(callback, WEBHOOK_INSTANCE_HEADER) === instanceId;
213
+ return callback.url === registration.url
214
+ || (instanceId !== undefined && this.headerValue(callback, WEBHOOK_INSTANCE_HEADER) === instanceId);
224
215
  });
225
216
  const [primary, ...duplicates] = ownedCallbacks.sort((a, b) => {
226
217
  const aHasInstance = this.headerValue(a, WEBHOOK_INSTANCE_HEADER) === instanceId ? 0 : 1;
@@ -248,41 +239,11 @@ export class TedeeClient {
248
239
  }
249
240
  return callbackId;
250
241
  }
251
- #buildRegistration() {
252
- if (!this.#localHost) {
253
- throw new Error('Local host has not been resolved yet');
254
- }
255
- return {
256
- url: this.#server.callbackUrl(this.#localHost),
257
- method: 'POST',
258
- headers: [{ [WEBHOOK_INSTANCE_HEADER]: this.#config.webhook.instanceId }]
259
- };
260
- }
261
- // Picks the local IPv4 address whose subnet contains the Tedee bridge — that's
262
- // the interface the kernel would route bridge traffic over, and therefore the
263
- // address the bridge can reach the plugin on. Falls back to throwing if no
264
- // interface matches (eg. bridge unreachable, or host on a different L3 segment).
265
- async #resolveLocalHost() {
266
- const { address: bridgeIp } = await lookup(this.#config.host, { family: 4 });
267
- const bridgeInt = ipv4ToInt(bridgeIp);
268
- for (const ifaces of Object.values(networkInterfaces())) {
269
- for (const iface of ifaces ?? []) {
270
- if (iface.internal || iface.family !== 'IPv4') {
271
- continue;
272
- }
273
- const mask = ipv4ToInt(iface.netmask);
274
- if ((ipv4ToInt(iface.address) & mask) === (bridgeInt & mask)) {
275
- return iface.address;
276
- }
277
- }
278
- }
279
- throw new Error(`No local IPv4 interface on the same subnet as Tedee Bridge [${this.#config.host} → ${bridgeIp}]`);
280
- }
281
242
  async #doConnect() {
282
243
  if (!this.#registration) {
283
- this.#registration = this.#buildRegistration();
244
+ throw new Error('Tedee callback registration is not configured');
284
245
  }
285
- await this.ensureCallback(this.#registration, this.#config.webhook.instanceId);
246
+ this.#callbackId = await this.ensureCallback(this.#registration);
286
247
  this.#setConnected();
287
248
  }
288
249
  async #verifyCallback() {
@@ -296,6 +257,23 @@ export class TedeeClient {
296
257
  throw new Error('Tedee webhook callback is no longer registered with the bridge');
297
258
  }
298
259
  }
260
+ // Deletes our callback record from the bridge on close so a removed bridge never
261
+ // leaves an orphaned webhook posting into the void. Best-effort — a failure here
262
+ // must not block shutdown.
263
+ async #removeCallback() {
264
+ if (this.#callbackId === undefined) {
265
+ return;
266
+ }
267
+ const callbackId = this.#callbackId;
268
+ this.#callbackId = undefined;
269
+ try {
270
+ await this.deleteCallback(callbackId);
271
+ this.#logger.info(`removed Tedee webhook callback with id [${callbackId}]`);
272
+ }
273
+ catch (error) {
274
+ this.#logger.warn(`failed to remove Tedee webhook callback with id [${callbackId}]`, error);
275
+ }
276
+ }
299
277
  // Serializes outbound requests and spaces them by REQUEST_INTERVAL_MS to stay
300
278
  // within the bridge's rate limit.
301
279
  #enqueue(operation) {
@@ -417,19 +395,10 @@ export class TedeeClient {
417
395
  this.#state = 'closing';
418
396
  this.#cancelHeartbeat();
419
397
  this.#abort.abort();
420
- try {
421
- await this.#server.close();
422
- }
423
- catch (error) {
424
- this.#logger.warn('failed to close Tedee event server', error);
425
- }
426
398
  this.#state = 'closed';
427
399
  this.#emitter.emit('close');
428
400
  }
429
401
  }
430
- function ipv4ToInt(ip) {
431
- return ip.split('.').reduce((acc, part) => ((acc << 8) | (parseInt(part, 10) & 0xff)), 0) >>> 0;
432
- }
433
402
  class TedeeError extends Error {
434
403
  status;
435
404
  body;
@@ -1 +1 @@
1
- {"version":3,"file":"tedee-client.js","sourceRoot":"","sources":["../src/tedee-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tedee-client.js","sourceRoot":"","sources":["../src/tedee-client.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAC/B,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAGpC,OAAO,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AAYxD,MAAM,qBAAqB,GAAG,MAAM,CAAC;AACrC,MAAM,kBAAkB,GAAG,CAAC,CAAC;AAC7B,wDAAwD;AACxD,MAAM,mBAAmB,GAAG,KAAK,CAAC;AAClC,4EAA4E;AAC5E,MAAM,iBAAiB,GAAG,CAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAE,CAAC;AAC1D,qEAAqE;AACrE,MAAM,qBAAqB,GAAG,CAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAE,CAAC;AAE9E,MAAM,OAAO,WAAW;IAEX,OAAO,CAAqB;IAC5B,OAAO,CAAU;IACjB,QAAQ,GAAG,IAAI,YAAY,CAAC,EAAE,iBAAiB,EAAE,KAAK,EAAE,CAAC,CAAC;IAC1D,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;IAExC,MAAM,GAAsB,MAAM,CAAC;IACnC,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAC3B,cAAc,GAAG,CAAC,CAAC;IACnB,eAAe,CAAkB;IACjC,aAAa,GAAG,KAAK,CAAC;IACtB,aAAa,CAA8B;IAC3C,WAAW,CAAU;IAErB,YAAY,MAA0B,EAAE,MAAe;QACnD,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QAC1C,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;IACxC,CAAC;IAED,IAAI,KAAK;QACL,OAAO,IAAI,CAAC,MAAM,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,YAAwC;QAChD,IAAI,IAAI,CAAC,MAAM,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YACxD,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;QAC9C,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;YACzB,OAAO,CAAC,2BAA2B;QACvC,CAAC;QACD,IAAI,CAAC,MAAM,GAAG,YAAY,CAAC;QAC3B,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC;QAElC,IAAI,SAAkB,CAAC;QACvB,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,kBAAkB,EAAE,OAAO,EAAE,EAAE,CAAC;YAC5D,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;gBAClB,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;YAC7E,CAAC;YACD,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;gBACd,MAAM,IAAI,GAAG,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,CAAC,EAAE,iBAAiB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;gBACpF,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,gCAAgC,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,cAAc,OAAO,GAAG,CAAC,IAAI,kBAAkB,GAAG,CAAC,CAAC;gBAC7H,IAAI,CAAC;oBACD,MAAM,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;gBACxC,CAAC;gBAAC,MAAM,CAAC;oBACL,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;gBAC7E,CAAC;YACL,CAAC;YACD,IAAI,CAAC;gBACD,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;gBACxB,OAAO;YACX,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACb,SAAS,GAAG,KAAK,CAAC;gBAClB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,uCAAuC,OAAO,GAAG,CAAC,IAAI,kBAAkB,GAAG,EAAE,KAAK,CAAC,CAAC;YAC1G,CAAC;QACL,CAAC;QAED,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;QACvB,MAAM,SAAS,IAAI,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;IACtE,CAAC;IAED,KAAK,CAAC,KAAK;QACP,IAAI,IAAI,CAAC,MAAM,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YACxD,OAAO;QACX,CAAC;QACD,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;QAC7B,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;IAC3B,CAAC;IAED,EAAE,CAA+B,KAAY,EAAE,OAA4B;QACvE,MAAM,QAAQ,GAAG,OAA+B,CAAC;QACjD,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QAClC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,EAAE,CAAC;IAChE,CAAC;IAED,KAAK,CAAC,MAAM;QACR,OAAO,MAAM,IAAI,CAAC,IAAI,CAAe,KAAK,EAAE,SAAS,CAAC,CAAC;IAC3D,CAAC;IAED,KAAK,CAAC,SAAS;QACX,OAAO,MAAM,IAAI,CAAC,IAAI,CAAe,KAAK,EAAE,OAAO,CAAC,CAAC;IACzD,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,EAAU;QACpB,OAAO,MAAM,IAAI,CAAC,IAAI,CAAa,KAAK,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC;IAC7D,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,EAAU;QACjB,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC;QAC3C,MAAM,IAAI,CAAC,IAAI,CAAO,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IACtD,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,EAAU,EAAE,IAAuB;QAC5C,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,mBAAmB,EAAE,IAAI,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,eAAe,IAAI,GAAG,EAAE,CAAC,CAAC;QAChG,MAAM,IAAI,CAAC,IAAI,CAAO,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC5H,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,EAAU;QACvB,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,4BAA4B,EAAE,GAAG,CAAC,CAAC;QACtD,MAAM,IAAI,CAAC,IAAI,CAAO,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IACtD,CAAC;IAED,KAAK,CAAC,aAAa;QACf,OAAO,MAAM,IAAI,CAAC,IAAI,CAAmB,KAAK,EAAE,WAAW,CAAC,CAAC;IACjE,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,YAAwC;QACtD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAqC,MAAM,EAAE,WAAW,EAAE,YAA+B,CAAC,CAAC;QAC3H,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC1B,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAA6B,CAAC;YACtD,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACjE,CAAC;QACD,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;YAC/B,OAAO,QAAQ,CAAC;QACpB,CAAC;QACD,OAAO,QAAQ,CAAC,EAAE,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,EAAU,EAAE,YAAwC;QACrE,MAAM,IAAI,CAAC,IAAI,CAAO,KAAK,EAAE,aAAa,EAAE,EAAE,EAAE,YAA+B,CAAC,CAAC;IACrF,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,EAAU;QAC3B,MAAM,IAAI,CAAC,IAAI,CAAO,QAAQ,EAAE,aAAa,EAAE,EAAE,CAAC,CAAC;IACvD,CAAC;IAEO,eAAe,CAAC,QAAwB,EAAE,YAAwC;QACtF,IAAI,QAAQ,CAAC,GAAG,KAAK,YAAY,CAAC,GAAG,IAAI,QAAQ,CAAC,MAAM,KAAK,YAAY,CAAC,MAAM,EAAE,CAAC;YAC/E,OAAO,KAAK,CAAC;QACjB,CAAC;QACD,OAAO,CAAC,YAAY,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE;YACjD,MAAM,CAAE,IAAI,EAAE,KAAK,CAAE,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YAC1D,OAAO,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,KAAK,CAAC;QAChE,CAAC,CAAC,CAAC;IACP,CAAC;IAEO,WAAW,CAAC,QAAwB,EAAE,IAAY;QACtD,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACrC,KAAK,MAAM,MAAM,IAAI,QAAQ,CAAC,OAAO,IAAI,EAAE,EAAE,CAAC;YAC1C,KAAK,MAAM,CAAE,aAAa,EAAE,KAAK,CAAE,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC5D,IAAI,aAAa,CAAC,WAAW,EAAE,KAAK,SAAS,EAAE,CAAC;oBAC5C,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;gBACzB,CAAC;YACL,CAAC;QACL,CAAC;QACD,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAI,SAA2B;QAClD,IAAI,SAAkB,CAAC;QACvB,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,CAAC,EAAE,OAAO,EAAE,EAAE,CAAC;YAC3C,IAAI,CAAC;gBACD,OAAO,MAAM,SAAS,EAAE,CAAC;YAC7B,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACb,SAAS,GAAG,KAAK,CAAC;gBAClB,IAAI,CAAC,CAAC,KAAK,YAAY,UAAU,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,GAAG,IAAI,OAAO,KAAK,CAAC,EAAE,CAAC;oBAC1E,MAAM,KAAK,CAAC;gBAChB,CAAC;gBACD,MAAM,KAAK,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;YACtC,CAAC;QACL,CAAC;QACD,MAAM,SAAS,CAAC;IACpB,CAAC;IAEO,KAAK,CAAC,IAAI,CAAc,MAA0B,EAAE,QAAgB,EAAE,IAAW,EAAE,YAAqC;QAC5H,IAAI,CAAC;YACD,OAAO,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE;gBAClC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACjC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;gBACnC,MAAM,OAAO,GAAG,IAAI,KAAK,SAAS,CAAC;gBACnC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;oBAC9B,MAAM,EAAE,MAAM,CAAC,WAAW,EAAE;oBAC5B,OAAO,EAAE;wBACL,MAAM,EAAE,kBAAkB;wBAC1B,cAAc,EAAE,kBAAkB;wBAClC,SAAS,EAAE,QAAQ;wBACnB,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,IAAI,MAAM,KAAK,KAAK,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;wBAC1F,GAAG,YAAY;qBAClB;oBACD,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,IAAI,MAAM,KAAK,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS;iBACvG,CAAC,CAAC;gBAEH,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;oBAC1B,OAAO,SAAiB,CAAC;gBAC7B,CAAC;gBAED,MAAM,YAAY,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;gBAC3C,MAAM,YAAY,GAAG,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;gBAChF,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;oBACf,MAAM,gBAAgB,GAAG,YAAY,EAAE,CAAC,mBAAmB,CAAC,IAAI,YAAY,EAAE,OAAO,IAAI,QAAQ,CAAC,UAAU,CAAC;oBAC7G,MAAM,IAAI,UAAU,CAAC,oBAAoB,QAAQ,MAAM,QAAQ,CAAC,MAAM,KAAK,gBAAgB,EAAE,EAAE,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;gBAClI,CAAC;gBACD,OAAO,YAAoB,CAAC;YAChC,CAAC,CAAC,CAAC;QACP,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,IAAI,CAAC,CAAC,KAAK,YAAY,UAAU,CAAC,EAAE,CAAC;gBACjC,oEAAoE;gBACpE,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;YAChC,CAAC;YACD,MAAM,KAAK,CAAC;QAChB,CAAC;IACL,CAAC;IAEO,OAAO,CAAC,QAAgB;QAC5B,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC;QACrC,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,MAAM,CAAC;QACrD,OAAO,UAAU,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,IAAI,IAAI,UAAU,GAAG,QAAQ,EAAE,CAAC;IAC1E,CAAC;IAEO,QAAQ;QACZ,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,KAAK,WAAW,EAAE,CAAC;YACzC,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;QAC9B,CAAC;QACD,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QACrC,MAAM,IAAI,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC5F,OAAO,GAAG,IAAI,GAAG,SAAS,EAAE,CAAC;IACjC,CAAC;IAEO,KAAK,CAAC,cAAc,CAAC,YAAwC;QACjE,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,YAAY,CAAC,OAAO,EAAoB,EAAE,uBAAuB,CAAC,CAAC;QAClH,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QAC7C,MAAM,cAAc,GAAG,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE;YAC/C,OAAO,QAAQ,CAAC,GAAG,KAAK,YAAY,CAAC,GAAG;mBACjC,CAAC,UAAU,KAAK,SAAS,IAAI,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,uBAAuB,CAAC,KAAK,UAAU,CAAC,CAAC;QAC5G,CAAC,CAAC,CAAC;QACH,MAAM,CAAE,OAAO,EAAE,GAAG,UAAU,CAAE,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YAC5D,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,uBAAuB,CAAC,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACzF,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,uBAAuB,CAAC,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACzF,OAAO,YAAY,GAAG,YAAY,CAAC;QACvC,CAAC,CAAC,CAAC;QAEH,IAAI,UAAkB,CAAC;QACvB,IAAI,CAAC,OAAO,EAAE,CAAC;YACX,UAAU,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,CAAC;YAChF,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,sCAAsC,YAAY,CAAC,GAAG,cAAc,UAAU,GAAG,CAAC,CAAC;QACzG,CAAC;aAAM,CAAC;YACJ,UAAU,GAAG,OAAO,CAAC,EAAE,CAAC;YACxB,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,YAAY,CAAC,EAAE,CAAC;gBAC/C,MAAM,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,EAAE,YAAY,CAAC,CAAC,CAAC;gBAClF,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,2BAA2B,YAAY,CAAC,GAAG,cAAc,UAAU,GAAG,CAAC,CAAC;YAC9F,CAAC;iBAAM,CAAC;gBACJ,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,kCAAkC,YAAY,CAAC,GAAG,cAAc,UAAU,GAAG,CAAC,CAAC;YACrG,CAAC;QACL,CAAC;QAED,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;YACjC,MAAM,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;YACtE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,qCAAqC,SAAS,CAAC,GAAG,cAAc,SAAS,CAAC,EAAE,GAAG,CAAC,CAAC;QACvG,CAAC;QAED,OAAO,UAAU,CAAC;IACtB,CAAC;IAED,KAAK,CAAC,UAAU;QACZ,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;QACrE,CAAC;QACD,IAAI,CAAC,WAAW,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACjE,IAAI,CAAC,aAAa,EAAE,CAAC;IACzB,CAAC;IAED,KAAK,CAAC,eAAe;QACjB,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC;QACxC,IAAI,CAAC,YAAY,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;QACrE,CAAC;QACD,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QAC7C,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC;QACvF,IAAI,CAAC,KAAK,EAAE,CAAC;YACT,MAAM,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAAC;QACtF,CAAC;IACL,CAAC;IAED,iFAAiF;IACjF,iFAAiF;IACjF,2BAA2B;IAC3B,KAAK,CAAC,eAAe;QACjB,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;YACjC,OAAO;QACX,CAAC;QACD,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC;QACpC,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;QAC7B,IAAI,CAAC;YACD,MAAM,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;YACtC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,2CAA2C,UAAU,GAAG,CAAC,CAAC;QAChF,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,oDAAoD,UAAU,GAAG,EAAE,KAAK,CAAC,CAAC;QAChG,CAAC;IACL,CAAC;IAED,8EAA8E;IAC9E,kCAAkC;IAClC,QAAQ,CAAI,SAA2B;QACnC,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE;YACpC,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,cAAc,GAAG,mBAAmB,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;YACjF,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC;gBACX,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC;YACtB,CAAC;YACD,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACjC,OAAO,MAAM,SAAS,EAAE,CAAC;QAC7B,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QACzD,OAAO,GAAG,CAAC;IACf,CAAC;IAED,kBAAkB;QACd,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,IAAI,CAAC,eAAe,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,KAAK,IAAI,CAAC,aAAa,EAAE,EAAE,qBAAqB,CAAC,CAAC;QAC1F,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,EAAE,CAAC;IACnC,CAAC;IAED,gBAAgB;QACZ,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YACvB,YAAY,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YACnC,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC;QACrC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,aAAa;QACf,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC;QACjC,IAAI,IAAI,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;YAC9B,OAAO;QACX,CAAC;QACD,IAAI,CAAC;YACD,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;YAC7B,IAAI,IAAI,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;gBAC9B,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC9B,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QAChC,CAAC;IACL,CAAC;IAED,aAAa;QACT,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;YACxD,OAAO;QACX,CAAC;QACD,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,KAAK,WAAW,CAAC;QACjD,IAAI,CAAC,MAAM,GAAG,WAAW,CAAC;QAC1B,IAAI,CAAC,YAAY,EAAE,CAAC;YAChB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAC/B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAClC,CAAC;QACD,IAAI,CAAC,kBAAkB,EAAE,CAAC;IAC9B,CAAC;IAED,eAAe,CAAC,KAAc;QAC1B,IAAI,IAAI,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;YAC9B,wDAAwD;YACxD,uDAAuD;YACvD,OAAO;QACX,CAAC;QACD,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,IAAI,CAAC,MAAM,GAAG,cAAc,CAAC;QAC7B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;QACzC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACjC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;YACtB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;YAC1B,KAAK,IAAI,CAAC,cAAc,EAAE,CAAC;QAC/B,CAAC;IACL,CAAC;IAED,KAAK,CAAC,cAAc;QAChB,IAAI,CAAC;YACD,IAAI,OAAO,GAAG,CAAC,CAAC;YAChB,OAAO,IAAI,CAAC,MAAM,KAAK,cAAc,EAAE,CAAC;gBACpC,MAAM,IAAI,GAAG,qBAAqB,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,qBAAqB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;gBACxF,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,4BAA4B,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,cAAc,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC;gBACnG,IAAI,CAAC;oBACD,MAAM,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;gBACxC,CAAC;gBAAC,MAAM,CAAC;oBACL,OAAO;gBACX,CAAC;gBACD,IAAK,IAAI,CAAC,MAA4B,KAAK,cAAc,EAAE,CAAC;oBACxD,OAAO;gBACX,CAAC;gBACD,IAAI,CAAC;oBACD,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;oBACxB,OAAO;gBACX,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACb,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,qBAAqB,OAAO,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;oBACpE,OAAO,EAAE,CAAC;gBACd,CAAC;YACL,CAAC;QACL,CAAC;gBAAS,CAAC;YACP,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;QAC/B,CAAC;IACL,CAAC;IAED,kBAAkB,CAAC,EAAU;QACzB,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACzC,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBAC7B,MAAM,CAAC,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;gBAC7B,OAAO;YACX,CAAC;YACD,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;gBAC1B,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;gBACzD,OAAO,EAAE,CAAC;YACd,CAAC,EAAE,EAAE,CAAC,CAAC;YACP,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC;YAChB,MAAM,OAAO,GAAG,GAAG,EAAE;gBACjB,YAAY,CAAC,KAAK,CAAC,CAAC;gBACpB,MAAM,CAAC,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;YACjC,CAAC,CAAC;YACF,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1E,CAAC,CAAC,CAAC;IACP,CAAC;IAED,QAAQ;QACJ,OAAO,IAAI,CAAC,MAAM,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;IAC/F,CAAC;IAED,KAAK,CAAC,SAAS;QACX,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;QACxB,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QACpB,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC;QACvB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAChC,CAAC;CAEJ;AAkBD,MAAM,UAAW,SAAQ,KAAK;IACjB,MAAM,CAAS;IACf,IAAI,CAAW;IAExB,YAAY,OAAe,EAAE,MAAc,EAAE,IAAc;QACvD,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACrB,CAAC;CACJ"}
@@ -1,51 +1,28 @@
1
1
  import { API, Characteristic, DynamicPlatformPlugin, Logger, PlatformAccessory, PlatformConfig, Service } from 'homebridge';
2
2
  import { ILogger } from './logger.ts';
3
- import { Tedee } from './tedee.ts';
3
+ import { TedeeBridge } from './tedee-bridge.ts';
4
+ import { WebhookServer } from './webhook-server.ts';
4
5
  export declare class TedeePlatform implements DynamicPlatformPlugin {
5
6
  readonly Service: typeof Service;
6
7
  readonly Characteristic: typeof Characteristic;
7
8
  readonly api: API;
8
9
  readonly logger: ILogger;
9
- readonly unlockMode: Tedee.UnlockMode;
10
- readonly lowBatteryThreshold: number;
11
10
  private readonly config;
12
- private readonly accessories;
13
- private readonly devices;
14
- private readonly detachables;
15
- private readonly loggedIgnored;
16
- private client?;
17
- private refreshTimer?;
11
+ private readonly server;
12
+ private readonly bridges;
13
+ private readonly orphans;
18
14
  constructor(log: Logger, config: PlatformConfig, api: API);
19
15
  configureAccessory(accessory: PlatformAccessory): void;
20
16
  init(): Promise<void>;
21
17
  dispose(): Promise<void>;
22
- private createClient;
23
- private syncLocks;
24
- private registerLock;
25
- private startRefreshTimer;
26
- private refreshLocks;
27
- lockConfig(id: number): TedeePlatform.LockConfig | undefined;
28
- private lockIgnored;
29
- private callbackInstanceId;
30
- private lockModel;
18
+ private resolveBridges;
19
+ private webhookSecret;
31
20
  }
32
21
  export declare namespace TedeePlatform {
33
22
  type Config = PlatformConfig & {
34
- host: string;
35
- port?: number;
36
- token: string;
37
- tokenMode?: 'plain' | 'encrypted';
38
- apiVersion?: string;
39
- unlockMode?: Tedee.UnlockMode;
40
- lowBatteryThreshold?: number;
41
- refreshInterval?: number;
42
- webhookPort?: number;
43
- locks?: LockConfig[];
44
- };
45
- type LockConfig = {
46
- id: number;
47
- ignore?: boolean;
48
- pullSpringSwitch?: boolean;
23
+ webhook?: WebhookServer.Config;
24
+ defaults?: TedeeBridge.Defaults;
25
+ bridges?: TedeeBridge.Config[];
49
26
  };
50
27
  }
51
28
  //# sourceMappingURL=tedee-platform.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tedee-platform.d.ts","sourceRoot":"","sources":["../src/tedee-platform.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,GAAG,EACH,cAAc,EACd,qBAAqB,EACrB,MAAM,EACN,iBAAiB,EACjB,cAAc,EACd,OAAO,EACV,MAAM,YAAY,CAAC;AAKpB,OAAO,EAAiB,OAAO,EAAE,MAAM,aAAa,CAAC;AAErD,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAGnC,qBAAa,aAAc,YAAW,qBAAqB;IAEvD,SAAgB,OAAO,EAAE,OAAO,OAAO,CAAC;IACxC,SAAgB,cAAc,EAAE,OAAO,cAAc,CAAC;IACtD,SAAgB,GAAG,EAAE,GAAG,CAAC;IACzB,SAAgB,MAAM,EAAE,OAAO,CAAC;IAEhC,SAAgB,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC;IAC7C,SAAgB,mBAAmB,EAAE,MAAM,CAAC;IAE5C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAuB;IAC9C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA2B;IACvD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAgB;IACxC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAqB;IACjD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAqB;IACnD,OAAO,CAAC,MAAM,CAAC,CAAc;IAC7B,OAAO,CAAC,YAAY,CAAC,CAAiB;gBAE1B,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,GAAG,EAAE,GAAG;IAazD,kBAAkB,CAAC,SAAS,EAAE,iBAAiB;IAIzC,IAAI;IAuBJ,OAAO;IAWb,OAAO,CAAC,YAAY;YAcN,SAAS;YAyCT,YAAY;IA4B1B,OAAO,CAAC,iBAAiB;YAYX,YAAY;IAa1B,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,aAAa,CAAC,UAAU,GAAG,SAAS;IAI5D,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,kBAAkB;IAK1B,OAAO,CAAC,SAAS;CAWpB;AAED,yBAAiB,aAAa,CAAC;IAE3B,KAAY,MAAM,GAAG,cAAc,GAAG;QAClC,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,MAAM,CAAC;QACd,SAAS,CAAC,EAAE,OAAO,GAAG,WAAW,CAAC;QAClC,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,UAAU,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC;QAC9B,mBAAmB,CAAC,EAAE,MAAM,CAAC;QAC7B,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,KAAK,CAAC,EAAE,UAAU,EAAE,CAAA;KACvB,CAAA;IAED,KAAY,UAAU,GAAG;QACrB,EAAE,EAAE,MAAM,CAAC;QACX,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB,gBAAgB,CAAC,EAAE,OAAO,CAAA;KAC7B,CAAA;CAEJ"}
1
+ {"version":3,"file":"tedee-platform.d.ts","sourceRoot":"","sources":["../src/tedee-platform.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,GAAG,EACH,cAAc,EACd,qBAAqB,EACrB,MAAM,EACN,iBAAiB,EACjB,cAAc,EACd,OAAO,EACV,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAiB,OAAO,EAAE,MAAM,aAAa,CAAC;AAQrD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD,qBAAa,aAAc,YAAW,qBAAqB;IAEvD,SAAgB,OAAO,EAAE,OAAO,OAAO,CAAC;IACxC,SAAgB,cAAc,EAAE,OAAO,cAAc,CAAC;IACtD,SAAgB,GAAG,EAAE,GAAG,CAAC;IACzB,SAAgB,MAAM,EAAE,OAAO,CAAC;IAEhC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAuB;IAC9C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgB;IACvC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAkC;IAC1D,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA2B;gBAEvC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,GAAG,EAAE,GAAG;IAqBzD,kBAAkB,CAAC,SAAS,EAAE,iBAAiB;IAUzC,IAAI;IAkCJ,OAAO;IAQb,OAAO,CAAC,cAAc;IAqBtB,OAAO,CAAC,aAAa;CAKxB;AAED,yBAAiB,aAAa,CAAC;IAE3B,KAAY,MAAM,GAAG,cAAc,GAAG;QAClC,OAAO,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC;QAC/B,QAAQ,CAAC,EAAE,WAAW,CAAC,QAAQ,CAAC;QAChC,OAAO,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,CAAA;KACjC,CAAA;CAEJ"}
@@ -1,186 +1,108 @@
1
1
  import { createHash } from 'node:crypto';
2
- import { Detachables } from "./common.js";
3
- import { Lock } from "./device/lock.js";
4
2
  import { ContextLogger } from "./logger.js";
5
- import { DEFAULT_LOCK_UNLOCK_MODE, DEFAULT_LOW_BATTERY_THRESHOLD, PLATFORM_NAME, PLUGIN_NAME } from "./settings.js";
6
- import { Tedee } from "./tedee.js";
7
- import { TedeeClient } from "./tedee-client.js";
3
+ import { DEFAULT_API_VERSION, DEFAULT_BRIDGE_PORT, DEFAULT_TOKEN_MODE, PLATFORM_NAME, PLUGIN_NAME } from "./settings.js";
4
+ import { TedeeBridge } from "./tedee-bridge.js";
5
+ import { WebhookServer } from "./webhook-server.js";
8
6
  export class TedeePlatform {
9
7
  Service;
10
8
  Characteristic;
11
9
  api;
12
10
  logger;
13
- unlockMode;
14
- lowBatteryThreshold;
15
11
  config;
16
- accessories = [];
17
- devices = [];
18
- detachables = new Detachables();
19
- loggedIgnored = new Set();
20
- client;
21
- refreshTimer;
12
+ server;
13
+ bridges = new Map();
14
+ orphans = [];
22
15
  constructor(log, config, api) {
23
16
  this.logger = new ContextLogger(log);
24
17
  this.config = config;
25
18
  this.api = api;
26
19
  this.Service = api.hap.Service;
27
20
  this.Characteristic = api.hap.Characteristic;
28
- this.unlockMode = this.config.unlockMode ?? DEFAULT_LOCK_UNLOCK_MODE;
29
- this.lowBatteryThreshold = this.config.lowBatteryThreshold ?? DEFAULT_LOW_BATTERY_THRESHOLD;
21
+ const secret = this.webhookSecret();
22
+ this.server = new WebhookServer(this.config.webhook ?? {}, secret, this.logger);
23
+ for (const bridgeConfig of this.resolveBridges()) {
24
+ if (this.bridges.has(bridgeConfig.id)) {
25
+ this.logger.warn(`ignoring duplicate Tedee bridge id [${bridgeConfig.id}]`);
26
+ continue;
27
+ }
28
+ this.bridges.set(bridgeConfig.id, new TedeeBridge(this, bridgeConfig, this.server, secret));
29
+ }
30
30
  this.api.on('didFinishLaunching', () => void this.init());
31
31
  this.api.on('shutdown', () => void this.dispose());
32
32
  }
33
33
  configureAccessory(accessory) {
34
- this.accessories.push(accessory);
34
+ const bridge = this.bridges.get(accessory.context.bridgeId);
35
+ if (bridge) {
36
+ bridge.configureAccessory(accessory);
37
+ }
38
+ else {
39
+ // The bridge this accessory belonged to is gone from the config; drop it in init().
40
+ this.orphans.push(accessory);
41
+ }
35
42
  }
36
43
  async init() {
37
44
  try {
38
- const client = this.createClient();
39
- this.client = client;
40
- this.detachables.add(client.on('connect', () => {
41
- this.devices.forEach(device => device.setFault(false));
42
- }));
43
- this.detachables.add(client.on('disconnect', () => {
44
- this.devices.forEach(device => device.setFault(true));
45
- }));
46
- await client.start();
47
- const bridge = await client.bridge();
48
- this.logger.info(`connected to Tedee Bridge [${bridge.name}] firmware [${bridge.version}]`);
49
- const locks = await client.listLocks();
50
- await this.syncLocks(client, locks);
51
- this.startRefreshTimer();
45
+ await this.server.start();
52
46
  }
53
47
  catch (error) {
54
- this.logger.error(`failed to initialize Tedee platform`, error);
55
- }
56
- }
57
- async dispose() {
58
- if (this.refreshTimer) {
59
- clearInterval(this.refreshTimer);
60
- this.refreshTimer = undefined;
48
+ this.logger.error(`failed to start Tedee webhook server`, error);
49
+ return;
61
50
  }
62
- await this.client?.close();
63
- this.detachables.detach();
64
- await Promise.all(this.devices.map(device => device.close()));
65
- }
66
- createClient() {
67
- return new TedeeClient({
68
- host: this.config.host,
69
- port: this.config.port,
70
- token: this.config.token,
71
- tokenMode: this.config.tokenMode,
72
- apiVersion: this.config.apiVersion,
73
- webhook: {
74
- port: this.config.webhookPort,
75
- instanceId: this.callbackInstanceId()
51
+ this.server.on('event', (bridgeId, event) => {
52
+ const bridge = this.bridges.get(bridgeId);
53
+ if (bridge) {
54
+ bridge.handleEvent(event);
76
55
  }
77
- }, this.logger);
78
- }
79
- async syncLocks(client, locks) {
80
- const lockById = new Map(locks.map(lock => [lock.id, lock]));
81
- // Drop accessories whose lock has disappeared from Tedee or is now ignored.
82
- const stale = [];
83
- for (let i = 0; i < this.accessories.length; i++) {
84
- const accessory = this.accessories[i];
85
- const lock = lockById.get(accessory.context.lockId);
86
- const reason = !lock ? 'Lock no longer available' : this.lockIgnored(lock.id) ? 'Lock is ignored' : undefined;
87
- if (reason) {
88
- this.accessories.splice(i--, 1);
89
- stale.push({ accessory, reason });
56
+ else {
57
+ this.logger.warn(`received webhook event for unknown bridge [${bridgeId}]`);
90
58
  }
91
- }
92
- for (const { reason, accessory } of stale) {
93
- this.api.unregisterPlatformAccessories(PLUGIN_NAME, PLATFORM_NAME, [accessory]);
94
- this.logger.info(`unregistering cached lock accessory [${accessory.displayName}] (reason: ${reason})`);
95
- const deviceIndex = this.devices.findIndex(device => device.id === accessory.context.lockId);
96
- if (deviceIndex >= 0) {
97
- const [device] = this.devices.splice(deviceIndex, 1);
98
- await device.close();
59
+ });
60
+ if (this.orphans.length > 0) {
61
+ this.api.unregisterPlatformAccessories(PLUGIN_NAME, PLATFORM_NAME, this.orphans);
62
+ for (const orphan of this.orphans) {
63
+ this.logger.info(`unregistering cached accessory [${orphan.displayName}] (reason: bridge no longer configured)`);
99
64
  }
65
+ this.orphans.length = 0;
100
66
  }
101
- for (const lock of locks) {
102
- if (this.lockIgnored(lock.id)) {
103
- if (!this.loggedIgnored.has(lock.id)) {
104
- this.loggedIgnored.add(lock.id);
105
- this.logger.info(`ignoring Tedee lock [${lock.name}] ID [${lock.id}]`);
106
- }
107
- continue;
108
- }
109
- const existing = this.devices.find(device => device.id === lock.id);
110
- if (existing) {
111
- existing.update(lock);
67
+ await Promise.all([...this.bridges.values()].map(async (bridge) => {
68
+ try {
69
+ await bridge.start();
112
70
  }
113
- else {
114
- await this.registerLock(client, lock);
71
+ catch (error) {
72
+ this.logger.error(`failed to start Tedee bridge [${bridge.id}]`, error);
115
73
  }
116
- }
74
+ }));
117
75
  }
118
- async registerLock(client, lock) {
119
- const uuid = this.api.hap.uuid.generate(`tedee:lock:${lock.serialNumber || lock.id}`);
120
- let accessory = this.accessories.find(accessory => accessory.UUID === uuid);
121
- if (!accessory) {
122
- accessory = new this.api.platformAccessory(lock.name, uuid);
123
- this.logger.info(`registering Tedee lock [${accessory.displayName}] ID [${lock.id}]`);
124
- this.api.registerPlatformAccessories(PLUGIN_NAME, PLATFORM_NAME, [accessory]);
125
- this.accessories.push(accessory);
126
- }
127
- else {
128
- this.logger.info(`found existing Tedee lock [${accessory.displayName}] ID [${lock.id}]`);
129
- }
130
- accessory.context.lockId = lock.id;
131
- accessory.context.serialNumber = lock.serialNumber;
132
- // Written once on (re)registration — covers stale cached metadata after firmware
133
- // updates, renames, etc. update() handles state changes during the session.
134
- accessory.getService(this.Service.AccessoryInformation)
135
- .setCharacteristic(this.Characteristic.Name, accessory.displayName)
136
- .setCharacteristic(this.Characteristic.Manufacturer, 'Tedee')
137
- .setCharacteristic(this.Characteristic.Model, this.lockModel(lock))
138
- .setCharacteristic(this.Characteristic.FirmwareRevision, lock.version ?? '0')
139
- .setCharacteristic(this.Characteristic.SerialNumber, lock.serialNumber ?? String(lock.id));
140
- this.devices.push(await Lock.create(this, client, accessory, lock));
141
- }
142
- startRefreshTimer() {
143
- const refreshInterval = this.config.refreshInterval ?? 600000;
144
- if (refreshInterval <= 0) {
145
- return;
146
- }
147
- this.refreshTimer = setInterval(() => {
148
- void this.refreshLocks();
149
- }, refreshInterval);
150
- this.refreshTimer.unref?.();
76
+ async dispose() {
77
+ await Promise.all([...this.bridges.values()].map(bridge => bridge.close()));
78
+ await this.server.close();
151
79
  }
152
- async refreshLocks() {
153
- const client = this.client;
154
- if (!client) {
155
- return;
156
- }
157
- try {
158
- await this.syncLocks(client, await client.listLocks());
159
- }
160
- catch (error) {
161
- this.logger.warn(`failed to refresh Tedee locks`, error);
162
- this.devices.forEach(device => device.setFault(true));
80
+ // Applies the platform defaults to each configured bridge and passes the lock
81
+ // defaults through so the bridge can resolve per-lock settings (including for
82
+ // locks discovered but not explicitly listed).
83
+ resolveBridges() {
84
+ const defaults = this.config.defaults ?? {};
85
+ const bridges = [];
86
+ for (const bridge of this.config.bridges ?? []) {
87
+ if (!bridge?.id || !bridge.host || !bridge.token) {
88
+ this.logger.warn(`ignoring Tedee bridge with missing id/host/token: ${global.JSON.stringify(bridge)}`);
89
+ continue;
90
+ }
91
+ const { lock: lockDefaults, ...bridgeDefaults } = defaults;
92
+ bridges.push({
93
+ ...bridgeDefaults,
94
+ ...bridge,
95
+ port: bridge.port ?? defaults.port ?? DEFAULT_BRIDGE_PORT,
96
+ tokenMode: bridge.tokenMode ?? defaults.tokenMode ?? DEFAULT_TOKEN_MODE,
97
+ apiVersion: bridge.apiVersion ?? defaults.apiVersion ?? DEFAULT_API_VERSION,
98
+ lockDefaults
99
+ });
163
100
  }
101
+ return bridges;
164
102
  }
165
- lockConfig(id) {
166
- return this.config.locks?.find(lock => lock.id === id);
167
- }
168
- lockIgnored(id) {
169
- return !!this.lockConfig(id)?.ignore;
170
- }
171
- callbackInstanceId() {
103
+ webhookSecret() {
172
104
  const storagePath = this.api.user.storagePath();
173
- return createHash('sha256').update(`${PLUGIN_NAME}:${storagePath}:${this.config.host}`).digest('hex').slice(0, 16);
174
- }
175
- lockModel(lock) {
176
- switch (lock.type) {
177
- case Tedee.DeviceType.LockPro:
178
- return 'Tedee Lock PRO';
179
- case Tedee.DeviceType.LockGo:
180
- return 'Tedee Lock GO';
181
- default:
182
- return `Tedee Lock ${lock.type}`;
183
- }
105
+ return createHash('sha256').update(`${PLUGIN_NAME}:${storagePath}`).digest('hex').slice(0, 16);
184
106
  }
185
107
  }
186
108
  //# sourceMappingURL=tedee-platform.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tedee-platform.js","sourceRoot":"","sources":["../src/tedee-platform.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tedee-platform.js","sourceRoot":"","sources":["../src/tedee-platform.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ import type { Detachable } from './common.ts';
2
+ import type { ILogger } from './logger.ts';
3
+ import type { Tedee } from './tedee.ts';
4
+ export declare class WebhookServer {
5
+ private readonly config;
6
+ private readonly secret;
7
+ private readonly logger;
8
+ private readonly emitter;
9
+ private server?;
10
+ private actualPort?;
11
+ constructor(config: WebhookServer.Config, secret: string, logger: ILogger);
12
+ webhookUrl(bridgeId: string, bridgeHost: string): Promise<string>;
13
+ on(event: 'event', handler: (bridgeId: string, event: Tedee.Event) => void): Detachable;
14
+ start(): Promise<void>;
15
+ close(): Promise<void>;
16
+ private handle;
17
+ private parseBridgeId;
18
+ private validateSecret;
19
+ private readBody;
20
+ private resolveLocalHost;
21
+ }
22
+ export declare namespace WebhookServer {
23
+ type Config = {
24
+ host?: string;
25
+ port?: number;
26
+ };
27
+ }
28
+ //# sourceMappingURL=webhook-server.d.ts.map