homebridge-unifi-protect 6.19.0 → 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 (44) hide show
  1. package/dist/devices/protect-camera.d.ts +0 -2
  2. package/dist/devices/protect-camera.js +114 -189
  3. package/dist/devices/protect-camera.js.map +1 -1
  4. package/dist/devices/protect-chime.d.ts +3 -0
  5. package/dist/devices/protect-chime.js +100 -28
  6. package/dist/devices/protect-chime.js.map +1 -1
  7. package/dist/devices/protect-device.d.ts +7 -2
  8. package/dist/devices/protect-device.js +147 -98
  9. package/dist/devices/protect-device.js.map +1 -1
  10. package/dist/devices/protect-doorbell.js +48 -81
  11. package/dist/devices/protect-doorbell.js.map +1 -1
  12. package/dist/devices/protect-light.js +33 -43
  13. package/dist/devices/protect-light.js.map +1 -1
  14. package/dist/devices/protect-liveviews.js +10 -20
  15. package/dist/devices/protect-liveviews.js.map +1 -1
  16. package/dist/devices/protect-nvr-systeminfo.js +2 -8
  17. package/dist/devices/protect-nvr-systeminfo.js.map +1 -1
  18. package/dist/devices/protect-securitysystem.d.ts +1 -2
  19. package/dist/devices/protect-securitysystem.js +31 -58
  20. package/dist/devices/protect-securitysystem.js.map +1 -1
  21. package/dist/devices/protect-sensor.d.ts +2 -1
  22. package/dist/devices/protect-sensor.js +137 -184
  23. package/dist/devices/protect-sensor.js.map +1 -1
  24. package/dist/devices/protect-viewer.js +21 -28
  25. package/dist/devices/protect-viewer.js.map +1 -1
  26. package/dist/protect-mqtt.d.ts +2 -2
  27. package/dist/protect-mqtt.js +17 -3
  28. package/dist/protect-mqtt.js.map +1 -1
  29. package/dist/protect-nvr.js +5 -2
  30. package/dist/protect-nvr.js.map +1 -1
  31. package/dist/protect-options.js +6 -5
  32. package/dist/protect-options.js.map +1 -1
  33. package/dist/protect-record.js +8 -8
  34. package/dist/protect-record.js.map +1 -1
  35. package/dist/protect-snapshot.js +8 -0
  36. package/dist/protect-snapshot.js.map +1 -1
  37. package/dist/protect-types.d.ts +3 -0
  38. package/dist/protect-types.js +6 -0
  39. package/dist/protect-types.js.map +1 -1
  40. package/dist/settings.d.ts +1 -0
  41. package/dist/settings.js +2 -0
  42. package/dist/settings.js.map +1 -1
  43. package/homebridge-ui/public/index.html +2 -0
  44. package/package.json +9 -9
@@ -1,5 +1,6 @@
1
1
  import { ProtectCamera, ProtectChime, ProtectDoorbell, ProtectLight, ProtectSensor, ProtectViewer } from "./devices/index.js";
2
2
  import { ProtectCameraConfig, ProtectChimeConfig, ProtectLightConfig, ProtectSensorConfig, ProtectViewerConfig } from "unifi-protect";
3
+ export declare function toCamelCase(input: string): string;
3
4
  export interface ProtectLogging {
4
5
  debug: (message: string, ...parameters: unknown[]) => void;
5
6
  error: (message: string, ...parameters: unknown[]) => void;
@@ -14,9 +15,11 @@ export declare enum ProtectReservedNames {
14
15
  CONTACT_MOTION_SMARTDETECT_LICENSE = "ContactMotionSmartDetectLicense",
15
16
  CONTACT_SENSOR = "ContactSensor",
16
17
  CONTACT_SENSOR_ALARM_SOUND = "ContactAlarmSound",
18
+ SWITCH_DOORBELL_CHIME_BUZZER = "DoorbellChime.buzzer",
17
19
  SWITCH_DOORBELL_CHIME_DIGITAL = "DoorbellChime.digital",
18
20
  SWITCH_DOORBELL_CHIME_MECHANICAL = "DoorbellChime.mechanical",
19
21
  SWITCH_DOORBELL_CHIME_NONE = "DoorbellChime.none",
22
+ SWITCH_DOORBELL_CHIME_SPEAKER = "DoorbellChime.speaker",
20
23
  SWITCH_DOORBELL_TRIGGER = "DoorbellTrigger",
21
24
  SWITCH_DYNAMIC_BITRATE = "DynamicBitrate",
22
25
  SWITCH_HKSV_RECORDING = "HKSVRecordingSwitch",
@@ -2,6 +2,10 @@
2
2
  *
3
3
  * protect-types.ts: Interface and type definitions for UniFi Protect.
4
4
  */
5
+ // Useful utilities.
6
+ export function toCamelCase(input) {
7
+ return input.replace(/(^\w|\s+\w)/g, match => match.toUpperCase());
8
+ }
5
9
  // Protect device categories that we support.
6
10
  export const ProtectDeviceCategories = ["camera", "chime", "light", "sensor", "viewer"];
7
11
  // HBUP reserved names.
@@ -13,9 +17,11 @@ export var ProtectReservedNames;
13
17
  ProtectReservedNames["CONTACT_SENSOR"] = "ContactSensor";
14
18
  ProtectReservedNames["CONTACT_SENSOR_ALARM_SOUND"] = "ContactAlarmSound";
15
19
  // Manage our switch types.
20
+ ProtectReservedNames["SWITCH_DOORBELL_CHIME_BUZZER"] = "DoorbellChime.buzzer";
16
21
  ProtectReservedNames["SWITCH_DOORBELL_CHIME_DIGITAL"] = "DoorbellChime.digital";
17
22
  ProtectReservedNames["SWITCH_DOORBELL_CHIME_MECHANICAL"] = "DoorbellChime.mechanical";
18
23
  ProtectReservedNames["SWITCH_DOORBELL_CHIME_NONE"] = "DoorbellChime.none";
24
+ ProtectReservedNames["SWITCH_DOORBELL_CHIME_SPEAKER"] = "DoorbellChime.speaker";
19
25
  ProtectReservedNames["SWITCH_DOORBELL_TRIGGER"] = "DoorbellTrigger";
20
26
  ProtectReservedNames["SWITCH_DYNAMIC_BITRATE"] = "DynamicBitrate";
21
27
  ProtectReservedNames["SWITCH_HKSV_RECORDING"] = "HKSVRecordingSwitch";
@@ -1 +1 @@
1
- {"version":3,"file":"protect-types.js","sourceRoot":"","sources":["../src/protect-types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAcH,6CAA6C;AAC7C,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAE,CAAC;AAI1F,uBAAuB;AACvB,MAAM,CAAN,IAAY,oBAoBX;AApBD,WAAY,oBAAoB;IAE9B,mCAAmC;IACnC,+EAAuD,CAAA;IACvD,8FAAsE,CAAA;IACtE,wDAAgC,CAAA;IAChC,wEAAgD,CAAA;IAEhD,2BAA2B;IAC3B,+EAAuD,CAAA;IACvD,qFAA6D,CAAA;IAC7D,yEAAiD,CAAA;IACjD,mEAA2C,CAAA;IAC3C,iEAAyC,CAAA;IACzC,qEAA6C,CAAA;IAC7C,mEAA2C,CAAA;IAC3C,qEAA6C,CAAA;IAC7C,iFAAyD,CAAA;IACzD,yFAAiE,CAAA;IACjE,+EAAuD,CAAA;AACzD,CAAC,EApBW,oBAAoB,KAApB,oBAAoB,QAoB/B"}
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;AAWD,6CAA6C;AAC7C,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAE,CAAC;AAI1F,uBAAuB;AACvB,MAAM,CAAN,IAAY,oBAsBX;AAtBD,WAAY,oBAAoB;IAE9B,mCAAmC;IACnC,+EAAuD,CAAA;IACvD,8FAAsE,CAAA;IACtE,wDAAgC,CAAA;IAChC,wEAAgD,CAAA;IAEhD,2BAA2B;IAC3B,6EAAqD,CAAA;IACrD,+EAAuD,CAAA;IACvD,qFAA6D,CAAA;IAC7D,yEAAiD,CAAA;IACjD,+EAAuD,CAAA;IACvD,mEAA2C,CAAA;IAC3C,iEAAyC,CAAA;IACzC,qEAA6C,CAAA;IAC7C,mEAA2C,CAAA;IAC3C,qEAA6C,CAAA;IAC7C,iFAAyD,CAAA;IACzD,yFAAiE,CAAA;IACjE,+EAAuD,CAAA;AACzD,CAAC,EAtBW,oBAAoB,KAApB,oBAAoB,QAsB/B"}
@@ -4,6 +4,7 @@ export declare const PROTECT_CONTROLLER_REFRESH_INTERVAL = 120;
4
4
  export declare const PROTECT_CONTROLLER_RETRY_INTERVAL = 10;
5
5
  export declare const PROTECT_DEVICE_REMOVAL_DELAY_INTERVAL = 60;
6
6
  export declare const PROTECT_DOORBELL_CHIME_DURATION_DIGITAL = 1000;
7
+ export declare const PROTECT_DOORBELL_CHIME_SPEAKER_DURATION = 3500;
7
8
  export declare const PROTECT_DOORBELL_TRIGGER_DURATION = 5000;
8
9
  export declare const PROTECT_FFMPEG_AUDIO_FILTER_FFTNR = 90;
9
10
  export declare const PROTECT_FFMPEG_AUDIO_FILTER_HIGHPASS = 200;
package/dist/settings.js CHANGED
@@ -14,6 +14,8 @@ export const PROTECT_CONTROLLER_RETRY_INTERVAL = 10;
14
14
  export const PROTECT_DEVICE_REMOVAL_DELAY_INTERVAL = 60;
15
15
  // Default duration, in milliseconds, of a physical digital chime attached to a Protect doorbell. This value comes from UniFi Protect itself.
16
16
  export const PROTECT_DOORBELL_CHIME_DURATION_DIGITAL = 1000;
17
+ // Default duration, in milliseconds, to wait before allowing another trigger of the buzzer or speaker on the chime.
18
+ export const PROTECT_DOORBELL_CHIME_SPEAKER_DURATION = 3500;
17
19
  // Default duration, in milliseconds, of the trigger switch for a Protect doorbell, primarily for automation purposes.
18
20
  export const PROTECT_DOORBELL_TRIGGER_DURATION = 5000;
19
21
  // FFmpeg afftdn audio filter defaults - this setting uses FFTs to reduce noise in an audio signal by the number of decibels below.
@@ -1 +1 @@
1
- {"version":3,"file":"settings.js","sourceRoot":"","sources":["../src/settings.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,0BAA0B;AAC1B,MAAM,CAAC,MAAM,WAAW,GAAG,0BAA0B,CAAC;AAEtD,mCAAmC;AACnC,MAAM,CAAC,MAAM,aAAa,GAAG,eAAe,CAAC;AAE7C,yFAAyF;AACzF,MAAM,CAAC,MAAM,mCAAmC,GAAG,GAAG,CAAC;AAEvD,0GAA0G;AAC1G,MAAM,CAAC,MAAM,iCAAiC,GAAG,EAAE,CAAC;AAEpD,mFAAmF;AACnF,MAAM,CAAC,MAAM,qCAAqC,GAAG,EAAE,CAAC;AAExD,6IAA6I;AAC7I,MAAM,CAAC,MAAM,uCAAuC,GAAG,IAAI,CAAC;AAE5D,sHAAsH;AACtH,MAAM,CAAC,MAAM,iCAAiC,GAAG,IAAI,CAAC;AAEtD,mIAAmI;AACnI,MAAM,CAAC,MAAM,iCAAiC,GAAG,EAAE,CAAC;AAEpD,4GAA4G;AAC5G,MAAM,CAAC,MAAM,oCAAoC,GAAG,GAAG,CAAC;AAExD,2GAA2G;AAC3G,MAAM,CAAC,MAAM,mCAAmC,GAAG,IAAI,CAAC;AAExD,+DAA+D;AAC/D,MAAM,CAAC,MAAM,sBAAsB,GAAG,EAAE,CAAC;AAEzC,yHAAyH;AACzH,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAAC,CAAC;AAE/C,oGAAoG;AACpG,MAAM,CAAC,MAAM,2BAA2B,GAAG,IAAI,CAAC;AAEhD,kKAAkK;AAClK,MAAM,CAAC,MAAM,+BAA+B,GAAG,GAAG,CAAC;AAEnD,mJAAmJ;AACnJ,MAAM,CAAC,MAAM,uCAAuC,GAAG,2BAA2B,GAAG,CAAC,CAAC;AAEvF,+IAA+I;AAC/I,MAAM,CAAC,MAAM,kCAAkC,GAAG,EAAE,CAAC;AAErD,mEAAmE;AACnE,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,CAAC;AAE9C,wJAAwJ;AACxJ,MAAM,CAAC,MAAM,yBAAyB,GAAG,KAAK,CAAC;AAE/C,0HAA0H;AAC1H,MAAM,CAAC,MAAM,uBAAuB,GAAG,EAAE,CAAC;AAE1C,oGAAoG;AACpG,MAAM,CAAC,MAAM,+BAA+B,GAAG,EAAE,CAAC;AAElD,uGAAuG;AACvG,MAAM,CAAC,MAAM,kBAAkB,GAAG,eAAe,CAAC;AAElD,qDAAqD;AACrD,MAAM,CAAC,MAAM,0BAA0B,GAAG,GAAG,CAAC;AAE9C,2EAA2E;AAC3E,MAAM,CAAC,MAAM,uBAAuB,GAAG,GAAG,CAAC;AAE3C,wCAAwC;AACxC,MAAM,CAAC,MAAM,6BAA6B,GAAG,EAAE,CAAC;AAEhD,6JAA6J;AAC7J,MAAM,CAAC,MAAM,iCAAiC,GAAG,CAAC,CAAC"}
1
+ {"version":3,"file":"settings.js","sourceRoot":"","sources":["../src/settings.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,0BAA0B;AAC1B,MAAM,CAAC,MAAM,WAAW,GAAG,0BAA0B,CAAC;AAEtD,mCAAmC;AACnC,MAAM,CAAC,MAAM,aAAa,GAAG,eAAe,CAAC;AAE7C,yFAAyF;AACzF,MAAM,CAAC,MAAM,mCAAmC,GAAG,GAAG,CAAC;AAEvD,0GAA0G;AAC1G,MAAM,CAAC,MAAM,iCAAiC,GAAG,EAAE,CAAC;AAEpD,mFAAmF;AACnF,MAAM,CAAC,MAAM,qCAAqC,GAAG,EAAE,CAAC;AAExD,6IAA6I;AAC7I,MAAM,CAAC,MAAM,uCAAuC,GAAG,IAAI,CAAC;AAE5D,oHAAoH;AACpH,MAAM,CAAC,MAAM,uCAAuC,GAAG,IAAI,CAAC;AAE5D,sHAAsH;AACtH,MAAM,CAAC,MAAM,iCAAiC,GAAG,IAAI,CAAC;AAEtD,mIAAmI;AACnI,MAAM,CAAC,MAAM,iCAAiC,GAAG,EAAE,CAAC;AAEpD,4GAA4G;AAC5G,MAAM,CAAC,MAAM,oCAAoC,GAAG,GAAG,CAAC;AAExD,2GAA2G;AAC3G,MAAM,CAAC,MAAM,mCAAmC,GAAG,IAAI,CAAC;AAExD,+DAA+D;AAC/D,MAAM,CAAC,MAAM,sBAAsB,GAAG,EAAE,CAAC;AAEzC,yHAAyH;AACzH,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAAC,CAAC;AAE/C,oGAAoG;AACpG,MAAM,CAAC,MAAM,2BAA2B,GAAG,IAAI,CAAC;AAEhD,kKAAkK;AAClK,MAAM,CAAC,MAAM,+BAA+B,GAAG,GAAG,CAAC;AAEnD,mJAAmJ;AACnJ,MAAM,CAAC,MAAM,uCAAuC,GAAG,2BAA2B,GAAG,CAAC,CAAC;AAEvF,+IAA+I;AAC/I,MAAM,CAAC,MAAM,kCAAkC,GAAG,EAAE,CAAC;AAErD,mEAAmE;AACnE,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,CAAC;AAE9C,wJAAwJ;AACxJ,MAAM,CAAC,MAAM,yBAAyB,GAAG,KAAK,CAAC;AAE/C,0HAA0H;AAC1H,MAAM,CAAC,MAAM,uBAAuB,GAAG,EAAE,CAAC;AAE1C,oGAAoG;AACpG,MAAM,CAAC,MAAM,+BAA+B,GAAG,EAAE,CAAC;AAElD,uGAAuG;AACvG,MAAM,CAAC,MAAM,kBAAkB,GAAG,eAAe,CAAC;AAElD,qDAAqD;AACrD,MAAM,CAAC,MAAM,0BAA0B,GAAG,GAAG,CAAC;AAE9C,2EAA2E;AAC3E,MAAM,CAAC,MAAM,uBAAuB,GAAG,GAAG,CAAC;AAE3C,wCAAwC;AACxC,MAAM,CAAC,MAAM,6BAA6B,GAAG,EAAE,CAAC;AAEhD,6JAA6J;AAC7J,MAAM,CAAC,MAAM,iCAAiC,GAAG,CAAC,CAAC"}
@@ -90,6 +90,8 @@
90
90
 
91
91
  <ul dir="auto">
92
92
  <li><a target="_blank" href="https://github.com/hjdhjd/homebridge-myq">homebridge-myQ: Liftmaster and Chamberlain garage door and gate opener support for HomeKit</a></li>
93
+ <li><a target="_blank" href="https://github.com/hjdhjd/homebridge-ratgdo">homebridge-ratgdo: Ratgdo (non-myQ Liftmaster and Chamberlain) garage door and gate opener support for HomeKit</a></li> </ul>
94
+ <li><a target="_blank" href="https://github.com/hjdhjd/homebridge-unifi-access">homebridge-unifi-access: HomeKit integration for the UniFi Access ecosystem</a></li>
93
95
  </ul>
94
96
  </div>
95
97
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "homebridge-unifi-protect",
3
- "version": "6.19.0",
3
+ "version": "6.20.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": {
@@ -66,32 +66,32 @@
66
66
  "scripts": {
67
67
  "build": "rimraf ./dist && tsc",
68
68
  "clean": "rimraf ./dist",
69
- "lint": "eslint src/**.ts",
69
+ "lint": "eslint src/**.ts src/devices/**.ts src/ffmpeg/**.ts",
70
70
  "jlint": "eslint homebridge-ui/public/**.mjs",
71
71
  "postpublish": "npm run clean",
72
72
  "prepublishOnly": "npm run lint && npm run build",
73
- "test": "eslint src/**.ts",
73
+ "test": "eslint src/**.ts src/devices/**.ts src/ffmpeg/**.ts",
74
74
  "watch": "npm run build && npm link && nodemon"
75
75
  },
76
76
  "main": "dist/index.js",
77
77
  "dependencies": {
78
- "@homebridge/plugin-ui-utils": "1.0.1",
78
+ "@homebridge/plugin-ui-utils": "1.0.2",
79
79
  "ffmpeg-for-homebridge": "2.1.1",
80
- "mqtt": "5.4.0",
80
+ "mqtt": "5.5.0",
81
81
  "unifi-protect": "^4.8.2",
82
82
  "ws": "8.16.0"
83
83
  },
84
84
  "devDependencies": {
85
85
  "@stylistic/eslint-plugin": "1.7.0",
86
- "@types/node": "20.11.28",
86
+ "@types/node": "20.12.2",
87
87
  "@types/readable-stream": "4.0.11",
88
88
  "@types/ws": "8.5.10",
89
- "@typescript-eslint/eslint-plugin": "7.2.0",
90
- "@typescript-eslint/parser": "7.2.0",
89
+ "@typescript-eslint/eslint-plugin": "7.4.0",
90
+ "@typescript-eslint/parser": "7.4.0",
91
91
  "eslint": "8.57.0",
92
92
  "homebridge": "1.7.0",
93
93
  "nodemon": "3.1.0",
94
94
  "rimraf": "5.0.5",
95
- "typescript": "5.4.2"
95
+ "typescript": "5.4.3"
96
96
  }
97
97
  }