diff --git a/README.md b/README.md index 8fadf7d..f213610 100644 --- a/README.md +++ b/README.md @@ -24,6 +24,8 @@ What does *just works* mean in practice? It means that this plugin will discover - **Support for multiple controllers.** This plugin can support multiple UniFi Protect controllers. If you have more than one controller, it's easy to add them to this plugin, and integrate them seamlessly into HomeKit. +- **Doorbell ring support** This plugin provides support for [UniFi Protect G4 Doorbell](https://store.ui.com/collections/unifi-protect/products/uvc-g4-doorbell). We currently support doorbell rings, motion detection, video, and receiving audio. *Using the microphone to send audio is not currently supported*. + - **Automatic *continuous* detection and configuration of all UniFi Protect devices.** By default - all of your supported UniFi Protect devices are made available in HomeKit without needing any further configuration on your part. Additionally, if you add or remove cameras or other devices to your UniFi Protect controller, this plugin will autodetect those configuration changes and add or remove those devices in HomeKit, seamlessly, *in realtime*. - **The ability to [selectively hide and show](https://github.com/hjdhjd/homebridge-unifi-protect2/blob/master/docs/FeatureOptions.md) specific Protect devices.** For those who only want to show particular devices in HomeKit, or particular controllers, a flexible and intuitive way to configure device availability at a granular level is available. @@ -38,8 +40,11 @@ What does *just works* mean in practice? It means that this plugin will discover ### What's not in this plugin right now -Full support for UniFi Protect doorbells such as the [UniFi Protect G4 Doorbell](https://store.ui.com/collections/unifi-protect/products/uvc-g4-doorbell). I would love to add more complete support for the doorbell, but until I can get my hands on one, the best I can do at the moment is provide support for the camera itself, but not the full doorbell functionality. I hope to resolve this in the near future. +Microphone support / two-way audio for UniFi Protect doorbell devices such as the [G4 Doorbell](https://store.ui.com/collections/unifi-protect/products/uvc-g4-doorbell). I'd love to get there with two-way audio, but we need further reverse engineering of the Protect API to do it, or an official API from Ubiquiti (this is unlikely to happen, so reverse engineering it is). + +Currently, we support doorbell ring events, motion sensor, and incoming video. +I hope to continue to work on this one to get two-way audio working. The game plan right now is to figure out how Protect is currently transmitting audio back to the doorbell and see how we can emulate it. ## Documentation * Getting going diff --git a/docs/Changelog.md b/docs/Changelog.md index 4ee1e7a..a39311b 100644 --- a/docs/Changelog.md +++ b/docs/Changelog.md @@ -2,6 +2,12 @@ All notable changes to this project will be documented in this file. This project uses [semantic versioning](https://semver.org/). +## 3.2.0 (2020-08-16) + * New feature: initial support for UniFi Protect G4 Doorbell. We support doorbell rings, video, and receiving audio in this release. + * Enhancement: enable connection reuse (aka keepalives) on UniFi OS platforms. + * Fix: correct a race condition that can occur when adding new cameras in realtime. + * Fix: refresh Protect controller security credentials on a regular basis. + ## 3.1.3 (2020-08-12) * Minor updates to support libraries and some housekeeping. diff --git a/package-lock.json b/package-lock.json index c67ad44..84a3522 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "homebridge-unifi-protect2", - "version": "3.1.3", + "version": "3.2.0", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -238,9 +238,9 @@ "dev": true }, "ajv": { - "version": "6.12.3", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.3.tgz", - "integrity": "sha512-4K0cK3L1hsqk9xIb2z9vs/XU+PGJZ9PNpJRDS9YLzmNdX6jmVPfamLvTJr0aDAusnHyCHO6MjzlkAsgtqp9teA==", + "version": "6.12.4", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.4.tgz", + "integrity": "sha512-eienB2c9qVQs2KWexhkrdMLVDoIQCz5KSeLxwg9Lzk4DOfBtIK9PQwwufcsn1jjGuf9WZmqPMbGxOzfcuphJCQ==", "dev": true, "requires": { "fast-deep-equal": "^3.1.1", @@ -626,9 +626,9 @@ "dev": true }, "eslint": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.6.0.tgz", - "integrity": "sha512-QlAManNtqr7sozWm5TF4wIH9gmUm2hE3vNRUvyoYAa4y1l5/jxD/PQStEjBMQtCqZmSep8UxrcecI60hOpe61w==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.7.0.tgz", + "integrity": "sha512-1KUxLzos0ZVsyL81PnRN335nDtQ8/vZUD6uMtWbF+5zDtjKcsklIi78XoE0MVL93QvWTu+E5y44VyyCsOMBrIg==", "dev": true, "requires": { "@babel/code-frame": "^7.0.0", @@ -922,9 +922,9 @@ } }, "hap-nodejs": { - "version": "0.7.7", - "resolved": "https://registry.npmjs.org/hap-nodejs/-/hap-nodejs-0.7.7.tgz", - "integrity": "sha512-fWpWVJRe4kWz0/fNiDUKdTghuzKjqfmJ+cHoDqoSwwXHlCXLgdOXNEqoRx7pU8/nSlvte5ui2Q5lxSafTnB8tw==", + "version": "0.7.8", + "resolved": "https://registry.npmjs.org/hap-nodejs/-/hap-nodejs-0.7.8.tgz", + "integrity": "sha512-j8px+bB01l+siATd/ZesDE4Hs/Fv2P2q6GBZHRVoXcEz/iaf8MF3eVpc+G/c7Gsox418rkYmOqGjLM6SakM+zw==", "dev": true, "requires": { "bonjour-hap": "~3.5.10", @@ -935,14 +935,6 @@ "ip": "^1.1.3", "node-persist": "^0.0.11", "tweetnacl": "^1.0.3" - }, - "dependencies": { - "tweetnacl": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz", - "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==", - "dev": true - } } }, "has": { @@ -967,9 +959,9 @@ "dev": true }, "homebridge": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/homebridge/-/homebridge-1.1.1.tgz", - "integrity": "sha512-eOmHjRSkmkCD3iUqQKAo1fcSFs8gZCAW4LVjBYpxH6mEgKQlYxh9tUtgEIzny6bkplYmOOahQPHSjzfNTDjr6w==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/homebridge/-/homebridge-1.1.2.tgz", + "integrity": "sha512-Ckcdh5wfarCODV4jr1APHYHS5CDl8cCvLXco01rcoEAx6ytjufSlmX6kyo7mtQGMoF8vaKyBy5K1FBwVi+C46A==", "dev": true, "requires": { "chalk": "^4.1.0", @@ -1093,9 +1085,9 @@ "dev": true }, "is-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.0.tgz", - "integrity": "sha512-iI97M8KTWID2la5uYXlkbSDQIg4F6o1sYboZKKTDpnDQMLtUL86zxhgDet3Q2SriaYsyGqZ6Mn2SjbRKeLHdqw==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.1.tgz", + "integrity": "sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg==", "dev": true, "requires": { "has-symbols": "^1.0.1" @@ -1706,6 +1698,12 @@ "tslib": "^1.8.1" } }, + "tweetnacl": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz", + "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==", + "dev": true + }, "type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", diff --git a/package.json b/package.json index f538d2c..89a3f29 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "homebridge-unifi-protect2", - "version": "3.1.3", + "version": "3.2.0", "displayName": "Homebridge UniFi Protect", "description": "Complete HomeKit integration for UniFi Protect with full support for most features including autoconfiguration, motion detection, and multiple controllers.", "author": "HJD https://github.com/hjdhjd", @@ -42,7 +42,7 @@ "uvc g4 pro" ], "engines": { - "homebridge": ">=1.0.0" + "homebridge": ">=1.1.0" }, "scripts": { "build": "rimraf ./dist && tsc", @@ -72,8 +72,8 @@ "@types/ws": "^7.2.6", "@typescript-eslint/eslint-plugin": "^3.9.0", "@typescript-eslint/parser": "^3.9.0", - "eslint": "^7.6.0", - "homebridge": "^1.1.1", + "eslint": "^7.7.0", + "homebridge": "^1.1.2", "rimraf": "^3.0.2", "typescript": "^3.9.7" },