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.
- package/lib/accessories/garageDoorOpener.js +2 -2
- package/lib/accessories/securitySystem.js +21 -21
- package/lib/accessories/triggerSwitch.d.ts +1 -1
- package/lib/accessories/triggerSwitch.js +1 -1
- package/lib/controller.js +2 -2
- package/lib/helpers/accessory.d.ts +3 -15
- package/lib/helpers/accessory.js +4 -1
- package/lib/utils/error.d.ts +1 -0
- package/lib/utils/error.js +15 -0
- package/package.json +20 -20
|
@@ -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
|
-
|
|
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
|
|
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: (
|
|
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 = (
|
|
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 {};
|
package/lib/helpers/accessory.js
CHANGED
|
@@ -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.
|
|
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.
|
|
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
|
|
34
|
+
"chalk": "^4",
|
|
35
35
|
"debug": "^4.3.4",
|
|
36
|
-
"fakegato-history": "^0.6.
|
|
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.
|
|
44
|
-
"@types/jest": "^29.
|
|
45
|
-
"@types/lodash": "^4.14.
|
|
46
|
-
"@types/node": "^18.
|
|
47
|
-
"@types/node-persist": "^3.1.
|
|
48
|
-
"@types/ws": "^8.5.
|
|
49
|
-
"@typescript-eslint/eslint-plugin": "^
|
|
50
|
-
"@typescript-eslint/parser": "^
|
|
51
|
-
"eslint": "^8.
|
|
52
|
-
"eslint-config-prettier": "^
|
|
53
|
-
"eslint-plugin-prettier": "^
|
|
54
|
-
"homebridge": "^1.
|
|
55
|
-
"jest": "^29.3
|
|
56
|
-
"nock": "^13.
|
|
57
|
-
"prettier": "^
|
|
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
|
|
60
|
-
"typescript": "^
|
|
59
|
+
"tsc-alias": "^1.8.7",
|
|
60
|
+
"typescript": "^5.1.6"
|
|
61
61
|
}
|
|
62
62
|
}
|