homebridge-unifi-protect 5.3.4 → 5.4.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/config.schema.json +1 -1
- package/dist/protect-accessory.js +37 -36
- package/dist/protect-accessory.js.map +1 -1
- package/dist/protect-camera.js +268 -92
- package/dist/protect-camera.js.map +1 -1
- package/dist/protect-ffmpeg-record.js +54 -39
- package/dist/protect-ffmpeg-record.js.map +1 -1
- package/dist/protect-ffmpeg-stream.js +0 -2
- package/dist/protect-ffmpeg-stream.js.map +1 -1
- package/dist/protect-ffmpeg.js +27 -13
- package/dist/protect-ffmpeg.js.map +1 -1
- package/dist/protect-nvr-events.js +19 -12
- package/dist/protect-nvr-events.js.map +1 -1
- package/dist/protect-record.js +140 -73
- package/dist/protect-record.js.map +1 -1
- package/dist/protect-securitysystem.js +1 -1
- package/dist/protect-securitysystem.js.map +1 -1
- package/dist/protect-sensor.js +4 -4
- package/dist/protect-sensor.js.map +1 -1
- package/dist/protect-stream.js +80 -59
- package/dist/protect-stream.js.map +1 -1
- package/dist/protect-timeshift.js +46 -62
- package/dist/protect-timeshift.js.map +1 -1
- package/dist/settings.js +4 -5
- package/dist/settings.js.map +1 -1
- package/package.json +9 -9
package/config.schema.json
CHANGED
|
@@ -171,7 +171,7 @@
|
|
|
171
171
|
"title": "Video Encoder",
|
|
172
172
|
"required": false,
|
|
173
173
|
"placeholder": "e.g. h264_omx",
|
|
174
|
-
"description": "FFmpeg video encoder to use for transcoding. Useful for hardware-accelerated video encoding such as on a Raspberry Pi. Default: libx264."
|
|
174
|
+
"description": "FFmpeg video encoder to use for transcoding. Useful for hardware-accelerated video encoding such as on a Raspberry Pi. This option is provided with no support. Many hardware video encoders are notorious for producing bad video quality, errors and other artifacts. Default: libx264."
|
|
175
175
|
},
|
|
176
176
|
|
|
177
177
|
"videoProcessor": {
|
|
@@ -1,15 +1,22 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ProtectAccessory = exports.ProtectBase = exports.
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
3
|
+
exports.ProtectAccessory = exports.ProtectBase = exports.ProtectReservedNames = void 0;
|
|
4
|
+
var ProtectReservedNames;
|
|
5
|
+
(function (ProtectReservedNames) {
|
|
6
|
+
// Manage our contact sensor types.
|
|
7
|
+
ProtectReservedNames["CONTACT_MOTION_SMARTDETECT"] = "ContactMotionSmartDetect";
|
|
8
|
+
ProtectReservedNames["CONTACT_SENSOR"] = "ContactSensor";
|
|
9
|
+
ProtectReservedNames["CONTACT_SENSOR_ALARM_SOUND"] = "ContactAlarmSound";
|
|
10
|
+
// Manage our switch types.
|
|
11
|
+
ProtectReservedNames["SWITCH_DOORBELL_TRIGGER"] = "DoorbellTrigger";
|
|
12
|
+
ProtectReservedNames["SWITCH_DYNAMIC_BITRATE"] = "DynamicBitrate";
|
|
13
|
+
ProtectReservedNames["SWITCH_HKSV_RECORDING"] = "HKSVRecordingSwitch";
|
|
14
|
+
ProtectReservedNames["SWITCH_MOTION_SENSOR"] = "MotionSensorSwitch";
|
|
15
|
+
ProtectReservedNames["SWITCH_MOTION_TRIGGER"] = "MotionSensorTrigger";
|
|
16
|
+
ProtectReservedNames["SWITCH_UFP_RECORDING_ALWAYS"] = "UFPRecordingSwitch.always";
|
|
17
|
+
ProtectReservedNames["SWITCH_UFP_RECORDING_DETECTIONS"] = "UFPRecordingSwitch.detections";
|
|
18
|
+
ProtectReservedNames["SWITCH_UFP_RECORDING_NEVER"] = "UFPRecordingSwitch.never";
|
|
19
|
+
})(ProtectReservedNames = exports.ProtectReservedNames || (exports.ProtectReservedNames = {}));
|
|
13
20
|
class ProtectBase {
|
|
14
21
|
// The constructor initializes key variables and calls configureDevice().
|
|
15
22
|
constructor(nvr) {
|
|
@@ -76,10 +83,11 @@ class ProtectAccessory extends ProtectBase {
|
|
|
76
83
|
// Configure the Protect motion sensor for HomeKit.
|
|
77
84
|
configureMotionSensor(isEnabled = true) {
|
|
78
85
|
var _a, _b;
|
|
86
|
+
const device = this.accessory.context.device;
|
|
79
87
|
// Find the motion sensor service, if it exists.
|
|
80
88
|
let motionService = this.accessory.getService(this.hap.Service.MotionSensor);
|
|
81
89
|
// Have we disabled motion sensors?
|
|
82
|
-
if (!isEnabled || !((_a = this.nvr) === null || _a === void 0 ? void 0 : _a.optionEnabled(
|
|
90
|
+
if (!isEnabled || !((_a = this.nvr) === null || _a === void 0 ? void 0 : _a.optionEnabled(device, "Motion.Sensor"))) {
|
|
83
91
|
if (motionService) {
|
|
84
92
|
this.accessory.removeService(motionService);
|
|
85
93
|
(_b = this.nvr.mqtt) === null || _b === void 0 ? void 0 : _b.unsubscribe(this.accessory, "motion/trigger");
|
|
@@ -87,29 +95,31 @@ class ProtectAccessory extends ProtectBase {
|
|
|
87
95
|
}
|
|
88
96
|
return false;
|
|
89
97
|
}
|
|
90
|
-
//
|
|
91
|
-
if (motionService) {
|
|
92
|
-
// Initialize the state of the motion sensor.
|
|
93
|
-
motionService.updateCharacteristic(this.hap.Characteristic.MotionDetected, false);
|
|
94
|
-
this.configureMqttMotionTrigger();
|
|
95
|
-
return true;
|
|
96
|
-
}
|
|
97
|
-
// We don't have it, add the motion sensor to the camera.
|
|
98
|
-
motionService = new this.hap.Service.MotionSensor(this.accessory.displayName);
|
|
98
|
+
// We don't have a motion sensor, let's add it to the camera.
|
|
99
99
|
if (!motionService) {
|
|
100
|
-
|
|
101
|
-
|
|
100
|
+
// We don't have it, add the motion sensor to the camera.
|
|
101
|
+
motionService = new this.hap.Service.MotionSensor(this.accessory.displayName);
|
|
102
|
+
if (!motionService) {
|
|
103
|
+
this.log.error("%s: Unable to add motion sensor.", this.name());
|
|
104
|
+
return false;
|
|
105
|
+
}
|
|
106
|
+
this.accessory.addService(motionService);
|
|
107
|
+
this.log.info("%s: Enabling motion sensor.", this.name());
|
|
102
108
|
}
|
|
103
|
-
|
|
109
|
+
// Initialize the state of the motion sensor.
|
|
110
|
+
motionService.updateCharacteristic(this.hap.Characteristic.MotionDetected, false);
|
|
111
|
+
motionService.updateCharacteristic(this.hap.Characteristic.StatusActive, device.state === "CONNECTED");
|
|
112
|
+
motionService.getCharacteristic(this.hap.Characteristic.StatusActive).onGet(() => {
|
|
113
|
+
return this.accessory.context.device.state === "CONNECTED";
|
|
114
|
+
});
|
|
104
115
|
this.configureMqttMotionTrigger();
|
|
105
|
-
this.log.info("%s: Enabling motion sensor.", this.name());
|
|
106
116
|
return true;
|
|
107
117
|
}
|
|
108
118
|
// Configure a switch to easily activate or deactivate motion sensor detection for HomeKit.
|
|
109
119
|
configureMotionSwitch() {
|
|
110
120
|
var _a, _b, _c;
|
|
111
121
|
// Find the switch service, if it exists.
|
|
112
|
-
let switchService = this.accessory.getServiceById(this.hap.Service.Switch,
|
|
122
|
+
let switchService = this.accessory.getServiceById(this.hap.Service.Switch, ProtectReservedNames.SWITCH_MOTION_SENSOR);
|
|
113
123
|
// Have we disabled motion sensors or the motion switch? Motion switches are disabled by default.
|
|
114
124
|
if (!((_a = this.nvr) === null || _a === void 0 ? void 0 : _a.optionEnabled(this.accessory.context.device, "Motion.Sensor")) ||
|
|
115
125
|
!((_b = this.nvr) === null || _b === void 0 ? void 0 : _b.optionEnabled(this.accessory.context.device, "Motion.Switch", false))) {
|
|
@@ -123,7 +133,7 @@ class ProtectAccessory extends ProtectBase {
|
|
|
123
133
|
this.log.info("%s: Enabling motion sensor switch.", this.name());
|
|
124
134
|
// Add the switch to the camera, if needed.
|
|
125
135
|
if (!switchService) {
|
|
126
|
-
switchService = new this.hap.Service.Switch(this.accessory.displayName + " Motion Events",
|
|
136
|
+
switchService = new this.hap.Service.Switch(this.accessory.displayName + " Motion Events", ProtectReservedNames.SWITCH_MOTION_SENSOR);
|
|
127
137
|
if (!switchService) {
|
|
128
138
|
this.log.error("%s: Unable to add motion sensor switch.", this.name());
|
|
129
139
|
return false;
|
|
@@ -162,16 +172,7 @@ class ProtectAccessory extends ProtectBase {
|
|
|
162
172
|
}
|
|
163
173
|
// Utility function for reserved identifiers for switches.
|
|
164
174
|
isReservedName(name) {
|
|
165
|
-
return name === undefined ? false :
|
|
166
|
-
[
|
|
167
|
-
exports.PROTECT_CONTACT_MOTION_SMARTDETECT.toUpperCase(),
|
|
168
|
-
exports.PROTECT_SWITCH_DOORBELL_TRIGGER.toUpperCase(),
|
|
169
|
-
exports.PROTECT_SWITCH_HKSV_RECORDING.toUpperCase(),
|
|
170
|
-
exports.PROTECT_SWITCH_MOTION_SENSOR.toUpperCase(),
|
|
171
|
-
exports.PROTECT_SWITCH_MOTION_TRIGGER.toUpperCase(),
|
|
172
|
-
exports.PROTECT_CONTACT_SENSOR.toUpperCase(),
|
|
173
|
-
exports.PROTECT_CONTACT_SENSOR_ALARM_SOUND.toUpperCase()
|
|
174
|
-
].includes(name.toUpperCase());
|
|
175
|
+
return name === undefined ? false : Object.values(ProtectReservedNames).map(x => x.toUpperCase()).includes(name.toUpperCase());
|
|
175
176
|
}
|
|
176
177
|
// Utility function to return the fully enumerated name of this camera.
|
|
177
178
|
name() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"protect-accessory.js","sourceRoot":"","sources":["../src/protect-accessory.ts"],"names":[],"mappings":";;;AAgBA,
|
|
1
|
+
{"version":3,"file":"protect-accessory.js","sourceRoot":"","sources":["../src/protect-accessory.ts"],"names":[],"mappings":"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"}
|