homebridge-unifi-protect 7.21.0 → 7.23.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 +3 -3
- package/dist/devices/protect-camera-package.js.map +1 -1
- package/dist/devices/protect-camera.d.ts +2 -1
- package/dist/devices/protect-camera.js +78 -49
- 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 +4 -4
- package/dist/devices/protect-sensor.js +56 -44
- 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 +12 -18
- package/dist/protect-events.js.map +1 -1
- package/dist/protect-livestream.js +10 -4
- 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 +3 -2
- 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 -2
- package/dist/protect-record.js +9 -14
- package/dist/protect-record.js.map +1 -1
- package/dist/protect-stream.js +39 -59
- package/dist/protect-stream.js.map +1 -1
- package/dist/protect-timeshift.d.ts +0 -2
- package/dist/protect-timeshift.js +7 -15
- package/dist/protect-timeshift.js.map +1 -1
- package/dist/protect-types.d.ts +2 -0
- package/dist/protect-types.js +3 -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/lib/featureoptions.js +7 -8
- package/homebridge-ui/public/lib/featureoptions.js.map +1 -1
- package/homebridge-ui/public/lib/webUi-featureoptions.mjs +488 -213
- package/homebridge-ui/public/ui.mjs +1 -1
- package/package.json +9 -9
|
@@ -36,7 +36,7 @@ export class ProtectViewer extends ProtectDevice {
|
|
|
36
36
|
// Grab the current list of liveview switches we know about.
|
|
37
37
|
const currentLiveviewSwitches = this.accessory.services.filter(x => (x.UUID === this.hap.Service.Switch.UUID) && x.subtype);
|
|
38
38
|
// Grab the current list of liveview identifiers from Protect.
|
|
39
|
-
const nvrLiveviewIds = this.ufpApi.bootstrap?.liveviews
|
|
39
|
+
const nvrLiveviewIds = this.ufpApi.bootstrap?.liveviews.map(x => x.id);
|
|
40
40
|
// Identify what's been removed on the NVR and remove it from the accessory as well.
|
|
41
41
|
currentLiveviewSwitches.filter(x => !nvrLiveviewIds?.includes(x.subtype ?? "")).map(x => this.accessory.removeService(x));
|
|
42
42
|
// Identify what needs to be added to HomeKit that isn't already there, and add them.
|
|
@@ -67,10 +67,10 @@ export class ProtectViewer extends ProtectDevice {
|
|
|
67
67
|
// If we're configuring a switch for the first time, we add our respective handlers.
|
|
68
68
|
if (configureHandlers) {
|
|
69
69
|
// Turn the liveview switch on or off.
|
|
70
|
-
switchService.getCharacteristic(this.hap.Characteristic.On)
|
|
70
|
+
switchService.getCharacteristic(this.hap.Characteristic.On).onGet(() => {
|
|
71
71
|
return this.getLiveviewSwitchState(switchService);
|
|
72
72
|
});
|
|
73
|
-
switchService.getCharacteristic(this.hap.Characteristic.On)
|
|
73
|
+
switchService.getCharacteristic(this.hap.Characteristic.On).onSet(async (value) => {
|
|
74
74
|
return this.setLiveviewSwitchState(switchService, value);
|
|
75
75
|
});
|
|
76
76
|
}
|
|
@@ -109,7 +109,7 @@ export class ProtectViewer extends ProtectDevice {
|
|
|
109
109
|
continue;
|
|
110
110
|
}
|
|
111
111
|
// Retrieve the name assigned to this liveview.
|
|
112
|
-
const liveviewName = this.ufpApi.bootstrap?.liveviews
|
|
112
|
+
const liveviewName = this.ufpApi.bootstrap?.liveviews.find(x => x.id === liveviewId)?.name;
|
|
113
113
|
// Acquire the service.
|
|
114
114
|
const service = this.acquireService(this.hap.Service.Switch, liveviewName, liveviewId);
|
|
115
115
|
// Fail gracefully.
|
|
@@ -124,9 +124,9 @@ export class ProtectViewer extends ProtectDevice {
|
|
|
124
124
|
// Set the liveview on a viewer device in UniFi Protect.
|
|
125
125
|
async setViewer(newLiveview) {
|
|
126
126
|
// Set the liveview.
|
|
127
|
-
const newDevice =
|
|
127
|
+
const newDevice = await this.nvr.ufpApi.updateDevice(this.ufp, { liveview: newLiveview });
|
|
128
128
|
// Find the liveview name for MQTT.
|
|
129
|
-
const liveview = this.ufpApi.bootstrap?.liveviews
|
|
129
|
+
const liveview = this.ufpApi.bootstrap?.liveviews.find(x => x.id === newLiveview);
|
|
130
130
|
// Publish an MQTT event.
|
|
131
131
|
if (liveview) {
|
|
132
132
|
this.publish("liveview", liveview.name);
|
|
@@ -137,11 +137,11 @@ export class ProtectViewer extends ProtectDevice {
|
|
|
137
137
|
configureMqtt() {
|
|
138
138
|
// Trigger a motion event in MQTT, if requested to do so.
|
|
139
139
|
this.subscribeGet("liveview", "liveview", () => {
|
|
140
|
-
return this.ufpApi.bootstrap?.liveviews
|
|
140
|
+
return this.ufpApi.bootstrap?.liveviews.find(x => x.id === this.ufp.liveview)?.name ?? "None";
|
|
141
141
|
});
|
|
142
142
|
// Trigger a motion event in MQTT, if requested to do so.
|
|
143
143
|
this.subscribeSet("liveview", "liveview", async (value) => {
|
|
144
|
-
const liveview = this.ufpApi.bootstrap?.liveviews
|
|
144
|
+
const liveview = this.ufpApi.bootstrap?.liveviews.find(x => x.name.toLowerCase() === value);
|
|
145
145
|
if (!liveview) {
|
|
146
146
|
this.log.error("Unable to locate a liveview named %s.", value);
|
|
147
147
|
return;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"protect-viewer.js","sourceRoot":"","sources":["../../src/devices/protect-viewer.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGpD,MAAM,OAAO,aAAc,SAAQ,aAAa;IAEvC,GAAG,CAAsB;IAEhC,sBAAsB;IACtB,YAAY,GAAe,EAAE,MAA2B,EAAE,SAA4B;QAEpF,KAAK,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;QAEtB,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC;QAElB,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,IAAI,CAAC,eAAe,EAAE,CAAC;IACzB,CAAC;IAED,6DAA6D;IACrD,eAAe;QAErB,mEAAmE;QACnE,IAAI,CAAC,SAAS,CAAC,OAAO,GAAG,EAAE,CAAC;QAC5B,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;QAC1C,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC;QAE9C,mCAAmC;QACnC,IAAI,CAAC,aAAa,EAAE,CAAC;QAErB,gCAAgC;QAChC,MAAM,gBAAgB,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QAEjD,2BAA2B;QAC3B,IAAI,CAAC,aAAa,EAAE,CAAC;QAErB,qBAAqB;QACrB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAE9H,kDAAkD;QAClD,IAAG,gBAAgB,CAAC,MAAM,EAAE,CAAC;YAE3B,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,4BAA4B,EAAE,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACnH,CAAC;aAAO,CAAC;YAEP,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;QAC5C,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED,iDAAiD;IAC1C,YAAY,CAAC,iBAAiB,GAAG,KAAK;QAE3C,4DAA4D;QAC5D,MAAM,uBAAuB,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC;QAE5H,8DAA8D;QAC9D,MAAM,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,SAAS,
|
|
1
|
+
{"version":3,"file":"protect-viewer.js","sourceRoot":"","sources":["../../src/devices/protect-viewer.ts"],"names":[],"mappings":"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"}
|
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.
|
|
@@ -369,7 +363,7 @@ export class ProtectEvents extends EventEmitter {
|
|
|
369
363
|
// Trigger the doorbell event in HomeKit, if we're configured to do so.
|
|
370
364
|
if (!protectDevice.accessory.context.doorbellMuted) {
|
|
371
365
|
doorbellService.getCharacteristic(this.hap.Characteristic.ProgrammableSwitchEvent)
|
|
372
|
-
|
|
366
|
+
.sendEventNotification(this.hap.Characteristic.ProgrammableSwitchEvent.SINGLE_PRESS);
|
|
373
367
|
}
|
|
374
368
|
// Check to see if we have a doorbell trigger switch configured. If we do, update it.
|
|
375
369
|
const triggerService = protectDevice.accessory.getServiceById(this.hap.Service.Switch, ProtectReservedNames.SWITCH_DOORBELL_TRIGGER);
|
|
@@ -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,7 +3,7 @@
|
|
|
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 {
|
|
@@ -39,6 +39,7 @@ export class LivestreamManager {
|
|
|
39
39
|
acquire(rtspEntry) {
|
|
40
40
|
const { index } = this.getIndex(rtspEntry);
|
|
41
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
|
|
42
43
|
if (this.livestreams[index]) {
|
|
43
44
|
return this.livestreams[index];
|
|
44
45
|
}
|
|
@@ -57,6 +58,7 @@ export class LivestreamManager {
|
|
|
57
58
|
shutdown() {
|
|
58
59
|
// Cleanup all the listeners and shutdown our livestreams.
|
|
59
60
|
Object.values(this.segmentTimer).map(timer => clearTimeout(timer));
|
|
61
|
+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
|
60
62
|
Object.values(this.livestreams).map(livestream => livestream.removeAllListeners() && livestream.stop());
|
|
61
63
|
this.eventHandlers = {};
|
|
62
64
|
this.livestreams = {};
|
|
@@ -67,10 +69,11 @@ export class LivestreamManager {
|
|
|
67
69
|
this.subscriberCount = {};
|
|
68
70
|
}
|
|
69
71
|
// Access the livestream API, registering as a consumer.
|
|
70
|
-
async start(rtspEntry, segmentLength =
|
|
72
|
+
async start(rtspEntry, segmentLength = PROTECT_SEGMENT_RESOLUTION) {
|
|
71
73
|
const { channel, index, lens } = this.getIndex(rtspEntry);
|
|
72
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
|
|
73
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
|
|
74
77
|
if (!this.livestreams[index]) {
|
|
75
78
|
return false;
|
|
76
79
|
}
|
|
@@ -80,7 +83,7 @@ export class LivestreamManager {
|
|
|
80
83
|
this.livestreams[index].segmentLength = segmentLength;
|
|
81
84
|
this.livestreams[index].start();
|
|
82
85
|
}
|
|
83
|
-
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 }))) {
|
|
84
87
|
this.protectCamera.log.error("Unable to access the Protect livestream API: this is typically due to the Protect controller or camera rebooting.");
|
|
85
88
|
// Something went wrong in communicating with the controller.
|
|
86
89
|
return false;
|
|
@@ -99,6 +102,7 @@ export class LivestreamManager {
|
|
|
99
102
|
}
|
|
100
103
|
this.restarting[index] = true;
|
|
101
104
|
// Clear out any existing timer.
|
|
105
|
+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
|
102
106
|
if (this.segmentTimer[index]) {
|
|
103
107
|
clearTimeout(this.segmentTimer[index]);
|
|
104
108
|
}
|
|
@@ -108,7 +112,7 @@ export class LivestreamManager {
|
|
|
108
112
|
this.segmentTimer[index] = setTimeout(() => this.livestreams[index].emit("restart", true), 60 * 1000);
|
|
109
113
|
return;
|
|
110
114
|
}
|
|
111
|
-
if (++this.restartCount > 10) {
|
|
115
|
+
if (this.protectCamera.hasFeature("Device.SelfHealing") && (++this.restartCount > 10)) {
|
|
112
116
|
this.restartCount = 0;
|
|
113
117
|
this.protectCamera.log.warn("Restarting the camera to reset it's connection to the livestream API.");
|
|
114
118
|
// Restart now.
|
|
@@ -140,6 +144,7 @@ export class LivestreamManager {
|
|
|
140
144
|
// Set a regular heartbeat for the livestream API.
|
|
141
145
|
this.livestreams[index].on("segment", this.eventHandlers[index] = () => {
|
|
142
146
|
// Clear out any existing timer.
|
|
147
|
+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
|
143
148
|
if (this.segmentTimer[index]) {
|
|
144
149
|
clearTimeout(this.segmentTimer[index]);
|
|
145
150
|
// Make sure we've got a good livestream before we reset our delay.
|
|
@@ -170,6 +175,7 @@ export class LivestreamManager {
|
|
|
170
175
|
// Cleanup our listeners.
|
|
171
176
|
this.livestreams[index].off("restart", this.eventHandlers[index + ".restart"]);
|
|
172
177
|
this.livestreams[index].off("segment", this.eventHandlers[index]);
|
|
178
|
+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
|
173
179
|
if (this.segmentTimer[index]) {
|
|
174
180
|
clearTimeout(this.segmentTimer[index]);
|
|
175
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) {
|