homebridge-unifi-protect 4.4.3 → 5.0.2

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 (45) hide show
  1. package/LICENSE.md +1 -1
  2. package/README.md +8 -12
  3. package/config.schema.json +30 -9
  4. package/dist/index.js +1 -1
  5. package/dist/protect-accessory.js +145 -2
  6. package/dist/protect-accessory.js.map +1 -1
  7. package/dist/protect-camera.js +56 -162
  8. package/dist/protect-camera.js.map +1 -1
  9. package/dist/protect-doorbell.js +14 -14
  10. package/dist/protect-doorbell.js.map +1 -1
  11. package/dist/protect-ffmpeg.js +22 -3
  12. package/dist/protect-ffmpeg.js.map +1 -1
  13. package/dist/protect-light.js +111 -0
  14. package/dist/protect-light.js.map +1 -0
  15. package/dist/protect-liveviews.js +2 -2
  16. package/dist/protect-liveviews.js.map +1 -1
  17. package/dist/protect-mqtt.js +47 -19
  18. package/dist/protect-mqtt.js.map +1 -1
  19. package/dist/protect-nvr-events.js +205 -61
  20. package/dist/protect-nvr-events.js.map +1 -1
  21. package/dist/protect-nvr-systeminfo.js +174 -0
  22. package/dist/protect-nvr-systeminfo.js.map +1 -0
  23. package/dist/protect-nvr.js +167 -61
  24. package/dist/protect-nvr.js.map +1 -1
  25. package/dist/protect-options.js +7 -0
  26. package/dist/protect-options.js.map +1 -0
  27. package/dist/protect-platform.js +9 -3
  28. package/dist/protect-platform.js.map +1 -1
  29. package/dist/protect-securitysystem.js +3 -4
  30. package/dist/protect-securitysystem.js.map +1 -1
  31. package/dist/protect-sensor.js +357 -0
  32. package/dist/protect-sensor.js.map +1 -0
  33. package/dist/protect-stream.js +72 -19
  34. package/dist/protect-stream.js.map +1 -1
  35. package/dist/protect-viewer.js +170 -0
  36. package/dist/protect-viewer.js.map +1 -0
  37. package/dist/settings.js +6 -2
  38. package/dist/settings.js.map +1 -1
  39. package/package.json +14 -16
  40. package/dist/protect-api-updates.js +0 -166
  41. package/dist/protect-api-updates.js.map +0 -1
  42. package/dist/protect-api.js +0 -555
  43. package/dist/protect-api.js.map +0 -1
  44. package/dist/protect-types.js +0 -3
  45. package/dist/protect-types.js.map +0 -1
@@ -1,12 +1,13 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ProtectNvrEvents = void 0;
4
- const protect_camera_1 = require("./protect-camera");
5
- const protect_api_updates_1 = require("./protect-api-updates");
4
+ const protect_accessory_1 = require("./protect-accessory");
5
+ const unifi_protect_1 = require("unifi-protect");
6
6
  class ProtectNvrEvents {
7
7
  constructor(nvr) {
8
8
  this.api = nvr.platform.api;
9
9
  this.debug = nvr.platform.debug.bind(nvr.platform);
10
+ this.eventTimers = {};
10
11
  this.hap = nvr.platform.api.hap;
11
12
  this.lastMotion = {};
12
13
  this.lastRing = {};
@@ -14,8 +15,8 @@ class ProtectNvrEvents {
14
15
  this.nvr = nvr;
15
16
  this.nvrApi = nvr.nvrApi;
16
17
  this.motionDuration = nvr.platform.config.motionDuration;
17
- this.eventTimers = {};
18
18
  this.platform = nvr.platform;
19
+ this.ringDuration = nvr.platform.config.ringDuration;
19
20
  this.unsupportedDevices = {};
20
21
  }
21
22
  // Check for event updates.
@@ -59,16 +60,16 @@ class ProtectNvrEvents {
59
60
  if (!controller) {
60
61
  return;
61
62
  }
62
- // Find the camera in our list of accessories so we can fire off the motion event.
63
- const foundCamera = Object.keys(this.nvr.configuredCameras).find(x => this.nvr.configuredCameras[x].accessory.context.camera.host === controller.info.lastMotionCameraAddress);
64
- // Nothing here - we may have disabled this camera or it's associated NVR.
65
- if (!foundCamera) {
63
+ // Find the device in our list of accessories so we can fire off the motion event.
64
+ const foundDevice = Object.keys(this.nvr.configuredDevices).find(x => this.nvr.configuredDevices[x].accessory.context.device.host === controller.info.lastMotionCameraAddress);
65
+ // Nothing here - we may have disabled this device or it's associated NVR.
66
+ if (!foundDevice) {
66
67
  return;
67
68
  }
68
69
  // Now grab the accessory associated with the Protect device.
69
- const accessory = this.nvr.configuredCameras[foundCamera].accessory;
70
+ const accessory = this.nvr.configuredDevices[foundDevice].accessory;
70
71
  // If we don't have an accessory, it's probably because we've chosen to hide it. In that case,
71
- // just ignore and move on. Alternatively, it could be a new camera that we just don't know about yet,
72
+ // just ignore and move on. Alternatively, it could be a new device that we just don't know about yet,
72
73
  // In either case, we keep ignore it.
73
74
  if (!accessory) {
74
75
  return;
@@ -88,7 +89,8 @@ class ProtectNvrEvents {
88
89
  }
89
90
  // Listen for any messages coming in from our listener.
90
91
  this.nvrApi.eventListener.on("message", (event) => {
91
- const updatePacket = protect_api_updates_1.ProtectApiUpdates.decodeUpdatePacket(this.log, event);
92
+ var _a, _b;
93
+ const updatePacket = unifi_protect_1.ProtectApiUpdates.decodeUpdatePacket(this.log, event);
92
94
  if (!updatePacket) {
93
95
  this.log.error("%s: Unable to process message from the realtime update events API.", this.nvrApi.getNvrName());
94
96
  return;
@@ -117,27 +119,27 @@ class ProtectNvrEvents {
117
119
  if (!payload.isMotionDetected && !payload.lastRing && !payload.lcdMessage) {
118
120
  return;
119
121
  }
120
- // Lookup the accessory associated with this camera.
122
+ // Lookup the accessory associated with this device.
121
123
  const accessory = this.nvr.accessoryLookup(updatePacket.action.id);
122
- // We don't know about this camera - we're done.
124
+ // We don't know about this device - we're done.
123
125
  if (!accessory) {
124
126
  return;
125
127
  }
126
- // Grab the camera context.
127
- const camera = accessory.context.camera;
128
+ // Grab the device context.
129
+ const device = accessory.context.device;
128
130
  // Lookup the ProtectCamera instance associated with this accessory.
129
- const protectCamera = this.nvr.configuredCameras[accessory.UUID];
131
+ const protectCamera = this.nvr.configuredDevices[accessory.UUID];
130
132
  if (!protectCamera) {
131
133
  return;
132
134
  }
133
135
  // It's a motion event - process it accordingly, but only if we're not configured for smart motion events - we handle those elsewhere.
134
136
  if (payload.isMotionDetected) {
135
- if (!protectCamera.smartDetectTypes.length && payload.lastMotion && this.nvr.optionEnabled(camera, "Motion.NvrEvents", true)) {
137
+ if (!protectCamera.smartDetectTypes.length && payload.lastMotion && this.nvr.optionEnabled(device, "Motion.NvrEvents", true)) {
136
138
  this.motionEventHandler(accessory, payload.lastMotion);
137
139
  }
138
140
  }
139
141
  // It's a ring event - process it accordingly.
140
- if (payload.lastRing && this.nvr.optionEnabled(camera, "Doorbell.NvrEvents", true)) {
142
+ if (payload.lastRing && this.nvr.optionEnabled(device, "Doorbell.NvrEvents", true)) {
141
143
  this.doorbellEventHandler(accessory, payload.lastRing);
142
144
  }
143
145
  // It's a doorbell LCD message event - process it accordingly.
@@ -165,20 +167,125 @@ class ProtectNvrEvents {
165
167
  if (!accessory) {
166
168
  return;
167
169
  }
168
- // Grab the camera context.
169
- const camera = accessory.context.camera;
170
+ // Grab the device context.
171
+ const device = accessory.context.device;
170
172
  // Lookup the ProtectCamera instance associated with this accessory.
171
- const protectCamera = this.nvr.configuredCameras[accessory.UUID];
173
+ const protectCamera = this.nvr.configuredDevices[accessory.UUID];
172
174
  if (!protectCamera) {
173
175
  return;
174
176
  }
175
177
  // Process the motion event.
176
- if (this.nvr.optionEnabled(camera, "Motion.SmartDetect.NvrEvents", true)) {
178
+ if (this.nvr.optionEnabled(device, "Motion.SmartDetect.NvrEvents", true)) {
177
179
  this.motionEventHandler(accessory, payload.start, payload.smartDetectTypes);
178
180
  }
179
181
  return;
180
182
  break;
181
183
  }
184
+ case "light": {
185
+ // We listen for the following light update actions:
186
+ // light on / off
187
+ // brightness adjustments
188
+ // We're only interested in update actions.
189
+ if (updatePacket.action.action !== "update") {
190
+ return;
191
+ }
192
+ // Grab the right payload type, camera update payloads.
193
+ const payload = updatePacket.payload;
194
+ // Now filter out payloads we aren't interested in. We only want light state, brightness, and motion detection.
195
+ if (!payload.isPirMotionDetected && !payload.isLightOn && !payload.lightDeviceSettings) {
196
+ return;
197
+ }
198
+ // Lookup the accessory associated with this device.
199
+ const accessory = this.nvr.accessoryLookup(updatePacket.action.id);
200
+ // We don't know about this device - we're done.
201
+ if (!accessory) {
202
+ return;
203
+ }
204
+ // Grab the device context.
205
+ const device = accessory.context.device;
206
+ // Lookup the ProtectCamera instance associated with this accessory.
207
+ const protectLight = this.nvr.configuredDevices[accessory.UUID];
208
+ if (!protectLight) {
209
+ return;
210
+ }
211
+ // It's a motion event - process it accordingly.
212
+ if (payload.isPirMotionDetected && payload.lastMotion && this.nvr.optionEnabled(device, "Motion.NvrEvents", true)) {
213
+ this.motionEventHandler(accessory, payload.lastMotion);
214
+ }
215
+ // It's a light power event - process it accordingly.
216
+ if (payload.isLightOn) {
217
+ this.lightPowerHandler(accessory, payload.isLightOn);
218
+ }
219
+ // It's light brightness event - process it accordingly.
220
+ if ((_a = payload.lightDeviceSettings) === null || _a === void 0 ? void 0 : _a.ledLevel) {
221
+ this.lightBrightnessHandler(accessory, payload.lightDeviceSettings.ledLevel);
222
+ }
223
+ break;
224
+ }
225
+ case "nvr": {
226
+ // We listen for the following sensor update actions:
227
+ // motion events
228
+ // sensor enablement / configuration changes
229
+ // sensor updates (humidity, light, temperature)
230
+ // We're only interested in update actions.
231
+ if (updatePacket.action.action !== "update") {
232
+ return;
233
+ }
234
+ // Grab the right payload type.
235
+ const payload = updatePacket.payload;
236
+ // Now filter out payloads we aren't interested in. We only want NVR system information updates.
237
+ if (!("systemInfo" in payload)) {
238
+ return;
239
+ }
240
+ // Process it.
241
+ (_b = this.nvr.systemInfo) === null || _b === void 0 ? void 0 : _b.updateDevice(false, payload.systemInfo);
242
+ break;
243
+ }
244
+ case "sensor": {
245
+ // We listen for the following sensor update actions:
246
+ // motion events
247
+ // sensor enablement / configuration changes
248
+ // sensor updates (humidity, light, temperature)
249
+ // We're only interested in update actions.
250
+ if (updatePacket.action.action !== "update") {
251
+ return;
252
+ }
253
+ // Grab the right payload type.
254
+ const payload = updatePacket.payload;
255
+ // Now filter out payloads we aren't interested in. We only want motion events, stats updates, and changes in sensor configuration.
256
+ if (!("isMotionDetected" in payload) && !("isOpened" in payload) && !("stats" in payload) &&
257
+ !("mountType" in payload) && !("alarmSettings" in payload) && !("humiditySettings" in payload) &&
258
+ !("lightSettings" in payload) && !("motionSettings" in payload) && !("temperatureSettings" in payload) &&
259
+ !("batteryStatus" in payload) && !("tamperingDetectedAt" in payload) && !("alarmTriggeredAt" in payload) &&
260
+ !("state" in payload)) {
261
+ return;
262
+ }
263
+ // Lookup the accessory associated with this device.
264
+ const accessory = this.nvr.accessoryLookup(updatePacket.action.id);
265
+ // We don't know about this device - we're done.
266
+ if (!accessory) {
267
+ return;
268
+ }
269
+ // Grab the device context.
270
+ const device = accessory.context.device;
271
+ // Lookup the ProtectSensor instance associated with this accessory.
272
+ const protectSensor = this.nvr.configuredDevices[accessory.UUID];
273
+ if (!protectSensor) {
274
+ return;
275
+ }
276
+ // It's a motion event - process it accordingly.
277
+ if (payload.isMotionDetected && payload.motionDetectedAt && this.nvr.optionEnabled(device, "Motion.NvrEvents", true)) {
278
+ this.motionEventHandler(accessory, payload.motionDetectedAt);
279
+ }
280
+ // Update the device JSON on the accessory.
281
+ accessory.context.device = {
282
+ ...device,
283
+ ...payload
284
+ };
285
+ // Process it.
286
+ this.sensorHandler(accessory, protectSensor);
287
+ break;
288
+ }
182
289
  default:
183
290
  // It's not a modelKey we're interested in. We're done.
184
291
  return;
@@ -191,25 +298,25 @@ class ProtectNvrEvents {
191
298
  }
192
299
  // Motion event processing from UniFi Protect.
193
300
  motionEventHandler(accessory, lastMotion, detectedObjects = []) {
194
- const camera = accessory.context.camera;
195
- if (!accessory || !camera || !lastMotion) {
301
+ const device = accessory.context.device;
302
+ if (!device || !lastMotion) {
196
303
  return;
197
304
  }
198
305
  // Have we seen this event before? If so...move along.
199
- if (this.lastMotion[camera.mac] >= lastMotion) {
200
- this.debug("%s: Skipping duplicate motion event.", this.nvrApi.getFullName(camera));
306
+ if (this.lastMotion[device.mac] >= lastMotion) {
307
+ this.debug("%s: Skipping duplicate motion event.", this.nvrApi.getFullName(device));
201
308
  return;
202
309
  }
203
310
  // We only consider events that have happened within the last two refresh intervals. Otherwise, we assume
204
311
  // it's stale data and don't inform the user.
205
312
  if ((Date.now() - lastMotion) > (this.nvr.refreshInterval * 2 * 1000)) {
206
- this.debug("%s: Skipping motion event due to stale data.", this.nvrApi.getFullName(camera));
313
+ this.debug("%s: Skipping motion event due to stale data.", this.nvrApi.getFullName(device));
207
314
  return;
208
315
  }
209
316
  // Remember this event.
210
- this.lastMotion[camera.mac] = lastMotion;
317
+ this.lastMotion[device.mac] = lastMotion;
211
318
  // If we already have a motion event inflight, allow it to complete so we don't spam users.
212
- if (this.eventTimers[camera.mac]) {
319
+ if (this.eventTimers[device.mac]) {
213
320
  return;
214
321
  }
215
322
  // Only notify the user if we have a motion sensor and it's active.
@@ -221,9 +328,9 @@ class ProtectNvrEvents {
221
328
  // Motion event delivery to HomeKit.
222
329
  motionEventDelivery(accessory, motionService, detectedObjects = []) {
223
330
  var _a, _b;
224
- const camera = accessory.context.camera;
331
+ const device = accessory.context.device;
225
332
  // Lookup the ProtectCamera instance associated with this accessory.
226
- const protectCamera = this.nvr.configuredCameras[accessory.UUID];
333
+ const protectCamera = this.nvr.configuredDevices[accessory.UUID];
227
334
  if (!protectCamera) {
228
335
  return;
229
336
  }
@@ -236,20 +343,20 @@ class ProtectNvrEvents {
236
343
  // Trigger the motion event in HomeKit.
237
344
  motionService.updateCharacteristic(this.hap.Characteristic.MotionDetected, true);
238
345
  // Check to see if we have a motion trigger switch configured. If we do, update it.
239
- const triggerService = accessory.getServiceById(this.hap.Service.Switch, protect_camera_1.PROTECT_SWITCH_MOTION_TRIGGER);
346
+ const triggerService = accessory.getServiceById(this.hap.Service.Switch, protect_accessory_1.PROTECT_SWITCH_MOTION_TRIGGER);
240
347
  if (triggerService) {
241
348
  triggerService.updateCharacteristic(this.hap.Characteristic.On, true);
242
349
  }
243
350
  // Publish the motion event to MQTT, if the user has configured it.
244
351
  (_a = this.nvr.mqtt) === null || _a === void 0 ? void 0 : _a.publish(accessory, "motion", "true");
245
352
  // Log the event, if configured to do so.
246
- if (this.nvr.optionEnabled(camera, "Log.Motion", false)) {
247
- this.log.info("%s: Motion detected%s.", this.nvrApi.getFullName(camera), detectedObjects.length ? ": " + detectedObjects.join(", ") : "");
353
+ if (this.nvr.optionEnabled(device, "Log.Motion", false)) {
354
+ this.log.info("%s: Motion detected%s.", this.nvrApi.getFullName(device), detectedObjects.length ? ": " + detectedObjects.join(", ") : "");
248
355
  }
249
356
  }
250
357
  // Trigger smart motion contact sensors, if configured.
251
358
  for (const detectedObject of detectedObjects) {
252
- const contactService = accessory.getServiceById(this.hap.Service.ContactSensor, protect_camera_1.PROTECT_CONTACT_MOTION_SMARTDETECT + "." + detectedObject);
359
+ const contactService = accessory.getServiceById(this.hap.Service.ContactSensor, protect_accessory_1.PROTECT_CONTACT_MOTION_SMARTDETECT + "." + detectedObject);
253
360
  if (contactService) {
254
361
  contactService.updateCharacteristic(this.hap.Characteristic.ContactSensorState, true);
255
362
  }
@@ -257,7 +364,7 @@ class ProtectNvrEvents {
257
364
  (_b = this.nvr.mqtt) === null || _b === void 0 ? void 0 : _b.publish(accessory, "motion/smart/" + detectedObject, "true");
258
365
  }
259
366
  // Reset our motion event after motionDuration.
260
- this.eventTimers[camera.mac] = setTimeout(() => {
367
+ this.eventTimers[device.mac] = setTimeout(() => {
261
368
  var _a, _b;
262
369
  // Reset the motion sensor, if it's been triggered.
263
370
  if (!detectedObjects.length || (detectedObjects.length && detectedObjects.filter(x => protectCamera.smartDetectTypes.includes(x)).length)) {
@@ -265,49 +372,49 @@ class ProtectNvrEvents {
265
372
  if (thisMotionService) {
266
373
  thisMotionService.updateCharacteristic(this.hap.Characteristic.MotionDetected, false);
267
374
  // Check to see if we have a motion trigger switch configured. If we do, update it.
268
- const thisTriggerService = accessory.getServiceById(this.hap.Service.Switch, protect_camera_1.PROTECT_SWITCH_MOTION_TRIGGER);
375
+ const thisTriggerService = accessory.getServiceById(this.hap.Service.Switch, protect_accessory_1.PROTECT_SWITCH_MOTION_TRIGGER);
269
376
  if (thisTriggerService) {
270
377
  thisTriggerService.updateCharacteristic(this.hap.Characteristic.On, false);
271
378
  }
272
- this.debug("%s: Resetting motion event.", this.nvrApi.getFullName(camera));
379
+ this.debug("%s: Resetting motion event.", this.nvrApi.getFullName(device));
273
380
  }
274
381
  // Publish to MQTT, if the user has configured it.
275
382
  (_a = this.nvr.mqtt) === null || _a === void 0 ? void 0 : _a.publish(accessory, "motion", "false");
276
383
  }
277
384
  // Reset smart motion contact sensors, if configured.
278
385
  for (const detectedObject of detectedObjects) {
279
- const contactService = accessory.getServiceById(this.hap.Service.ContactSensor, protect_camera_1.PROTECT_CONTACT_MOTION_SMARTDETECT + "." + detectedObject);
386
+ const contactService = accessory.getServiceById(this.hap.Service.ContactSensor, protect_accessory_1.PROTECT_CONTACT_MOTION_SMARTDETECT + "." + detectedObject);
280
387
  if (contactService) {
281
388
  contactService.updateCharacteristic(this.hap.Characteristic.ContactSensorState, false);
282
389
  }
283
390
  // Publish the smart motion event to MQTT, if the user has configured it.
284
391
  (_b = this.nvr.mqtt) === null || _b === void 0 ? void 0 : _b.publish(accessory, "motion/smart/" + detectedObject, "false");
285
- this.debug("%s: Resetting smart object motion event.", this.nvrApi.getFullName(camera));
392
+ this.debug("%s: Resetting smart object motion event.", this.nvrApi.getFullName(device));
286
393
  }
287
394
  // Delete the timer from our motion event tracker.
288
- delete this.eventTimers[camera.mac];
395
+ delete this.eventTimers[device.mac];
289
396
  }, this.motionDuration * 1000);
290
397
  }
291
398
  // Doorbell event processing from UniFi Protect and delivered to HomeKit.
292
399
  doorbellEventHandler(accessory, lastRing) {
293
400
  var _a;
294
- const camera = accessory.context.camera;
295
- if (!accessory || !camera || !lastRing) {
401
+ const device = accessory.context.device;
402
+ if (!device || !lastRing) {
296
403
  return;
297
404
  }
298
405
  // Have we seen this event before? If so...move along. It's unlikely we hit this in a doorbell scenario, but just in case.
299
- if (this.lastRing[camera.mac] >= lastRing) {
300
- this.debug("%s: Skipping duplicate doorbell ring.", this.nvrApi.getFullName(camera));
406
+ if (this.lastRing[device.mac] >= lastRing) {
407
+ this.debug("%s: Skipping duplicate doorbell ring.", this.nvrApi.getFullName(device));
301
408
  return;
302
409
  }
303
410
  // We only consider events that have happened within the last two refresh intervals. Otherwise, we assume it's stale
304
411
  // data and don't inform the user.
305
412
  if ((Date.now() - lastRing) > (this.nvr.refreshInterval * 2 * 1000)) {
306
- this.debug("%s: Skipping doorbell ring due to stale data.", this.nvrApi.getFullName(camera));
413
+ this.debug("%s: Skipping doorbell ring due to stale data.", this.nvrApi.getFullName(device));
307
414
  return;
308
415
  }
309
416
  // Remember this event.
310
- this.lastRing[camera.mac] = lastRing;
417
+ this.lastRing[device.mac] = lastRing;
311
418
  // Only notify the user if we have a doorbell.
312
419
  const doorbellService = accessory.getService(this.hap.Service.Doorbell);
313
420
  if (!doorbellService) {
@@ -316,44 +423,81 @@ class ProtectNvrEvents {
316
423
  // Trigger the doorbell.
317
424
  doorbellService.updateCharacteristic(this.hap.Characteristic.ProgrammableSwitchEvent, this.hap.Characteristic.ProgrammableSwitchEvent.SINGLE_PRESS);
318
425
  // Check to see if we have a doorbell trigger switch configured. If we do, update it.
319
- const triggerService = accessory.getServiceById(this.hap.Service.Switch, protect_camera_1.PROTECT_SWITCH_DOORBELL_TRIGGER);
426
+ const triggerService = accessory.getServiceById(this.hap.Service.Switch, protect_accessory_1.PROTECT_SWITCH_DOORBELL_TRIGGER);
320
427
  if (triggerService) {
321
428
  // Kill any inflight trigger reset.
322
- if (this.eventTimers[camera.mac + ".DoorbellRing"]) {
323
- clearTimeout(this.eventTimers[camera.mac + ".DoorbellRing"]);
324
- delete this.eventTimers[camera.mac + ".DoorbellRing"];
429
+ if (this.eventTimers[device.mac + ".Doorbell.Ring.Trigger"]) {
430
+ clearTimeout(this.eventTimers[device.mac + ".Doorbell.Ring.Trigger"]);
431
+ delete this.eventTimers[device.mac + ".Doorbell.Ring.Trigger"];
325
432
  }
326
- const protectCamera = this.nvr.configuredCameras[accessory.UUID];
433
+ const protectCamera = this.nvr.configuredDevices[accessory.UUID];
327
434
  // Flag that we're ringing.
328
435
  if (protectCamera) {
329
436
  protectCamera.isRinging = true;
330
437
  }
331
438
  triggerService.updateCharacteristic(this.hap.Characteristic.On, true);
332
- // Reset our doorbell trigger after two seconds.
333
- this.eventTimers[camera.mac + ".DoorbellRing"] = setTimeout(() => {
439
+ // Reset our doorbell trigger after ringDuration.
440
+ this.eventTimers[device.mac + ".Doorbell.Ring.Trigger"] = setTimeout(() => {
334
441
  if (protectCamera) {
335
442
  protectCamera.isRinging = false;
336
443
  }
337
444
  triggerService.updateCharacteristic(this.hap.Characteristic.On, false);
338
- this.debug("%s: Resetting doorbell ring trigger.", this.nvrApi.getFullName(camera));
445
+ this.debug("%s: Resetting doorbell ring trigger.", this.nvrApi.getFullName(device));
339
446
  // Delete the timer from our motion event tracker.
340
- delete this.eventTimers[camera.mac + ".DoorbellRing"];
341
- }, 2 * 1000);
447
+ delete this.eventTimers[device.mac + ".Doorbell.Ring.Trigger"];
448
+ }, this.ringDuration * 1000);
342
449
  }
343
450
  // Publish to MQTT, if the user has configured it.
344
451
  (_a = this.nvr.mqtt) === null || _a === void 0 ? void 0 : _a.publish(accessory, "doorbell", "true");
345
- if (this.nvr.optionEnabled(camera, "Log.Doorbell", false)) {
346
- this.log.info("%s: Doorbell ring detected.", this.nvrApi.getFullName(camera));
452
+ if (this.nvr.optionEnabled(device, "Log.Doorbell", false)) {
453
+ this.log.info("%s: Doorbell ring detected.", this.nvrApi.getFullName(device));
454
+ }
455
+ // Kill any inflight ring reset.
456
+ if (this.eventTimers[device.mac + ".Doorbell.Ring"]) {
457
+ clearTimeout(this.eventTimers[device.mac + ".Doorbell.Ring"]);
458
+ delete this.eventTimers[device.mac + ".Doorbell.Ring"];
347
459
  }
460
+ // Fire off our MQTT doorbell ring event after ringDuration.
461
+ this.eventTimers[device.mac + ".Doorbell.Ring"] = setTimeout(() => {
462
+ var _a;
463
+ (_a = this.nvr.mqtt) === null || _a === void 0 ? void 0 : _a.publish(accessory, "doorbell", "false");
464
+ // Delete the timer from our event tracker.
465
+ delete this.eventTimers[device.mac + ".Doorbell.Ring"];
466
+ }, this.ringDuration * 1000);
348
467
  }
349
468
  // LCD message event processing from UniFi Protect and delivered to HomeKit.
350
469
  lcdMessageEventHandler(accessory, lcdMessage) {
351
470
  var _a;
352
- const camera = accessory.context.camera;
353
- if (!accessory || !camera) {
471
+ const device = accessory.context.device;
472
+ if (!device) {
354
473
  return;
355
474
  }
356
- (_a = this.nvr.configuredCameras[accessory.UUID]) === null || _a === void 0 ? void 0 : _a.updateLcdSwitch(lcdMessage);
475
+ (_a = this.nvr.configuredDevices[accessory.UUID]) === null || _a === void 0 ? void 0 : _a.updateLcdSwitch(lcdMessage);
476
+ }
477
+ // Light power state event processing from UniFi Protect.
478
+ lightPowerHandler(accessory, lightState) {
479
+ const device = accessory.context.device;
480
+ if (!device) {
481
+ return;
482
+ }
483
+ // Update the power state on the accessory.
484
+ const lightService = accessory.getService(this.hap.Service.Lightbulb);
485
+ lightService === null || lightService === void 0 ? void 0 : lightService.updateCharacteristic(this.hap.Characteristic.On, lightState);
486
+ }
487
+ // Light power state event processing from UniFi Protect.
488
+ lightBrightnessHandler(accessory, brightness) {
489
+ const device = accessory.context.device;
490
+ if (!device || (brightness < 1)) {
491
+ return;
492
+ }
493
+ // Update the power state on the accessory.
494
+ const lightService = accessory.getService(this.hap.Service.Lightbulb);
495
+ lightService === null || lightService === void 0 ? void 0 : lightService.updateCharacteristic(this.hap.Characteristic.Brightness, (brightness - 1) * 20);
496
+ }
497
+ // Sensor state event processing from UniFi Protect.
498
+ sensorHandler(accessory, protectSensor) {
499
+ // Update the sensor state in HomeKit.
500
+ protectSensor.updateDevice();
357
501
  }
358
502
  }
359
503
  exports.ProtectNvrEvents = ProtectNvrEvents;
@@ -1 +1 @@
1
- {"version":3,"file":"protect-nvr-events.js","sourceRoot":"","sources":["../src/protect-nvr-events.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"protect-nvr-events.js","sourceRoot":"","sources":["../src/protect-nvr-events.ts"],"names":[],"mappings":"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"}