homebridge-unifi-protect 7.20.1 → 7.22.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/devices/protect-camera-package.js +14 -6
- package/dist/devices/protect-camera-package.js.map +1 -1
- package/dist/devices/protect-camera.d.ts +3 -2
- package/dist/devices/protect-camera.js +121 -61
- package/dist/devices/protect-camera.js.map +1 -1
- package/dist/devices/protect-chime.js +3 -2
- package/dist/devices/protect-chime.js.map +1 -1
- package/dist/devices/protect-device.js +19 -22
- package/dist/devices/protect-device.js.map +1 -1
- package/dist/devices/protect-doorbell.d.ts +4 -2
- package/dist/devices/protect-doorbell.js +37 -22
- package/dist/devices/protect-doorbell.js.map +1 -1
- package/dist/devices/protect-light.js +6 -6
- package/dist/devices/protect-light.js.map +1 -1
- package/dist/devices/protect-liveviews.js +8 -26
- package/dist/devices/protect-liveviews.js.map +1 -1
- package/dist/devices/protect-nvr-systeminfo.d.ts +0 -2
- package/dist/devices/protect-nvr-systeminfo.js +13 -47
- package/dist/devices/protect-nvr-systeminfo.js.map +1 -1
- package/dist/devices/protect-securitysystem.js +17 -36
- package/dist/devices/protect-securitysystem.js.map +1 -1
- package/dist/devices/protect-sensor.d.ts +2 -2
- package/dist/devices/protect-sensor.js +16 -16
- package/dist/devices/protect-sensor.js.map +1 -1
- package/dist/devices/protect-viewer.js +8 -8
- package/dist/devices/protect-viewer.js.map +1 -1
- package/dist/protect-events.js +16 -20
- package/dist/protect-events.js.map +1 -1
- package/dist/protect-livestream.d.ts +1 -0
- package/dist/protect-livestream.js +23 -3
- package/dist/protect-livestream.js.map +1 -1
- package/dist/protect-nvr.d.ts +5 -5
- package/dist/protect-nvr.js +36 -34
- package/dist/protect-nvr.js.map +1 -1
- package/dist/protect-options.d.ts +4 -4
- package/dist/protect-options.js +16 -15
- package/dist/protect-options.js.map +1 -1
- package/dist/protect-platform.d.ts +1 -1
- package/dist/protect-platform.js +8 -14
- package/dist/protect-platform.js.map +1 -1
- package/dist/protect-record.d.ts +1 -4
- package/dist/protect-record.js +13 -28
- package/dist/protect-record.js.map +1 -1
- package/dist/protect-snapshot.js.map +1 -1
- package/dist/protect-stream.js +39 -56
- package/dist/protect-stream.js.map +1 -1
- package/dist/protect-timeshift.d.ts +0 -2
- package/dist/protect-timeshift.js +12 -23
- package/dist/protect-timeshift.js.map +1 -1
- package/dist/protect-types.d.ts +1 -0
- package/dist/protect-types.js +1 -0
- package/dist/protect-types.js.map +1 -1
- package/dist/settings.d.ts +4 -4
- package/dist/settings.js +5 -5
- package/dist/settings.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 +62 -99
- package/homebridge-ui/server.js +6 -1
- package/package.json +10 -13
package/dist/protect-events.js
CHANGED
|
@@ -85,7 +85,7 @@ export class ProtectEvents extends EventEmitter {
|
|
|
85
85
|
if ("isConnected" in payload) {
|
|
86
86
|
// If we have services on the accessory associated with the Protect device that have a StatusActive characteristic set, update our availability state.
|
|
87
87
|
protectDevice.accessory.services.filter(x => x.testCharacteristic(this.hap.Characteristic.StatusActive))
|
|
88
|
-
|
|
88
|
+
.map(x => x.updateCharacteristic(this.hap.Characteristic.StatusActive, protectDevice?.isOnline ?? true));
|
|
89
89
|
}
|
|
90
90
|
// If this is a bootstrap-related update, we're done here. Anything beyond this point is intended for dynamic event updates.
|
|
91
91
|
if (packet.header.hbupBootstrap) {
|
|
@@ -109,7 +109,7 @@ export class ProtectEvents extends EventEmitter {
|
|
|
109
109
|
return;
|
|
110
110
|
}
|
|
111
111
|
// Make sure we have the right information to process the event.
|
|
112
|
-
if (!("deviceId" in payload.metadata) || !("text" in payload.metadata.deviceId)) {
|
|
112
|
+
if (!payload.metadata || !("deviceId" in payload.metadata) || !("text" in payload.metadata.deviceId)) {
|
|
113
113
|
return;
|
|
114
114
|
}
|
|
115
115
|
// Lookup the device.
|
|
@@ -123,16 +123,13 @@ export class ProtectEvents extends EventEmitter {
|
|
|
123
123
|
this.nvr.addHomeKitDevice(this.ufpDeviceState[deviceId]);
|
|
124
124
|
return;
|
|
125
125
|
}
|
|
126
|
-
// We're unadopting.
|
|
127
|
-
if (
|
|
128
|
-
// If it's already gone, we're done.
|
|
129
|
-
if (!protectDevice) {
|
|
130
|
-
return;
|
|
131
|
-
}
|
|
132
|
-
// Remove the device.
|
|
133
|
-
this.nvr.removeHomeKitDevice(protectDevice.accessory);
|
|
126
|
+
// We're unadopting. If it's already gone, we're done.
|
|
127
|
+
if (!protectDevice) {
|
|
134
128
|
return;
|
|
135
129
|
}
|
|
130
|
+
// Remove the device.
|
|
131
|
+
this.nvr.removeHomeKitDevice(protectDevice.accessory);
|
|
132
|
+
return;
|
|
136
133
|
}
|
|
137
134
|
// Listen to the UniFi Protect realtime updates API for updates we are interested in (e.g. motion).
|
|
138
135
|
configureEvents() {
|
|
@@ -177,9 +174,6 @@ export class ProtectEvents extends EventEmitter {
|
|
|
177
174
|
}
|
|
178
175
|
// Motion event processing from UniFi Protect.
|
|
179
176
|
motionEventHandler(protectDevice, detectedObjects = [], metadata) {
|
|
180
|
-
if (!protectDevice) {
|
|
181
|
-
return;
|
|
182
|
-
}
|
|
183
177
|
// Only notify the user if we have a motion sensor and it's active.
|
|
184
178
|
const motionService = protectDevice.accessory.getService(this.hap.Service.MotionSensor);
|
|
185
179
|
if (motionService) {
|
|
@@ -189,7 +183,7 @@ export class ProtectEvents extends EventEmitter {
|
|
|
189
183
|
// Motion event delivery to HomeKit.
|
|
190
184
|
motionEventDelivery(protectDevice, motionService, detectedObjects, metadata = {}) {
|
|
191
185
|
// If we have disabled motion events, we're done here.
|
|
192
|
-
if (
|
|
186
|
+
if (protectDevice.accessory.context.detectMotion === false) {
|
|
193
187
|
return;
|
|
194
188
|
}
|
|
195
189
|
// Only update HomeKit if we don't have a motion event inflight.
|
|
@@ -227,7 +221,7 @@ export class ProtectEvents extends EventEmitter {
|
|
|
227
221
|
// Add our legacy smart detections.
|
|
228
222
|
smartEvents.push(...detectedObjects.map(type => ({ type })));
|
|
229
223
|
// Now add our thumbnail-based detections.
|
|
230
|
-
if (metadata
|
|
224
|
+
if (metadata.detectedThumbnails) {
|
|
231
225
|
smartEvents.push(...metadata.detectedThumbnails.filter(thumbnail => thumbnail.type).map(detection => ({
|
|
232
226
|
confidence: detection.confidence,
|
|
233
227
|
name: detection.name,
|
|
@@ -317,7 +311,7 @@ export class ProtectEvents extends EventEmitter {
|
|
|
317
311
|
}
|
|
318
312
|
// If we don't have smart detection enabled, or if we do have it enabled and we have a smart detection event that's detected something of interest, let's process
|
|
319
313
|
// our occupancy event updates.
|
|
320
|
-
if (!protectDevice.hints.smartDetect ||
|
|
314
|
+
if (!protectDevice.hints.smartDetect || detectedObjects.some(x => protectDevice.hints.smartOccupancy.includes(x))) {
|
|
321
315
|
// First, let's determine if the user has an occupancy sensor configured, before we process anything.
|
|
322
316
|
const occupancyService = protectDevice.accessory.getService(this.hap.Service.OccupancySensor);
|
|
323
317
|
if (occupancyService) {
|
|
@@ -354,7 +348,7 @@ export class ProtectEvents extends EventEmitter {
|
|
|
354
348
|
}
|
|
355
349
|
// Doorbell event processing from UniFi Protect and delivered to HomeKit.
|
|
356
350
|
doorbellEventHandler(protectDevice, lastRing) {
|
|
357
|
-
if (!
|
|
351
|
+
if (!lastRing) {
|
|
358
352
|
return;
|
|
359
353
|
}
|
|
360
354
|
// If we have an inflight ring event, and we're enforcing a ring duration, we're done.
|
|
@@ -366,9 +360,11 @@ export class ProtectEvents extends EventEmitter {
|
|
|
366
360
|
if (!doorbellService) {
|
|
367
361
|
return;
|
|
368
362
|
}
|
|
369
|
-
// Trigger the doorbell event in HomeKit.
|
|
370
|
-
|
|
371
|
-
|
|
363
|
+
// Trigger the doorbell event in HomeKit, if we're configured to do so.
|
|
364
|
+
if (!protectDevice.accessory.context.doorbellMuted) {
|
|
365
|
+
doorbellService.getCharacteristic(this.hap.Characteristic.ProgrammableSwitchEvent)
|
|
366
|
+
.sendEventNotification(this.hap.Characteristic.ProgrammableSwitchEvent.SINGLE_PRESS);
|
|
367
|
+
}
|
|
372
368
|
// Check to see if we have a doorbell trigger switch configured. If we do, update it.
|
|
373
369
|
const triggerService = protectDevice.accessory.getServiceById(this.hap.Service.Switch, ProtectReservedNames.SWITCH_DOORBELL_TRIGGER);
|
|
374
370
|
if (triggerService) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"protect-events.js","sourceRoot":"","sources":["../src/protect-events.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"protect-events.js","sourceRoot":"","sources":["../src/protect-events.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,13 +3,14 @@
|
|
|
3
3
|
* protect-livestream.ts: Protect livestream API manager.
|
|
4
4
|
*/
|
|
5
5
|
import { FfmpegLivestreamProcess, sleep } from "homebridge-plugin-utils";
|
|
6
|
-
import {
|
|
6
|
+
import { PROTECT_SEGMENT_RESOLUTION } from "./settings.js";
|
|
7
7
|
const LIVESTREAM_TIMEOUT = 3500;
|
|
8
8
|
const LIVESTREAM_RESTART_INTERVAL = 10;
|
|
9
9
|
export class LivestreamManager {
|
|
10
10
|
eventHandlers;
|
|
11
11
|
livestreams;
|
|
12
12
|
protectCamera;
|
|
13
|
+
restartCount;
|
|
13
14
|
restartDelay;
|
|
14
15
|
restarting;
|
|
15
16
|
subscriberCount;
|
|
@@ -20,6 +21,7 @@ export class LivestreamManager {
|
|
|
20
21
|
this.eventHandlers = {};
|
|
21
22
|
this.livestreams = {};
|
|
22
23
|
this.protectCamera = protectCamera;
|
|
24
|
+
this.restartCount = 0;
|
|
23
25
|
this.restartDelay = {};
|
|
24
26
|
this.restarting = {};
|
|
25
27
|
this.segmentTimer = {};
|
|
@@ -37,6 +39,7 @@ export class LivestreamManager {
|
|
|
37
39
|
acquire(rtspEntry) {
|
|
38
40
|
const { index } = this.getIndex(rtspEntry);
|
|
39
41
|
// Let's see if we have an existing livestream already open and reuse it if we can.
|
|
42
|
+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
|
40
43
|
if (this.livestreams[index]) {
|
|
41
44
|
return this.livestreams[index];
|
|
42
45
|
}
|
|
@@ -55,6 +58,7 @@ export class LivestreamManager {
|
|
|
55
58
|
shutdown() {
|
|
56
59
|
// Cleanup all the listeners and shutdown our livestreams.
|
|
57
60
|
Object.values(this.segmentTimer).map(timer => clearTimeout(timer));
|
|
61
|
+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
|
58
62
|
Object.values(this.livestreams).map(livestream => livestream.removeAllListeners() && livestream.stop());
|
|
59
63
|
this.eventHandlers = {};
|
|
60
64
|
this.livestreams = {};
|
|
@@ -65,10 +69,11 @@ export class LivestreamManager {
|
|
|
65
69
|
this.subscriberCount = {};
|
|
66
70
|
}
|
|
67
71
|
// Access the livestream API, registering as a consumer.
|
|
68
|
-
async start(rtspEntry, segmentLength =
|
|
72
|
+
async start(rtspEntry, segmentLength = PROTECT_SEGMENT_RESOLUTION) {
|
|
69
73
|
const { channel, index, lens } = this.getIndex(rtspEntry);
|
|
70
74
|
// If we don't have a livestream configured for this channel, we're done. We could just create it here, but given we listen to events on livestream listeners, this
|
|
71
75
|
// is a safer option to ensure that we've acquired a livestream endpoint before trying to start it.
|
|
76
|
+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
|
72
77
|
if (!this.livestreams[index]) {
|
|
73
78
|
return false;
|
|
74
79
|
}
|
|
@@ -78,7 +83,7 @@ export class LivestreamManager {
|
|
|
78
83
|
this.livestreams[index].segmentLength = segmentLength;
|
|
79
84
|
this.livestreams[index].start();
|
|
80
85
|
}
|
|
81
|
-
else if (!(await this.livestreams[index].start(this.protectCamera.ufp.id, channel, { lens, requestId: this.protectCamera.name + ":" + index, segmentLength }))) {
|
|
86
|
+
else if (!(await this.livestreams[index].start(this.protectCamera.ufp.id, channel, { chunkSize: 16384, emitTimestamps: true, lens, requestId: this.protectCamera.name + ":" + index, segmentLength }))) {
|
|
82
87
|
this.protectCamera.log.error("Unable to access the Protect livestream API: this is typically due to the Protect controller or camera rebooting.");
|
|
83
88
|
// Something went wrong in communicating with the controller.
|
|
84
89
|
return false;
|
|
@@ -97,6 +102,7 @@ export class LivestreamManager {
|
|
|
97
102
|
}
|
|
98
103
|
this.restarting[index] = true;
|
|
99
104
|
// Clear out any existing timer.
|
|
105
|
+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
|
100
106
|
if (this.segmentTimer[index]) {
|
|
101
107
|
clearTimeout(this.segmentTimer[index]);
|
|
102
108
|
}
|
|
@@ -106,6 +112,17 @@ export class LivestreamManager {
|
|
|
106
112
|
this.segmentTimer[index] = setTimeout(() => this.livestreams[index].emit("restart", true), 60 * 1000);
|
|
107
113
|
return;
|
|
108
114
|
}
|
|
115
|
+
if (++this.restartCount > 10) {
|
|
116
|
+
this.restartCount = 0;
|
|
117
|
+
this.protectCamera.log.warn("Restarting the camera to reset it's connection to the livestream API.");
|
|
118
|
+
// Restart now.
|
|
119
|
+
const response = await this.protectCamera.nvr.ufpApi.retrieve(this.protectCamera.nvr.ufpApi.getApiEndpoint(this.protectCamera.ufp.modelKey) + "/" +
|
|
120
|
+
this.protectCamera.ufp.id + "/reboot", { body: JSON.stringify({}), method: "POST" });
|
|
121
|
+
if (!this.protectCamera.nvr.ufpApi.responseOk(response?.statusCode)) {
|
|
122
|
+
this.protectCamera.log.error("Unable to restart the camera.");
|
|
123
|
+
return;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
109
126
|
this.protectCamera.log.warn("Reconnecting to the %s.", this.protectCamera.hasFeature("Debug.Video.HKSV.UseRtsp") ? "RTSP stream" : "livestream API");
|
|
110
127
|
// Wait before we try to reconnect to the livestream. This accounts for reboots and other potential connection issues that can occur.
|
|
111
128
|
await sleep((((Math.random() * 3) + this.restartDelay[index]) * 1000));
|
|
@@ -127,10 +144,12 @@ export class LivestreamManager {
|
|
|
127
144
|
// Set a regular heartbeat for the livestream API.
|
|
128
145
|
this.livestreams[index].on("segment", this.eventHandlers[index] = () => {
|
|
129
146
|
// Clear out any existing timer.
|
|
147
|
+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
|
130
148
|
if (this.segmentTimer[index]) {
|
|
131
149
|
clearTimeout(this.segmentTimer[index]);
|
|
132
150
|
// Make sure we've got a good livestream before we reset our delay.
|
|
133
151
|
if ((Date.now() - this.startTime[index]) > (60 * 1000)) {
|
|
152
|
+
this.restartCount = 0;
|
|
134
153
|
this.restartDelay[index] = LIVESTREAM_RESTART_INTERVAL;
|
|
135
154
|
}
|
|
136
155
|
}
|
|
@@ -156,6 +175,7 @@ export class LivestreamManager {
|
|
|
156
175
|
// Cleanup our listeners.
|
|
157
176
|
this.livestreams[index].off("restart", this.eventHandlers[index + ".restart"]);
|
|
158
177
|
this.livestreams[index].off("segment", this.eventHandlers[index]);
|
|
178
|
+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
|
159
179
|
if (this.segmentTimer[index]) {
|
|
160
180
|
clearTimeout(this.segmentTimer[index]);
|
|
161
181
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"protect-livestream.js","sourceRoot":"","sources":["../src/protect-livestream.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,uBAAuB,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AACzE,OAAO,EAAE
|
|
1
|
+
{"version":3,"file":"protect-livestream.js","sourceRoot":"","sources":["../src/protect-livestream.ts"],"names":[],"mappings":"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"}
|
package/dist/protect-nvr.d.ts
CHANGED
|
@@ -9,12 +9,12 @@ import type { ProtectNvrOptions } from "./protect-options.js";
|
|
|
9
9
|
import type { ProtectPlatform } from "./protect-platform.js";
|
|
10
10
|
export declare class ProtectNvr {
|
|
11
11
|
private api;
|
|
12
|
-
config: ProtectNvrOptions;
|
|
12
|
+
readonly config: ProtectNvrOptions;
|
|
13
13
|
private deviceRemovalQueue;
|
|
14
14
|
readonly configuredDevices: {
|
|
15
|
-
[index: string]: ProtectDevices;
|
|
15
|
+
[index: string]: ProtectDevices | undefined;
|
|
16
16
|
};
|
|
17
|
-
events: ProtectEvents;
|
|
17
|
+
readonly events: ProtectEvents;
|
|
18
18
|
private featureLog;
|
|
19
19
|
private hap;
|
|
20
20
|
private liveviews;
|
|
@@ -22,10 +22,10 @@ export declare class ProtectNvr {
|
|
|
22
22
|
readonly log: HomebridgePluginLogging;
|
|
23
23
|
mqtt: Nullable<MqttClient>;
|
|
24
24
|
private name;
|
|
25
|
-
platform: ProtectPlatform;
|
|
25
|
+
readonly platform: ProtectPlatform;
|
|
26
26
|
systemInfo: Nullable<ProtectNvrSystemInfo>;
|
|
27
27
|
ufp: ProtectNvrConfig;
|
|
28
|
-
ufpApi: ProtectApi;
|
|
28
|
+
readonly ufpApi: ProtectApi;
|
|
29
29
|
private unsupportedDevices;
|
|
30
30
|
constructor(platform: ProtectPlatform, nvrOptions: ProtectNvrOptions);
|
|
31
31
|
private bootstrapNvr;
|
package/dist/protect-nvr.js
CHANGED
|
@@ -39,13 +39,28 @@ export class ProtectNvr {
|
|
|
39
39
|
this.systemInfo = null;
|
|
40
40
|
this.ufp = {};
|
|
41
41
|
this.unsupportedDevices = {};
|
|
42
|
-
// Configure our logging.
|
|
42
|
+
// Configure our API logging.
|
|
43
|
+
const ufpLog = {
|
|
44
|
+
debug: (message, ...parameters) => this.platform.debug(util.format(message, ...parameters)),
|
|
45
|
+
error: (message, ...parameters) => {
|
|
46
|
+
if (this.logApiErrors) {
|
|
47
|
+
this.platform.log.error(util.format(message, ...parameters));
|
|
48
|
+
}
|
|
49
|
+
},
|
|
50
|
+
info: (message, ...parameters) => this.platform.log.info(util.format(message, ...parameters)),
|
|
51
|
+
warn: (message, ...parameters) => this.platform.log.warn(util.format(message, ...parameters))
|
|
52
|
+
};
|
|
53
|
+
// Initialize our connection to the UniFi Protect API.
|
|
54
|
+
this.ufpApi = new ProtectApi(ufpLog);
|
|
55
|
+
// Configure our controller logging.
|
|
43
56
|
this.log = {
|
|
44
|
-
debug: (message, ...parameters) => this.platform.debug(util.format(
|
|
45
|
-
error: (message, ...parameters) => this.platform.log.error(util.format(
|
|
46
|
-
info: (message, ...parameters) => this.platform.log.info(util.format(
|
|
47
|
-
warn: (message, ...parameters) => this.platform.log.warn(util.format(
|
|
57
|
+
debug: (message, ...parameters) => this.platform.debug(util.format(this.name + ": " + message, ...parameters)),
|
|
58
|
+
error: (message, ...parameters) => this.platform.log.error(util.format(this.name + ": " + message, ...parameters)),
|
|
59
|
+
info: (message, ...parameters) => this.platform.log.info(util.format(this.name + ": " + message, ...parameters)),
|
|
60
|
+
warn: (message, ...parameters) => this.platform.log.warn(util.format(this.name + ": " + message, ...parameters))
|
|
48
61
|
};
|
|
62
|
+
// Initialize our UniFi Protect event handler.
|
|
63
|
+
this.events = new ProtectEvents(this);
|
|
49
64
|
// Validate our Protect address and login information.
|
|
50
65
|
if (!nvrOptions.address || !nvrOptions.username || !nvrOptions.password) {
|
|
51
66
|
return;
|
|
@@ -54,7 +69,7 @@ export class ProtectNvr {
|
|
|
54
69
|
this.api.on("shutdown" /* APIEvent.SHUTDOWN */, () => {
|
|
55
70
|
for (const protectCamera of this.devices("camera")) {
|
|
56
71
|
protectCamera.log.debug("Shutting down all video stream processes.");
|
|
57
|
-
protectCamera.stream
|
|
72
|
+
protectCamera.stream.shutdown();
|
|
58
73
|
}
|
|
59
74
|
});
|
|
60
75
|
}
|
|
@@ -71,19 +86,6 @@ export class ProtectNvr {
|
|
|
71
86
|
this.log.info("Disabling this UniFi Protect controller.");
|
|
72
87
|
return;
|
|
73
88
|
}
|
|
74
|
-
// Initialize our connection to the UniFi Protect API.
|
|
75
|
-
const ufpLog = {
|
|
76
|
-
debug: (message, ...parameters) => this.platform.debug(util.format(message, ...parameters)),
|
|
77
|
-
error: (message, ...parameters) => {
|
|
78
|
-
if (this.logApiErrors) {
|
|
79
|
-
this.platform.log.error(util.format(message, ...parameters));
|
|
80
|
-
}
|
|
81
|
-
},
|
|
82
|
-
info: (message, ...parameters) => this.platform.log.info(util.format(message, ...parameters)),
|
|
83
|
-
warn: (message, ...parameters) => this.platform.log.warn(util.format(message, ...parameters))
|
|
84
|
-
};
|
|
85
|
-
// Create our connection to the Protect API.
|
|
86
|
-
this.ufpApi = new ProtectApi(ufpLog);
|
|
87
89
|
// Attempt to login to the Protect controller, retrying at reasonable intervals. This accounts for cases where the Protect controller or the network connection
|
|
88
90
|
// may not be fully available when we startup.
|
|
89
91
|
await retry(async () => this.ufpApi.login(this.config.address, this.config.username, this.config.password), PROTECT_CONTROLLER_RETRY_INTERVAL * 1000);
|
|
@@ -102,7 +104,7 @@ export class ProtectNvr {
|
|
|
102
104
|
// Set our NVR configuration from the controller.
|
|
103
105
|
this.ufp = bootstrap.nvr;
|
|
104
106
|
// Assign our name if the user hasn't explicitly specified a preference.
|
|
105
|
-
this.name = this.config.name ??
|
|
107
|
+
this.name = this.config.name ?? this.ufpApi.name;
|
|
106
108
|
// If we are running an unsupported version of UniFi Protect, we're done.
|
|
107
109
|
if (!this.ufp.version.startsWith("6.")) {
|
|
108
110
|
this.log.error("This version of HBUP requires running UniFi Protect v6.0 or above using the official Protect release channel only.");
|
|
@@ -123,8 +125,6 @@ export class ProtectNvr {
|
|
|
123
125
|
this.platform.accessories.filter(accessory => accessory.context.nvr === this.ufp.mac).map(accessory => this.removeHomeKitDevice(accessory, true));
|
|
124
126
|
return;
|
|
125
127
|
}
|
|
126
|
-
// Initialize our UniFi Protect event handler.
|
|
127
|
-
this.events = new ProtectEvents(this);
|
|
128
128
|
// Configure any NVR-specific settings.
|
|
129
129
|
this.configureNvr();
|
|
130
130
|
// Initialize our liveviews.
|
|
@@ -178,9 +178,6 @@ export class ProtectNvr {
|
|
|
178
178
|
}
|
|
179
179
|
// Create instances of Protect device types in our plugin.
|
|
180
180
|
addProtectDevice(accessory, device) {
|
|
181
|
-
if (!accessory || !device) {
|
|
182
|
-
return null;
|
|
183
|
-
}
|
|
184
181
|
switch (device.modelKey) {
|
|
185
182
|
case "camera":
|
|
186
183
|
// We have a UniFi Protect camera or doorbell.
|
|
@@ -212,12 +209,12 @@ export class ProtectNvr {
|
|
|
212
209
|
return null;
|
|
213
210
|
}
|
|
214
211
|
// Return our newly created device.
|
|
215
|
-
return this.configuredDevices[accessory.UUID];
|
|
212
|
+
return this.configuredDevices[accessory.UUID] ?? null;
|
|
216
213
|
}
|
|
217
214
|
// Add a newly detected Protect device to HomeKit.
|
|
218
215
|
addHomeKitDevice(device) {
|
|
219
216
|
// If we have no MAC address, name, or this camera isn't being managed by this Protect controller, we're done.
|
|
220
|
-
if (!this.ufp
|
|
217
|
+
if (!this.ufp.mac || !device.mac || device.isAdoptedByOther || !device.isAdopted) {
|
|
221
218
|
return false;
|
|
222
219
|
}
|
|
223
220
|
// We only support certain devices.
|
|
@@ -244,7 +241,7 @@ export class ProtectNvr {
|
|
|
244
241
|
}
|
|
245
242
|
// We've got a new device, let's add it to HomeKit.
|
|
246
243
|
if (!accessory) {
|
|
247
|
-
accessory = new this.api.platformAccessory(sanitizeName(device.name ?? device.marketName
|
|
244
|
+
accessory = new this.api.platformAccessory(sanitizeName(device.name ?? device.marketName), uuid);
|
|
248
245
|
this.log.info("%s: Adding %s to HomeKit%s.", this.ufpApi.getDeviceName(device), device.modelKey, this.hasFeature("Device.Standalone", device) ? " as a standalone device" : "");
|
|
249
246
|
// Register this accessory with homebridge and add it to the accessory array so we can track it.
|
|
250
247
|
if (this.hasFeature("Device.Standalone", device)) {
|
|
@@ -296,7 +293,7 @@ export class ProtectNvr {
|
|
|
296
293
|
// Process the device removal queue before we do anything else.
|
|
297
294
|
this.platform.accessories.filter(accessory => Object.keys(this.deviceRemovalQueue).includes(accessory.UUID)).map(accessory =>
|
|
298
295
|
// eslint-disable-next-line @stylistic/implicit-arrow-linebreak
|
|
299
|
-
this.removeHomeKitDevice(accessory, !this.platform.featureOptions.test("Device", accessory.getService(this.hap.Service.AccessoryInformation)?.getCharacteristic(this.hap.Characteristic.SerialNumber).value ?? "", this.ufp.mac)));
|
|
296
|
+
this.removeHomeKitDevice(accessory, !this.platform.featureOptions.test("Device", ((accessory.getService(this.hap.Service.AccessoryInformation)?.getCharacteristic(this.hap.Characteristic.SerialNumber).value) ?? ""), this.ufp.mac)));
|
|
300
297
|
// Cleanup our accessories.
|
|
301
298
|
for (const accessory of this.platform.accessories.filter(x => x.context.nvr === this.ufp.mac)) {
|
|
302
299
|
const protectDevice = this.configuredDevices[accessory.UUID];
|
|
@@ -304,7 +301,7 @@ export class ProtectNvr {
|
|
|
304
301
|
// happen is when Homebridge might be shutdown and a camera is then removed. When we start back up, the camera still exists in HomeKit but not in Protect. We
|
|
305
302
|
// catch those orphan devices here.
|
|
306
303
|
if (!protectDevice) {
|
|
307
|
-
this.removeHomeKitDevice(accessory, !this.platform.featureOptions.test("Device", accessory.getService(this.hap.Service.AccessoryInformation)?.getCharacteristic(this.hap.Characteristic.SerialNumber).value ?? ""));
|
|
304
|
+
this.removeHomeKitDevice(accessory, !this.platform.featureOptions.test("Device", ((accessory.getService(this.hap.Service.AccessoryInformation)?.getCharacteristic(this.hap.Characteristic.SerialNumber).value) ?? "")));
|
|
308
305
|
continue;
|
|
309
306
|
}
|
|
310
307
|
// If we don't have the Protect bootstrap JSON available, we're done. We need to know what's on the Protect controller in order to determine what to do with the
|
|
@@ -377,11 +374,13 @@ export class ProtectNvr {
|
|
|
377
374
|
// Grab our instance of the Protect device, if it exists.
|
|
378
375
|
const protectDevice = this.configuredDevices[accessory.UUID];
|
|
379
376
|
// See if we can pull the device's configuration details from our Protect device instance or the controller.
|
|
380
|
-
const device = protectDevice?.ufp ??
|
|
381
|
-
(this.ufpApi.bootstrap[category + "s"] ?? [])
|
|
377
|
+
const device = protectDevice?.ufp ??
|
|
378
|
+
ProtectDeviceCategories.flatMap(category => this.ufpApi.bootstrap?.[category + "s"] ?? [])
|
|
379
|
+
.find(d => d.mac === accessory.context.mac);
|
|
382
380
|
this.log.info("%s: Removing %s from HomeKit.%s", device ? this.ufpApi.getDeviceName(device) : protectDevice?.accessoryName ?? accessory.displayName, device?.modelKey ?? "device", accessory._associatedHAPAccessory.bridged ? "" : " You will need to manually delete the device in the Home app to complete the removal.");
|
|
383
381
|
const deletingAccessories = [accessory];
|
|
384
382
|
// If it's an unknown device or a camera, look for a corresponding package camera if we have one and remove it as well.
|
|
383
|
+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
|
385
384
|
if (!device || (device?.modelKey === "camera")) {
|
|
386
385
|
const packageCameraAccessory = this.platform.accessories.find(x => x.context.packageCamera === accessory.context.mac);
|
|
387
386
|
// Remove the package camera, if it exists, and cleanup the device if it's been confgured.
|
|
@@ -418,6 +417,9 @@ export class ProtectNvr {
|
|
|
418
417
|
if (this.ufpApi.bootstrap) {
|
|
419
418
|
// Find the RTSP aliases and publish them. We filter out any cameras that don't have RTSP aliases since they would be inaccessible in this context.
|
|
420
419
|
for (const camera of this.ufpApi.bootstrap.cameras.filter(x => x.channels.some(channel => channel.isRtspEnabled)).sort((a, b) => {
|
|
420
|
+
if (!a.name || !b.name) {
|
|
421
|
+
return 0;
|
|
422
|
+
}
|
|
421
423
|
if (a.name < b.name) {
|
|
422
424
|
return -1;
|
|
423
425
|
}
|
|
@@ -477,12 +479,12 @@ export class ProtectNvr {
|
|
|
477
479
|
}
|
|
478
480
|
// Return all devices of a particular modelKey.
|
|
479
481
|
devices(model) {
|
|
480
|
-
return Object.values(this.configuredDevices).filter(device => device.
|
|
482
|
+
return Object.values(this.configuredDevices).filter(device => device?.ufp.modelKey === model);
|
|
481
483
|
}
|
|
482
484
|
// Return the Protect device object based on it's unique device identifier, if it exists.
|
|
483
485
|
getDeviceById(deviceId) {
|
|
484
486
|
// Find the device.
|
|
485
|
-
return Object.values(this.configuredDevices).find(device => device
|
|
487
|
+
return Object.values(this.configuredDevices).find(device => device?.ufp.id === deviceId) ?? null;
|
|
486
488
|
}
|
|
487
489
|
// Utility function to return a floating point configuration parameter on a device.
|
|
488
490
|
getFeatureFloat(option) {
|