homebridge-unifi-access 1.9.1 → 1.10.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.
- package/dist/access-controller.d.ts +7 -6
- package/dist/access-controller.js +96 -126
- package/dist/access-controller.js.map +1 -1
- package/dist/access-device.d.ts +15 -1
- package/dist/access-device.js +17 -42
- package/dist/access-device.js.map +1 -1
- package/dist/access-events.js +21 -33
- package/dist/access-events.js.map +1 -1
- package/dist/access-hub.d.ts +22 -6
- package/dist/access-hub.js +333 -62
- package/dist/access-hub.js.map +1 -1
- package/dist/access-options.d.ts +3 -2
- package/dist/access-options.js +19 -3
- package/dist/access-options.js.map +1 -1
- package/dist/access-platform.d.ts +1 -1
- package/dist/access-platform.js +5 -9
- package/dist/access-platform.js.map +1 -1
- package/dist/access-types.d.ts +9 -0
- package/dist/access-types.js +9 -0
- package/dist/access-types.js.map +1 -1
- package/homebridge-ui/public/index.html +54 -51
- package/homebridge-ui/public/lib/featureoptions.js +7 -8
- package/homebridge-ui/public/lib/featureoptions.js.map +1 -1
- package/homebridge-ui/public/lib/webUi-featureoptions.mjs +3484 -558
- package/homebridge-ui/public/lib/webUi.mjs +13 -5
- package/homebridge-ui/public/ui.mjs +76 -105
- package/package.json +11 -11
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { PlatformAccessory } from "homebridge";
|
|
1
2
|
import { AccessApi, type AccessControllerConfig, type AccessDeviceConfig } from "unifi-access";
|
|
2
3
|
import { type HomebridgePluginLogging, MqttClient, type Nullable } from "homebridge-plugin-utils";
|
|
3
4
|
import type { AccessControllerOptions } from "./access-options.js";
|
|
@@ -9,10 +10,9 @@ export declare class AccessController {
|
|
|
9
10
|
config: AccessControllerOptions;
|
|
10
11
|
private deviceRemovalQueue;
|
|
11
12
|
readonly configuredDevices: {
|
|
12
|
-
[index: string]: AccessDevice;
|
|
13
|
+
[index: string]: AccessDevice | undefined;
|
|
13
14
|
};
|
|
14
15
|
events: AccessEvents;
|
|
15
|
-
private isEnabled;
|
|
16
16
|
private hap;
|
|
17
17
|
logApiErrors: boolean;
|
|
18
18
|
readonly log: HomebridgePluginLogging;
|
|
@@ -28,15 +28,16 @@ export declare class AccessController {
|
|
|
28
28
|
private configureController;
|
|
29
29
|
private addAccessDevice;
|
|
30
30
|
private discoverDevices;
|
|
31
|
-
addHomeKitDevice(device: AccessDeviceConfig):
|
|
31
|
+
addHomeKitDevice(device: AccessDeviceConfig): boolean;
|
|
32
32
|
private discoverAndSyncAccessories;
|
|
33
33
|
private cleanupDevices;
|
|
34
|
-
|
|
35
|
-
private
|
|
34
|
+
private resolveDeviceName;
|
|
35
|
+
private resolveDeviceModel;
|
|
36
|
+
removeHomeKitDevice(accessory: PlatformAccessory, noRemovalDelay?: boolean): void;
|
|
36
37
|
resetControllerConnection(): Promise<void>;
|
|
37
38
|
deviceLookup(deviceId: string): AccessDevice | null;
|
|
38
39
|
getFeatureFloat(option: string): Nullable<number | undefined>;
|
|
39
40
|
getFeatureNumber(option: string): Nullable<number | undefined>;
|
|
40
|
-
hasFeature(option: string,
|
|
41
|
+
hasFeature(option: string, device?: AccessControllerConfig | AccessDeviceConfig): boolean;
|
|
41
42
|
get id(): string | undefined;
|
|
42
43
|
}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
*/
|
|
5
5
|
import { ACCESS_CONTROLLER_REFRESH_INTERVAL, ACCESS_CONTROLLER_RETRY_INTERVAL, PLATFORM_NAME, PLUGIN_NAME } from "./settings.js";
|
|
6
6
|
import { AccessApi } from "unifi-access";
|
|
7
|
-
import { MqttClient, retry,
|
|
7
|
+
import { MqttClient, retry, sanitizeName, sleep } from "homebridge-plugin-utils";
|
|
8
8
|
import { AccessEvents } from "./access-events.js";
|
|
9
9
|
import { AccessHub } from "./access-hub.js";
|
|
10
10
|
import util from "node:util";
|
|
@@ -14,7 +14,6 @@ export class AccessController {
|
|
|
14
14
|
deviceRemovalQueue;
|
|
15
15
|
configuredDevices;
|
|
16
16
|
events;
|
|
17
|
-
isEnabled;
|
|
18
17
|
hap;
|
|
19
18
|
logApiErrors;
|
|
20
19
|
log;
|
|
@@ -29,7 +28,6 @@ export class AccessController {
|
|
|
29
28
|
this.config = accessOptions;
|
|
30
29
|
this.configuredDevices = {};
|
|
31
30
|
this.deviceRemovalQueue = {};
|
|
32
|
-
this.isEnabled = false;
|
|
33
31
|
this.hap = this.api.hap;
|
|
34
32
|
this.logApiErrors = true;
|
|
35
33
|
this.mqtt = null;
|
|
@@ -39,10 +37,10 @@ export class AccessController {
|
|
|
39
37
|
this.unsupportedDevices = {};
|
|
40
38
|
// Configure our logging.
|
|
41
39
|
this.log = {
|
|
42
|
-
debug: (message, ...parameters) => this.platform.debug(util.format(
|
|
43
|
-
error: (message, ...parameters) => this.platform.log.error(util.format(
|
|
44
|
-
info: (message, ...parameters) => this.platform.log.info(util.format(
|
|
45
|
-
warn: (message, ...parameters) => this.platform.log.warn(util.format(
|
|
40
|
+
debug: (message, ...parameters) => this.platform.debug(util.format(this.name + ": " + message, ...parameters)),
|
|
41
|
+
error: (message, ...parameters) => this.platform.log.error(util.format(this.name + ": " + message, ...parameters)),
|
|
42
|
+
info: (message, ...parameters) => this.platform.log.info(util.format(this.name + ": " + message, ...parameters)),
|
|
43
|
+
warn: (message, ...parameters) => this.platform.log.warn(util.format(this.name + ": " + message, ...parameters))
|
|
46
44
|
};
|
|
47
45
|
// Validate our controller address and login information.
|
|
48
46
|
if (!accessOptions.address || !accessOptions.username || !accessOptions.password) {
|
|
@@ -82,13 +80,11 @@ export class AccessController {
|
|
|
82
80
|
// Set our Access configuration from the controller.
|
|
83
81
|
this.uda = this.udaApi.controller;
|
|
84
82
|
// Assign our name if the user hasn't explicitly specified a preference.
|
|
85
|
-
this.name = this.config.name ??
|
|
83
|
+
this.name = this.config.name ?? this.udaApi.name;
|
|
86
84
|
// We successfully logged in.
|
|
87
85
|
this.log.info("Connected to %s (UniFi Access %s running on UniFi OS %s).", this.config.address, this.uda.version, this.uda.host.firmware_version);
|
|
88
|
-
//
|
|
89
|
-
|
|
90
|
-
// If the Access controller is disabled, we're done.
|
|
91
|
-
if (!this.isEnabled) {
|
|
86
|
+
// Now that we know the Access controller configuration, check to see if we've disabled it.
|
|
87
|
+
if (!this.hasFeature("Device")) {
|
|
92
88
|
this.udaApi.logout();
|
|
93
89
|
this.log.info("Disabling this UniFi Access controller in HomeKit.");
|
|
94
90
|
// Let's sleep for thirty seconds to give all the accessories a chance to load before disabling everything. Homebridge doesn't have a good mechanism to notify us
|
|
@@ -96,7 +92,7 @@ export class AccessController {
|
|
|
96
92
|
await sleep(30);
|
|
97
93
|
// Unregister all the accessories for this controller from Homebridge that may have been restored already. Any additional ones will be automatically caught when
|
|
98
94
|
// they are restored.
|
|
99
|
-
this.
|
|
95
|
+
this.platform.accessories.filter(accessory => accessory.context.controller === this.uda.host.mac).map(accessory => this.removeHomeKitDevice(accessory, true));
|
|
100
96
|
return;
|
|
101
97
|
}
|
|
102
98
|
// Initialize our UniFi Access events handler.
|
|
@@ -114,9 +110,14 @@ export class AccessController {
|
|
|
114
110
|
if (!device.is_managed) {
|
|
115
111
|
continue;
|
|
116
112
|
}
|
|
117
|
-
this.log.info("Discovered %s: %s.",
|
|
113
|
+
this.log.info("Discovered %s: %s.", this.resolveDeviceModel(device), this.udaApi.getDeviceName(device, this.resolveDeviceName(device), true));
|
|
118
114
|
}
|
|
119
115
|
}
|
|
116
|
+
// Bootstrap refresh loop.
|
|
117
|
+
const bootstrapRefresh = () => {
|
|
118
|
+
// Sleep until it's time to bootstrap again.
|
|
119
|
+
setTimeout(() => void this.bootstrapController(), ACCESS_CONTROLLER_REFRESH_INTERVAL * 1000);
|
|
120
|
+
};
|
|
120
121
|
// Sync the Access controller's devices with HomeKit.
|
|
121
122
|
const syncUdaHomeKit = () => {
|
|
122
123
|
// Sync status and check for any new or removed accessories.
|
|
@@ -126,11 +127,6 @@ export class AccessController {
|
|
|
126
127
|
};
|
|
127
128
|
// Initialize our Access controller device sync.
|
|
128
129
|
syncUdaHomeKit();
|
|
129
|
-
// Bootstrap refresh loop.
|
|
130
|
-
const bootstrapRefresh = () => {
|
|
131
|
-
// Sleep until it's time to bootstrap again.
|
|
132
|
-
setTimeout(() => void this.bootstrapController(), ACCESS_CONTROLLER_REFRESH_INTERVAL * 1000);
|
|
133
|
-
};
|
|
134
130
|
// Let's set a listener to wait for bootstrap events to occur so we can keep ourselves in sync with the Access controller.
|
|
135
131
|
this.udaApi.on("bootstrap", () => {
|
|
136
132
|
// Sync our device view.
|
|
@@ -147,22 +143,15 @@ export class AccessController {
|
|
|
147
143
|
}
|
|
148
144
|
// Create instances of Access device types in our plugin.
|
|
149
145
|
addAccessDevice(accessory, device) {
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
case "UA-ULTRA":
|
|
156
|
-
case "UAH":
|
|
157
|
-
case "UAH-DOOR":
|
|
158
|
-
case "UAH-Ent":
|
|
159
|
-
// We have a UniFi Access hub.
|
|
160
|
-
this.configuredDevices[accessory.UUID] = new AccessHub(this, device, accessory);
|
|
161
|
-
return true;
|
|
162
|
-
default:
|
|
163
|
-
this.log.error("Unknown device class %s detected for %s.", device.device_type, device.alias ?? device.display_model);
|
|
164
|
-
return false;
|
|
146
|
+
// Access hubs.
|
|
147
|
+
if (["is_hub", "is_reader"].some(capability => device.capabilities.includes(capability))) {
|
|
148
|
+
// We have a UniFi Access hub or reader.
|
|
149
|
+
this.configuredDevices[accessory.UUID] = new AccessHub(this, device, accessory);
|
|
150
|
+
return true;
|
|
165
151
|
}
|
|
152
|
+
// Default to an unknown device type.
|
|
153
|
+
this.log.error("Unknown device class %s detected for %s.", device.device_type, this.resolveDeviceName(device));
|
|
154
|
+
return false;
|
|
166
155
|
}
|
|
167
156
|
// Discover UniFi Access devices that may have been added to the controller since we last checked.
|
|
168
157
|
discoverDevices(devices) {
|
|
@@ -175,45 +164,49 @@ export class AccessController {
|
|
|
175
164
|
// Add a newly detected Access device to HomeKit.
|
|
176
165
|
addHomeKitDevice(device) {
|
|
177
166
|
// If we have no MAC address, name, or this device isn't being managed by this Access controller, we're done.
|
|
178
|
-
if (!this.uda
|
|
179
|
-
return
|
|
167
|
+
if (!this.uda.host.mac || !device.mac || !device.is_managed) {
|
|
168
|
+
return false;
|
|
180
169
|
}
|
|
181
170
|
// We only support certain device capabilities.
|
|
182
|
-
if (!device.capabilities.includes(
|
|
171
|
+
if (!["is_hub", "is_reader"].some(capability => device.capabilities.includes(capability))) {
|
|
183
172
|
// If we've already informed the user about this one, we're done.
|
|
184
173
|
if (this.unsupportedDevices[device.mac]) {
|
|
185
|
-
return
|
|
174
|
+
return false;
|
|
186
175
|
}
|
|
187
176
|
// Notify the user we see this device, but we aren't adding it to HomeKit.
|
|
188
177
|
this.unsupportedDevices[device.mac] = true;
|
|
189
178
|
this.log.info("UniFi Access device type '%s' is not currently supported, ignoring: %s.", device.device_type, this.udaApi.getDeviceName(device));
|
|
190
|
-
return
|
|
191
|
-
}
|
|
192
|
-
// Exclude or include certain devices based on configuration parameters.
|
|
193
|
-
if (!this.hasFeature("Device", device.mac.replace(/:/g, ""))) {
|
|
194
|
-
return null;
|
|
179
|
+
return false;
|
|
195
180
|
}
|
|
196
181
|
// Generate this device's unique identifier. For devices like the EAH, we can't rely on just the MAC address since they contain multiple doors.
|
|
197
182
|
const uuid = this.hap.uuid.generate(device.mac + ((device.device_type === "UAH-Ent") ? "-" + device.source_id.toUpperCase() : ""));
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
183
|
+
// See if we already know about this accessory.
|
|
184
|
+
let accessory = this.platform.accessories.find(x => x.UUID === uuid);
|
|
185
|
+
// Enable or disable certain devices based on configuration parameters.
|
|
186
|
+
if (!this.hasFeature("Device", device)) {
|
|
187
|
+
if (accessory) {
|
|
188
|
+
this.removeHomeKitDevice(accessory, true);
|
|
189
|
+
}
|
|
190
|
+
return false;
|
|
191
|
+
}
|
|
192
|
+
// We've got a new device, let's add it to HomeKit.
|
|
193
|
+
if (!accessory) {
|
|
194
|
+
accessory = new this.api.platformAccessory(sanitizeName(this.resolveDeviceName(device)), uuid);
|
|
202
195
|
this.log.info("%s: Adding %s to HomeKit.", this.udaApi.getFullName(device), device.display_model);
|
|
203
196
|
// Register this accessory with homebridge and add it to the accessory array so we can track it.
|
|
204
197
|
this.api.registerPlatformAccessories(PLUGIN_NAME, PLATFORM_NAME, [accessory]);
|
|
205
198
|
this.platform.accessories.push(accessory);
|
|
206
199
|
this.api.updatePlatformAccessories(this.platform.accessories);
|
|
207
200
|
}
|
|
208
|
-
//
|
|
209
|
-
|
|
210
|
-
// Locate our existing Access device instance, if we have one.
|
|
211
|
-
const accessDevice = this.configuredDevices[accessory.UUID];
|
|
212
|
-
// Setup the Access device if it hasn't been configured yet.
|
|
213
|
-
if (!accessDevice) {
|
|
201
|
+
// Setup the accessory as a new Access device in HBUA if we haven't configured it yet.
|
|
202
|
+
if (!this.configuredDevices[accessory.UUID]) {
|
|
214
203
|
this.addAccessDevice(accessory, device);
|
|
204
|
+
return true;
|
|
215
205
|
}
|
|
216
|
-
|
|
206
|
+
// Update the configuration on an existing Access device.
|
|
207
|
+
// eslint-disable-next-line camelcase
|
|
208
|
+
this.events.emit("access.data.device.update", { data: device, event: "access.data.device.update", event_object_id: device.unique_id });
|
|
209
|
+
return true;
|
|
217
210
|
}
|
|
218
211
|
// Discover and sync UniFi Access devices between HomeKit and the Access controller.
|
|
219
212
|
discoverAndSyncAccessories() {
|
|
@@ -226,47 +219,22 @@ export class AccessController {
|
|
|
226
219
|
// Remove Access devices that are no longer found on this Access controller, but we still have in HomeKit.
|
|
227
220
|
this.cleanupDevices();
|
|
228
221
|
// Update our device information.
|
|
229
|
-
Object.keys(this.configuredDevices).map(x => this.configuredDevices[x]
|
|
222
|
+
Object.keys(this.configuredDevices).map(x => this.configuredDevices[x]?.configureInfo());
|
|
230
223
|
return true;
|
|
231
224
|
}
|
|
232
225
|
// Cleanup removed Access devices from HomeKit.
|
|
233
226
|
cleanupDevices() {
|
|
227
|
+
// Process the device removal queue before we do anything else.
|
|
228
|
+
this.platform.accessories.filter(accessory => Object.keys(this.deviceRemovalQueue).includes(accessory.UUID)).map(accessory =>
|
|
229
|
+
// eslint-disable-next-line @stylistic/implicit-arrow-linebreak
|
|
230
|
+
this.removeHomeKitDevice(accessory, !this.platform.featureOptions.test("Device", (accessory.getService(this.hap.Service.AccessoryInformation)?.getCharacteristic(this.hap.Characteristic.SerialNumber).value ?? ""), this.id)));
|
|
234
231
|
for (const accessory of this.platform.accessories) {
|
|
235
232
|
const accessDevice = this.configuredDevices[accessory.UUID];
|
|
236
233
|
// Check to see if we have an orphan - where we haven't configured this in the plugin, but the accessory still exists in HomeKit. One example of when this might
|
|
237
234
|
// happen is when Homebridge might be shutdown and a device is then removed. When we start back up, the device still exists in HomeKit but not in Access. We
|
|
238
235
|
// catch those orphan devices here.
|
|
239
236
|
if (!accessDevice) {
|
|
240
|
-
|
|
241
|
-
if (("controller" in accessory.context) && (accessory.context.controller !== this.uda.host.mac)) {
|
|
242
|
-
continue;
|
|
243
|
-
}
|
|
244
|
-
// We only store MAC addresses on devices that exist on the Access controller. Any other accessories created are ones we created ourselves and are managed
|
|
245
|
-
// elsewhere.
|
|
246
|
-
if (!("mac" in accessory.context)) {
|
|
247
|
-
continue;
|
|
248
|
-
}
|
|
249
|
-
// For certain use cases, we may want to defer removal of an Access device for a brief period of time.
|
|
250
|
-
const delayInterval = this.getFeatureNumber("Controller.DelayDeviceRemoval") ?? undefined;
|
|
251
|
-
if ((delayInterval !== undefined) && (delayInterval > 0)) {
|
|
252
|
-
// Have we seen this device queued for removal previously? If not, let's add it to the queue and come back after our specified delay.
|
|
253
|
-
if (!this.deviceRemovalQueue[accessory.UUID]) {
|
|
254
|
-
this.deviceRemovalQueue[accessory.UUID] = Date.now();
|
|
255
|
-
this.log.info("%s: Delaying device removal for at least %s second%s.", accessory.displayName, delayInterval, delayInterval > 1 ? "s" : "");
|
|
256
|
-
continue;
|
|
257
|
-
}
|
|
258
|
-
// Is it time to process this device removal?
|
|
259
|
-
if ((delayInterval * 1000) > (Date.now() - this.deviceRemovalQueue[accessory.UUID])) {
|
|
260
|
-
continue;
|
|
261
|
-
}
|
|
262
|
-
// Cleanup after ourselves.
|
|
263
|
-
delete this.deviceRemovalQueue[accessory.UUID];
|
|
264
|
-
}
|
|
265
|
-
this.log.info("%s: Removing device from HomeKit.", accessory.displayName);
|
|
266
|
-
// Unregister the accessory and delete it's remnants from HomeKit.
|
|
267
|
-
this.api.unregisterPlatformAccessories(PLUGIN_NAME, PLATFORM_NAME, [accessory]);
|
|
268
|
-
this.platform.accessories.splice(this.platform.accessories.indexOf(accessory), 1);
|
|
269
|
-
this.api.updatePlatformAccessories(this.platform.accessories);
|
|
237
|
+
this.removeHomeKitDevice(accessory, !this.platform.featureOptions.test("Device", (accessory.getService(this.hap.Service.AccessoryInformation)?.getCharacteristic(this.hap.Characteristic.SerialNumber).value ?? "")));
|
|
270
238
|
continue;
|
|
271
239
|
}
|
|
272
240
|
// If we don't have the Access bootstrap JSON available, we're done. We need to know what's on the Access controller in order to determine what to do with
|
|
@@ -275,64 +243,65 @@ export class AccessController {
|
|
|
275
243
|
continue;
|
|
276
244
|
}
|
|
277
245
|
// Check to see if the device still exists on the Access controller and the user has not chosen to hide it.
|
|
278
|
-
if (accessDevice.uda.capabilities.includes(
|
|
279
|
-
this.udaApi.devices?.some((x) => x.mac.toLowerCase() === accessDevice.uda.mac.toLowerCase())
|
|
280
|
-
accessDevice.hasFeature("Device")) {
|
|
246
|
+
if (["is_hub", "is_reader"].some(capability => accessDevice.uda.capabilities.includes(capability)) &&
|
|
247
|
+
this.udaApi.devices?.some((x) => x.mac.toLowerCase() === accessDevice.uda.mac.toLowerCase())) {
|
|
281
248
|
// In case we have previously queued a device for deletion, let's remove it from the queue since it's reappeared.
|
|
282
249
|
delete this.deviceRemovalQueue[accessDevice.accessory.UUID];
|
|
283
250
|
continue;
|
|
284
251
|
}
|
|
285
252
|
// Process the device removal.
|
|
286
|
-
this.removeHomeKitDevice(this.
|
|
253
|
+
this.removeHomeKitDevice(accessory, !this.hasFeature("Device", accessDevice.uda));
|
|
287
254
|
}
|
|
288
255
|
}
|
|
256
|
+
// Utility to retrieve a reasonable device name for an Access device.
|
|
257
|
+
resolveDeviceName(device) {
|
|
258
|
+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
|
259
|
+
return (device.alias?.length ? device.alias : device.name) ?? device.display_model ?? device.model ?? device.device_type ?? "Access Device";
|
|
260
|
+
}
|
|
261
|
+
// Utility to retrieve a reasonable device model for an Access device.
|
|
262
|
+
resolveDeviceModel(device) {
|
|
263
|
+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
|
264
|
+
return device.display_model ?? device.model ?? device.device_type ?? "Unknown Model";
|
|
265
|
+
}
|
|
289
266
|
// Remove an individual Access device from HomeKit.
|
|
290
|
-
removeHomeKitDevice(
|
|
291
|
-
//
|
|
292
|
-
if (!
|
|
267
|
+
removeHomeKitDevice(accessory, noRemovalDelay = false) {
|
|
268
|
+
// Ensure that this accessory hasn't already been removed.
|
|
269
|
+
if (!this.platform.accessories.some(x => x.UUID === accessory.UUID)) {
|
|
293
270
|
return;
|
|
294
271
|
}
|
|
295
272
|
// We only remove devices if they're on the Access controller we're interested in.
|
|
296
|
-
if (
|
|
273
|
+
if (accessory.context.controller !== this.uda.host.mac) {
|
|
297
274
|
return;
|
|
298
275
|
}
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
276
|
+
const delayInterval = this.getFeatureNumber("Controller.DelayDeviceRemoval") ?? 0;
|
|
277
|
+
// For certain use cases, we may want to defer removal of an Access device where Access may lose track of devices for a brief period of time. This prevents a
|
|
278
|
+
// potential back-and-forth where devices are removed momentarily only to be readded later.
|
|
279
|
+
if (!noRemovalDelay && delayInterval) {
|
|
302
280
|
// Have we seen this device queued for removal previously? If not, let's add it to the queue and come back after our specified delay.
|
|
303
|
-
if (!this.deviceRemovalQueue[
|
|
304
|
-
this.deviceRemovalQueue[
|
|
305
|
-
this.log.info("%s: Delaying device removal for %s second%s.",
|
|
281
|
+
if (!this.deviceRemovalQueue[accessory.UUID]) {
|
|
282
|
+
this.deviceRemovalQueue[accessory.UUID] = Date.now();
|
|
283
|
+
this.log.info("%s: Delaying device removal for at least %s second%s.", accessory.displayName, delayInterval, delayInterval > 1 ? "s" : "");
|
|
306
284
|
return;
|
|
307
285
|
}
|
|
308
286
|
// Is it time to process this device removal?
|
|
309
|
-
if ((delayInterval * 1000) > (Date.now() - this.deviceRemovalQueue[
|
|
287
|
+
if ((delayInterval * 1000) > (Date.now() - this.deviceRemovalQueue[accessory.UUID])) {
|
|
310
288
|
return;
|
|
311
289
|
}
|
|
312
|
-
// Cleanup after ourselves.
|
|
313
|
-
delete this.deviceRemovalQueue[accessDevice.accessory.UUID];
|
|
314
290
|
}
|
|
315
|
-
//
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
291
|
+
// Cleanup after ourselves.
|
|
292
|
+
delete this.deviceRemovalQueue[accessory.UUID];
|
|
293
|
+
// Grab our instance of the Access device, if it exists.
|
|
294
|
+
const accessDevice = this.configuredDevices[accessory.UUID];
|
|
295
|
+
// See if we can pull the device's configuration details from our Access device instance or the controller.
|
|
296
|
+
const device = accessDevice?.uda ?? this.udaApi.devices?.find(dev => dev.unique_id === accessory.context.mac.toLowerCase()) ?? null;
|
|
297
|
+
this.log.info("%s: Removing %s from HomeKit.", device ? this.udaApi.getDeviceName(device) : accessDevice?.accessoryName ?? accessory.displayName, device?.display_model ?? "device");
|
|
298
|
+
// Cleanup our device instance.
|
|
299
|
+
accessDevice?.cleanup();
|
|
300
|
+
// Finally, remove it from our list of configured devices and HomeKit.
|
|
301
|
+
delete this.configuredDevices[accessory.UUID];
|
|
320
302
|
// Unregister the accessory and delete it's remnants from HomeKit and the plugin.
|
|
321
|
-
|
|
322
|
-
this.
|
|
323
|
-
}
|
|
324
|
-
// Remove accessories from HomeKit and Homebridge.
|
|
325
|
-
removeHomeKitAccessories(deletingAccessories) {
|
|
326
|
-
// Sanity check.
|
|
327
|
-
if (!deletingAccessories || (deletingAccessories.length <= 0)) {
|
|
328
|
-
return;
|
|
329
|
-
}
|
|
330
|
-
// Unregister the accessories from Homebridge and HomeKit.
|
|
331
|
-
this.api.unregisterPlatformAccessories(PLUGIN_NAME, PLATFORM_NAME, deletingAccessories);
|
|
332
|
-
// Update our internal list of all the accessories we know about.
|
|
333
|
-
for (const accessory of deletingAccessories) {
|
|
334
|
-
this.platform.accessories.splice(this.platform.accessories.indexOf(accessory), 1);
|
|
335
|
-
}
|
|
303
|
+
this.api.unregisterPlatformAccessories(PLUGIN_NAME, PLATFORM_NAME, [accessory]);
|
|
304
|
+
this.platform.accessories.splice(this.platform.accessories.indexOf(accessory), 1);
|
|
336
305
|
// Tell Homebridge to save the updated list of accessories.
|
|
337
306
|
this.api.updatePlatformAccessories(this.platform.accessories);
|
|
338
307
|
}
|
|
@@ -346,7 +315,7 @@ export class AccessController {
|
|
|
346
315
|
// Lookup a device by it's identifier and return it if it exists.
|
|
347
316
|
deviceLookup(deviceId) {
|
|
348
317
|
// Find the device.
|
|
349
|
-
const foundDevice = Object.keys(this.configuredDevices).find(x => this.configuredDevices[x]
|
|
318
|
+
const foundDevice = Object.keys(this.configuredDevices).find(x => this.configuredDevices[x]?.uda.unique_id === deviceId);
|
|
350
319
|
return foundDevice ? this.configuredDevices[foundDevice] : null;
|
|
351
320
|
}
|
|
352
321
|
// Utility function to return a floating point configuration parameter on a device.
|
|
@@ -357,12 +326,13 @@ export class AccessController {
|
|
|
357
326
|
getFeatureNumber(option) {
|
|
358
327
|
return this.platform.featureOptions.getInteger(option, this.id);
|
|
359
328
|
}
|
|
360
|
-
// Utility for checking feature options on the
|
|
361
|
-
hasFeature(option,
|
|
362
|
-
return this.platform.featureOptions.test(option,
|
|
329
|
+
// Utility for checking feature options on the controller.
|
|
330
|
+
hasFeature(option, device) {
|
|
331
|
+
return this.platform.featureOptions.test(option, (device?.unique_id ?? this.id), this.id);
|
|
363
332
|
}
|
|
364
333
|
// Return a unique identifier for an Access controller.
|
|
365
334
|
get id() {
|
|
335
|
+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
|
366
336
|
return this.uda.host?.mac?.replace(/:/g, "");
|
|
367
337
|
}
|
|
368
338
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"access-controller.js","sourceRoot":"","sources":["../src/access-controller.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"access-controller.js","sourceRoot":"","sources":["../src/access-controller.ts"],"names":[],"mappings":"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"}
|
package/dist/access-device.d.ts
CHANGED
|
@@ -4,12 +4,26 @@ import { type HomebridgePluginLogging, type Nullable } from "homebridge-plugin-u
|
|
|
4
4
|
import type { AccessController } from "./access-controller.js";
|
|
5
5
|
import type { AccessPlatform } from "./access-platform.js";
|
|
6
6
|
export interface AccessHints {
|
|
7
|
-
|
|
7
|
+
enabled: boolean;
|
|
8
|
+
hasMethodFace: boolean;
|
|
9
|
+
hasMethodHand: boolean;
|
|
10
|
+
hasMethodMobile: boolean;
|
|
11
|
+
hasMethodNfc: boolean;
|
|
12
|
+
hasMethodPin: boolean;
|
|
13
|
+
hasMethodQr: boolean;
|
|
14
|
+
hasMethodTwoStep: boolean;
|
|
15
|
+
hasWiringDps: boolean;
|
|
16
|
+
hasWiringRel: boolean;
|
|
17
|
+
hasWiringRen: boolean;
|
|
18
|
+
hasWiringRex: boolean;
|
|
8
19
|
ledStatus: boolean;
|
|
9
20
|
logDoorbell: boolean;
|
|
10
21
|
logDps: boolean;
|
|
11
22
|
logLock: boolean;
|
|
12
23
|
logMotion: boolean;
|
|
24
|
+
logRel: boolean;
|
|
25
|
+
logRen: boolean;
|
|
26
|
+
logRex: boolean;
|
|
13
27
|
motionDuration: number;
|
|
14
28
|
occupancyDuration: number;
|
|
15
29
|
syncName: boolean;
|