homebridge-unifi-protect 4.4.4 → 5.0.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.
@@ -0,0 +1,174 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ProtectNvrSystemInfo = void 0;
4
+ /* Copyright(C) 2019-2022, HJD (https://github.com/hjdhjd). All rights reserved.
5
+ *
6
+ * protect-nvr-systeminfo.ts: NVR System Information device class for UniFi Protect.
7
+ */
8
+ const settings_1 = require("./settings");
9
+ const protect_accessory_1 = require("./protect-accessory");
10
+ class ProtectNvrSystemInfo extends protect_accessory_1.ProtectBase {
11
+ // Configure our NVR sensor capability.
12
+ constructor(nvr) {
13
+ // Let the base class get us set up.
14
+ super(nvr);
15
+ // Initialize the class.
16
+ this.isConfigured = false;
17
+ this.systemInfo = null;
18
+ this.accessory = null;
19
+ this.configureAccessory();
20
+ }
21
+ // Configure the NVR system information accessory.
22
+ configureAccessory() {
23
+ var _a;
24
+ // If we don't have the bootstrap configuration, we're done here.
25
+ if (!this.nvrApi.bootstrap) {
26
+ return;
27
+ }
28
+ // We've already configured our system information, we're done.
29
+ if (this.isConfigured) {
30
+ return;
31
+ }
32
+ const uuid = this.hap.uuid.generate(this.nvrApi.bootstrap.nvr.mac + ".NVRSystemInfo");
33
+ // See if we already have this accessory defined.
34
+ if (!this.accessory) {
35
+ if ((this.accessory = this.platform.accessories.find((x) => x.UUID === uuid)) === undefined) {
36
+ this.accessory = null;
37
+ }
38
+ }
39
+ // If we've disabled NVR system information, remove the accessory if it exists.
40
+ if (!this.nvr.optionEnabled(null, "NVR.SystemInfo", false)) {
41
+ if (this.accessory) {
42
+ this.log.info("%s: Removing UniFi Protect controller system information sensors.", this.name());
43
+ // Unregister the accessory and delete it's remnants from HomeKit and the plugin.
44
+ this.api.unregisterPlatformAccessories(settings_1.PLUGIN_NAME, settings_1.PLATFORM_NAME, [this.accessory]);
45
+ this.platform.accessories.splice(this.platform.accessories.indexOf(this.accessory), 1);
46
+ }
47
+ this.accessory = null;
48
+ this.systemInfo = null;
49
+ this.isConfigured = true;
50
+ return;
51
+ }
52
+ // Create the accessory if it doesn't already exist.
53
+ if (!this.accessory) {
54
+ // We will use the NVR MAC address + ".NVRSystemInfo" to create our UUID. That should provide the guaranteed uniqueness we need.
55
+ this.accessory = new this.api.platformAccessory(this.nvrApi.bootstrap.nvr.name, uuid);
56
+ if (!this.accessory) {
57
+ this.log.error("%s: Unable to create the system information accessory.", this.name());
58
+ this.isConfigured = true;
59
+ return;
60
+ }
61
+ // Register this accessory with homebridge and add it to the platform accessory array so we can track it.
62
+ this.api.registerPlatformAccessories(settings_1.PLUGIN_NAME, settings_1.PLATFORM_NAME, [this.accessory]);
63
+ this.platform.accessories.push(this.accessory);
64
+ }
65
+ // We have the system information accessory, now let's configure it.
66
+ // Clean out the context object in case it's been polluted somehow.
67
+ this.accessory.context = {};
68
+ this.accessory.context.nvr = (_a = this.nvr.nvrApi.bootstrap) === null || _a === void 0 ? void 0 : _a.nvr.mac;
69
+ this.accessory.context.systemInfo = true;
70
+ // Verify the NVR has been bootstrapped, and finish our configuration.
71
+ if (this.nvr.nvrApi.bootstrap) {
72
+ // Initialize our system information.
73
+ this.systemInfo = this.nvr.nvrApi.bootstrap.nvr.systemInfo;
74
+ // Configure accessory information.
75
+ this.setInfo(this.accessory, this.nvr.nvrApi.bootstrap.nvr);
76
+ }
77
+ // Configure accessory services.
78
+ const enabledSensors = this.updateDevice(true);
79
+ // Inform the user what we're enabling on startup.
80
+ if (enabledSensors.length) {
81
+ this.log.info("%s: Enabled system information sensor%s: %s.", this.name(), enabledSensors.length > 1 ? "s" : "", enabledSensors.join(", "));
82
+ }
83
+ else {
84
+ this.log.info("%s: No system information sensors enabled.", this.name());
85
+ }
86
+ this.configureMqtt();
87
+ this.isConfigured = true;
88
+ }
89
+ // Update accessory services and characteristics.
90
+ updateDevice(configureHandler = false, updatedInfo) {
91
+ const enabledSensors = [];
92
+ if (updatedInfo !== undefined) {
93
+ this.systemInfo = updatedInfo;
94
+ }
95
+ // Configure the temperature sensor.
96
+ if (this.configureTemperatureSensor(configureHandler)) {
97
+ enabledSensors.push("cpu temperature");
98
+ }
99
+ // Configure MQTT services.
100
+ // this.configureMqtt();
101
+ return enabledSensors;
102
+ }
103
+ // Configure the temperature sensor for HomeKit.
104
+ configureTemperatureSensor(configureHandler) {
105
+ var _a, _b;
106
+ // Ensure we have an accessory before we do anything else.
107
+ if (!this.accessory) {
108
+ return false;
109
+ }
110
+ // Find the service, if it exists.
111
+ let temperatureService = this.accessory.getService(this.hap.Service.TemperatureSensor);
112
+ // Have we disabled the temperature sensor?
113
+ if (!((_a = this.nvr) === null || _a === void 0 ? void 0 : _a.optionEnabled(null, "NVR.SystemInfo.Temperature"))) {
114
+ if (temperatureService) {
115
+ this.accessory.removeService(temperatureService);
116
+ this.log.info("%s: Disabling CPU temperature sensor.", this.name());
117
+ }
118
+ return false;
119
+ }
120
+ // Add the service to the accessory, if needed.
121
+ if (!temperatureService) {
122
+ temperatureService = new this.hap.Service.TemperatureSensor("CPU Temperature");
123
+ if (!temperatureService) {
124
+ this.log.error("%s: Unable to add CPU temperature sensor.", this.name());
125
+ return false;
126
+ }
127
+ this.accessory.addService(temperatureService);
128
+ }
129
+ // If we're configuring for the first time, we add our respective handlers.
130
+ if (configureHandler) {
131
+ // Retrieve the current temperature when requested.
132
+ (_b = temperatureService.getCharacteristic(this.hap.Characteristic.CurrentTemperature)) === null || _b === void 0 ? void 0 : _b.onGet(() => {
133
+ return this.getCpuTemp();
134
+ });
135
+ }
136
+ // Update the sensor.
137
+ temperatureService.updateCharacteristic(this.hap.Characteristic.CurrentTemperature, this.getCpuTemp());
138
+ return true;
139
+ }
140
+ // Retrieve the CPU temperature of the Protect NVR for HomeKit.
141
+ getCpuTemp() {
142
+ var _a, _b, _c;
143
+ let cpuTemp = (_a = this.systemInfo) === null || _a === void 0 ? void 0 : _a.cpu.temperature;
144
+ // No data available from the Protect NVR, so we default to a starting point.
145
+ if (cpuTemp === undefined) {
146
+ return 0;
147
+ }
148
+ // HomeKit wants temperature values in Celsius, so we need to convert accordingly, if needed.
149
+ if (((_c = (_b = this.nvrApi.bootstrap) === null || _b === void 0 ? void 0 : _b.nvr) === null || _c === void 0 ? void 0 : _c.temperatureUnit) === "F") {
150
+ cpuTemp = (cpuTemp - 32) * (5 / 9);
151
+ }
152
+ return cpuTemp;
153
+ }
154
+ // Configure MQTT capabilities for the security system.
155
+ configureMqtt() {
156
+ var _a, _b, _c;
157
+ if (!((_a = this.nvrApi.bootstrap) === null || _a === void 0 ? void 0 : _a.nvr.mac)) {
158
+ return;
159
+ }
160
+ // Return the current status of all sensors.
161
+ (_b = this.nvr.mqtt) === null || _b === void 0 ? void 0 : _b.subscribe((_c = this.nvrApi.bootstrap) === null || _c === void 0 ? void 0 : _c.nvr.mac, "systeminfo/get", (message) => {
162
+ var _a, _b, _c;
163
+ const value = message.toString().toLowerCase();
164
+ // When we get the right message, we return the system information JSON.
165
+ if (value !== "true") {
166
+ return;
167
+ }
168
+ (_a = this.nvr.mqtt) === null || _a === void 0 ? void 0 : _a.publish((_c = (_b = this.nvrApi.bootstrap) === null || _b === void 0 ? void 0 : _b.nvr.mac) !== null && _c !== void 0 ? _c : "", "systeminfo", JSON.stringify(this.systemInfo));
169
+ this.log.info("%s: System information published via MQTT.", this.name());
170
+ });
171
+ }
172
+ }
173
+ exports.ProtectNvrSystemInfo = ProtectNvrSystemInfo;
174
+ //# sourceMappingURL=protect-nvr-systeminfo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"protect-nvr-systeminfo.js","sourceRoot":"","sources":["../src/protect-nvr-systeminfo.ts"],"names":[],"mappings":"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"}
@@ -5,14 +5,18 @@ const settings_1 = require("./settings");
5
5
  const unifi_protect_1 = require("unifi-protect");
6
6
  const protect_camera_1 = require("./protect-camera");
7
7
  const protect_doorbell_1 = require("./protect-doorbell");
8
+ const protect_light_1 = require("./protect-light");
8
9
  const protect_liveviews_1 = require("./protect-liveviews");
9
10
  const protect_mqtt_1 = require("./protect-mqtt");
10
11
  const protect_nvr_events_1 = require("./protect-nvr-events");
12
+ const protect_nvr_systeminfo_1 = require("./protect-nvr-systeminfo");
13
+ const protect_sensor_1 = require("./protect-sensor");
14
+ const protect_viewer_1 = require("./protect-viewer");
11
15
  class ProtectNvr {
12
16
  constructor(platform, nvrOptions) {
13
17
  this.api = platform.api;
14
18
  this.config = nvrOptions;
15
- this.configuredCameras = {};
19
+ this.configuredDevices = {};
16
20
  this.debug = platform.debug.bind(platform);
17
21
  this.doorbellCount = 0;
18
22
  this.isEnabled = false;
@@ -23,11 +27,11 @@ class ProtectNvr {
23
27
  this.log = platform.log;
24
28
  this.mqtt = null;
25
29
  this.name = nvrOptions.name;
26
- this.motionDuration = platform.config.motionDuration;
27
30
  this.eventTimers = {};
28
31
  this.nvrAddress = nvrOptions.address;
29
32
  this.platform = platform;
30
33
  this.refreshInterval = nvrOptions.refreshInterval;
34
+ this.systemInfo = null;
31
35
  this.unsupportedDevices = {};
32
36
  // Assign a name, if we don't have one.
33
37
  if (!this.name) {
@@ -43,76 +47,149 @@ class ProtectNvr {
43
47
  this.events = new protect_nvr_events_1.ProtectNvrEvents(this);
44
48
  // Initialize our liveviews.
45
49
  this.liveviews = new protect_liveviews_1.ProtectLiveviews(this);
50
+ // Initialize our NVR system information.
51
+ this.systemInfo = new protect_nvr_systeminfo_1.ProtectNvrSystemInfo(this);
46
52
  // Cleanup any stray ffmpeg sessions on shutdown.
47
53
  this.api.on("shutdown" /* SHUTDOWN */, () => {
48
54
  var _a;
49
- for (const protectCamera of Object.values(this.configuredCameras)) {
50
- this.debug("%s: Shutting down all video stream processes.", protectCamera.name());
51
- (_a = protectCamera.stream) === null || _a === void 0 ? void 0 : _a.shutdown();
55
+ for (const protectCamera of Object.values(this.configuredDevices)) {
56
+ if (protectCamera instanceof protect_camera_1.ProtectCamera) {
57
+ this.debug("%s: Shutting down all video stream processes.", protectCamera.name());
58
+ (_a = protectCamera.stream) === null || _a === void 0 ? void 0 : _a.shutdown();
59
+ }
52
60
  }
53
61
  });
54
62
  }
55
- // Discover new UniFi Protect devices.
56
- discoverAndSyncAccessories() {
57
- var _a, _b, _c;
63
+ // Configure a UniFi Protect device in HomeKit.
64
+ configureDevice(accessory, device) {
65
+ if (!accessory || !device) {
66
+ return false;
67
+ }
68
+ switch (device.modelKey) {
69
+ case "camera":
70
+ // We have a UniFi Protect camera or doorbell.
71
+ if (device.featureFlags.hasChime) {
72
+ this.configuredDevices[accessory.UUID] = new protect_doorbell_1.ProtectDoorbell(this, accessory);
73
+ }
74
+ else {
75
+ this.configuredDevices[accessory.UUID] = new protect_camera_1.ProtectCamera(this, accessory);
76
+ }
77
+ return true;
78
+ break;
79
+ case "light":
80
+ // We have a UniFi Protect light.
81
+ this.configuredDevices[accessory.UUID] = new protect_light_1.ProtectLight(this, accessory);
82
+ return true;
83
+ break;
84
+ case "sensor":
85
+ // We have a UniFi Protect sensor.
86
+ this.configuredDevices[accessory.UUID] = new protect_sensor_1.ProtectSensor(this, accessory);
87
+ return true;
88
+ break;
89
+ case "viewer":
90
+ // We have a UniFi Protect viewer.
91
+ this.configuredDevices[accessory.UUID] = new protect_viewer_1.ProtectViewer(this, accessory);
92
+ return true;
93
+ break;
94
+ default:
95
+ this.log.error("%s: Unknown device class `%s` detected for ``%s``", this.nvrApi.getNvrName(), device.modelKey, device.name);
96
+ return false;
97
+ }
98
+ }
99
+ // Discover UniFi Protect devices that may have been added to the NVR since we last checked.
100
+ discoverDevices(devices) {
101
+ var _a;
58
102
  // Iterate through the list of cameras that Protect has returned and sync them with what we show HomeKit.
59
- for (const camera of (_a = this.nvrApi.Cameras) !== null && _a !== void 0 ? _a : []) {
103
+ for (const device of devices !== null && devices !== void 0 ? devices : []) {
60
104
  // If we have no MAC address, name, or this camera isn't being managed by Protect, we skip.
61
- if (!camera.mac || !camera.name || camera.isAdopting || !camera.isAdopted || !camera.isManaged) {
105
+ if (!device.mac || !device.name || device.isAdopting || !device.isAdopted) {
62
106
  continue;
63
107
  }
64
- // We are only interested in cameras. Perhaps more types in the future.
65
- if (camera.modelKey !== "camera") {
66
- // If we've already informed the user about this one, we're done.
67
- if (this.unsupportedDevices[camera.mac]) {
108
+ // We only support certain devices.
109
+ switch (device.modelKey) {
110
+ case "camera":
111
+ case "light":
112
+ case "sensor":
113
+ case "viewer":
114
+ break;
115
+ default:
116
+ // If we've already informed the user about this one, we're done.
117
+ if (this.unsupportedDevices[device.mac]) {
118
+ continue;
119
+ }
120
+ // Notify the user we see this device, but we aren't adding it to HomeKit.
121
+ this.unsupportedDevices[device.mac] = true;
122
+ this.log.info("%s: UniFi Protect device type '%s' is not currently supported, ignoring: %s.", this.nvrApi.getNvrName(), device.modelKey, this.nvrApi.getDeviceName(device));
68
123
  continue;
69
- }
70
- // Notify the user we see this camera, but we aren't adding it to HomeKit.
71
- this.unsupportedDevices[camera.mac] = true;
72
- this.log.info("%s: UniFi Protect camera type '%s' is not currently supported, ignoring: %s.", this.nvrApi.getNvrName(), camera.modelKey, this.nvrApi.getDeviceName(camera));
73
- continue;
74
124
  }
75
125
  // Exclude or include certain devices based on configuration parameters.
76
- if (!this.optionEnabled(camera)) {
126
+ if (!this.optionEnabled(device)) {
77
127
  continue;
78
128
  }
79
- // Generate this camera's unique identifier.
80
- const uuid = this.hap.uuid.generate(camera.mac);
129
+ // Generate this device's unique identifier.
130
+ const uuid = this.hap.uuid.generate(device.mac);
81
131
  let accessory;
82
132
  // See if we already know about this accessory or if it's truly new. If it is new, add it to HomeKit.
83
133
  if ((accessory = this.platform.accessories.find(x => x.UUID === uuid)) === undefined) {
84
- accessory = new this.api.platformAccessory(camera.name, uuid);
85
- this.log.info("%s: Adding %s to HomeKit.", this.nvrApi.getFullName(camera), camera.modelKey);
134
+ accessory = new this.api.platformAccessory(device.name, uuid);
135
+ this.log.info("%s: Adding %s to HomeKit.", this.nvrApi.getFullName(device), device.modelKey);
86
136
  // Register this accessory with homebridge and add it to the accessory array so we can track it.
87
137
  this.api.registerPlatformAccessories(settings_1.PLUGIN_NAME, settings_1.PLATFORM_NAME, [accessory]);
88
138
  this.platform.accessories.push(accessory);
89
139
  }
90
- // Link the accessory to it's camera object and it's hosting NVR.
91
- accessory.context.camera = camera;
92
- accessory.context.nvr = (_b = this.nvrApi.bootstrap) === null || _b === void 0 ? void 0 : _b.nvr.mac;
93
- // Setup the Protect camera if it hasn't been configured yet.
94
- if (!this.configuredCameras[accessory.UUID]) {
95
- // Eventually switch on multiple types of UniFi Protect devices. For now, it's cameras only...
96
- if (camera.featureFlags.hasChime) {
97
- this.configuredCameras[accessory.UUID] = new protect_doorbell_1.ProtectDoorbell(this, accessory);
98
- }
99
- else {
100
- this.configuredCameras[accessory.UUID] = new protect_camera_1.ProtectCamera(this, accessory);
101
- }
140
+ // Link the accessory to it's device object and it's hosting NVR.
141
+ accessory.context.device = device;
142
+ accessory.context.nvr = (_a = this.nvrApi.bootstrap) === null || _a === void 0 ? void 0 : _a.nvr.mac;
143
+ // Setup the Protect device if it hasn't been configured yet.
144
+ if (!this.configuredDevices[accessory.UUID]) {
145
+ this.configureDevice(accessory, device);
102
146
  }
103
147
  else {
104
- // Finally, check if we have changes to the exposed RTSP streams on our cameras.
105
- void this.configuredCameras[accessory.UUID].configureVideoStream();
106
- // Check for changes to the doorbell LCD as well.
107
- if (camera.featureFlags.hasLcdScreen) {
108
- void this.configuredCameras[accessory.UUID].configureDoorbellLcdSwitch();
148
+ // Device-specific periodic reconfiguration. We need to do this to reflect state changes in
149
+ // the Protect NVR (e.g. device settings changes) that we want to catch. Many of the realtime
150
+ // changes are sent through the realtime update API, but a few things aren't, so we deal with that
151
+ // here.
152
+ switch (device.modelKey) {
153
+ case "camera":
154
+ // Check if we have changes to the exposed RTSP streams on our cameras.
155
+ void this.configuredDevices[accessory.UUID].configureVideoStream();
156
+ // Check for changes to the doorbell LCD as well.
157
+ if (device.featureFlags.hasLcdScreen) {
158
+ void this.configuredDevices[accessory.UUID].configureDoorbellLcdSwitch();
159
+ }
160
+ break;
161
+ case "viewer":
162
+ // Sync the viewer state with HomeKit.
163
+ void this.configuredDevices[accessory.UUID].updateDevice();
164
+ break;
165
+ default:
166
+ break;
109
167
  }
110
168
  }
111
169
  }
112
- // Remove Protect cameras that are no longer found on this Protect NVR, but we still have in HomeKit.
170
+ return true;
171
+ }
172
+ // Discover and sync UniFi Protect devices between HomeKit and the Protect NVR.
173
+ discoverAndSyncAccessories() {
174
+ var _a, _b;
175
+ if (this.nvrApi.cameras && !this.discoverDevices(this.nvrApi.cameras)) {
176
+ this.log.error("%s: Error discovering camera devices.", this.nvrApi.getNvrName());
177
+ }
178
+ if (this.nvrApi.lights && !this.discoverDevices(this.nvrApi.lights)) {
179
+ this.log.error("%s: Error discovering light devices.", this.nvrApi.getNvrName());
180
+ }
181
+ if (this.nvrApi.sensors && !this.discoverDevices(this.nvrApi.sensors)) {
182
+ this.log.error("%s: Error discovering sensor devices.", this.nvrApi.getNvrName());
183
+ }
184
+ if (this.nvrApi.viewers && !this.discoverDevices(this.nvrApi.viewers)) {
185
+ this.log.error("%s: Error discovering viewer devices.", this.nvrApi.getNvrName());
186
+ }
187
+ // Remove Protect devices that are no longer found on this Protect NVR, but we still have in HomeKit.
113
188
  this.cleanupDevices();
114
189
  // Configure our liveview-based accessories.
115
- (_c = this.liveviews) === null || _c === void 0 ? void 0 : _c.configureLiveviews();
190
+ (_a = this.liveviews) === null || _a === void 0 ? void 0 : _a.configureLiveviews();
191
+ // Configure our NVR system information-related accessories.
192
+ (_b = this.systemInfo) === null || _b === void 0 ? void 0 : _b.configureAccessory();
116
193
  return true;
117
194
  }
118
195
  // Update HomeKit with the latest status from Protect.
@@ -159,7 +236,7 @@ class ProtectNvr {
159
236
  if (!this.mqtt && this.config.mqttUrl) {
160
237
  this.mqtt = new protect_mqtt_1.ProtectMqtt(this);
161
238
  }
162
- // Poll for events (in non-UniFi OS controllers) and check for any updates to the events API connection.
239
+ // Check for any updates to the events API connection.
163
240
  this.events.update();
164
241
  // Sync status and check for any new or removed accessories.
165
242
  this.discoverAndSyncAccessories();
@@ -186,51 +263,80 @@ class ProtectNvr {
186
263
  }
187
264
  // Cleanup removed Protect devices from HomeKit.
188
265
  cleanupDevices() {
189
- var _a, _b;
266
+ var _a, _b, _c, _d, _e;
190
267
  const nvr = (_a = this.nvrApi.bootstrap) === null || _a === void 0 ? void 0 : _a.nvr;
191
268
  // If we don't have a valid bootstrap configuration, we're done here.
192
269
  if (!nvr) {
193
270
  return;
194
271
  }
195
272
  for (const oldAccessory of this.platform.accessories) {
196
- const oldCamera = oldAccessory.context.camera;
273
+ const oldDevice = oldAccessory.context.device;
197
274
  const oldNvr = oldAccessory.context.nvr;
198
275
  // Since we're accessing the shared accessories list for the entire platform, we need to ensure we
199
276
  // are only touching our cameras and not another NVR's.
200
277
  if (oldNvr !== nvr.mac) {
201
278
  continue;
202
279
  }
280
+ // The NVR system information accessory is handled elsewhere.
281
+ if (("systemInfo" in oldAccessory.context)) {
282
+ continue;
283
+ }
203
284
  // Liveview-centric accessories are handled elsewhere.
204
285
  if (("liveview" in oldAccessory.context) || oldAccessory.getService(this.hap.Service.SecuritySystem)) {
205
286
  continue;
206
287
  }
207
288
  // We found this accessory and it's for this NVR. Figure out if we really want to see it in HomeKit.
208
- // Keep it if it still exists on the NVR and the user has not chosen to hide it.
209
- if (oldCamera &&
210
- ((_b = this.nvrApi.Cameras) === null || _b === void 0 ? void 0 : _b.some((x) => x.mac === oldCamera.mac)) &&
211
- this.optionEnabled(oldCamera)) {
212
- continue;
289
+ if (oldDevice) {
290
+ // Check to see if the device still exists on the NVR and the user has not chosen to hide it.
291
+ switch (oldDevice.modelKey) {
292
+ case "camera":
293
+ if (((_b = this.nvrApi.cameras) === null || _b === void 0 ? void 0 : _b.some((x) => x.mac === oldDevice.mac)) &&
294
+ this.optionEnabled(oldDevice)) {
295
+ continue;
296
+ }
297
+ break;
298
+ case "light":
299
+ if (((_c = this.nvrApi.lights) === null || _c === void 0 ? void 0 : _c.some((x) => x.mac === oldDevice.mac)) &&
300
+ this.optionEnabled(oldDevice)) {
301
+ continue;
302
+ }
303
+ break;
304
+ case "sensor":
305
+ if (((_d = this.nvrApi.sensors) === null || _d === void 0 ? void 0 : _d.some((x) => x.mac === oldDevice.mac)) &&
306
+ this.optionEnabled(oldDevice)) {
307
+ continue;
308
+ }
309
+ break;
310
+ case "viewer":
311
+ if (((_e = this.nvrApi.viewers) === null || _e === void 0 ? void 0 : _e.some((x) => x.mac === oldDevice.mac)) &&
312
+ this.optionEnabled(oldDevice)) {
313
+ continue;
314
+ }
315
+ break;
316
+ default:
317
+ break;
318
+ }
213
319
  }
214
320
  // Decrement our doorbell count.
215
321
  if (oldAccessory.getService(this.hap.Service.Doorbell)) {
216
322
  this.doorbellCount--;
217
323
  }
218
324
  // Remove this device.
219
- this.log.info("%s %s: Removing %s from HomeKit.", this.nvrApi.getNvrName(), oldCamera ? this.nvrApi.getDeviceName(oldCamera) : oldAccessory.displayName, oldCamera ? oldCamera.modelKey : "device");
325
+ this.log.info("%s %s: Removing %s from HomeKit.", this.nvrApi.getNvrName(), oldDevice ? this.nvrApi.getDeviceName(oldDevice) : oldAccessory.displayName, oldDevice ? oldDevice.modelKey : "device");
220
326
  // Unregister the accessory and delete it's remnants from HomeKit and the plugin.
221
327
  this.api.unregisterPlatformAccessories(settings_1.PLUGIN_NAME, settings_1.PLATFORM_NAME, [oldAccessory]);
222
- delete this.configuredCameras[oldAccessory.UUID];
328
+ delete this.configuredDevices[oldAccessory.UUID];
223
329
  this.platform.accessories.splice(this.platform.accessories.indexOf(oldAccessory), 1);
224
330
  }
225
331
  }
226
- // Lookup a camera by it's identifier and return the associated accessory, if any.
227
- accessoryLookup(cameraId) {
228
- if (!cameraId) {
332
+ // Lookup a device by it's identifier and return the associated accessory, if any.
333
+ accessoryLookup(deviceId) {
334
+ if (!deviceId) {
229
335
  return undefined;
230
336
  }
231
- // Find the camera in our list of accessories.
232
- const foundCamera = Object.keys(this.configuredCameras).find(x => this.configuredCameras[x].accessory.context.camera.id === cameraId);
233
- return foundCamera ? this.configuredCameras[foundCamera].accessory : undefined;
337
+ // Find the device in our list of accessories.
338
+ const foundDevice = Object.keys(this.configuredDevices).find(x => this.configuredDevices[x].accessory.context.device.id === deviceId);
339
+ return foundDevice ? this.configuredDevices[foundDevice].accessory : undefined;
234
340
  }
235
341
  // Utility function to let us know if a device or feature should be enabled or not.
236
342
  optionEnabled(device, option = "", defaultReturnValue = true, address = "", addressOnly = false) {
@@ -1 +1 @@
1
- {"version":3,"file":"protect-nvr.js","sourceRoot":"","sources":["../src/protect-nvr.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"protect-nvr.js","sourceRoot":"","sources":["../src/protect-nvr.ts"],"names":[],"mappings":"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"}
@@ -9,7 +9,7 @@ const protect_nvr_1 = require("./protect-nvr");
9
9
  const util_1 = __importDefault(require("util"));
10
10
  class ProtectPlatform {
11
11
  constructor(log, config, api) {
12
- var _a, _b;
12
+ var _a, _b, _c;
13
13
  this.accessories = [];
14
14
  this.api = api;
15
15
  this.configOptions = [];
@@ -27,6 +27,7 @@ class ProtectPlatform {
27
27
  ffmpegOptions: (_a = config.ffmpegOptions) !== null && _a !== void 0 ? _a : settings_1.PROTECT_FFMPEG_OPTIONS,
28
28
  motionDuration: (_b = config.motionDuration) !== null && _b !== void 0 ? _b : settings_1.PROTECT_MOTION_DURATION,
29
29
  options: config.options,
30
+ ringDuration: (_c = config.ringDuration) !== null && _c !== void 0 ? _c : settings_1.PROTECT_RING_DURATION,
30
31
  verboseFfmpeg: config.verboseFfmpeg === true,
31
32
  videoProcessor: config.videoProcessor
32
33
  };
@@ -52,6 +53,10 @@ class ProtectPlatform {
52
53
  if (this.config.motionDuration < 2) {
53
54
  this.config.motionDuration = 2;
54
55
  }
56
+ // Ring trigger duration. Make sure it's never less than 4 seconds so we can ensure automations work.
57
+ if (this.config.motionDuration < 4) {
58
+ this.config.motionDuration = 4;
59
+ }
55
60
  // Loop through each configured NVR and instantiate it.
56
61
  for (const controllerConfig of this.config.controllers) {
57
62
  // We need an address, or there's nothing to do.
@@ -82,10 +87,10 @@ class ProtectPlatform {
82
87
  // intentionally avoid doing anything significant here, and save all that logic
83
88
  // for device discovery.
84
89
  configureAccessory(accessory) {
85
- // Delete the UniFi Protect camera pointer on startup. This will be set by device discovery.
90
+ // Delete the UniFi Protect device pointer on startup. This will be set by device discovery.
86
91
  // Notably, we do NOT clear out the NVR pointer, because we need to maintain the mapping between
87
92
  // camera and NVR.
88
- delete accessory.context.camera;
93
+ delete accessory.context.device;
89
94
  // Add this to the accessory array so we can track it.
90
95
  this.accessories.push(accessory);
91
96
  }