From 837e1229aa5db06304a2ce9a9926e1e3bcdd4d29 Mon Sep 17 00:00:00 2001 From: HJD Date: Sun, 29 Sep 2024 20:06:00 -0500 Subject: [PATCH] v7.6.0. --- docs/Autoconfiguration.md | 10 +++++++--- docs/Changelog.md | 7 +++++++ docs/FeatureOptions.md | 17 +++++++++-------- docs/MQTT.md | 4 ++-- package-lock.json | 16 ++++++++-------- package.json | 4 ++-- 6 files changed, 35 insertions(+), 23 deletions(-) diff --git a/docs/Autoconfiguration.md b/docs/Autoconfiguration.md index 3b721ab..8283fa9 100644 --- a/docs/Autoconfiguration.md +++ b/docs/Autoconfiguration.md @@ -37,7 +37,7 @@ Briefly: #### Transcoding Customization -HomeKit bitrates are notoriously conservative from a bandwidth perspective - they're downright low and result can result in far less than ideal video quality. You can further adjust the bitrates used for local and non-local streaming when transcoded, using HBUP's feature options. +HomeKit bitrates are notoriously conservative from a bandwidth and quality perspective - they're downright low and result can result in far less than ideal video quality. You can further customize the bitrates used for local and non-local streaming when transcoded, using HBUP's feature options. The defaault behavior can be tailored to your preferences, using the appropriate [feature options](https://github.com/hjdhjd/homebridge-unifi-protect/blob/main/docs/FeatureOptions.md#video). @@ -46,6 +46,9 @@ When transcoding, these are the rules used to determine which Protect camera str ##### Livestreams +In order, the following occurs: + +* If you have HomeKit Secure Video enabled, we will always use the existing video that's being captured through the Protect API. The quality setting used for HKSV event recording will be the input quality for a HomeKit livestream session. You can change this behavior through disabling the use of the livestream API using the appropriate [feature option](https://github.com/hjdhjd/homebridge-unifi-protect/blob/main/docs/FeatureOptions.md#video). If use of the Protect API has been disabled for livestreams, or you aren't using HKSV, keep reading. * If you’re on a hardware accelerated platform, we always use the highest quality camera stream that's available to us as a starting point when transcoding. It always yields better performance and quality results for fixed-function hardware transcoders (e.g. most GPUs). * If you’re not on a hardware accelerated platform, we always try to match the quality that’s being requested, with a bias of going higher versus lower, and then passing that along to the software transcoder. @@ -55,9 +58,10 @@ When transcoding, these are the rules used to determine which Protect camera str * On Raspberry Pi platform, the software interface to the onboard GPU transcoder has issues dealing with very high bitrate stream quality and HBUP will default to a starting point of **Medium** because of those capability constraints. #### Customizing Defaults -All of the behavior described above can be tailored to your environment and taste through the HBUP feature options webUI. Specifically, you can: +The behavior described above can be tailored to your environment and taste through the HBUP feature options webUI. Specifically, you can: -* Choose to transcode instead of transmux for local clients or not. **Default: transmux local clients.** +* Choose to not use the Protect livestream API for livestreaming. **Default: use the Protect livestream API when possible.** +* Choose to transmux instead of transcode for local clients or not. **Default: transcode local clients.** * Choose to transmux instead of transcode for high-latency / remote clients. **Default: transcode high-latency / remote clients.** * Which Protect stream qualities to make available for HBUP. **Default: all stream qualities are available (High, Medium, and Low) that are configured on the Protect camera.** * Bypass the intelligence applied by HBUP when selecting which Protect stream quality to use for transcoding livestreams by forcing the use of a specific Protect stream quality. **Default: HBUP will decide based on the transcoding rules above.** diff --git a/docs/Changelog.md b/docs/Changelog.md index 4a7d6dd..a89a6a6 100644 --- a/docs/Changelog.md +++ b/docs/Changelog.md @@ -2,6 +2,13 @@ All notable changes to this project will be documented in this file. This project uses [semantic versioning](https://semver.org/). +## 7.6.0 (2024-09-29) + * **Note: HBUP now requires Protect v5 as if this release. Prior versions of Protect are no longer supported.** + * Behavior change: Protect v5 has significantly changed interactions between doorbell cameras and chimes. As a result of Ubiquiti's changes, Protect chimes cannot have their volume controlled individually any longer. For the time being, it seems Protect's still permitting individual chimes to play unique ringtones and that functionality remains in HBUP. Volume control for Protect chimes attached to Protect doorbells can be enabled by a feature option, allowing you to control the volume across all Protect chimes paired to a particular doorbell. + * New feature: Protect doorbell chime support is now available through Protect doorbells. You can find the relevant feature option under the doorbell section in the HBUP webUI. + * New feature: third party cameras in Protect via ONVIF are now supported in HBUP, with constraints: there's no motion sensor exposed by the Protect controller, which means HKSV is unavailable to these cameras, as are any unique camera-specific controls. + * Housekeeping. + ## 7.5.2 (2024-09-28) * **Note: this will likely be the final version of HBUP to support Protect v4. Protect v5 has several breaking changes that I'll be addressing in future updates, most notably in the way Protect chimes now work, making them far less customizable than previously. Stay tuned for those updates.** * Improvement: HKSV performance and error rates should be noticeably improved. Thanks to @rasod for providing some good comparative logs to help me track this down. diff --git a/docs/FeatureOptions.md b/docs/FeatureOptions.md index ae64c4e..f6dc3c3 100644 --- a/docs/FeatureOptions.md +++ b/docs/FeatureOptions.md @@ -63,10 +63,10 @@ These option(s) apply to: all Protect device types. | Option | Description |--------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | `Device` | Make this device available in HomeKit. **(default: enabled)**. -| `Device.StatusLed` | Enable the status indicator light for this device in HomeKit. **(default: enabled)**.
*Supported on Protect devices that have a status indicator light.* -| `Device.StatusLed.Switch` | Add a switch accessory to control the status indicator light in HomeKit. **(default: disabled)**.
*Supported on Protect devices that have a status indicator light.* -| `Device.NightVision` | Enable the night vision indicator light for this device in HomeKit. **(default: enabled)**.
*Supported on Protect devices that have infrared.* -| `Device.NightVision.Dimmer` | Add a dimmer accessory to control the night vision state in HomeKit. **(default: disabled)**.
*Supported on Protect devices that have infrared.* +| `Device.StatusLed` | Enable the status indicator light for this device in HomeKit. **(default: enabled)**.
*Supported on Protect devices with a status LED.* +| `Device.StatusLed.Switch` | Add a switch accessory to control the status indicator light in HomeKit. **(default: disabled)**.
*Supported on Protect devices with a status LED.* +| `Device.NightVision` | Enable the night vision indicator light for this device in HomeKit. **(default: enabled)**.
*Supported on Protect devices that have infrared LEDs.* +| `Device.NightVision.Dimmer` | Add a dimmer accessory to control the night vision state in HomeKit. **(default: disabled)**.
*Supported on Protect devices that have infrared LEDs.* | `Device.Standalone` | Make this a standalone device in HomeKit that will need to be added to HomeKit through the Home app. **(default: disabled)**. | `Device.SyncName` | Synchronize the UniFi Protect name of this device with HomeKit. Synchronization is one-way only, syncing the device name from UniFi Protect to HomeKit. **(default: disabled)**. @@ -78,9 +78,10 @@ These option(s) apply to: Protect cameras. |--------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | `Doorbell.Messages` | Enable the doorbell messages feature. **(default: enabled)**.
*Supported on Protect devices that have a doorbell.* | `Doorbell.Messages.FromDoorbell` | Use messages saved to the Protect NVR as message switches. **(default: enabled)**.
*Supported on Protect devices that have a doorbell.* +| `Doorbell.Volume.Dimmer` | Add a dimmer accessory to control the Protect chime volume in HomeKit. **(default: disabled)**.
*Supported on Protect devices that have a doorbell.* | `Doorbell.PhysicalChime` | Add switch accessories to control the physical chimes attached to a Protect doorbell. **(default: disabled)**.
*Supported on Protect devices that have a physical chime.* | `Doorbell.PhysicalChime.Duration.Digital.Value` | Chime duration, in milliseconds, of a digital physical chime attached to a Protect doorbell. **(default: 1000)**.
*Supported on Protect devices that have a physical chime.* -| `Doorbell.Trigger` | Add a switch accessory to trigger doorbell ring events on a Protect camera or doorbell. **(default: disabled)**.
*Supported on Protect cameras that have a motion sensor.* +| `Doorbell.Trigger` | Add a switch accessory to trigger doorbell ring events on a Protect camera or doorbell. **(default: disabled)**. #### Logging feature options. @@ -88,8 +89,8 @@ These option(s) apply to: Protect cameras, Protect lights, and Protect sensors. | Option | Description |--------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ -| `Log.Doorbell` | Log doorbell ring events in Homebridge. **(default: enabled)**.
*Supported on Protect cameras that have a motion sensor.* -| `Log.HKSV` | Log HomeKit Secure Video recording events in Homebridge. **(default: disabled)**.
*Supported on Protect cameras that have a motion sensor.* +| `Log.Doorbell` | Log doorbell ring events in Homebridge. **(default: enabled)**.
*Supported on Protect cameras.* +| `Log.HKSV` | Log HomeKit Secure Video recording events in Homebridge. **(default: disabled)**.
*Supported on Protect cameras.* | `Log.Motion` | Log motion events in Homebridge. **(default: disabled)**.
*Supported on Protect devices that have a motion sensor.* #### Motion detection feature options. @@ -137,7 +138,7 @@ These option(s) apply to: Protect cameras and Protect controllers. #### Security system feature options. -These option(s) apply to: Protect cameras and Protect controllers. +These option(s) apply to: Protect controllers. | Option | Description |--------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ diff --git a/docs/MQTT.md b/docs/MQTT.md index 676d695..d1daca0 100644 --- a/docs/MQTT.md +++ b/docs/MQTT.md @@ -91,8 +91,8 @@ The topics that `homebridge-unifi-protect` subscribes to are: |-------------------------|---------------------|------------------ | `alarm/get` | Sensor | `true` will trigger a publish event of the current alarm state for a UniFi Protect sensor. | `ambientlight/get` | Sensor | `true` will trigger a publish event of the ambient light level, in lux, for a UniFi Protect sensor. -| `chime/get` | Chime | `true` will trigger a publish event of the volume level for a UniFi Protect chime. -| `chime/set` | Chime | A number between 0 and 100 that will set the volume level for a UniFi Protect chime. +| `chime/get` | Chime | `true` will trigger a publish event of the volume level for a UniFi Protect doorbell. +| `chime/set` | Chime | A number between 0 and 100 that will set the volume level for a UniFi Protect doorbell. | `contact/get` | Sensor | `true` will trigger a publish event of the current contact state for a UniFi Protect sensor. Note: UniFi Protect will set this state differently depending on the placement type you select in the Protect app or the Protect webUI. | `doorbell/set` | Doorbell | `true` will trigger the camera (if set as doorbell) or doorbell to generate a ring event. | `humidity/get` | Sensor | `true` will trigger a publish event of the humidity level, as a percentage, for a UniFi Protect sensor. diff --git a/package-lock.json b/package-lock.json index 06f1eb6..766302f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,18 +1,18 @@ { "name": "homebridge-unifi-protect", - "version": "7.5.2", + "version": "7.6.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "homebridge-unifi-protect", - "version": "7.5.2", + "version": "7.6.0", "license": "ISC", "dependencies": { "@homebridge/plugin-ui-utils": "1.0.3", "ffmpeg-for-homebridge": "2.1.1", "homebridge-plugin-utils": "^1.8.2", - "unifi-protect": "^4.15.0", + "unifi-protect": "^4.15.1", "ws": "8.18.0" }, "devDependencies": { @@ -55,7 +55,7 @@ } }, "../unifi-protect": { - "version": "4.15.0", + "version": "4.15.1", "extraneous": true, "license": "ISC", "dependencies": { @@ -64,7 +64,7 @@ }, "devDependencies": { "@stylistic/eslint-plugin": "2.8.0", - "@types/node": "22.7.2", + "@types/node": "22.7.4", "@types/ws": "8.5.12", "eslint": "9.11.1", "homebridge": "1.8.4", @@ -3586,9 +3586,9 @@ "license": "MIT" }, "node_modules/unifi-protect": { - "version": "4.15.0", - "resolved": "https://registry.npmjs.org/unifi-protect/-/unifi-protect-4.15.0.tgz", - "integrity": "sha512-rtkkBwWcTaIBlvwohkaDJaTEgJwhj5/YDKsmDQiR8opINOTO4F4EhvNqHaN706MU1ambwicE65TEURXxDZEtCw==", + "version": "4.15.1", + "resolved": "https://registry.npmjs.org/unifi-protect/-/unifi-protect-4.15.1.tgz", + "integrity": "sha512-/3QG+pW74AtaZKOY/JB+7iW1+Cp1lM7tsj1UsUjeCdaRCyktVkN0Qwrv7XHxUDAreskeOrdqnl/X6kOqzdx+Tw==", "license": "ISC", "dependencies": { "@adobe/fetch": "4.1.9", diff --git a/package.json b/package.json index 9f961bf..02471d3 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "homebridge-unifi-protect", - "version": "7.5.2", + "version": "7.6.0", "displayName": "Homebridge UniFi Protect", "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.", "author": { @@ -78,7 +78,7 @@ "@homebridge/plugin-ui-utils": "1.0.3", "ffmpeg-for-homebridge": "2.1.1", "homebridge-plugin-utils": "^1.8.2", - "unifi-protect": "^4.15.0", + "unifi-protect": "^4.15.1", "ws": "8.18.0" }, "devDependencies": {