homebridge-unifi-protect 7.5.2 → 7.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/devices/protect-camera.js +6 -6
- package/dist/devices/protect-camera.js.map +1 -1
- package/dist/devices/protect-chime.d.ts +0 -2
- package/dist/devices/protect-chime.js +8 -77
- package/dist/devices/protect-chime.js.map +1 -1
- package/dist/devices/protect-device.js +6 -5
- package/dist/devices/protect-device.js.map +1 -1
- package/dist/devices/protect-doorbell.d.ts +4 -0
- package/dist/devices/protect-doorbell.js +123 -2
- package/dist/devices/protect-doorbell.js.map +1 -1
- package/dist/devices/protect-liveviews.js +3 -2
- package/dist/devices/protect-liveviews.js.map +1 -1
- package/dist/devices/protect-nvr-systeminfo.js +2 -1
- package/dist/devices/protect-nvr-systeminfo.js.map +1 -1
- package/dist/protect-nvr.js +4 -4
- package/dist/protect-nvr.js.map +1 -1
- package/dist/protect-options.d.ts +12 -2
- package/dist/protect-options.js +13 -12
- package/dist/protect-options.js.map +1 -1
- package/dist/protect-types.d.ts +1 -0
- package/dist/protect-types.js +1 -0
- package/dist/protect-types.js.map +1 -1
- package/homebridge-ui/public/ui.mjs +55 -1
- package/package.json +5 -5
package/dist/protect-options.js
CHANGED
|
@@ -9,11 +9,11 @@ export const featureOptionCategories = [
|
|
|
9
9
|
{ description: "Device feature options.", modelKey: ["all"], name: "Device" },
|
|
10
10
|
{ description: "Doorbell feature options.", modelKey: ["camera"], name: "Doorbell" },
|
|
11
11
|
{ description: "Logging feature options.", modelKey: ["camera", "light", "sensor"], name: "Log" },
|
|
12
|
-
{ description: "Motion detection feature options.", modelKey: ["camera", "light", "sensor"], name: "Motion" },
|
|
12
|
+
{ description: "Motion detection feature options.", isNotProperty: ["isThirdPartyCamera"], modelKey: ["camera", "light", "sensor"], name: "Motion" },
|
|
13
13
|
{ description: "NVR feature options.", modelKey: ["camera", "nvr"], name: "Nvr" },
|
|
14
|
-
{ description: "Security system feature options.", modelKey: ["
|
|
14
|
+
{ description: "Security system feature options.", modelKey: ["nvr"], name: "SecuritySystem" },
|
|
15
15
|
{ description: "Video feature options.", modelKey: ["camera"], name: "Video" },
|
|
16
|
-
{ description: "HomeKit Secure Video feature options.", modelKey: ["camera"], name: "Video.HKSV" }
|
|
16
|
+
{ description: "HomeKit Secure Video feature options.", isNotProperty: ["isThirdPartyCamera"], modelKey: ["camera"], name: "Video.HKSV" }
|
|
17
17
|
];
|
|
18
18
|
/* eslint-disable @stylistic/max-len */
|
|
19
19
|
export const featureOptions = {
|
|
@@ -29,10 +29,10 @@ export const featureOptions = {
|
|
|
29
29
|
// Device options.
|
|
30
30
|
"Device": [
|
|
31
31
|
{ default: true, description: "Make this device available in HomeKit.", name: "" },
|
|
32
|
-
{ default: true, description: "Enable the status indicator light for this device in HomeKit.",
|
|
33
|
-
{ default: false, description: "Add a switch accessory to control the status indicator light in HomeKit.",
|
|
34
|
-
{ default: true, description: "Enable the night vision indicator light for this device in HomeKit.", hasFeature: ["
|
|
35
|
-
{ default: false, description: "Add a dimmer accessory to control the night vision state in HomeKit.", hasFeature: ["
|
|
32
|
+
{ default: true, description: "Enable the status indicator light for this device in HomeKit.", hasFeature: ["hasLedStatus"], modelKey: ["camera"], name: "StatusLed" },
|
|
33
|
+
{ default: false, description: "Add a switch accessory to control the status indicator light in HomeKit.", hasCameraFeature: ["hasLedStatus"], hasLightProperty: ["lightDeviceSettings"], hasSensorProperty: ["ledSettings"], modelKey: ["camera", "light", "sensor"], name: "StatusLed.Switch" },
|
|
34
|
+
{ default: true, description: "Enable the night vision indicator light for this device in HomeKit.", hasFeature: ["hasLedIr"], modelKey: ["camera"], name: "NightVision" },
|
|
35
|
+
{ default: false, description: "Add a dimmer accessory to control the night vision state in HomeKit.", hasFeature: ["hasLedIr"], modelKey: ["camera"], name: "NightVision.Dimmer" },
|
|
36
36
|
{ default: false, description: "Make this a standalone device in HomeKit that will need to be added to HomeKit through the Home app.", name: "Standalone" },
|
|
37
37
|
{ default: false, description: "Synchronize the UniFi Protect name of this device with HomeKit. Synchronization is one-way only, syncing the device name from UniFi Protect to HomeKit.", name: "SyncName" }
|
|
38
38
|
],
|
|
@@ -40,15 +40,16 @@ export const featureOptions = {
|
|
|
40
40
|
"Doorbell": [
|
|
41
41
|
{ default: true, description: "Enable the doorbell messages feature.", hasFeature: ["isDoorbell"], name: "Messages" },
|
|
42
42
|
{ default: true, description: "Use messages saved to the Protect NVR as message switches.", group: "Messages", hasFeature: ["isDoorbell"], name: "Messages.FromDoorbell" },
|
|
43
|
+
{ default: false, description: "Add a dimmer accessory to control the Protect chime volume in HomeKit.", hasFeature: ["isDoorbell"], name: "Volume.Dimmer" },
|
|
43
44
|
{ default: false, description: "Add switch accessories to control the physical chimes attached to a Protect doorbell.", hasFeature: ["hasChime"], name: "PhysicalChime" },
|
|
44
45
|
{ default: false, defaultValue: PROTECT_DOORBELL_CHIME_DURATION_DIGITAL, description: "Chime duration, in milliseconds, of a digital physical chime attached to a Protect doorbell.", group: "PhysicalChime", hasFeature: ["hasChime"], name: "PhysicalChime.Duration.Digital" },
|
|
45
|
-
{ default: false, description: "Add a switch accessory to trigger doorbell ring events on a Protect camera or doorbell.",
|
|
46
|
+
{ default: false, description: "Add a switch accessory to trigger doorbell ring events on a Protect camera or doorbell.", name: "Trigger" }
|
|
46
47
|
],
|
|
47
48
|
// Logging options.
|
|
48
49
|
"Log": [
|
|
49
|
-
{ default: true, description: "Log doorbell ring events in Homebridge.",
|
|
50
|
-
{ default: false, description: "Log HomeKit Secure Video recording events in Homebridge.",
|
|
51
|
-
{ default: false, description: "Log motion events in Homebridge.", hasProperty: ["isMotionDetected", "isPirMotionDetected"], name: "Motion" }
|
|
50
|
+
{ default: true, description: "Log doorbell ring events in Homebridge.", modelKey: ["camera"], name: "Doorbell" },
|
|
51
|
+
{ default: false, description: "Log HomeKit Secure Video recording events in Homebridge.", isNotProperty: ["isThirdPartyCamera"], modelKey: ["camera"], name: "HKSV" },
|
|
52
|
+
{ default: false, description: "Log motion events in Homebridge.", hasProperty: ["isMotionDetected", "isPirMotionDetected"], isNotProperty: ["isThirdPartyCamera"], name: "Motion" }
|
|
52
53
|
],
|
|
53
54
|
// Motion options.
|
|
54
55
|
"Motion": [
|
|
@@ -92,7 +93,7 @@ export const featureOptions = {
|
|
|
92
93
|
// Video options.
|
|
93
94
|
"Video": [
|
|
94
95
|
{ default: false, description: "Use hardware-accelerated transcoding when available (Apple Macs, Intel Quick Sync Video-enabled CPUs, Raspberry Pi 4).", name: "Transcode.Hardware" },
|
|
95
|
-
{ default: true, description: "Use the native Protect livestream API to view livestreams.", name: "Stream.UseApi" },
|
|
96
|
+
{ default: true, description: "Use the native Protect livestream API to view livestreams.", isNotProperty: ["isThirdPartyCamera"], name: "Stream.UseApi" },
|
|
96
97
|
{ default: true, description: "When streaming to low-latency clients (e.g. at home), transcode livestreams, instead of transmuxing them.", name: "Transcode" },
|
|
97
98
|
{ default: false, defaultValue: PROTECT_TRANSCODE_BITRATE, description: "Bitrate, in kilobits per second, to use when transcoding to low-latency (e.g. at home) clients, ignoring the bitrate HomeKit requests. HomeKit typically requests lower video quality than you may desire in your environment.", group: "Transcode", name: "Transcode.Bitrate" },
|
|
98
99
|
{ default: true, description: "When streaming to high-latency clients (e.g. cellular connections), transcode livestreams instead of transmuxing them.", name: "Transcode.HighLatency" },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"protect-options.js","sourceRoot":"","sources":["../src/protect-options.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,qCAAqC,EAAE,uCAAuC,EAAE,iCAAiC,EAAE,oCAAoC,EAC9J,mCAAmC,EAAE,yBAAyB,EAAE,uBAAuB,EAAE,0BAA0B,EAAE,yBAAyB,EAC9I,sCAAsC,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"protect-options.js","sourceRoot":"","sources":["../src/protect-options.ts"],"names":[],"mappings":"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"}
|
package/dist/protect-types.d.ts
CHANGED
|
@@ -16,6 +16,7 @@ export declare enum ProtectReservedNames {
|
|
|
16
16
|
CONTACT_MOTION_SMARTDETECT_LICENSE = "ContactMotionSmartDetectLicense",
|
|
17
17
|
CONTACT_SENSOR = "ContactSensor",
|
|
18
18
|
CONTACT_SENSOR_ALARM_SOUND = "ContactAlarmSound",
|
|
19
|
+
LIGHTBULB_DOORBELL_VOLUME = "ChimeVolume",
|
|
19
20
|
LIGHTBULB_NIGHTVISION = "NightVision",
|
|
20
21
|
SWITCH_DOORBELL_CHIME_BUZZER = "DoorbellChime.buzzer",
|
|
21
22
|
SWITCH_DOORBELL_CHIME_DIGITAL = "DoorbellChime.digital",
|
package/dist/protect-types.js
CHANGED
|
@@ -16,6 +16,7 @@ export var ProtectReservedNames;
|
|
|
16
16
|
ProtectReservedNames["CONTACT_SENSOR"] = "ContactSensor";
|
|
17
17
|
ProtectReservedNames["CONTACT_SENSOR_ALARM_SOUND"] = "ContactAlarmSound";
|
|
18
18
|
// Manage our lightbulb types.
|
|
19
|
+
ProtectReservedNames["LIGHTBULB_DOORBELL_VOLUME"] = "ChimeVolume";
|
|
19
20
|
ProtectReservedNames["LIGHTBULB_NIGHTVISION"] = "NightVision";
|
|
20
21
|
// Manage our switch types.
|
|
21
22
|
ProtectReservedNames["SWITCH_DOORBELL_CHIME_BUZZER"] = "DoorbellChime.buzzer";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"protect-types.js","sourceRoot":"","sources":["../src/protect-types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,oBAAoB;AACpB,MAAM,UAAU,WAAW,CAAC,KAAa;IAEvC,OAAO,KAAK,CAAC,OAAO,CAAC,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;AACrE,CAAC;AAYD,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAE,CAAC;AAI1F,uBAAuB;AACvB,MAAM,CAAN,IAAY,
|
|
1
|
+
{"version":3,"file":"protect-types.js","sourceRoot":"","sources":["../src/protect-types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,oBAAoB;AACpB,MAAM,UAAU,WAAW,CAAC,KAAa;IAEvC,OAAO,KAAK,CAAC,OAAO,CAAC,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;AACrE,CAAC;AAYD,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAE,CAAC;AAI1F,uBAAuB;AACvB,MAAM,CAAN,IAAY,oBA0BX;AA1BD,WAAY,oBAAoB;IAE9B,mCAAmC;IACnC,+EAAuD,CAAA;IACvD,8FAAsE,CAAA;IACtE,wDAAgC,CAAA;IAChC,wEAAgD,CAAA;IAEhD,8BAA8B;IAC9B,iEAAyC,CAAA;IACzC,6DAAqC,CAAA;IAErC,2BAA2B;IAC3B,6EAAqD,CAAA;IACrD,+EAAuD,CAAA;IACvD,qFAA6D,CAAA;IAC7D,yEAAiD,CAAA;IACjD,+EAAuD,CAAA;IACvD,mEAA2C,CAAA;IAC3C,qEAA6C,CAAA;IAC7C,mEAA2C,CAAA;IAC3C,qEAA6C,CAAA;IAC7C,6DAAqC,CAAA;IACrC,iFAAyD,CAAA;IACzD,yFAAiE,CAAA;IACjE,+EAAuD,CAAA;AACzD,CAAC,EA1BW,oBAAoB,KAApB,oBAAoB,QA0B/B"}
|
|
@@ -190,13 +190,67 @@ const validOption = (device, option) => {
|
|
|
190
190
|
return false;
|
|
191
191
|
}
|
|
192
192
|
|
|
193
|
+
// Test for the explicit exclusion of a property if it's true.
|
|
194
|
+
if(device && option.isNotProperty?.some(x => device[x] === true)) {
|
|
195
|
+
|
|
196
|
+
return false;
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
// Test for device class-specific features and properties.
|
|
200
|
+
switch(device?.modelKey) {
|
|
201
|
+
|
|
202
|
+
case "camera":
|
|
203
|
+
|
|
204
|
+
if(option.hasCameraFeature && !option.hasCameraFeature.some(x => device.featureFlags[x])) {
|
|
205
|
+
|
|
206
|
+
return false;
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
break;
|
|
210
|
+
|
|
211
|
+
case "light":
|
|
212
|
+
|
|
213
|
+
if(option.hasLightProperty && !option.hasLightProperty.some(x => x in device)) {
|
|
214
|
+
|
|
215
|
+
return false;
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
break;
|
|
219
|
+
|
|
220
|
+
case "sensor":
|
|
221
|
+
|
|
222
|
+
if(option.hasSensorProperty && !option.hasSensorProperty.some(x => x in device)) {
|
|
223
|
+
|
|
224
|
+
return false;
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
break;
|
|
228
|
+
|
|
229
|
+
default:
|
|
230
|
+
|
|
231
|
+
break;
|
|
232
|
+
}
|
|
233
|
+
|
|
193
234
|
return true;
|
|
194
235
|
};
|
|
195
236
|
|
|
196
237
|
// Only show feature option categories that are valid for a particular device type.
|
|
197
238
|
const validOptionCategory = (device, category) => {
|
|
198
239
|
|
|
199
|
-
|
|
240
|
+
// Always show all options at the global and controller level.
|
|
241
|
+
if(!device || (device?.modelKey === "nvr")) {
|
|
242
|
+
|
|
243
|
+
return true;
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
// Only show device categories we're explicitly interested in.
|
|
247
|
+
if(!category.modelKey?.some(model => ["all", device.modelKey].includes(model))) {
|
|
248
|
+
|
|
249
|
+
return false;
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
// Test for the explicit exclusion of a property if it's true.
|
|
253
|
+
if(category.isNotProperty?.some(x => device[x] === true)) {
|
|
200
254
|
|
|
201
255
|
return false;
|
|
202
256
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "homebridge-unifi-protect",
|
|
3
|
-
"version": "7.
|
|
3
|
+
"version": "7.7.0",
|
|
4
4
|
"displayName": "Homebridge UniFi Protect",
|
|
5
5
|
"description": "Homebridge UniFi Protect plugin providing complete HomeKit integration for the UniFi Protect ecosystem with full support for most features including autoconfiguration, motion detection, multiple controllers, and realtime updates.",
|
|
6
6
|
"author": {
|
|
@@ -76,9 +76,9 @@
|
|
|
76
76
|
"main": "dist/index.js",
|
|
77
77
|
"dependencies": {
|
|
78
78
|
"@homebridge/plugin-ui-utils": "1.0.3",
|
|
79
|
-
"ffmpeg-for-homebridge": "2.1.
|
|
80
|
-
"homebridge-plugin-utils": "^1.
|
|
81
|
-
"unifi-protect": "^4.15.
|
|
79
|
+
"ffmpeg-for-homebridge": "2.1.2",
|
|
80
|
+
"homebridge-plugin-utils": "^1.9.0",
|
|
81
|
+
"unifi-protect": "^4.15.1",
|
|
82
82
|
"ws": "8.18.0"
|
|
83
83
|
},
|
|
84
84
|
"devDependencies": {
|
|
@@ -90,7 +90,7 @@
|
|
|
90
90
|
"homebridge": "1.8.4",
|
|
91
91
|
"shx": "0.3.4",
|
|
92
92
|
"typescript": "5.6.2",
|
|
93
|
-
"typescript-eslint": "8.
|
|
93
|
+
"typescript-eslint": "8.8.0"
|
|
94
94
|
},
|
|
95
95
|
"optionalDependencies": {
|
|
96
96
|
"bufferutil": "4.0.8"
|