homebridge-tydom 0.23.13 → 0.23.15

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.
@@ -242,7 +242,7 @@ const setupGarageDoorOpener = (accessory, controller) => {
242
242
  };
243
243
  exports.setupGarageDoorOpener = setupGarageDoorOpener;
244
244
  const updateGarageDoorOpener = (accessory, _controller, updates, type) => {
245
- const { context } = accessory;
245
+ const { context: _context } = accessory;
246
246
  // const {state} = context as TydomAccessoryContext<State>;
247
247
  // Process command updates
248
248
  if (type === 'cdata') {
@@ -254,7 +254,7 @@ const updateGarageDoorOpener = (accessory, _controller, updates, type) => {
254
254
  return;
255
255
  }
256
256
  updates.forEach((update) => {
257
- const { name, value } = update;
257
+ const { name, value: _value } = update;
258
258
  switch (name) {
259
259
  default:
260
260
  return;
@@ -69,6 +69,23 @@ const setupSecuritySystem = async (accessory, controller) => {
69
69
  }
70
70
  let zones = [];
71
71
  const initialData = await (0, tydom_1.getTydomDeviceData)(client, { deviceId, endpointId });
72
+ const setTydomZones = async (zones, value) => {
73
+ if (!isLegacy) {
74
+ return await client.put(`/devices/${deviceId}/endpoints/${endpointId}/cdata?name=zoneCmd`, {
75
+ value,
76
+ pwd: pin,
77
+ zones
78
+ });
79
+ }
80
+ else {
81
+ for (const zone in zones) {
82
+ await client.put(`/devices/${deviceId}/endpoints/${endpointId}/cdata?name=partCmd`, {
83
+ value,
84
+ part: zone
85
+ });
86
+ }
87
+ }
88
+ };
72
89
  if (!isLegacy) {
73
90
  try {
74
91
  const labelResults = await client.command(`/devices/${deviceId}/endpoints/${endpointId}/cdata?name=label`);
@@ -174,24 +191,10 @@ const setupSecuritySystem = async (accessory, controller) => {
174
191
  }
175
192
  // Zones ON/OFF
176
193
  if ([SecuritySystemTargetState.STAY_ARM, SecuritySystemTargetState.NIGHT_ARM].includes(value)) {
177
- const tydomValue = value === SecuritySystemTargetState.DISARM ? 'OFF' : 'ON';
178
194
  const targetZones = value === SecuritySystemTargetState.STAY_ARM ? aliases.stay : aliases.night;
195
+ const tydomValue = value === SecuritySystemTargetState.DISARM ? 'OFF' : 'ON';
179
196
  if (Array.isArray(targetZones) && targetZones.length > 0) {
180
- if (!isLegacy) {
181
- await client.put(`/devices/${deviceId}/endpoints/${endpointId}/cdata?name=zoneCmd`, {
182
- value: tydomValue,
183
- pwd: pin,
184
- zones: targetZones
185
- });
186
- }
187
- else {
188
- for (const zone in targetZones) {
189
- await client.put(`/devices/${deviceId}/endpoints/${endpointId}/cdata?name=partCmd`, {
190
- value: tydomValue,
191
- part: zone
192
- });
193
- }
194
- }
197
+ await setTydomZones(targetZones, tydomValue);
195
198
  }
196
199
  (0, debug_1.debugSetResult)(SecuritySystemTargetState, service, value, tydomValue);
197
200
  callback();
@@ -287,12 +290,9 @@ const setupSecuritySystem = async (accessory, controller) => {
287
290
  callback();
288
291
  return;
289
292
  }
293
+ const targetZones = [zoneIndex];
290
294
  const tydomValue = value ? 'ON' : 'OFF';
291
- await client.put(`/devices/${deviceId}/endpoints/${endpointId}/cdata?name=zoneCmd`, {
292
- value: tydomValue,
293
- pwd: pin,
294
- zones: [zoneIndex]
295
- });
295
+ await setTydomZones(targetZones, tydomValue);
296
296
  (0, debug_1.debugSetResult)(On, zoneService, value, tydomValue);
297
297
  callback();
298
298
  });
@@ -6,5 +6,5 @@ type TriggerSwitchSettings = {
6
6
  };
7
7
  type TriggerSwitchContext = TydomAccessoryContext<TriggerSwitchSettings>;
8
8
  export declare const setupTriggerSwitch: (accessory: PlatformAccessory<TriggerSwitchContext>, controller: TydomController) => void;
9
- export declare const updateTriggerSwitch: (accessory: PlatformAccessory<TriggerSwitchContext>, controller: TydomController, updates: Record<string, unknown>[]) => void;
9
+ export declare const updateTriggerSwitch: (_accessory: PlatformAccessory<TriggerSwitchContext>, _controller: TydomController, _updates: Record<string, unknown>[]) => void;
10
10
  export {};
@@ -42,7 +42,7 @@ const setupTriggerSwitch = (accessory, controller) => {
42
42
  .updateValue(false);
43
43
  };
44
44
  exports.setupTriggerSwitch = setupTriggerSwitch;
45
- const updateTriggerSwitch = (accessory, controller, updates) => {
45
+ const updateTriggerSwitch = (_accessory, _controller, _updates) => {
46
46
  // no-op
47
47
  };
48
48
  exports.updateTriggerSwitch = updateTriggerSwitch;
package/lib/controller.js CHANGED
@@ -10,6 +10,7 @@ const tydom_client_1 = require("tydom-client");
10
10
  const env_1 = require("./config/env");
11
11
  const tydom_1 = require("./helpers/tydom");
12
12
  const utils_1 = require("./utils");
13
+ const error_1 = require("./utils/error");
13
14
  const DEFAULT_REFRESH_INTERVAL_SEC = 4 * 60 * 60; // 4 hours
14
15
  class TydomController extends events_1.EventEmitter {
15
16
  constructor(log, config) {
@@ -30,8 +31,7 @@ class TydomController extends events_1.EventEmitter {
30
31
  this.handleMessage(message);
31
32
  }
32
33
  catch (err) {
33
- this.log.error(`Encountered an uncaught error while processing message=${(0, utils_1.chalkJson)(message)}"`);
34
- this.log.debug(`${err instanceof Error ? err.stack : err}`);
34
+ this.log.error(`Encountered an uncaught error=${(0, error_1.stringifyError)(err)} while processing message=${(0, utils_1.chalkJson)(message)}"`);
35
35
  }
36
36
  });
37
37
  this.client.on('connect', () => {
@@ -8,23 +8,11 @@ export declare const getAccessoryServiceWithSubtype: (accessory: PlatformAccesso
8
8
  export declare const addAccessoryService: (accessory: PlatformAccessory, service: ServiceClass, name: string, removeExisting?: boolean) => Service;
9
9
  export declare const addAccessoryServiceWithSubtype: (accessory: PlatformAccessory, service: ServiceClass, name: string, subtype: string, removeExisting?: boolean) => Service;
10
10
  type TydomAccessorySetup<T extends TydomAccessoryContext> = (accessory: PlatformAccessory<T>, controller: TydomController) => void | Promise<void>;
11
- export declare const getTydomAccessorySetup: <T extends TydomAccessoryContext<any, any> = TydomAccessoryContext<{
12
- [x: string]: unknown;
13
- }, {
14
- [x: string]: unknown;
15
- }>>(accessory: PlatformAccessory<T>, context: T) => TydomAccessorySetup<T>;
11
+ export declare const getTydomAccessorySetup: <T extends TydomAccessoryContext<any, any> = TydomAccessoryContext>(accessory: PlatformAccessory<T>, context: T) => TydomAccessorySetup<T>;
16
12
  export type TydomAccessoryUpdateType = 'data' | 'cdata';
17
13
  type TydomAccessoryUpdate<T extends TydomAccessoryContext> = (accessory: PlatformAccessory<T>, controller: TydomController, updates: Record<string, unknown>[], type: TydomAccessoryUpdateType) => void | Promise<void>;
18
- export declare const getTydomAccessoryDataUpdate: <T extends TydomAccessoryContext<any, any> = TydomAccessoryContext<{
19
- [x: string]: unknown;
20
- }, {
21
- [x: string]: unknown;
22
- }>>(accessory: PlatformAccessory<T>, context: T) => TydomAccessoryUpdate<T>;
14
+ export declare const getTydomAccessoryDataUpdate: <T extends TydomAccessoryContext<any, any> = TydomAccessoryContext>(accessory: PlatformAccessory<T>, context: T) => TydomAccessoryUpdate<T>;
23
15
  export declare const setupAccessoryInformationService: (accessory: PlatformAccessory, _controller: TydomController) => void;
24
16
  export declare const setupAccessoryIdentifyHandler: (accessory: PlatformAccessory, _controller: TydomController) => void;
25
- export declare const assignTydomContext: (prev: PlatformAccessory['context'], next: TydomAccessoryContext) => prev is TydomAccessoryContext<{
26
- [x: string]: unknown;
27
- }, {
28
- [x: string]: unknown;
29
- }>;
17
+ export declare const assignTydomContext: (prev: PlatformAccessory['context'], next: TydomAccessoryContext) => prev is TydomAccessoryContext;
30
18
  export {};
@@ -23,7 +23,7 @@ const getAccessoryService = (accessory, ServiceClass) => {
23
23
  };
24
24
  exports.getAccessoryService = getAccessoryService;
25
25
  const getAccessoryServiceWithSubtype = (accessory, ServiceClass, subtype) => {
26
- const service = accessory.getServiceByUUIDAndSubType(ServiceClass, subtype);
26
+ const service = accessory.getServiceById(ServiceClass, subtype);
27
27
  (0, utils_1.assert)(service, `Unexpected missing service "${ServiceClass.name}" with subtype="${subtype}" in accessory`);
28
28
  return service;
29
29
  };
@@ -36,6 +36,7 @@ const addAccessoryService = (accessory, service, name, removeExisting = false) =
36
36
  }
37
37
  accessory.removeService(existingService);
38
38
  }
39
+ // @ts-expect-error legacy HAP API
39
40
  return accessory.addService(service, name);
40
41
  };
41
42
  exports.addAccessoryService = addAccessoryService;
@@ -50,6 +51,7 @@ const addAccessoryServiceWithSubtype = (accessory, service, name, subtype, remov
50
51
  return accessory.addService(service, name, subtype);
51
52
  };
52
53
  exports.addAccessoryServiceWithSubtype = addAccessoryServiceWithSubtype;
54
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
53
55
  const getTydomAccessorySetup = (accessory, context) => {
54
56
  var _a;
55
57
  const { category } = accessory;
@@ -82,6 +84,7 @@ const getTydomAccessorySetup = (accessory, context) => {
82
84
  }
83
85
  };
84
86
  exports.getTydomAccessorySetup = getTydomAccessorySetup;
87
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
85
88
  const getTydomAccessoryDataUpdate = (accessory, context) => {
86
89
  var _a;
87
90
  const { category } = accessory;
@@ -0,0 +1 @@
1
+ export declare const stringifyError: (err: Error | unknown) => string;
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.stringifyError = void 0;
4
+ const errorReplacer = (key, value) => {
5
+ if (value instanceof Error) {
6
+ return {
7
+ name: value.name,
8
+ message: value.message,
9
+ stack: value.stack
10
+ };
11
+ }
12
+ return `${value}`;
13
+ };
14
+ const stringifyError = (err) => JSON.stringify(err, errorReplacer);
15
+ exports.stringifyError = stringifyError;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "homebridge-tydom",
3
- "version": "0.23.13",
3
+ "version": "0.23.15",
4
4
  "description": "Homebridge plugin to manage Tydom devices by Delta Dore",
5
5
  "main": "lib/index.js",
6
6
  "types": "lib/index.d.ts",
@@ -31,32 +31,32 @@
31
31
  "prepublishOnly": "npm run build"
32
32
  },
33
33
  "dependencies": {
34
- "chalk": "^4.0.0",
34
+ "chalk": "^4",
35
35
  "debug": "^4.3.4",
36
- "fakegato-history": "^0.6.3",
36
+ "fakegato-history": "^0.6.4",
37
37
  "lodash": "^4.17.21",
38
38
  "source-map-support": "^0.5.21",
39
39
  "tydom-client": "^0.13.4"
40
40
  },
41
41
  "devDependencies": {
42
42
  "@tsconfig/node10": "^1.0.9",
43
- "@types/debug": "^4.1.7",
44
- "@types/jest": "^29.2.3",
45
- "@types/lodash": "^4.14.190",
46
- "@types/node": "^18.11.9",
47
- "@types/node-persist": "^3.1.3",
48
- "@types/ws": "^8.5.3",
49
- "@typescript-eslint/eslint-plugin": "^5.44.0",
50
- "@typescript-eslint/parser": "^5.44.0",
51
- "eslint": "^8.28.0",
52
- "eslint-config-prettier": "^8.5.0",
53
- "eslint-plugin-prettier": "^4.2.1",
54
- "homebridge": "^1.5.1",
55
- "jest": "^29.3.1",
56
- "nock": "^13.2.9",
57
- "prettier": "^2.8.0",
43
+ "@types/debug": "^4.1.8",
44
+ "@types/jest": "^29.5.4",
45
+ "@types/lodash": "^4.14.197",
46
+ "@types/node": "^18.17.8",
47
+ "@types/node-persist": "^3.1.4",
48
+ "@types/ws": "^8.5.5",
49
+ "@typescript-eslint/eslint-plugin": "^6.4.1",
50
+ "@typescript-eslint/parser": "^6.4.1",
51
+ "eslint": "^8.47.0",
52
+ "eslint-config-prettier": "^9.0.0",
53
+ "eslint-plugin-prettier": "^5.0.0",
54
+ "homebridge": "^1.6.1",
55
+ "jest": "^29.6.3",
56
+ "nock": "^13.3.3",
57
+ "prettier": "^3.0.2",
58
58
  "ts-node": "^10.9.1",
59
- "tsc-alias": "^1.7.1",
60
- "typescript": "^4.9.3"
59
+ "tsc-alias": "^1.8.7",
60
+ "typescript": "^5.1.6"
61
61
  }
62
62
  }