homebridge-plejd 1.6.1 → 1.6.2

Sign up to get free protection for your applications and to get access to all the features.
package/CHANGELOG.md CHANGED
@@ -1,4 +1,9 @@
1
- #### 1.6.0(2024-12-24)
1
+ #### 1.6.2(2024-12-24)
2
+
3
+ Add blacklist for problematic devices
4
+ Add more retries and timeouts.
5
+
6
+ #### 1.6.1(2024-12-24)
2
7
 
3
8
  Rebuild release with node 22
4
9
 
@@ -7,6 +7,14 @@ export declare class PlejdService {
7
7
  private sendQueue;
8
8
  private plejdTimeout;
9
9
  private queueTimeout;
10
+ private blacklistCleanupInterval;
11
+ private isConnecting;
12
+ private isAuthenticated;
13
+ private deviceState;
14
+ private deviceBlacklist;
15
+ private readonly MAX_FAILURES;
16
+ private readonly BLACKLIST_DURATION;
17
+ private readonly EXTENDED_BLACKLIST_DURATION;
10
18
  constructor(config: UserInputConfig, log: Logger, onUpdate: (identifier: number, isOn: boolean, dim?: number) => void);
11
19
  /**
12
20
  *
@@ -29,4 +37,9 @@ export declare class PlejdService {
29
37
  private authenticate;
30
38
  private tryStartScanning;
31
39
  private tryDisconnect;
40
+ private isDeviceBlacklisted;
41
+ private blacklistDevice;
42
+ private cleanupBlacklist;
43
+ private startBlacklistCleanup;
44
+ private cleanup;
32
45
  }
@@ -2,6 +2,7 @@ import { plejdChalResp as plejdCharResp, plejdEncodeDecode, reverseBuffer, } fro
2
2
  import { randomBytes } from "crypto";
3
3
  import noble from "@abandonware/noble";
4
4
  import { PLEJD_PING_TIMEOUT, PLEJD_WRITE_TIMEOUT } from "./settings.js";
5
+ import { delay, race } from "./utils.js";
5
6
  /**
6
7
  * Plejd BLE UUIDs
7
8
  */
@@ -33,6 +34,17 @@ export class PlejdService {
33
34
  sendQueue = [];
34
35
  plejdTimeout = null;
35
36
  queueTimeout = null;
37
+ blacklistCleanupInterval = null;
38
+ isConnecting = false;
39
+ isAuthenticated = false;
40
+ deviceState = {
41
+ lastPingSuccess: Date.now(),
42
+ consecutivePingFailures: 0,
43
+ };
44
+ deviceBlacklist = new Map();
45
+ MAX_FAILURES = 5;
46
+ BLACKLIST_DURATION = 5 * 60 * 1000;
47
+ EXTENDED_BLACKLIST_DURATION = 30 * 60 * 1000;
36
48
  constructor(config, log, onUpdate) {
37
49
  this.config = config;
38
50
  this.log = log;
@@ -62,6 +74,7 @@ export class PlejdService {
62
74
  this.sendQueue.unshift(payload);
63
75
  };
64
76
  configureBLE = () => {
77
+ this.startBlacklistCleanup();
65
78
  noble.on("stateChange", async (state) => {
66
79
  this.log.debug(`Noble State changed: ${state}`);
67
80
  await this.tryStartScanning();
@@ -72,6 +85,18 @@ export class PlejdService {
72
85
  };
73
86
  // -------------- Private -------------- \\
74
87
  onDiscover = async (peripheral) => {
88
+ if (peripheral.rssi < -90) {
89
+ this.log.debug(`Skipping device with weak signal: ${peripheral.address} (${peripheral.rssi} dB)`);
90
+ return;
91
+ }
92
+ if (this.isDeviceBlacklisted(peripheral.address)) {
93
+ this.log.debug(`Skipping blacklisted device: ${peripheral.address}`);
94
+ return;
95
+ }
96
+ if (this.isConnecting) {
97
+ this.log.debug("Connection already in progress, skipping...");
98
+ return;
99
+ }
75
100
  this.log.info(`Discovered | ${peripheral.advertisement.localName} | addr: ${peripheral.address} | Signal strength: ${this.mapRssiToQuality(peripheral.rssi)} (${peripheral.rssi} dB)`);
76
101
  this.log.debug(`Stopping scan`);
77
102
  await noble.stopScanningAsync();
@@ -79,11 +104,16 @@ export class PlejdService {
79
104
  const maxRetries = 3;
80
105
  const connectWithRetry = async () => {
81
106
  try {
107
+ if (retryCount > 0) {
108
+ await delay(2000);
109
+ }
110
+ this.isConnecting = true;
82
111
  this.log.debug(`Connecting to the new peripheral`);
83
112
  await peripheral.connectAsync();
84
113
  this.log.info(`Connected to mesh | ${peripheral.advertisement.localName} (addr: ${peripheral.address})`);
85
114
  peripheral.once("disconnect", async () => {
86
115
  this.log.info("Disconnected from mesh");
116
+ this.cleanup();
87
117
  if (retryCount < maxRetries) {
88
118
  retryCount++;
89
119
  this.log.debug(`Attempting to reconnect (attempt ${retryCount})`);
@@ -91,6 +121,7 @@ export class PlejdService {
91
121
  }
92
122
  else {
93
123
  this.log.error("Max reconnection attempts reached. Starting scan.");
124
+ await delay(5000);
94
125
  await this.tryStartScanning();
95
126
  }
96
127
  });
@@ -121,6 +152,9 @@ export class PlejdService {
121
152
  await this.tryStartScanning();
122
153
  }
123
154
  }
155
+ finally {
156
+ this.isConnecting = false;
157
+ }
124
158
  };
125
159
  await connectWithRetry();
126
160
  };
@@ -165,11 +199,12 @@ export class PlejdService {
165
199
  const dataChar = peripheral?.services[0]?.characteristics?.find((char) => char.uuid === PlejdCharacteristics.Data) ?? null;
166
200
  if (!authChar || !lastDataChar || !pingChar || !dataChar) {
167
201
  this.log.error("Unable to extract characteristic during discovery", authChar, lastDataChar, pingChar);
202
+ await this.tryDisconnect(peripheral);
168
203
  return;
169
204
  }
170
205
  const addressBuffer = reverseBuffer(Buffer.from(String(peripheral.address).replace(/:/g, ""), "hex"));
171
- await this.authenticate(authChar);
172
- await this.setupCommunication(pingChar, lastDataChar, dataChar, addressBuffer);
206
+ await this.authenticate(peripheral, authChar);
207
+ await this.setupCommunication(peripheral, pingChar, lastDataChar, dataChar, addressBuffer);
173
208
  };
174
209
  handleQueuedMessages = (dataChar, addressBuffer) => {
175
210
  if (this.queueTimeout) {
@@ -183,8 +218,24 @@ export class PlejdService {
183
218
  }
184
219
  const data = plejdEncodeDecode(this.config.cryptoKey, addressBuffer, payload);
185
220
  this.log.debug(`BLE command sent to ${addressBuffer?.toString("hex") ?? "Unknown"} | ${data.length} bytes | ${data.toString("hex")}`);
221
+ let retryCount = 0;
222
+ const maxRetries = 3;
223
+ const tryWrite = async () => {
224
+ try {
225
+ await race(() => dataChar.writeAsync(data, false));
226
+ }
227
+ catch (error) {
228
+ if (retryCount < maxRetries) {
229
+ retryCount++;
230
+ this.log.debug(`Retrying write (${retryCount}/${maxRetries})`);
231
+ await delay(100);
232
+ return tryWrite();
233
+ }
234
+ throw error;
235
+ }
236
+ };
186
237
  try {
187
- await dataChar.writeAsync(data, false);
238
+ await tryWrite();
188
239
  this.handleQueuedMessages(dataChar, addressBuffer);
189
240
  }
190
241
  catch (error) {
@@ -193,7 +244,7 @@ export class PlejdService {
193
244
  }
194
245
  }, PLEJD_WRITE_TIMEOUT);
195
246
  };
196
- startPlejdPing = (pingChar) => {
247
+ startPlejdPing = (peripheral, pingChar) => {
197
248
  if (this.plejdTimeout) {
198
249
  clearTimeout(this.plejdTimeout);
199
250
  }
@@ -201,14 +252,22 @@ export class PlejdService {
201
252
  if (pingChar) {
202
253
  try {
203
254
  const ping = randomBytes(1);
204
- await pingChar.writeAsync(ping, false);
205
- const pong = await pingChar.readAsync();
255
+ await race(() => pingChar.writeAsync(ping, false));
256
+ const pong = await race(() => pingChar.readAsync());
206
257
  if (((ping[0] + 1) & 0xff) !== pong[0]) {
207
258
  this.log.error("Ping pong communication failed, missing pong response");
208
259
  }
209
- this.startPlejdPing(pingChar);
260
+ this.deviceState.lastPingSuccess = Date.now();
261
+ this.deviceState.consecutivePingFailures = 0;
262
+ this.startPlejdPing(peripheral, pingChar);
210
263
  }
211
264
  catch (error) {
265
+ this.deviceState.consecutivePingFailures++;
266
+ const address = peripheral?.address;
267
+ if (address && this.deviceState.consecutivePingFailures >= 3) {
268
+ this.blacklistDevice(address, `Ping failed: ${error}`);
269
+ await this.tryDisconnect(peripheral);
270
+ }
212
271
  this.log.warn("Ping failed, device disconnected, will retry to connect to mesh: ", error);
213
272
  }
214
273
  }
@@ -260,44 +319,73 @@ export class PlejdService {
260
319
  }
261
320
  }
262
321
  };
263
- setupCommunication = async (pingChar, lastDataChar, dataChar, addressBuffer) => {
322
+ setupCommunication = async (peripheral, pingChar, lastDataChar, dataChar, addressBuffer) => {
264
323
  this.log.debug("Setting up ping pong communication with Plejd device");
265
- this.startPlejdPing(pingChar);
324
+ this.startPlejdPing(peripheral, pingChar);
266
325
  this.log.debug("Starting queue handler for messages to Plejd device");
267
326
  this.handleQueuedMessages(dataChar, addressBuffer);
268
327
  try {
269
328
  this.log.debug("Subscribing to incomming messages");
270
- await lastDataChar.subscribeAsync();
329
+ await race(() => lastDataChar.subscribeAsync());
271
330
  lastDataChar.on("data", async (data, isNotification) => {
272
331
  await this.handleNotification(data, isNotification, addressBuffer);
273
332
  });
274
333
  }
275
334
  catch (e) {
335
+ const address = peripheral?.address;
336
+ if (address) {
337
+ this.blacklistDevice(address, `Communication setup failed: ${e}`);
338
+ }
339
+ await this.tryDisconnect(peripheral);
276
340
  this.log.error("Failed to subscribe to Plejd device", e);
277
341
  }
278
342
  };
279
- authenticate = async (authChar) => {
343
+ authenticate = async (peripheral, authChar) => {
344
+ if (this.isAuthenticated) {
345
+ return;
346
+ }
280
347
  try {
281
348
  this.log.debug("Authenticating to Plejd device");
282
- await authChar.writeAsync(Buffer.from([0x00]), false);
283
- const data = await authChar.readAsync();
349
+ await race(() => authChar.writeAsync(Buffer.from([0x00]), false));
350
+ await delay(100);
351
+ const data = await race(() => authChar.readAsync());
352
+ await delay(100);
284
353
  await authChar.writeAsync(plejdCharResp(this.config.cryptoKey, data), false);
354
+ await delay(100);
285
355
  this.log.debug("Authentication successful");
356
+ this.isAuthenticated = true;
286
357
  }
287
358
  catch (e) {
359
+ this.isAuthenticated = false;
360
+ const address = peripheral?.address;
361
+ if (address) {
362
+ this.blacklistDevice(address, `Authentication failed: ${e}`);
363
+ }
364
+ await this.tryDisconnect(peripheral);
288
365
  this.log.error("Failed to authenticate to Plejd device", e);
289
366
  }
290
367
  };
291
368
  tryStartScanning = async () => {
292
369
  try {
293
370
  if (noble._state === "poweredOn") {
371
+ this.cleanupBlacklist();
294
372
  this.log.info("Scanning for Plejd devices");
295
- await noble.startScanningAsync([PlejdCharacteristics.Service], false);
373
+ await delay(5000);
374
+ await race(() => noble.startScanningAsync([PlejdCharacteristics.Service], false), 10_000);
296
375
  noble.once("discover", async (peripheral) => await this.onDiscover(peripheral));
376
+ setTimeout(async () => {
377
+ if (!this.isAuthenticated) {
378
+ this.log.warn("No device found during scan, restarting scan");
379
+ await noble.stopScanningAsync();
380
+ await this.tryStartScanning();
381
+ }
382
+ }, 30000);
297
383
  }
298
384
  }
299
385
  catch (e) {
300
386
  this.log.error("Failed to start scanning for Plejd devices", e);
387
+ await delay(10000);
388
+ await this.tryStartScanning();
301
389
  }
302
390
  };
303
391
  tryDisconnect = async (peripheral) => {
@@ -308,5 +396,65 @@ export class PlejdService {
308
396
  this.log.debug("Failed to disconnect from previous peripheral", e);
309
397
  }
310
398
  };
399
+ isDeviceBlacklisted(address) {
400
+ const blacklistEntry = this.deviceBlacklist.get(address);
401
+ if (!blacklistEntry)
402
+ return false;
403
+ if (Date.now() > blacklistEntry.until) {
404
+ this.deviceBlacklist.delete(address);
405
+ return false;
406
+ }
407
+ return true;
408
+ }
409
+ blacklistDevice(address, reason) {
410
+ const entry = this.deviceBlacklist.get(address) ?? {
411
+ until: 0,
412
+ attempts: 0,
413
+ };
414
+ entry.attempts++;
415
+ const baseTime = entry.attempts >= this.MAX_FAILURES
416
+ ? this.EXTENDED_BLACKLIST_DURATION
417
+ : this.BLACKLIST_DURATION;
418
+ const duration = Math.min(baseTime * Math.pow(2, entry.attempts - 1), 24 * 60 * 60 * 1000);
419
+ entry.until = Date.now() + duration;
420
+ this.deviceBlacklist.set(address, entry);
421
+ this.log.warn(`Device ${address} blacklisted for ${duration / 1000} seconds. Reason: ${reason}. Failure attempts: ${entry.attempts}`);
422
+ }
423
+ cleanupBlacklist() {
424
+ const now = Date.now();
425
+ for (const [address, entry] of this.deviceBlacklist.entries()) {
426
+ if (now > entry.until) {
427
+ this.deviceBlacklist.delete(address);
428
+ }
429
+ }
430
+ }
431
+ startBlacklistCleanup() {
432
+ if (this.blacklistCleanupInterval) {
433
+ clearInterval(this.blacklistCleanupInterval);
434
+ }
435
+ this.blacklistCleanupInterval = setInterval(() => {
436
+ this.cleanupBlacklist();
437
+ }, 5 * 60 * 1000); // Clean every 5 minutes
438
+ }
439
+ cleanup() {
440
+ if (this.plejdTimeout) {
441
+ clearTimeout(this.plejdTimeout);
442
+ this.plejdTimeout = null;
443
+ }
444
+ if (this.queueTimeout) {
445
+ clearTimeout(this.queueTimeout);
446
+ this.queueTimeout = null;
447
+ }
448
+ if (this.blacklistCleanupInterval) {
449
+ clearInterval(this.blacklistCleanupInterval);
450
+ this.blacklistCleanupInterval = null;
451
+ }
452
+ this.sendQueue = [];
453
+ this.isAuthenticated = false;
454
+ this.deviceState = {
455
+ lastPingSuccess: Date.now(),
456
+ consecutivePingFailures: 0,
457
+ };
458
+ }
311
459
  }
312
460
  //# sourceMappingURL=plejdService.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"plejdService.js","sourceRoot":"","sources":["../src/plejdService.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"plejdService.js","sourceRoot":"","sources":["../src/plejdService.ts"],"names":[],"mappings":"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"}
package/dist/utils.d.ts CHANGED
@@ -1 +1,2 @@
1
1
  export declare const delay: (ms: number) => Promise<unknown>;
2
+ export declare const race: <T>(operation: () => Promise<T>, timeoutMs?: number) => Promise<T>;
package/dist/utils.js CHANGED
@@ -1,2 +1,13 @@
1
- export const delay = (ms) => new Promise(resolve => setTimeout(resolve, ms));
1
+ export const delay = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
2
+ /*
3
+ * Set a timeout for a function
4
+ * @param operation - The function to run
5
+ * @param timeoutMs - The timeout in milliseconds (default 5000)
6
+ */
7
+ export const race = async (operation, timeoutMs = 5000) => {
8
+ return Promise.race([
9
+ operation(),
10
+ new Promise((_, reject) => setTimeout(() => reject(new Error("BLE operation timeout")), timeoutMs)),
11
+ ]);
12
+ };
2
13
  //# sourceMappingURL=utils.js.map
package/dist/utils.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,EAAU,EAAE,EAAE,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,EAAU,EAAE,EAAE,CAClC,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAEpD;;;;GAIG;AACH,MAAM,CAAC,MAAM,IAAI,GAAG,KAAK,EACvB,SAA2B,EAC3B,SAAS,GAAG,IAAI,EACJ,EAAE;IACd,OAAO,OAAO,CAAC,IAAI,CAAC;QAClB,SAAS,EAAE;QACX,IAAI,OAAO,CAAI,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAC3B,UAAU,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC,EAAE,SAAS,CAAC,CACxE;KACF,CAAC,CAAC;AACL,CAAC,CAAC"}
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "displayName": "Plejd",
4
4
  "name": "homebridge-plejd",
5
5
  "author": "Herlix",
6
- "version": "1.6.1",
6
+ "version": "1.6.2",
7
7
  "description": "HomeKit support for the Plejd BLE platform using Homebridge",
8
8
  "license": "Apache-2.0",
9
9
  "type": "module",