homebridge-unifi-protect 6.18.1 → 6.20.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 (111) hide show
  1. package/dist/devices/index.d.ts +11 -0
  2. package/dist/devices/index.js +16 -0
  3. package/dist/devices/index.js.map +1 -0
  4. package/dist/{protect-camera-package.js → devices/protect-camera-package.js} +2 -4
  5. package/dist/devices/protect-camera-package.js.map +1 -0
  6. package/dist/{protect-camera.d.ts → devices/protect-camera.d.ts} +2 -5
  7. package/dist/{protect-camera.js → devices/protect-camera.js} +119 -210
  8. package/dist/devices/protect-camera.js.map +1 -0
  9. package/dist/{protect-chime.d.ts → devices/protect-chime.d.ts} +4 -1
  10. package/dist/devices/protect-chime.js +180 -0
  11. package/dist/devices/protect-chime.js.map +1 -0
  12. package/dist/{protect-device.d.ts → devices/protect-device.d.ts} +12 -5
  13. package/dist/{protect-device.js → devices/protect-device.js} +159 -109
  14. package/dist/devices/protect-device.js.map +1 -0
  15. package/dist/{protect-doorbell.d.ts → devices/protect-doorbell.d.ts} +1 -1
  16. package/dist/{protect-doorbell.js → devices/protect-doorbell.js} +50 -83
  17. package/dist/devices/protect-doorbell.js.map +1 -0
  18. package/dist/{protect-light.d.ts → devices/protect-light.d.ts} +1 -1
  19. package/dist/{protect-light.js → devices/protect-light.js} +34 -44
  20. package/dist/devices/protect-light.js.map +1 -0
  21. package/dist/{protect-liveviews.d.ts → devices/protect-liveviews.d.ts} +1 -1
  22. package/dist/{protect-liveviews.js → devices/protect-liveviews.js} +11 -21
  23. package/dist/devices/protect-liveviews.js.map +1 -0
  24. package/dist/{protect-nvr-systeminfo.d.ts → devices/protect-nvr-systeminfo.d.ts} +1 -1
  25. package/dist/{protect-nvr-systeminfo.js → devices/protect-nvr-systeminfo.js} +3 -9
  26. package/dist/devices/protect-nvr-systeminfo.js.map +1 -0
  27. package/dist/{protect-securitysystem.d.ts → devices/protect-securitysystem.d.ts} +2 -3
  28. package/dist/{protect-securitysystem.js → devices/protect-securitysystem.js} +32 -59
  29. package/dist/devices/protect-securitysystem.js.map +1 -0
  30. package/dist/{protect-sensor.d.ts → devices/protect-sensor.d.ts} +3 -2
  31. package/dist/devices/protect-sensor.js +402 -0
  32. package/dist/devices/protect-sensor.js.map +1 -0
  33. package/dist/{protect-viewer.d.ts → devices/protect-viewer.d.ts} +1 -1
  34. package/dist/{protect-viewer.js → devices/protect-viewer.js} +21 -28
  35. package/dist/devices/protect-viewer.js.map +1 -0
  36. package/dist/ffmpeg/index.d.ts +6 -0
  37. package/dist/ffmpeg/index.js +11 -0
  38. package/dist/ffmpeg/index.js.map +1 -0
  39. package/dist/{protect-ffmpeg-codecs.d.ts → ffmpeg/protect-ffmpeg-codecs.d.ts} +1 -1
  40. package/dist/ffmpeg/protect-ffmpeg-codecs.js.map +1 -0
  41. package/dist/{protect-ffmpeg-exec.d.ts → ffmpeg/protect-ffmpeg-exec.d.ts} +5 -2
  42. package/dist/{protect-ffmpeg-exec.js → ffmpeg/protect-ffmpeg-exec.js} +13 -1
  43. package/dist/ffmpeg/protect-ffmpeg-exec.js.map +1 -0
  44. package/dist/{protect-ffmpeg-options.d.ts → ffmpeg/protect-ffmpeg-options.d.ts} +1 -1
  45. package/dist/{protect-ffmpeg-options.js → ffmpeg/protect-ffmpeg-options.js} +1 -1
  46. package/dist/ffmpeg/protect-ffmpeg-options.js.map +1 -0
  47. package/dist/{protect-ffmpeg-record.d.ts → ffmpeg/protect-ffmpeg-record.d.ts} +1 -1
  48. package/dist/{protect-ffmpeg-record.js → ffmpeg/protect-ffmpeg-record.js} +7 -3
  49. package/dist/ffmpeg/protect-ffmpeg-record.js.map +1 -0
  50. package/dist/{protect-ffmpeg-stream.d.ts → ffmpeg/protect-ffmpeg-stream.d.ts} +1 -1
  51. package/dist/ffmpeg/protect-ffmpeg-stream.js.map +1 -0
  52. package/dist/{protect-ffmpeg.d.ts → ffmpeg/protect-ffmpeg.d.ts} +3 -3
  53. package/dist/ffmpeg/protect-ffmpeg.js.map +1 -0
  54. package/dist/{protect-nvr-events.d.ts → protect-events.d.ts} +3 -4
  55. package/dist/{protect-nvr-events.js → protect-events.js} +4 -4
  56. package/dist/protect-events.js.map +1 -0
  57. package/dist/protect-mqtt.d.ts +3 -2
  58. package/dist/protect-mqtt.js +30 -6
  59. package/dist/protect-mqtt.js.map +1 -1
  60. package/dist/protect-nvr.d.ts +4 -8
  61. package/dist/protect-nvr.js +82 -129
  62. package/dist/protect-nvr.js.map +1 -1
  63. package/dist/protect-options.js +7 -5
  64. package/dist/protect-options.js.map +1 -1
  65. package/dist/protect-platform.d.ts +1 -1
  66. package/dist/protect-platform.js +1 -1
  67. package/dist/protect-platform.js.map +1 -1
  68. package/dist/protect-record.d.ts +4 -2
  69. package/dist/protect-record.js +37 -34
  70. package/dist/protect-record.js.map +1 -1
  71. package/dist/protect-snapshot.d.ts +21 -0
  72. package/dist/protect-snapshot.js +200 -0
  73. package/dist/protect-snapshot.js.map +1 -0
  74. package/dist/protect-stream.d.ts +3 -7
  75. package/dist/protect-stream.js +7 -86
  76. package/dist/protect-stream.js.map +1 -1
  77. package/dist/protect-timeshift.d.ts +3 -2
  78. package/dist/protect-timeshift.js +31 -30
  79. package/dist/protect-timeshift.js.map +1 -1
  80. package/dist/protect-types.d.ts +5 -6
  81. package/dist/protect-types.js +8 -0
  82. package/dist/protect-types.js.map +1 -1
  83. package/dist/settings.d.ts +3 -6
  84. package/dist/settings.js +6 -12
  85. package/dist/settings.js.map +1 -1
  86. package/homebridge-ui/public/index.html +2 -0
  87. package/package.json +12 -12
  88. package/dist/protect-camera-package.js.map +0 -1
  89. package/dist/protect-camera.js.map +0 -1
  90. package/dist/protect-chime.js +0 -108
  91. package/dist/protect-chime.js.map +0 -1
  92. package/dist/protect-device.js.map +0 -1
  93. package/dist/protect-doorbell.js.map +0 -1
  94. package/dist/protect-ffmpeg-codecs.js.map +0 -1
  95. package/dist/protect-ffmpeg-exec.js.map +0 -1
  96. package/dist/protect-ffmpeg-options.js.map +0 -1
  97. package/dist/protect-ffmpeg-record.js.map +0 -1
  98. package/dist/protect-ffmpeg-stream.js.map +0 -1
  99. package/dist/protect-ffmpeg.js.map +0 -1
  100. package/dist/protect-light.js.map +0 -1
  101. package/dist/protect-liveviews.js.map +0 -1
  102. package/dist/protect-nvr-events.js.map +0 -1
  103. package/dist/protect-nvr-systeminfo.js.map +0 -1
  104. package/dist/protect-securitysystem.js.map +0 -1
  105. package/dist/protect-sensor.js +0 -449
  106. package/dist/protect-sensor.js.map +0 -1
  107. package/dist/protect-viewer.js.map +0 -1
  108. /package/dist/{protect-camera-package.d.ts → devices/protect-camera-package.d.ts} +0 -0
  109. /package/dist/{protect-ffmpeg-codecs.js → ffmpeg/protect-ffmpeg-codecs.js} +0 -0
  110. /package/dist/{protect-ffmpeg-stream.js → ffmpeg/protect-ffmpeg-stream.js} +0 -0
  111. /package/dist/{protect-ffmpeg.js → ffmpeg/protect-ffmpeg.js} +0 -0
@@ -1,7 +1,7 @@
1
- import { PLATFORM_NAME, PLUGIN_NAME, PROTECT_DOORBELL_CHIME_DURATION_DIGITAL } from "./settings.js";
1
+ import { PLATFORM_NAME, PLUGIN_NAME, PROTECT_DOORBELL_CHIME_DURATION_DIGITAL } from "../settings.js";
2
+ import { ProtectReservedNames, toCamelCase } from "../protect-types.js";
2
3
  import { ProtectCamera } from "./protect-camera.js";
3
4
  import { ProtectCameraPackage } from "./protect-camera-package.js";
4
- import { ProtectReservedNames } from "./protect-types.js";
5
5
  export class ProtectDoorbell extends ProtectCamera {
6
6
  chimeDigitalDuration;
7
7
  defaultMessageDuration;
@@ -69,28 +69,19 @@ export class ProtectDoorbell extends ProtectCamera {
69
69
  continue;
70
70
  }
71
71
  this.log.info("Enabled doorbell message switch%s: %s.", entry.duration ? " (" + (entry.duration / 1000).toString() + " seconds)" : "", entry.text);
72
- // Use the message switch, if it already exists.
73
- let switchService = this.accessory.getServiceById(this.hap.Service.Switch, entry.type + "." + entry.text);
74
- // It's a new message, let's create the service for it. Each message cannot exceed 30 characters, but
75
- // given that HomeKit allows for strings to be up to 64 characters long, this should be fine.
76
- if (!switchService) {
77
- switchService = new this.hap.Service.Switch(entry.text, entry.type + "." + entry.text);
78
- if (!switchService) {
79
- this.log.error("Unable to add doorbell message switch: %s.", entry.text);
80
- continue;
81
- }
82
- switchService.addOptionalCharacteristic(this.hap.Characteristic.ConfiguredName);
83
- this.accessory.addService(switchService);
72
+ // Acquire the service. Each message cannot exceed 30 characters, but given that HomeKit allows for strings to be up to 64 characters long, this should be fine.
73
+ const service = this.acquireService(this.hap.Service.Switch, entry.text, entry.type + "." + entry.text);
74
+ // Fail gracefully.
75
+ if (!service) {
76
+ this.log.error("Unable to add doorbell message switch: %s.", entry.text);
77
+ return false;
84
78
  }
85
79
  const duration = "duration" in entry ? entry.duration : this.defaultMessageDuration;
86
80
  // Save the message switch in the list we maintain.
87
- this.messageSwitches.push({ duration: duration, service: switchService, state: false, text: entry.text, type: entry.type }) - 1;
81
+ this.messageSwitches.push({ duration: duration, service: service, state: false, text: entry.text, type: entry.type }) - 1;
88
82
  // Configure the message switch.
89
- switchService.updateCharacteristic(this.hap.Characteristic.ConfiguredName, entry.text);
90
- switchService
91
- .getCharacteristic(this.hap.Characteristic.On)
92
- ?.onGet(this.getSwitchState.bind(this, this.messageSwitches[this.messageSwitches.length - 1]))
93
- .onSet(this.setSwitchState.bind(this, this.messageSwitches[this.messageSwitches.length - 1]));
83
+ service.getCharacteristic(this.hap.Characteristic.On)?.onGet(this.getSwitchState.bind(this, this.messageSwitches[this.messageSwitches.length - 1]));
84
+ service.getCharacteristic(this.hap.Characteristic.On)?.onSet(this.setSwitchState.bind(this, this.messageSwitches[this.messageSwitches.length - 1]));
94
85
  }
95
86
  // Update the message switch state in HomeKit.
96
87
  this.updateLcdSwitch(this.ufp.lcdMessage);
@@ -134,39 +125,33 @@ export class ProtectDoorbell extends ProtectCamera {
134
125
  // The Protect controller supports three modes for attached, physical chimes on a doorbell: none, mechanical, and digital. We create switches for each of the modes.
135
126
  for (const physicalChimeType of [ProtectReservedNames.SWITCH_DOORBELL_CHIME_NONE, ProtectReservedNames.SWITCH_DOORBELL_CHIME_MECHANICAL, ProtectReservedNames.SWITCH_DOORBELL_CHIME_DIGITAL]) {
136
127
  const chimeSetting = physicalChimeType.slice(physicalChimeType.lastIndexOf(".") + 1);
137
- // Find the switch service, if it exists.
138
- let switchService = this.accessory.getServiceById(this.hap.Service.Switch, physicalChimeType);
139
- // If we don't have the physical capabilities or the feature option enabled, disable the switch and we're done.
140
- if (!this.ufp.featureFlags.hasChime || !this.hasFeature("Doorbell.PhysicalChime")) {
141
- if (switchService) {
142
- this.accessory.removeService(switchService);
128
+ // Validate whether we should have this service enabled.
129
+ if (!this.validService(this.hap.Service.Switch, () => {
130
+ // If we don't have the physical capabilities or the feature option enabled, disable the switch and we're done.
131
+ if (!this.ufp.featureFlags.hasChime || !this.hasFeature("Doorbell.PhysicalChime")) {
132
+ return false;
143
133
  }
134
+ return true;
135
+ }, physicalChimeType)) {
144
136
  continue;
145
137
  }
146
- const switchName = this.accessoryName + " Physical Chime " + chimeSetting.charAt(0).toUpperCase() + chimeSetting.slice(1);
147
- // Add the switch to the doorbell, if needed.
148
- if (!switchService) {
149
- switchService = new this.hap.Service.Switch(switchName, physicalChimeType);
150
- if (!switchService) {
151
- this.log.error("Unable to add the physical chime switches.");
152
- continue;
153
- }
154
- switchService.addOptionalCharacteristic(this.hap.Characteristic.ConfiguredName);
155
- this.accessory.addService(switchService);
138
+ // Acquire the service.
139
+ const service = this.acquireService(this.hap.Service.Switch, this.accessoryName + " Physical Chime " + toCamelCase(chimeSetting), physicalChimeType);
140
+ // Fail gracefully.
141
+ if (!service) {
142
+ this.log.error("Unable to add physical chime switch: %s.", chimeSetting);
143
+ continue;
156
144
  }
157
145
  // Get the current status of the physical chime mode on the doorbell.
158
- switchService.getCharacteristic(this.hap.Characteristic.On)?.onGet(() => {
146
+ service.getCharacteristic(this.hap.Characteristic.On)?.onGet(() => {
159
147
  return this.ufp.chimeDuration === this.getPhysicalChimeDuration(physicalChimeType);
160
148
  });
161
149
  // Activate the appropriate physical chime mode on the doorbell.
162
- switchService.getCharacteristic(this.hap.Characteristic.On)?.onSet(async (value) => {
163
- // We only want to do something if we're being activated. Turning off the switch would really be an undefined state given that
164
- // there are three different settings one can choose from. Instead, we do nothing and leave it to the user to choose what state
165
- // they really want to set.
150
+ service.getCharacteristic(this.hap.Characteristic.On)?.onSet(async (value) => {
151
+ // We only want to do something if we're being activated. Turning off the switch would really be an undefined state given that there are three different settings
152
+ // one can choose from. Instead, we do nothing and leave it to the user to choose what state they really want to set.
166
153
  if (!value) {
167
- setTimeout(() => {
168
- this.updateDevice();
169
- }, 50);
154
+ setTimeout(() => this.updateDevice(), 50);
170
155
  return;
171
156
  }
172
157
  // Set our physical chime duration.
@@ -191,8 +176,7 @@ export class ProtectDoorbell extends ProtectCamera {
191
176
  this.log.info("Physical chime type set to %s.", chimeSetting);
192
177
  });
193
178
  // Initialize the physical chime switch state.
194
- switchService.updateCharacteristic(this.hap.Characteristic.ConfiguredName, switchName);
195
- switchService.updateCharacteristic(this.hap.Characteristic.On, this.ufp.chimeDuration === this.getPhysicalChimeDuration(physicalChimeType));
179
+ service.updateCharacteristic(this.hap.Characteristic.On, this.ufp.chimeDuration === this.getPhysicalChimeDuration(physicalChimeType));
196
180
  switchesEnabled.push(chimeSetting);
197
181
  }
198
182
  if (switchesEnabled.length) {
@@ -205,18 +189,11 @@ export class ProtectDoorbell extends ProtectCamera {
205
189
  // Call our parent to setup the general camera MQTT capabilities.
206
190
  super.configureMqtt();
207
191
  // Get the current message on the doorbell.
208
- this.nvr.mqtt?.subscribe(this.accessory, "message/get", (message) => {
209
- const value = message.toString();
210
- // When we get the right message, we return the current message set on the doorbell.
211
- if (value?.toLowerCase() !== "true") {
212
- return;
213
- }
214
- const doorbellMessage = this.ufp.lcdMessage?.text ?? "";
215
- const doorbellDuration = (("resetAt" in this.ufp.lcdMessage) && this.ufp.lcdMessage.resetAt !== null) ?
192
+ this.subscribeGet("message", "doorbell message", () => {
193
+ const doorbellDuration = (("resetAt" in this.ufp.lcdMessage) && (this.ufp.lcdMessage.resetAt !== null)) ?
216
194
  Math.round((this.ufp.lcdMessage.resetAt - Date.now()) / 1000) : 0;
217
- // Publish the current message.
218
- this.nvr.mqtt?.publish(this.accessory, "message", JSON.stringify({ duration: doorbellDuration, message: doorbellMessage }));
219
- this.log.info("Doorbell message information published via MQTT.");
195
+ // Return the current message.
196
+ return JSON.stringify({ duration: doorbellDuration, message: this.ufp.lcdMessage?.text ?? "" });
220
197
  });
221
198
  // We support the ability to set the doorbell message like so:
222
199
  //
@@ -225,48 +202,38 @@ export class ProtectDoorbell extends ProtectCamera {
225
202
  // If duration is omitted, we assume the default duration.
226
203
  // If duration is 0, we assume it's not expiring.
227
204
  // If the message is blank, we assume we're resetting the doorbell message.
228
- this.nvr.mqtt?.subscribe(this.accessory, "message/set", (message) => {
229
- let incomingPayload;
230
- let outboundPayload;
205
+ this.subscribeSet("message", "doorbell message", (value, rawValue) => {
206
+ let inboundPayload;
231
207
  // Catch any errors in parsing what we get over MQTT.
232
208
  try {
233
- incomingPayload = JSON.parse(message.toString());
234
- // Sanity check what comes in from MQTT to make sure it's what we want.
235
- if (!(incomingPayload instanceof Object)) {
236
- throw new Error("The JSON object is not in the expected format");
237
- }
209
+ inboundPayload = JSON.parse(rawValue);
238
210
  }
239
211
  catch (error) {
240
- if (error instanceof SyntaxError) {
241
- this.log.error("Unable to process MQTT message: \"%s\". Error: %s.", message.toString(), error.message);
242
- }
243
- else {
244
- this.log.error("Unknown error has occurred: %s.", error);
245
- }
212
+ this.log.error("Unable to process MQTT message: \"%s\". Invalid JSON.", rawValue);
246
213
  // Errors mean that we're done now.
247
214
  return;
248
215
  }
249
- // At a minimum, make sure a message was specified. If we have specified duration, make sure it's a number.
250
- // Our NaN test may seem strange - that's because NaN is the only JavaScript value that is treated as unequal
251
- // to itself. Meaning, you can always test if a value is NaN by checking it for equality to itself. Weird huh?
252
- if (!("message" in incomingPayload) || (("duration" in incomingPayload) && (incomingPayload.duration !== incomingPayload.duration))) {
253
- this.log.error("Unable to process MQTT message: \"%s\".", incomingPayload);
216
+ // At a minimum, make sure a message was specified. If we have specified duration, make sure it's a number. Our NaN test may seem strange - that's because NaN is
217
+ // the only JavaScript value that is treated as unequal to itself. Meaning, you can always test if a value is NaN by checking it for equality to itself. Weird huh?
218
+ if (!inboundPayload || !("message" in inboundPayload) || (("duration" in inboundPayload) && (inboundPayload.duration !== inboundPayload.duration))) {
219
+ this.log.error("Unable to process MQTT message: \"%s\".", inboundPayload);
254
220
  return;
255
221
  }
256
222
  // If no duration specified, or a negative duration, we assume the default duration.
257
- if (!("duration" in incomingPayload) || (("duration" in incomingPayload) && (incomingPayload.duration < 0))) {
258
- incomingPayload.duration = this.defaultMessageDuration;
223
+ if (!("duration" in inboundPayload) || (("duration" in inboundPayload) && (inboundPayload.duration < 0))) {
224
+ inboundPayload.duration = this.defaultMessageDuration;
259
225
  }
260
226
  else {
261
- incomingPayload.duration = incomingPayload.duration * 1000;
227
+ inboundPayload.duration = inboundPayload.duration * 1000;
262
228
  }
229
+ let outboundPayload;
263
230
  // No message defined...we assume we're resetting the message.
264
- if (!incomingPayload.message.length) {
231
+ if (!inboundPayload.message.length) {
265
232
  outboundPayload = { resetAt: 0 };
266
233
  this.log.info("Received MQTT doorbell message reset.");
267
234
  }
268
235
  else {
269
- outboundPayload = { duration: incomingPayload.duration, text: incomingPayload.message, type: "CUSTOM_MESSAGE" };
236
+ outboundPayload = { duration: inboundPayload.duration, text: inboundPayload.message, type: "CUSTOM_MESSAGE" };
270
237
  this.log.info("Received MQTT doorbell message%s: %s.", outboundPayload.duration ? " (" + (outboundPayload.duration / 1000).toString() + " seconds)" : "", outboundPayload.text);
271
238
  }
272
239
  // Send it to the doorbell and we're done.
@@ -401,7 +368,7 @@ export class ProtectDoorbell extends ProtectCamera {
401
368
  lcdEntry.service.updateCharacteristic(this.hap.Characteristic.On, true);
402
369
  this.log.info("Doorbell message set%s: %s.", lcdMessage.resetAt !== null ? " (" + Math.round(((lcdMessage.resetAt ?? 0) - Date.now()) / 1000).toString() + " seconds)" : "", lcdMessage.text);
403
370
  // Publish to MQTT, if the user has configured it.
404
- this.nvr.mqtt?.publish(this.accessory, "message", JSON.stringify({ duration: lcdEntry.duration / 1000, message: lcdEntry.text }));
371
+ this.publish("message", JSON.stringify({ duration: lcdEntry.duration / 1000, message: lcdEntry.text }));
405
372
  }
406
373
  }
407
374
  // Get the current state of this message switch.
@@ -446,7 +413,7 @@ export class ProtectDoorbell extends ProtectCamera {
446
413
  // and since a package camera is actually a secondary camera on a device with a single motion sensor, we use that motion sensor to trigger the package camera's HKSV
447
414
  // event recording.
448
415
  if (payload.lastMotion && this.packageCamera?.stream?.hksv?.isRecording) {
449
- this.nvr.events.motionEventHandler(this.packageCamera, payload.lastMotion);
416
+ this.nvr.events.motionEventHandler(this.packageCamera);
450
417
  }
451
418
  // Process LCD message events.
452
419
  if (payload.lcdMessage) {
@@ -0,0 +1 @@
1
+ {"version":3,"file":"protect-doorbell.js","sourceRoot":"","sources":["../../src/devices/protect-doorbell.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { PlatformAccessory } from "homebridge";
2
2
  import { ProtectLightConfig } from "unifi-protect";
3
3
  import { ProtectDevice } from "./protect-device.js";
4
- import { ProtectNvr } from "./protect-nvr.js";
4
+ import { ProtectNvr } from "../protect-nvr.js";
5
5
  export declare class ProtectLight extends ProtectDevice {
6
6
  private lightState;
7
7
  ufp: ProtectLightConfig;
@@ -33,22 +33,18 @@ export class ProtectLight extends ProtectDevice {
33
33
  }
34
34
  // Configure the light for HomeKit.
35
35
  configureLightbulb() {
36
- // Find the service, if it exists.
37
- let lightService = this.accessory.getService(this.hap.Service.Lightbulb);
38
- // Add the service to the accessory, if needed.
39
- if (!lightService) {
40
- lightService = new this.hap.Service.Lightbulb(this.accessoryName);
41
- if (!lightService) {
42
- this.log.error("Unable to add light.");
43
- return false;
44
- }
45
- this.accessory.addService(lightService);
36
+ // Acquire the service.
37
+ const service = this.acquireService(this.hap.Service.Lightbulb);
38
+ // Add the switch to the device, if needed.
39
+ if (!service) {
40
+ this.log.error("Unable to add light.");
41
+ return false;
46
42
  }
47
43
  // Turn the light on or off.
48
- lightService.getCharacteristic(this.hap.Characteristic.On)?.onGet(() => {
44
+ service.getCharacteristic(this.hap.Characteristic.On)?.onGet(() => {
49
45
  return this.ufp.isLightOn === true;
50
46
  });
51
- lightService.getCharacteristic(this.hap.Characteristic.On)?.onSet(async (value) => {
47
+ service.getCharacteristic(this.hap.Characteristic.On)?.onSet(async (value) => {
52
48
  const lightState = value === true;
53
49
  const newDevice = await this.nvr.ufpApi.updateDevice(this.ufp, { lightOnSettings: { isLedForceOn: lightState } });
54
50
  if (!newDevice) {
@@ -57,13 +53,15 @@ export class ProtectLight extends ProtectDevice {
57
53
  }
58
54
  // Set the context to our updated device configuration.
59
55
  this.ufp = newDevice;
56
+ // Publish our state.
57
+ this.publish("light", lightState ? "true" : "false");
60
58
  });
61
59
  // Adjust the brightness of the light.
62
- lightService.getCharacteristic(this.hap.Characteristic.Brightness)?.onGet(() => {
60
+ service.getCharacteristic(this.hap.Characteristic.Brightness)?.onGet(() => {
63
61
  // The Protect ledLevel settings goes from 1 - 6. HomeKit expects percentages, so we convert it like so.
64
62
  return (this.ufp.lightDeviceSettings.ledLevel - 1) * 20;
65
63
  });
66
- lightService.getCharacteristic(this.hap.Characteristic.Brightness)?.onSet(async (value) => {
64
+ service.getCharacteristic(this.hap.Characteristic.Brightness)?.onSet(async (value) => {
67
65
  const brightness = Math.round((value / 20) + 1);
68
66
  const newDevice = await this.nvr.ufpApi.updateDevice(this.ufp, { lightDeviceSettings: { ledLevel: brightness } });
69
67
  if (!newDevice) {
@@ -74,44 +72,36 @@ export class ProtectLight extends ProtectDevice {
74
72
  this.ufp = newDevice;
75
73
  // Make sure we properly reflect what brightness we're actually at, given the differences in setting granularity between Protect and HomeKit.
76
74
  setTimeout(() => {
77
- lightService?.updateCharacteristic(this.hap.Characteristic.Brightness, (brightness - 1) * 20);
75
+ service?.updateCharacteristic(this.hap.Characteristic.Brightness, (brightness - 1) * 20);
78
76
  }, 50);
77
+ // Publish our state.
78
+ this.publish("light/brightness", ((brightness - 1) * 20).toString());
79
79
  });
80
80
  // Initialize the light.
81
- lightService.displayName = this.accessoryName;
82
- lightService.updateCharacteristic(this.hap.Characteristic.Name, this.accessoryName);
83
- lightService.updateCharacteristic(this.hap.Characteristic.On, this.ufp.isLightOn);
84
- lightService.updateCharacteristic(this.hap.Characteristic.Brightness, (this.ufp.lightDeviceSettings.ledLevel - 1) * 20);
81
+ service.updateCharacteristic(this.hap.Characteristic.On, this.ufp.isLightOn);
82
+ service.updateCharacteristic(this.hap.Characteristic.Brightness, (this.ufp.lightDeviceSettings.ledLevel - 1) * 20);
85
83
  return true;
86
84
  }
87
85
  // Configure MQTT capabilities of this light.
88
86
  configureMqtt() {
89
- const lightService = this.accessory.getService(this.hap.Service.Lightbulb);
90
- if (!lightService) {
91
- return false;
92
- }
93
- // Trigger a motion event in MQTT, if requested to do so.
94
- this.nvr.mqtt?.subscribe(this.accessory, "light", (message) => {
95
- const value = message.toString();
87
+ // Get the light state.
88
+ this.subscribeGet("light", "light status", () => {
89
+ return (this.ufp.isLightOn === true).toString();
90
+ });
91
+ this.subscribeGet("light/brightness", "light brightness", () => {
92
+ return ((this.ufp.lightDeviceSettings.ledLevel - 1) * 20).toString();
93
+ });
94
+ // Control the light.
95
+ this.subscribeSet("light", "light", (value) => {
96
+ this.accessory.getService(this.hap.Service.Lightbulb)?.getCharacteristic(this.hap.Characteristic.On)?.setValue(value === "true");
97
+ });
98
+ this.subscribeSet("light/brightness", "light brightness", (value) => {
96
99
  const brightness = parseInt(value);
97
- switch (value?.toLowerCase()) {
98
- case "off":
99
- lightService.getCharacteristic(this.hap.Characteristic.On)?.setValue(false);
100
- this.log.info("Light turned off via MQTT.");
101
- break;
102
- case "on":
103
- lightService.getCharacteristic(this.hap.Characteristic.On)?.setValue(true);
104
- this.log.info("Light turned on via MQTT.");
105
- break;
106
- default:
107
- // Unknown message - ignore it.
108
- if (isNaN(brightness) || (brightness < 0) || (brightness > 100)) {
109
- return;
110
- }
111
- lightService.getCharacteristic(this.hap.Characteristic.Brightness)?.setValue(brightness);
112
- this.log.info("Light set to %s% via MQTT.", brightness);
113
- break;
100
+ // Unknown message - ignore it.
101
+ if (isNaN(brightness) || (brightness < 0) || (brightness > 100)) {
102
+ return;
114
103
  }
104
+ this.accessory.getService(this.hap.Service.Lightbulb)?.getCharacteristic(this.hap.Characteristic.Brightness)?.setValue(brightness);
115
105
  });
116
106
  return true;
117
107
  }
@@ -120,7 +110,7 @@ export class ProtectLight extends ProtectDevice {
120
110
  const payload = packet.payload;
121
111
  // It's a motion event - process it accordingly.
122
112
  if (payload.lastMotion) {
123
- this.nvr.events.motionEventHandler(this, payload.lastMotion);
113
+ this.nvr.events.motionEventHandler(this);
124
114
  }
125
115
  // It's a light power event - process it accordingly.
126
116
  if ("isLightOn" in payload) {
@@ -0,0 +1 @@
1
+ {"version":3,"file":"protect-light.js","sourceRoot":"","sources":["../../src/devices/protect-light.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { ProtectBase } from "./protect-device.js";
2
- import { ProtectNvr } from "./protect-nvr.js";
2
+ import { ProtectNvr } from "../protect-nvr.js";
3
3
  export declare class ProtectLiveviews extends ProtectBase {
4
4
  private isConfigured;
5
5
  private isMqttConfigured;
@@ -1,4 +1,4 @@
1
- import { PLATFORM_NAME, PLUGIN_NAME } from "./settings.js";
1
+ import { PLATFORM_NAME, PLUGIN_NAME } from "../settings.js";
2
2
  import { ProtectBase } from "./protect-device.js";
3
3
  import { ProtectSecuritySystem } from "./protect-securitysystem.js";
4
4
  export class ProtectLiveviews extends ProtectBase {
@@ -170,38 +170,28 @@ export class ProtectLiveviews extends ProtectBase {
170
170
  }
171
171
  this.isMqttConfigured = true;
172
172
  // Return the current status of all the liveviews.
173
- this.nvr.mqtt?.subscribe(this.nvr.ufp.mac, "liveviews/get", (message) => {
174
- const value = message.toString().toLowerCase();
175
- // When we get the right message, we return the list of liveviews.
176
- if (value !== "true") {
177
- return;
178
- }
173
+ this.nvr.mqtt?.subscribeGet(this.nvr.ufp.mac, "liveviews", "liveview scenes", () => {
179
174
  // Get the list of liveviews.
180
175
  const liveviews = this.platform.accessories.filter(x => "liveview" in x.context).map(x => ({ name: x.context.liveview, state: x.getService(this.hap.Service.Switch)?.getCharacteristic(this.hap.Characteristic.On).value }));
181
- this.nvr.mqtt?.publish(this.nvr.ufp.mac ?? "", "liveviews", JSON.stringify(liveviews));
182
- this.log.info("Liveview scenes list published via MQTT.");
176
+ return JSON.stringify(liveviews);
183
177
  });
184
178
  // Set the status of one or more liveviews.
185
- this.nvr.mqtt?.subscribe(this.nvr.ufp.mac, "liveviews/set", (message) => {
179
+ this.nvr.mqtt?.subscribeSet(this.nvr.ufp.mac, "liveviews", "liveview scenes", (value, rawValue) => {
186
180
  let incomingPayload;
187
181
  // Catch any errors in parsing what we get over MQTT.
188
182
  try {
189
- incomingPayload = JSON.parse(message.toString());
190
- // Sanity check what comes in from MQTT to make sure it's what we want.
191
- if (!(incomingPayload instanceof Array)) {
192
- throw new Error("The JSON object is not in the expected format");
193
- }
183
+ incomingPayload = JSON.parse(rawValue.toString());
194
184
  }
195
185
  catch (error) {
196
- if (error instanceof SyntaxError) {
197
- this.log.error("Unable to process MQTT liveview setting: \"%s\". Error: %s.", message.toString(), error.message);
198
- }
199
- else {
200
- this.log.error("Unknown error has occurred: %s.", error);
201
- }
186
+ this.log.error("Unable to process MQTT message: \"%s\". Invalid JSON.", rawValue);
202
187
  // Errors mean that we're done now.
203
188
  return;
204
189
  }
190
+ // Sanity check.
191
+ if (!incomingPayload || !incomingPayload.length) {
192
+ this.log.error("Unable to process MQTT message: \"%s\".", incomingPayload);
193
+ return;
194
+ }
205
195
  // Update state on the liveviews.
206
196
  for (const entry of incomingPayload) {
207
197
  // Lookup this liveview.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"protect-liveviews.js","sourceRoot":"","sources":["../../src/devices/protect-liveviews.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { ProtectBase } from "./protect-device.js";
2
- import { ProtectNvr } from "./protect-nvr.js";
2
+ import { ProtectNvr } from "../protect-nvr.js";
3
3
  export declare class ProtectNvrSystemInfo extends ProtectBase {
4
4
  private accessory;
5
5
  private eventListener;
@@ -2,7 +2,7 @@
2
2
  *
3
3
  * protect-nvr-systeminfo.ts: NVR System Information device class for UniFi Protect.
4
4
  */
5
- import { PLATFORM_NAME, PLUGIN_NAME } from "./settings.js";
5
+ import { PLATFORM_NAME, PLUGIN_NAME } from "../settings.js";
6
6
  import { ProtectBase } from "./protect-device.js";
7
7
  export class ProtectNvrSystemInfo extends ProtectBase {
8
8
  accessory;
@@ -157,14 +157,8 @@ export class ProtectNvrSystemInfo extends ProtectBase {
157
157
  // Configure MQTT capabilities for the security system.
158
158
  configureMqtt() {
159
159
  // Return the current status of all sensors.
160
- this.nvr.mqtt?.subscribe(this.nvr.ufp.mac, "systeminfo/get", (message) => {
161
- const value = message.toString().toLowerCase();
162
- // When we get the right message, we return the system information JSON.
163
- if (value !== "true") {
164
- return;
165
- }
166
- this.nvr.mqtt?.publish(this.nvr.ufp.mac ?? "", "systeminfo", JSON.stringify(this.nvr.ufp.systemInfo));
167
- this.log.info("System information published via MQTT.");
160
+ this.nvr.mqtt?.subscribeGet(this.nvr.ufp.mac, "systeminfo", "system information", () => {
161
+ return JSON.stringify(this.nvr.ufp.systemInfo);
168
162
  });
169
163
  }
170
164
  }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"protect-nvr-systeminfo.js","sourceRoot":"","sources":["../../src/devices/protect-nvr-systeminfo.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { PlatformAccessory } from "homebridge";
2
2
  import { ProtectBase } from "./protect-device.js";
3
- import { ProtectNvr } from "./protect-nvr.js";
3
+ import { ProtectNvr } from "../protect-nvr.js";
4
4
  export declare class ProtectSecuritySystem extends ProtectBase {
5
5
  accessory: PlatformAccessory;
6
6
  private isAlarmTriggered;
@@ -11,8 +11,7 @@ export declare class ProtectSecuritySystem extends ProtectBase {
11
11
  private configureSecuritySystem;
12
12
  private configureSecurityAlarm;
13
13
  updateDevice(): boolean;
14
- private publishSecurityState;
15
- private getSecurityState;
14
+ private get currentSecuritySystemState();
16
15
  private setSecurityState;
17
16
  private setSecurityAlarm;
18
17
  }