homebridge-unifi-protect 7.1.2 → 7.3.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.
Files changed (65) hide show
  1. package/dist/devices/protect-camera-package.js +1 -2
  2. package/dist/devices/protect-camera-package.js.map +1 -1
  3. package/dist/devices/protect-camera.d.ts +3 -0
  4. package/dist/devices/protect-camera.js +103 -41
  5. package/dist/devices/protect-camera.js.map +1 -1
  6. package/dist/devices/protect-chime.d.ts +2 -0
  7. package/dist/devices/protect-chime.js +38 -5
  8. package/dist/devices/protect-chime.js.map +1 -1
  9. package/dist/devices/protect-device.d.ts +7 -2
  10. package/dist/devices/protect-device.js +67 -66
  11. package/dist/devices/protect-device.js.map +1 -1
  12. package/dist/devices/protect-light.d.ts +2 -0
  13. package/dist/devices/protect-light.js +22 -4
  14. package/dist/devices/protect-light.js.map +1 -1
  15. package/dist/devices/protect-liveviews.js +2 -2
  16. package/dist/devices/protect-liveviews.js.map +1 -1
  17. package/dist/devices/protect-sensor.js +4 -0
  18. package/dist/devices/protect-sensor.js.map +1 -1
  19. package/dist/ffmpeg/protect-ffmpeg-exec.d.ts +0 -2
  20. package/dist/ffmpeg/protect-ffmpeg-options.js +9 -9
  21. package/dist/ffmpeg/protect-ffmpeg-options.js.map +1 -1
  22. package/dist/ffmpeg/protect-ffmpeg-record.d.ts +2 -3
  23. package/dist/ffmpeg/protect-ffmpeg-record.js +50 -56
  24. package/dist/ffmpeg/protect-ffmpeg-record.js.map +1 -1
  25. package/dist/ffmpeg/protect-ffmpeg-stream.d.ts +0 -2
  26. package/dist/ffmpeg/protect-ffmpeg-stream.js +17 -9
  27. package/dist/ffmpeg/protect-ffmpeg-stream.js.map +1 -1
  28. package/dist/ffmpeg/protect-ffmpeg.d.ts +2 -6
  29. package/dist/ffmpeg/protect-ffmpeg.js +0 -1
  30. package/dist/ffmpeg/protect-ffmpeg.js.map +1 -1
  31. package/dist/protect-events.d.ts +0 -1
  32. package/dist/protect-events.js +75 -59
  33. package/dist/protect-events.js.map +1 -1
  34. package/dist/protect-livestream.d.ts +3 -0
  35. package/dist/protect-livestream.js +61 -5
  36. package/dist/protect-livestream.js.map +1 -1
  37. package/dist/protect-nvr.d.ts +2 -3
  38. package/dist/protect-nvr.js +35 -52
  39. package/dist/protect-nvr.js.map +1 -1
  40. package/dist/protect-options.js +4 -4
  41. package/dist/protect-options.js.map +1 -1
  42. package/dist/protect-platform.js +1 -1
  43. package/dist/protect-platform.js.map +1 -1
  44. package/dist/protect-record.d.ts +7 -8
  45. package/dist/protect-record.js +126 -123
  46. package/dist/protect-record.js.map +1 -1
  47. package/dist/protect-snapshot.d.ts +0 -1
  48. package/dist/protect-snapshot.js +2 -2
  49. package/dist/protect-snapshot.js.map +1 -1
  50. package/dist/protect-stream.d.ts +2 -2
  51. package/dist/protect-stream.js +54 -29
  52. package/dist/protect-stream.js.map +1 -1
  53. package/dist/protect-timeshift.d.ts +3 -4
  54. package/dist/protect-timeshift.js +34 -31
  55. package/dist/protect-timeshift.js.map +1 -1
  56. package/dist/protect-types.d.ts +1 -0
  57. package/dist/protect-types.js +1 -0
  58. package/dist/protect-types.js.map +1 -1
  59. package/dist/settings.d.ts +1 -3
  60. package/dist/settings.js +1 -5
  61. package/dist/settings.js.map +1 -1
  62. package/homebridge-ui/public/lib/webUi-featureoptions.mjs +70 -70
  63. package/homebridge-ui/public/lib/webUi.mjs +7 -7
  64. package/homebridge-ui/public/ui.mjs +6 -5
  65. package/package.json +16 -16
@@ -65,36 +65,41 @@ export class ProtectEvents extends EventEmitter {
65
65
  }
66
66
  // Process Protect API update events.
67
67
  ufpUpdates(packet) {
68
+ const payload = packet.payload;
68
69
  let protectDevice;
69
70
  switch (packet.header.modelKey) {
70
71
  case "nvr":
71
- this.nvr.ufp = this.updateUfp(this.nvr.ufp, packet.payload);
72
+ this.nvr.ufp = this.updateUfp(this.nvr.ufp, payload);
72
73
  break;
73
74
  default:
74
75
  // Lookup the device.
75
- protectDevice = this.nvr.deviceLookup(packet.header.id);
76
+ protectDevice = this.nvr.getDeviceById(packet.header.id);
76
77
  // No device found, we're done.
77
78
  if (!protectDevice) {
78
79
  break;
79
80
  }
80
- // Update our device state.
81
- protectDevice.ufp = this.updateUfp(protectDevice.ufp, packet.payload);
82
- // Detect device availability changes.
83
- if (packet.payload.state) {
84
- protectDevice.log.debug("State has changed to %s.", protectDevice.isOnline ? "online" : "offline");
81
+ // Update our device state. If we're refreshing the bootstrap, we set it as the full payload rather than update the UFP configuration.
82
+ protectDevice.ufp = packet.header.hbupBootstrap ? payload : this.updateUfp(protectDevice.ufp, payload);
83
+ // Detect device availability changes. This ensures we capture the true availability state of a Protect device since it appears that Protect occasionally fails
84
+ // to send an event out indicating state changes. We catch anything that's been missed dynamically when the bootstrap update occurs.
85
+ if ("isConnected" in payload) {
85
86
  // If we have services on the accessory associated with the Protect device that have a StatusActive characteristic set, update our availability state.
86
87
  protectDevice.accessory.services.filter(x => x.testCharacteristic(this.hap.Characteristic.StatusActive))
87
88
  ?.map(x => x.updateCharacteristic(this.hap.Characteristic.StatusActive, protectDevice?.isOnline ?? true));
88
89
  }
90
+ // If this is a bootstrap-related update, we're done here. Anything beyond this point is intended for dynamic event updates.
91
+ if (packet.header.hbupBootstrap) {
92
+ break;
93
+ }
89
94
  // Sync names, if configured to do so.
90
- if (packet.payload.name && protectDevice.hints.syncName) {
95
+ if (payload.name && protectDevice.hints.syncName) {
91
96
  protectDevice.log.info("Name change detected. A restart of Homebridge may be needed in order to complete name synchronization with HomeKit.");
92
97
  protectDevice.configureInfo();
93
98
  }
94
99
  break;
95
100
  }
96
101
  // Update the internal list we maintain.
97
- this.ufpDeviceState[packet.header.id] = Object.assign(this.ufpDeviceState[packet.header.id] ?? {}, packet.payload);
102
+ this.ufpDeviceState[packet.header.id] = Object.assign(this.ufpDeviceState[packet.header.id] ?? {}, payload);
98
103
  }
99
104
  // Process device additions and removals from the Protect update events API.
100
105
  manageDevices(packet) {
@@ -109,7 +114,7 @@ export class ProtectEvents extends EventEmitter {
109
114
  }
110
115
  // Lookup the device.
111
116
  const deviceId = payload.metadata.deviceId.text;
112
- const protectDevice = this.nvr.deviceLookup(deviceId);
117
+ const protectDevice = this.nvr.getDeviceById(deviceId);
113
118
  // We're adopting.
114
119
  if (payload.type === "deviceAdopted") {
115
120
  if (protectDevice) {
@@ -137,11 +142,13 @@ export class ProtectEvents extends EventEmitter {
137
142
  this.prependListener("addEvent", this.manageDevices.bind(this));
138
143
  // Listen for any messages coming in from our listener. We route events to the appropriate handlers based on the type of event that comes across.
139
144
  this.ufpApi.on("message", (packet) => {
145
+ let cameraId;
140
146
  switch (packet.header.action) {
141
147
  case "add":
142
148
  this.emit("addEvent", packet);
143
- if (packet.payload.camera) {
144
- this.emit("addEvent." + packet.payload.camera, packet);
149
+ cameraId = packet.payload.camera ?? packet.payload.cameraId;
150
+ if (cameraId) {
151
+ this.emit("addEvent." + cameraId, packet);
145
152
  }
146
153
  this.emit("addEvent." + packet.header.modelKey, packet);
147
154
  break;
@@ -185,42 +192,29 @@ export class ProtectEvents extends EventEmitter {
185
192
  if (("detectMotion" in protectDevice.accessory.context) && !protectDevice.accessory.context.detectMotion) {
186
193
  return;
187
194
  }
188
- // If we have an active motion event inflight, we're done.
189
- if (this.eventTimers[protectDevice.id]) {
190
- return;
191
- }
192
- const protectCamera = protectDevice;
193
- // Trigger the motion event in HomeKit.
194
- motionService.updateCharacteristic(this.hap.Characteristic.MotionDetected, true);
195
- // If we have a motion trigger switch configured, update it.
196
- protectDevice.accessory.getServiceById(this.hap.Service.Switch, ProtectReservedNames.SWITCH_MOTION_TRIGGER)?.updateCharacteristic(this.hap.Characteristic.On, true);
197
- // Publish the motion event to MQTT, if the user has configured it.
198
- this.nvr.mqtt?.publish(protectDevice.ufp.mac, "motion", "true");
199
- // Log the event, if configured to do so.
200
- if (protectDevice.hints.logMotion) {
201
- let logMessage = "";
202
- // If we have license plate telemetry, let's inform the user if we're logging for motion events.
203
- if (metadata?.licensePlate && detectedObjects.includes("licensePlate") && metadata.licensePlate.name) {
204
- logMessage = " (license plate: " + metadata.licensePlate.name + ", " + metadata.licensePlate.confidenceLevel + "% confidence)";
195
+ // Only update HomeKit if we don't have a motion event inflight.
196
+ if (!this.eventTimers[protectDevice.id]) {
197
+ // Trigger the motion event in HomeKit.
198
+ motionService.updateCharacteristic(this.hap.Characteristic.MotionDetected, true);
199
+ // If we have a motion trigger switch configured, update it.
200
+ protectDevice.accessory.getServiceById(this.hap.Service.Switch, ProtectReservedNames.SWITCH_MOTION_TRIGGER)?.updateCharacteristic(this.hap.Characteristic.On, true);
201
+ // Publish the motion event to MQTT, if the user has configured it.
202
+ this.nvr.mqtt?.publish(protectDevice.ufp.mac, "motion", "true");
203
+ // Log the event, if configured to do so.
204
+ if (protectDevice.hints.logMotion) {
205
+ let logMessage = "";
206
+ // If we have license plate telemetry, let's inform the user if we're logging for motion events.
207
+ if (metadata?.licensePlate && detectedObjects.includes("licensePlate") && metadata.licensePlate.name) {
208
+ logMessage = " (license plate: " + metadata.licensePlate.name + ", " + metadata.licensePlate.confidenceLevel + "% confidence)";
209
+ }
210
+ protectDevice.log.info("Motion detected%s.", ((protectDevice.ufp.modelKey === "camera") && detectedObjects.length &&
211
+ (!protectDevice.stream?.hksv?.isRecording ||
212
+ protectDevice.hints.smartDetect || protectDevice.hints.smartDetectSensors)) ? ": " + detectedObjects.sort().join(", ") + logMessage : "");
205
213
  }
206
- protectDevice.log.info("Motion detected%s.", ((protectDevice.ufp.modelKey === "camera") && detectedObjects.length &&
207
- (!protectCamera.stream?.hksv?.isRecording ||
208
- protectCamera.hints.smartDetect || protectDevice.hasFeature("Motion.SmartDetect.ObjectSensors"))) ? ": " + detectedObjects.sort().join(", ") + logMessage : "");
209
214
  }
210
- // Iterate through our detected Protect smart object types.
211
- for (const detectedObject of detectedObjects) {
212
- // Trigger smart motion contact sensor, if configured.
213
- protectDevice.accessory.getServiceById(this.hap.Service.ContactSensor, ProtectReservedNames.CONTACT_MOTION_SMARTDETECT + "." + detectedObject)
214
- ?.updateCharacteristic(this.hap.Characteristic.ContactSensorState, true);
215
- // Publish the smart motion event to MQTT, if the user has configured it.
216
- this.nvr.mqtt?.publish(protectDevice.ufp.mac, "motion/smart/" + detectedObject, "true");
217
- // Trigger license plate contact sensors, if configured.
218
- if (metadata && ("licensePlate" in metadata) && (detectedObject === "licensePlate") && ("name" in metadata.licensePlate)) {
219
- protectDevice.accessory.getServiceById(this.hap.Service.ContactSensor, ProtectReservedNames.CONTACT_MOTION_SMARTDETECT_LICENSE + "." +
220
- metadata.licensePlate.name.toUpperCase())?.updateCharacteristic(this.hap.Characteristic.ContactSensorState, true);
221
- // Publish the smart motion event to MQTT, if the user has configured it.
222
- this.nvr.mqtt?.publish(protectDevice.ufp.mac, "motion/smart/" + detectedObject + "/metadata", JSON.stringify(metadata));
223
- }
215
+ else {
216
+ // Clear out the inflight motion event timer.
217
+ clearTimeout(this.eventTimers[protectDevice.id]);
224
218
  }
225
219
  // Reset our motion event after motionDuration.
226
220
  this.eventTimers[protectDevice.id] = setTimeout(() => {
@@ -235,14 +229,36 @@ export class ProtectEvents extends EventEmitter {
235
229
  delete this.eventTimers[protectDevice.id];
236
230
  }, protectDevice.hints.motionDuration * 1000);
237
231
  // If we have an active smart motion contact sensor reset timer, let's cancel it and create a new one.
238
- if (this.eventTimers[protectDevice.id + ".Motion.SmartDetect.ObjectSensors"]) {
239
- // Clear out the inflight timer from our motion event tracker.
240
- clearTimeout(this.eventTimers[protectDevice.id + ".Motion.SmartDetect.ObjectSensors"]);
232
+ detectedObjects.map(objectSensor => this.eventTimers[protectDevice.id + ".Motion.SmartDetect.ObjectSensors." + objectSensor] &&
233
+ clearTimeout(this.eventTimers[protectDevice.id + ".Motion.SmartDetect.ObjectSensors." + objectSensor]));
234
+ // Iterate through our detected Protect smart object types, if not already triggered.
235
+ for (const detectedObject of detectedObjects.filter(objectSensor => !protectDevice.accessory.getServiceById(this.hap.Service.ContactSensor, ProtectReservedNames.CONTACT_MOTION_SMARTDETECT + "." + objectSensor)?.getCharacteristic(this.hap.Characteristic.ContactSensorState).value)) {
236
+ // Trigger smart motion contact sensor, if configured.
237
+ protectDevice.accessory.getServiceById(this.hap.Service.ContactSensor, ProtectReservedNames.CONTACT_MOTION_SMARTDETECT + "." + detectedObject)
238
+ ?.updateCharacteristic(this.hap.Characteristic.ContactSensorState, true);
239
+ // Publish the smart motion event to MQTT, if the user has configured it.
240
+ this.nvr.mqtt?.publish(protectDevice.ufp.mac, "motion/smart/" + detectedObject, "true");
241
+ // Trigger license plate contact sensors, if configured.
242
+ if (metadata && ("licensePlate" in metadata) && (detectedObject === "licensePlate") && ("name" in metadata.licensePlate)) {
243
+ protectDevice.accessory.getServiceById(this.hap.Service.ContactSensor, ProtectReservedNames.CONTACT_MOTION_SMARTDETECT_LICENSE + "." +
244
+ metadata.licensePlate.name.toUpperCase())?.updateCharacteristic(this.hap.Characteristic.ContactSensorState, true);
245
+ // Publish the smart motion event to MQTT, if the user has configured it.
246
+ this.nvr.mqtt?.publish(protectDevice.ufp.mac, "motion/smart/" + detectedObject + "/metadata", JSON.stringify(metadata));
247
+ }
248
+ // Log the event, if configured to do so.
249
+ if (protectDevice.hints.logMotion) {
250
+ let logMessage = "";
251
+ // If we have license plate telemetry, let's inform the user if we're logging for motion events.
252
+ if (metadata?.licensePlate && (detectedObject === "licensePlate") && metadata.licensePlate.name) {
253
+ logMessage = " (license plate: " + metadata.licensePlate.name + ", " + metadata.licensePlate.confidenceLevel + "% confidence)";
254
+ }
255
+ protectDevice.log.info("Motion detected: %s%s.", detectedObject, logMessage);
256
+ }
241
257
  }
242
- // Reset our smart motion contact sensors after motionDuration.
243
- this.eventTimers[protectDevice.id + ".Motion.SmartDetect.ObjectSensors"] = setTimeout(() => {
244
- // Reset smart motion contact sensors, if configured.
245
- for (const detectedObject of detectedObjects) {
258
+ // Reset smart motion contact sensors, if configured.
259
+ for (const detectedObject of detectedObjects) {
260
+ // Reset our smart motion contact sensors after motionDuration.
261
+ this.eventTimers[protectDevice.id + ".Motion.SmartDetect.ObjectSensors." + detectedObject] = setTimeout(() => {
246
262
  // Reset our license plate contact sensor, if configured.
247
263
  if (metadata && ("licensePlate" in metadata) && (detectedObject === "licensePlate") && ("name" in metadata.licensePlate)) {
248
264
  protectDevice.accessory.getServiceById(this.hap.Service.ContactSensor, ProtectReservedNames.CONTACT_MOTION_SMARTDETECT_LICENSE + "." +
@@ -254,12 +270,12 @@ export class ProtectEvents extends EventEmitter {
254
270
  // Publish the smart motion event to MQTT, if the user has configured it.
255
271
  this.nvr.mqtt?.publish(protectDevice.ufp.mac, "motion/smart/" + detectedObject, "false");
256
272
  protectDevice.log.debug("Resetting smart object motion event.");
257
- }
258
- // Delete the timer from our motion event tracker.
259
- delete this.eventTimers[protectDevice.id + ".Motion.SmartDetect.ObjectSensors"];
260
- }, protectDevice.hints.motionDuration * 1000);
261
- // If we don't have smart motion detection enabled, or if we do have it enabled and we have a smart motion event that's detected a person, let's process our
262
- // occupancy event updates.
273
+ // Delete the timer from our motion event tracker.
274
+ delete this.eventTimers[protectDevice.id + ".Motion.SmartDetect.ObjectSensors"];
275
+ }, protectDevice.hints.motionDuration * 1000);
276
+ }
277
+ // If we don't have smart motion detection enabled, or if we do have it enabled and we have a smart motion event that's detected an object of interest, let's process
278
+ // our occupancy event updates.
263
279
  if (!protectDevice.hints.smartDetect || (protectDevice.hints.smartDetect && detectedObjects.some(x => protectDevice.hints.smartOccupancy.includes(x)))) {
264
280
  // First, let's determine if the user has an occupancy sensor configured, before we process anything.
265
281
  const occupancyService = protectDevice.accessory.getService(this.hap.Service.OccupancySensor);
@@ -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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"}
@@ -1,12 +1,15 @@
1
1
  import { ProtectCamera } from "./devices/index.js";
2
2
  import { ProtectLivestream } from "unifi-protect";
3
3
  export declare class LivestreamManager {
4
+ private eventHandlers;
4
5
  private livestreams;
5
6
  private protectCamera;
6
7
  private subscriberCount;
8
+ private segmentTimers;
7
9
  constructor(protectCamera: ProtectCamera);
8
10
  private getIndex;
9
11
  acquire(channel: number, lens?: number): ProtectLivestream;
12
+ shutdown(): void;
10
13
  start(channel: number, lens?: number, segmentLength?: number): Promise<boolean>;
11
14
  stop(channel: number, lens?: number): void;
12
15
  }
@@ -3,16 +3,21 @@
3
3
  * protect-livestream.ts: Protect livestream API manager.
4
4
  */
5
5
  import { PROTECT_HKSV_SEGMENT_RESOLUTION } from "./settings.js";
6
- import { retry } from "homebridge-plugin-utils";
6
+ import { sleep } from "homebridge-plugin-utils";
7
+ const LIVESTREAM_TIMEOUT = 3500;
7
8
  export class LivestreamManager {
9
+ eventHandlers;
8
10
  livestreams;
9
11
  protectCamera;
10
12
  subscriberCount;
13
+ segmentTimers;
11
14
  // Create an instance.
12
15
  constructor(protectCamera) {
16
+ this.eventHandlers = {};
17
+ this.livestreams = {};
13
18
  this.protectCamera = protectCamera;
19
+ this.segmentTimers = {};
14
20
  this.subscriberCount = {};
15
- this.livestreams = {};
16
21
  }
17
22
  // Utility to return an index into our livestream connection pool.
18
23
  getIndex(channel, lens) {
@@ -33,6 +38,16 @@ export class LivestreamManager {
33
38
  this.subscriberCount[index] = 0;
34
39
  return this.livestreams[index] = this.protectCamera.nvr.ufpApi.createLivestream();
35
40
  }
41
+ // Shutdown all our connections.
42
+ shutdown() {
43
+ // Cleanup all the listeners and shutdown our livestreams.
44
+ Object.values(this.segmentTimers).map(timer => clearTimeout(timer));
45
+ Object.values(this.livestreams).map(livestream => livestream.removeAllListeners() && livestream.stop());
46
+ this.eventHandlers = {};
47
+ this.livestreams = {};
48
+ this.segmentTimers = {};
49
+ this.subscriberCount = {};
50
+ }
36
51
  // Access the livestream API, registering as a consumer.
37
52
  async start(channel, lens, segmentLength = PROTECT_HKSV_SEGMENT_RESOLUTION) {
38
53
  let index;
@@ -43,12 +58,47 @@ export class LivestreamManager {
43
58
  return false;
44
59
  }
45
60
  // Start the livestream if this is the first run. We set this to reattempt establishing the livestream up to three times due to occasional controller glitches.
46
- if (!this.subscriberCount[index] && !(await retry(async () => this.livestreams[index].start(this.protectCamera.ufp.id, channel, lens, segmentLength, this.protectCamera.name + ":" + index), 1000, 3))) {
61
+ if (!this.subscriberCount[index] &&
62
+ !(await this.livestreams[index].start(this.protectCamera.ufp.id, channel, lens, segmentLength, this.protectCamera.name + ":" + index))) {
47
63
  this.protectCamera.log.error("Unable to access the Protect livestream API: this is typically due to the Protect controller or camera rebooting.");
48
- await this.protectCamera.nvr.resetNvrConnection();
49
64
  // Something went wrong in communicating with the controller.
50
65
  return false;
51
66
  }
67
+ // Keep track of any issues in the livestream.
68
+ if (!this.subscriberCount[index]) {
69
+ let isRestarting = false;
70
+ // Configure a restart event for the livestream API session so we can restart the session in case of problems.
71
+ this.livestreams[index].on("restart", this.eventHandlers[index + ".restart"] = async () => {
72
+ // If we have a restart inflight, we're done.
73
+ if (isRestarting) {
74
+ return;
75
+ }
76
+ isRestarting = true;
77
+ this.protectCamera.log.warn("Reconnecting to the livestream API.");
78
+ // Clear out any existing timer.
79
+ if (this.segmentTimers[index]) {
80
+ clearTimeout(this.segmentTimers[index]);
81
+ }
82
+ this.livestreams[index].stop();
83
+ // Wait at least a full minute before we try to reconnect to the livestream. This accounts for reboots and other potential connection issues that can occur.
84
+ await sleep((((Math.random() * 10) + 60) * 1000));
85
+ await this.livestreams[index].start(this.protectCamera.ufp.id, channel, lens, segmentLength, this.protectCamera.name + ":" + index);
86
+ // Check on the state of our livestream API session regularly.
87
+ this.segmentTimers[index] = setTimeout(() => this.livestreams[index].emit("restart"), LIVESTREAM_TIMEOUT);
88
+ isRestarting = false;
89
+ });
90
+ // Set a regular heartbeat for the livestream API.
91
+ this.livestreams[index].on("segment", this.eventHandlers[index] = () => {
92
+ // Clear out any existing timer.
93
+ if (this.segmentTimers[index]) {
94
+ clearTimeout(this.segmentTimers[index]);
95
+ }
96
+ // Check on the state of our livestream API session regularly.
97
+ this.segmentTimers[index] = setTimeout(() => this.livestreams[index].emit("restart"), LIVESTREAM_TIMEOUT);
98
+ });
99
+ // Set an initial timer in case we have an issue with the livestream API at startup.
100
+ this.segmentTimers[index] = setTimeout(() => this.livestreams[index].emit("restart"), LIVESTREAM_TIMEOUT);
101
+ }
52
102
  // Increment our consumer count.
53
103
  this.subscriberCount[index]++;
54
104
  return true;
@@ -56,12 +106,18 @@ export class LivestreamManager {
56
106
  // End a livestream API connection once all the consumers of the livestream are done.
57
107
  stop(channel, lens) {
58
108
  const { index } = this.getIndex(channel, lens);
59
- // If we have open livestreams, we'll won't close the livestream.
109
+ // If we have open livestreams, we don't want to close the livestream session.
60
110
  if (--this.subscriberCount[index] > 0) {
61
111
  return;
62
112
  }
63
113
  // End our livestream API connection.
64
114
  this.livestreams[index].stop();
115
+ // Cleanup our listeners.
116
+ this.livestreams[index].off("restart", this.eventHandlers[index + ".restart"]);
117
+ this.livestreams[index].off("segment", this.eventHandlers[index]);
118
+ if (this.segmentTimers[index]) {
119
+ clearTimeout(this.segmentTimers[index]);
120
+ }
65
121
  this.subscriberCount[index] = 0;
66
122
  }
67
123
  }
@@ -1 +1 @@
1
- {"version":3,"file":"protect-livestream.js","sourceRoot":"","sources":["../src/protect-livestream.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"protect-livestream.js","sourceRoot":"","sources":["../src/protect-livestream.ts"],"names":[],"mappings":"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"}
@@ -31,16 +31,15 @@ export declare class ProtectNvr {
31
31
  login(): Promise<void>;
32
32
  private configureNvr;
33
33
  private addProtectDevice;
34
- addHomeKitDevice(device: ProtectDeviceConfigTypes): ProtectDevice | null;
34
+ addHomeKitDevice(device: ProtectDeviceConfigTypes): boolean;
35
35
  private discoverAndSyncAccessories;
36
36
  private cleanupDevices;
37
37
  removeHomeKitDevice(protectDevice: ProtectDevice): void;
38
38
  private removeHomeKitAccessories;
39
39
  private servePlaylist;
40
- resetNvrConnection(): Promise<void>;
41
40
  private get devicelist();
42
41
  private devices;
43
- deviceLookup(deviceId: string): ProtectDevices | null;
42
+ getDeviceById(deviceId: string): ProtectDevices | null;
44
43
  getFeatureFloat(option: string): number | undefined;
45
44
  getFeatureNumber(option: string): number | undefined;
46
45
  isNvrFeature(option: string, device?: ProtectDeviceConfigTypes | ProtectNvrConfig): boolean;