homebridge-unifi-protect 4.4.4 → 5.0.3
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/README.md +7 -11
- package/config.schema.json +39 -9
- package/dist/protect-accessory.js +145 -2
- package/dist/protect-accessory.js.map +1 -1
- package/dist/protect-camera.js +56 -162
- package/dist/protect-camera.js.map +1 -1
- package/dist/protect-doorbell.js +12 -12
- package/dist/protect-doorbell.js.map +1 -1
- package/dist/protect-ffmpeg.js +22 -3
- package/dist/protect-ffmpeg.js.map +1 -1
- package/dist/protect-light.js +111 -0
- package/dist/protect-light.js.map +1 -0
- package/dist/protect-liveviews.js +2 -2
- package/dist/protect-liveviews.js.map +1 -1
- package/dist/protect-mqtt.js +47 -19
- package/dist/protect-mqtt.js.map +1 -1
- package/dist/protect-nvr-events.js +203 -59
- package/dist/protect-nvr-events.js.map +1 -1
- package/dist/protect-nvr-systeminfo.js +174 -0
- package/dist/protect-nvr-systeminfo.js.map +1 -0
- package/dist/protect-nvr.js +165 -59
- package/dist/protect-nvr.js.map +1 -1
- package/dist/protect-platform.js +9 -3
- package/dist/protect-platform.js.map +1 -1
- package/dist/protect-securitysystem.js +3 -4
- package/dist/protect-securitysystem.js.map +1 -1
- package/dist/protect-sensor.js +357 -0
- package/dist/protect-sensor.js.map +1 -0
- package/dist/protect-stream.js +74 -19
- package/dist/protect-stream.js.map +1 -1
- package/dist/protect-viewer.js +170 -0
- package/dist/protect-viewer.js.map +1 -0
- package/dist/settings.js +5 -1
- package/dist/settings.js.map +1 -1
- package/package.json +8 -7
package/dist/protect-stream.js
CHANGED
|
@@ -8,11 +8,13 @@ const unifi_protect_1 = require("unifi-protect");
|
|
|
8
8
|
const settings_1 = require("./settings");
|
|
9
9
|
const protect_ffmpeg_1 = require("./protect-ffmpeg");
|
|
10
10
|
const protect_rtp_1 = require("./protect-rtp");
|
|
11
|
+
const url_1 = require("url");
|
|
12
|
+
const ws_1 = __importDefault(require("ws"));
|
|
11
13
|
const ffmpeg_for_homebridge_1 = __importDefault(require("ffmpeg-for-homebridge"));
|
|
12
14
|
const camera_utils_1 = require("@homebridge/camera-utils");
|
|
13
|
-
// Increase the listener limits to support Protect installations with more than 10 cameras.
|
|
15
|
+
// Increase the listener limits to support Protect installations with more than 10 cameras. 100 seems like a reasonable default.
|
|
14
16
|
// eslint-disable-next-line @typescript-eslint/no-var-requires, @typescript-eslint/no-unsafe-member-access
|
|
15
|
-
require("events").EventEmitter.defaultMaxListeners =
|
|
17
|
+
require("events").EventEmitter.defaultMaxListeners = 100;
|
|
16
18
|
// Camera streaming delegate implementation for Protect.
|
|
17
19
|
class ProtectStreamingDelegate {
|
|
18
20
|
constructor(protectCamera, resolutions) {
|
|
@@ -27,6 +29,7 @@ class ProtectStreamingDelegate {
|
|
|
27
29
|
this.pendingSessions = {};
|
|
28
30
|
this.platform = protectCamera.platform;
|
|
29
31
|
this.snapshotCache = {};
|
|
32
|
+
this.videoEncoder = this.config.videoEncoder || "libx264";
|
|
30
33
|
this.videoProcessor = this.config.videoProcessor || ffmpeg_for_homebridge_1.default || "ffmpeg";
|
|
31
34
|
// Setup for our camera controller.
|
|
32
35
|
const options = {
|
|
@@ -83,11 +86,11 @@ class ProtectStreamingDelegate {
|
|
|
83
86
|
}
|
|
84
87
|
// Prepare to launch the video stream.
|
|
85
88
|
async prepareStream(request, callback) {
|
|
86
|
-
const cameraConfig = this.protectCamera.accessory.context.
|
|
89
|
+
const cameraConfig = this.protectCamera.accessory.context.device;
|
|
87
90
|
// Check if audio support is enabled.
|
|
88
91
|
const isAudioEnabled = this.protectCamera.nvr.optionEnabled(cameraConfig, "Audio", true, request.targetAddress);
|
|
89
92
|
// We need to check for AAC support because it's going to determine whether we support audio.
|
|
90
|
-
const hasLibFdk = isAudioEnabled && (await protect_ffmpeg_1.FfmpegProcess.codecEnabled(this.videoProcessor, "libfdk_aac"));
|
|
93
|
+
const hasLibFdk = isAudioEnabled && (await protect_ffmpeg_1.FfmpegProcess.codecEnabled(this.videoProcessor, "libfdk_aac", this.log));
|
|
91
94
|
// Setup our audio plumbing.
|
|
92
95
|
const audioIncomingRtcpPort = (await (0, camera_utils_1.reservePorts)({ count: 1 }))[0];
|
|
93
96
|
const audioIncomingPort = (hasLibFdk && this.protectCamera.twoWayAudio) ? (await (0, camera_utils_1.reservePorts)({ count: 1 }))[0] : -1;
|
|
@@ -96,9 +99,39 @@ class ProtectStreamingDelegate {
|
|
|
96
99
|
if (!hasLibFdk) {
|
|
97
100
|
this.log.info("%s: Audio support disabled.%s", this.name(), isAudioEnabled ? " A version of FFmpeg that is compiled with fdk_aac support is required to support audio." : "");
|
|
98
101
|
}
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
+
let rtpDemuxer = null;
|
|
103
|
+
let talkBack = null;
|
|
104
|
+
if (hasLibFdk && this.protectCamera.twoWayAudio) {
|
|
105
|
+
// Setup the RTP demuxer for two-way audio scenarios.
|
|
106
|
+
rtpDemuxer = new protect_rtp_1.RtpDemuxer(this, request.addressVersion, audioIncomingPort, audioIncomingRtcpPort, audioIncomingRtpPort);
|
|
107
|
+
// Request the talkback websocket from the controller.
|
|
108
|
+
const params = new URLSearchParams({ camera: cameraConfig.id });
|
|
109
|
+
const response = await this.protectCamera.nvr.nvrApi.fetch(this.protectCamera.nvr.nvrApi.wsUrl() + "/talkback?" + params.toString());
|
|
110
|
+
// Something went wrong and we don't have a talkback websocket.
|
|
111
|
+
if (!(response === null || response === void 0 ? void 0 : response.ok)) {
|
|
112
|
+
this.log.error("%s: Unable to configure the return audio channel.%s", this.name(), response ? " " + response.status.toString() + " - " + response.statusText + "." : "");
|
|
113
|
+
}
|
|
114
|
+
else {
|
|
115
|
+
try {
|
|
116
|
+
const tb = await response.json();
|
|
117
|
+
// Adjust the URL for our address.
|
|
118
|
+
const tbUrl = new url_1.URL(tb.url);
|
|
119
|
+
tbUrl.hostname = this.protectCamera.nvr.nvrAddress;
|
|
120
|
+
talkBack = tbUrl.toString();
|
|
121
|
+
}
|
|
122
|
+
catch (error) {
|
|
123
|
+
if (error instanceof unifi_protect_1.FetchError) {
|
|
124
|
+
switch (error.code) {
|
|
125
|
+
default:
|
|
126
|
+
this.log.error("%s: Unknown error while preparing the return audio channel: %s", this.name(), error.message);
|
|
127
|
+
break;
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
this.log.error("%s: An error occurred while preparing the return audio channel: %s.", this.name(), error);
|
|
131
|
+
talkBack = null;
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
}
|
|
102
135
|
// Setup our video plumbing.
|
|
103
136
|
const videoReturnPort = (await (0, camera_utils_1.reservePorts)({ count: 1 }))[0];
|
|
104
137
|
const videoSSRC = this.hap.CameraController.generateSynchronisationSource();
|
|
@@ -113,6 +146,7 @@ class ProtectStreamingDelegate {
|
|
|
113
146
|
audioSSRC: audioSSRC,
|
|
114
147
|
hasLibFdk: hasLibFdk,
|
|
115
148
|
rtpDemuxer: rtpDemuxer,
|
|
149
|
+
talkBack: talkBack,
|
|
116
150
|
videoCryptoSuite: request.video.srtpCryptoSuite,
|
|
117
151
|
videoPort: request.video.port,
|
|
118
152
|
videoReturnPort: videoReturnPort,
|
|
@@ -146,8 +180,8 @@ class ProtectStreamingDelegate {
|
|
|
146
180
|
}
|
|
147
181
|
// Launch the Protect video (and audio) stream.
|
|
148
182
|
startStream(request, callback) {
|
|
149
|
-
var _a, _b, _c, _d;
|
|
150
|
-
const cameraConfig = this.protectCamera.accessory.context.
|
|
183
|
+
var _a, _b, _c, _d, _e, _f;
|
|
184
|
+
const cameraConfig = this.protectCamera.accessory.context.device;
|
|
151
185
|
const sessionInfo = this.pendingSessions[request.sessionID];
|
|
152
186
|
const sdpIpVersion = sessionInfo.addressVersion === "ipv6" ? "IP6 " : "IP4";
|
|
153
187
|
// If we aren't connected, we're done.
|
|
@@ -212,7 +246,7 @@ class ProtectStreamingDelegate {
|
|
|
212
246
|
// create a constant bitrate.
|
|
213
247
|
// -filter:v fps=fps= use the fps filter to get to the frame rate requested by HomeKit. This has better performance characteristics
|
|
214
248
|
// for Protect rather than using "-r".
|
|
215
|
-
ffmpegArgs.push("-vcodec",
|
|
249
|
+
ffmpegArgs.push("-vcodec", this.videoEncoder, "-pix_fmt", "yuvj420p", "-profile:v", "high", "-preset", "veryfast", "-bf", "0", "-b:v", request.video.max_bit_rate.toString() + "k", "-bufsize", (2 * request.video.max_bit_rate).toString() + "k", "-maxrate", request.video.max_bit_rate.toString() + "k", "-filter:v", "fps=fps=" + request.video.fps.toString());
|
|
216
250
|
}
|
|
217
251
|
else {
|
|
218
252
|
// Configure our video parameters for just copying the input stream from Protect - it tends to be quite solid in most cases:
|
|
@@ -350,7 +384,7 @@ class ProtectStreamingDelegate {
|
|
|
350
384
|
"-ar", cameraConfig.talkbackSettings.samplingRate.toString(),
|
|
351
385
|
"-b:a", "64k",
|
|
352
386
|
"-f", "adts",
|
|
353
|
-
"
|
|
387
|
+
"-"
|
|
354
388
|
];
|
|
355
389
|
// Additional logging, but only if we're debugging.
|
|
356
390
|
if (this.platform.verboseFfmpeg) {
|
|
@@ -359,12 +393,33 @@ class ProtectStreamingDelegate {
|
|
|
359
393
|
if (this.platform.config.debugAll) {
|
|
360
394
|
ffmpegReturnAudioCmd.push("-loglevel", "level+debug");
|
|
361
395
|
}
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
396
|
+
try {
|
|
397
|
+
// Create the talkback websocket.
|
|
398
|
+
let ws = null;
|
|
399
|
+
if (sessionInfo.talkBack) {
|
|
400
|
+
ws = new ws_1.default(sessionInfo.talkBack, { rejectUnauthorized: false });
|
|
401
|
+
}
|
|
402
|
+
// Fire up FFmpeg.
|
|
403
|
+
const ffmpegReturnAudio = new protect_ffmpeg_1.FfmpegProcess(this, request.sessionID, ffmpegReturnAudioCmd);
|
|
404
|
+
// Make sure we terminate the talkback websocket when we're done.
|
|
405
|
+
(_c = ffmpegReturnAudio.getStdout()) === null || _c === void 0 ? void 0 : _c.on("close", () => {
|
|
406
|
+
if (((ws === null || ws === void 0 ? void 0 : ws.readyState) === ws_1.default.CLOSING) || ((ws === null || ws === void 0 ? void 0 : ws.readyState) === ws_1.default.OPEN)) {
|
|
407
|
+
ws === null || ws === void 0 ? void 0 : ws.terminate();
|
|
408
|
+
}
|
|
409
|
+
});
|
|
410
|
+
// Setup housekeeping for the twoway FFmpeg session.
|
|
411
|
+
this.ongoingSessions[request.sessionID].ffmpeg.push(ffmpegReturnAudio);
|
|
412
|
+
// Feed the SDP session description to FFmpeg on stdin.
|
|
413
|
+
(_d = ffmpegReturnAudio.getStdin()) === null || _d === void 0 ? void 0 : _d.write(sdpReturnAudio);
|
|
414
|
+
(_e = ffmpegReturnAudio.getStdin()) === null || _e === void 0 ? void 0 : _e.end();
|
|
415
|
+
// Send the audio.
|
|
416
|
+
(_f = ffmpegReturnAudio.getStdout()) === null || _f === void 0 ? void 0 : _f.on("data", (data) => {
|
|
417
|
+
ws === null || ws === void 0 ? void 0 : ws.send(data);
|
|
418
|
+
});
|
|
419
|
+
}
|
|
420
|
+
catch (error) {
|
|
421
|
+
this.log.error("%s: Unable to connect to the return audio channel: %s", this.name(), error);
|
|
422
|
+
}
|
|
368
423
|
}
|
|
369
424
|
// Process incoming stream requests.
|
|
370
425
|
handleStreamRequest(request, callback) {
|
|
@@ -395,7 +450,7 @@ class ProtectStreamingDelegate {
|
|
|
395
450
|
}
|
|
396
451
|
// Take a snapshot.
|
|
397
452
|
async getSnapshot(request) {
|
|
398
|
-
const cameraConfig = this.protectCamera.accessory.context.
|
|
453
|
+
const cameraConfig = this.protectCamera.accessory.context.device;
|
|
399
454
|
const params = new URLSearchParams({ force: "true" });
|
|
400
455
|
// If we aren't connected, we're done.
|
|
401
456
|
if (cameraConfig.state !== "CONNECTED") {
|
|
@@ -423,7 +478,7 @@ class ProtectStreamingDelegate {
|
|
|
423
478
|
}
|
|
424
479
|
try {
|
|
425
480
|
// Retrieve the image.
|
|
426
|
-
this.snapshotCache[cameraConfig.mac] = { image: await response.
|
|
481
|
+
this.snapshotCache[cameraConfig.mac] = { image: Buffer.from(await response.arrayBuffer()), time: Date.now() };
|
|
427
482
|
return this.snapshotCache[cameraConfig.mac].image;
|
|
428
483
|
}
|
|
429
484
|
catch (error) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"protect-stream.js","sourceRoot":"","sources":["../src/protect-stream.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"protect-stream.js","sourceRoot":"","sources":["../src/protect-stream.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ProtectViewer = void 0;
|
|
4
|
+
const protect_accessory_1 = require("./protect-accessory");
|
|
5
|
+
class ProtectViewer extends protect_accessory_1.ProtectAccessory {
|
|
6
|
+
// Initialize and configure the viewer accessory for HomeKit.
|
|
7
|
+
async configureDevice() {
|
|
8
|
+
var _a;
|
|
9
|
+
// Save the device object before we wipeout the context.
|
|
10
|
+
const device = this.accessory.context.device;
|
|
11
|
+
// Clean out the context object in case it's been polluted somehow.
|
|
12
|
+
this.accessory.context = {};
|
|
13
|
+
this.accessory.context.device = device;
|
|
14
|
+
this.accessory.context.nvr = (_a = this.nvr.nvrApi.bootstrap) === null || _a === void 0 ? void 0 : _a.nvr.mac;
|
|
15
|
+
// Configure accessory information.
|
|
16
|
+
this.configureInfo();
|
|
17
|
+
// Configure accessory services.
|
|
18
|
+
const enabledLiveviews = this.updateDevice(true);
|
|
19
|
+
// Configure MQTT services.
|
|
20
|
+
this.configureMqtt();
|
|
21
|
+
// Inform the user what we're enabling on startup.
|
|
22
|
+
if (enabledLiveviews.length) {
|
|
23
|
+
this.log.info("%s: Configured liveview%s: %s.", this.name(), enabledLiveviews.length > 1 ? "s" : "", enabledLiveviews.join(", "));
|
|
24
|
+
}
|
|
25
|
+
else {
|
|
26
|
+
this.log.info("%s: No liveviews configured.", this.name());
|
|
27
|
+
}
|
|
28
|
+
return Promise.resolve(true);
|
|
29
|
+
}
|
|
30
|
+
// Update accessory services and characteristics.
|
|
31
|
+
updateDevice(configureHandlers = false) {
|
|
32
|
+
var _a, _b, _c, _d;
|
|
33
|
+
// Grab the current list of liveview switches we know about.
|
|
34
|
+
const currentLiveviewSwitches = this.accessory.services.filter(x => (x.UUID === this.hap.Service.Switch.UUID) && x.subtype);
|
|
35
|
+
// Grab the current list of liveview identifiers from Protect.
|
|
36
|
+
const nvrLiveviewIds = (_c = (_b = (_a = this.nvrApi) === null || _a === void 0 ? void 0 : _a.bootstrap) === null || _b === void 0 ? void 0 : _b.liveviews) === null || _c === void 0 ? void 0 : _c.map(x => x.id);
|
|
37
|
+
// Identify what's been removed on the NVR and remove it from the accessory as well.
|
|
38
|
+
currentLiveviewSwitches.filter(x => { var _a; return !(nvrLiveviewIds === null || nvrLiveviewIds === void 0 ? void 0 : nvrLiveviewIds.includes((_a = x.subtype) !== null && _a !== void 0 ? _a : "")); }).map(x => this.accessory.removeService(x));
|
|
39
|
+
// Identify what needs to be added to HomeKit that isn't already there, and add them.
|
|
40
|
+
this.addLiveviewSwitch((_d = nvrLiveviewIds === null || nvrLiveviewIds === void 0 ? void 0 : nvrLiveviewIds.filter(x => !currentLiveviewSwitches.filter(liveviewSwitch => liveviewSwitch.subtype === x).length)) !== null && _d !== void 0 ? _d : []);
|
|
41
|
+
// Finally, reflect the state of the liveview that's currently enabled.
|
|
42
|
+
// Loop through the list of services on our viewer accessory and sync the liveview switches.
|
|
43
|
+
this.updateLiveviewSwitchState(configureHandlers);
|
|
44
|
+
// Return a list of our available liveviews for this device.
|
|
45
|
+
return this.accessory.services.filter(x => (x.UUID === this.hap.Service.Switch.UUID) && x.subtype).map(x => x.displayName);
|
|
46
|
+
}
|
|
47
|
+
// Update the state of liveview switches for viewer devices.
|
|
48
|
+
updateLiveviewSwitchState(configureHandlers = false) {
|
|
49
|
+
for (const switchService of this.accessory.services) {
|
|
50
|
+
// We only want to look at switches.
|
|
51
|
+
if (switchService.UUID !== this.hap.Service.Switch.UUID) {
|
|
52
|
+
continue;
|
|
53
|
+
}
|
|
54
|
+
// We only want switches with subtypes.
|
|
55
|
+
if (!switchService.subtype) {
|
|
56
|
+
continue;
|
|
57
|
+
}
|
|
58
|
+
// Configure the switch and update the state.
|
|
59
|
+
this.configureLiveviewSwitch(switchService, configureHandlers);
|
|
60
|
+
}
|
|
61
|
+
return true;
|
|
62
|
+
}
|
|
63
|
+
// Configure the state and handlers of a liveview switch.
|
|
64
|
+
configureLiveviewSwitch(switchService, configureHandlers = true) {
|
|
65
|
+
var _a;
|
|
66
|
+
// If we're configuring a switch for the first time, we add our respective handlers.
|
|
67
|
+
if (configureHandlers) {
|
|
68
|
+
// Turn the liveview switch on or off.
|
|
69
|
+
(_a = switchService.getCharacteristic(this.hap.Characteristic.On)) === null || _a === void 0 ? void 0 : _a.onGet(() => {
|
|
70
|
+
return this.getLiveviewSwitchState(switchService);
|
|
71
|
+
}).onSet((value) => {
|
|
72
|
+
return this.setLiveviewSwitchState(switchService, value);
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
// Set the state to reflect Protect.
|
|
76
|
+
switchService.updateCharacteristic(this.hap.Characteristic.On, switchService.subtype === this.accessory.context.device.liveview);
|
|
77
|
+
return true;
|
|
78
|
+
}
|
|
79
|
+
// Return the current state of the liveview switch.
|
|
80
|
+
getLiveviewSwitchState(switchService) {
|
|
81
|
+
return (this.accessory.context.device.liveview !== null) &&
|
|
82
|
+
(this.accessory.context.device.liveview === switchService.subtype);
|
|
83
|
+
}
|
|
84
|
+
// Set the current state of the liveview switch.
|
|
85
|
+
async setLiveviewSwitchState(switchService, value) {
|
|
86
|
+
const viewState = value === true ? switchService.subtype : null;
|
|
87
|
+
const newDevice = await this.setViewer(viewState);
|
|
88
|
+
if (!newDevice) {
|
|
89
|
+
if (viewState) {
|
|
90
|
+
this.log.error("%s: Unable to set the liveview to: %s.", this.name(), switchService.displayName);
|
|
91
|
+
}
|
|
92
|
+
else {
|
|
93
|
+
this.log.error("%s: Unable to clear the liveview.", this.name());
|
|
94
|
+
}
|
|
95
|
+
return;
|
|
96
|
+
}
|
|
97
|
+
// Set the context to our updated device configuration.
|
|
98
|
+
this.accessory.context.device = newDevice;
|
|
99
|
+
// Update all the other liveview switches.
|
|
100
|
+
this.updateLiveviewSwitchState();
|
|
101
|
+
}
|
|
102
|
+
// Add liveview switches to HomeKit for viewer devices.
|
|
103
|
+
addLiveviewSwitch(newLiveviewIds) {
|
|
104
|
+
var _a, _b, _c, _d;
|
|
105
|
+
// Loop through the list of liveview identifiers and add them to HomeKit as switches.
|
|
106
|
+
for (const liveviewId of newLiveviewIds) {
|
|
107
|
+
// Empty or invalid liveview identifier.
|
|
108
|
+
if (!liveviewId) {
|
|
109
|
+
continue;
|
|
110
|
+
}
|
|
111
|
+
// Retrieve the name assigned to this liveview.
|
|
112
|
+
const liveviewName = (_d = (_c = (_b = (_a = this.nvrApi) === null || _a === void 0 ? void 0 : _a.bootstrap) === null || _b === void 0 ? void 0 : _b.liveviews) === null || _c === void 0 ? void 0 : _c.find(x => x.id === liveviewId)) === null || _d === void 0 ? void 0 : _d.name;
|
|
113
|
+
// Grab the switch service associated with this liveview.
|
|
114
|
+
const switchService = new this.hap.Service.Switch(liveviewName, liveviewId);
|
|
115
|
+
if (!switchService) {
|
|
116
|
+
this.log.error("%s: Unable to add liveview switch for %s.", this.name(), liveviewName);
|
|
117
|
+
continue;
|
|
118
|
+
}
|
|
119
|
+
this.accessory.addService(switchService);
|
|
120
|
+
this.configureLiveviewSwitch(switchService);
|
|
121
|
+
}
|
|
122
|
+
return true;
|
|
123
|
+
}
|
|
124
|
+
// Set the liveview on a viewer device in UniFi Protect.
|
|
125
|
+
async setViewer(newLiveview) {
|
|
126
|
+
var _a, _b, _c, _d;
|
|
127
|
+
// Set the liveview.
|
|
128
|
+
const newDevice = (await this.nvr.nvrApi.updateViewer(this.accessory.context.device, { liveview: newLiveview }));
|
|
129
|
+
// Find the liveview name for MQTT.
|
|
130
|
+
const liveview = (_c = (_b = (_a = this.nvrApi) === null || _a === void 0 ? void 0 : _a.bootstrap) === null || _b === void 0 ? void 0 : _b.liveviews) === null || _c === void 0 ? void 0 : _c.find(x => x.id === newLiveview);
|
|
131
|
+
// Publish an MQTT event.
|
|
132
|
+
if (liveview) {
|
|
133
|
+
(_d = this.nvr.mqtt) === null || _d === void 0 ? void 0 : _d.publish(this.accessory, "liveview", liveview.name);
|
|
134
|
+
}
|
|
135
|
+
return newDevice;
|
|
136
|
+
}
|
|
137
|
+
// Configure MQTT capabilities of this viewer.
|
|
138
|
+
configureMqtt() {
|
|
139
|
+
var _a, _b;
|
|
140
|
+
// Trigger a motion event in MQTT, if requested to do so.
|
|
141
|
+
(_a = this.nvr.mqtt) === null || _a === void 0 ? void 0 : _a.subscribe(this.accessory, "liveview/set", (message) => {
|
|
142
|
+
var _a, _b, _c;
|
|
143
|
+
const value = message.toString().toLowerCase();
|
|
144
|
+
const liveview = (_c = (_b = (_a = this.nvrApi) === null || _a === void 0 ? void 0 : _a.bootstrap) === null || _b === void 0 ? void 0 : _b.liveviews) === null || _c === void 0 ? void 0 : _c.find(x => x.name.toLowerCase() === value);
|
|
145
|
+
if (!liveview) {
|
|
146
|
+
this.log.error("%s: Unable to locate a liveview named %s.", this.name(), message.toString());
|
|
147
|
+
return;
|
|
148
|
+
}
|
|
149
|
+
(async () => {
|
|
150
|
+
const newDevice = await this.setViewer(liveview.id);
|
|
151
|
+
if (newDevice) {
|
|
152
|
+
this.accessory.context.device = newDevice;
|
|
153
|
+
this.log.info("%s: Liveview set via MQTT to %s.", this.name(), liveview.name);
|
|
154
|
+
}
|
|
155
|
+
else {
|
|
156
|
+
this.log.error("%s: Unable to set liveview via MQTT to %s.", this.name(), message.toString());
|
|
157
|
+
}
|
|
158
|
+
})();
|
|
159
|
+
});
|
|
160
|
+
// Trigger a motion event in MQTT, if requested to do so.
|
|
161
|
+
(_b = this.nvr.mqtt) === null || _b === void 0 ? void 0 : _b.subscribeGet(this.accessory, this.name(), "liveview", "Liveview", () => {
|
|
162
|
+
var _a, _b, _c, _d;
|
|
163
|
+
const liveview = (_c = (_b = (_a = this.nvrApi) === null || _a === void 0 ? void 0 : _a.bootstrap) === null || _b === void 0 ? void 0 : _b.liveviews) === null || _c === void 0 ? void 0 : _c.find(x => x.id === this.accessory.context.device.liveview);
|
|
164
|
+
return (_d = liveview === null || liveview === void 0 ? void 0 : liveview.name) !== null && _d !== void 0 ? _d : "None";
|
|
165
|
+
});
|
|
166
|
+
return true;
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
exports.ProtectViewer = ProtectViewer;
|
|
170
|
+
//# sourceMappingURL=protect-viewer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"protect-viewer.js","sourceRoot":"","sources":["../src/protect-viewer.ts"],"names":[],"mappings":"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"}
|
package/dist/settings.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.PROTECT_TWOWAY_HEARTBEAT_INTERVAL = exports.PROTECT_NVR_UNIFIOS_REFRESH_INTERVAL = exports.PROTECT_MQTT_TOPIC = exports.PROTECT_MQTT_RECONNECT_INTERVAL = exports.PROTECT_MOTION_DURATION = exports.PROTECT_LOGIN_REFRESH_INTERVAL = exports.PROTECT_FFMPEG_VERBOSE_DURATION = exports.PROTECT_FFMPEG_OPTIONS = exports.PROTECT_FFMPEG_AUDIO_FILTER_LOWPASS = exports.PROTECT_FFMPEG_AUDIO_FILTER_HIGHPASS = exports.PROTECT_EVENTS_HEARTBEAT_INTERVAL = exports.PROTECT_API_TIMEOUT = exports.PROTECT_API_RETRY_INTERVAL = exports.PROTECT_API_ERROR_LIMIT = exports.PLATFORM_NAME = exports.PLUGIN_NAME = void 0;
|
|
3
|
+
exports.PROTECT_TWOWAY_HEARTBEAT_INTERVAL = exports.PROTECT_RING_DURATION = exports.PROTECT_NVR_UNIFIOS_REFRESH_INTERVAL = exports.PROTECT_MQTT_TOPIC = exports.PROTECT_MQTT_RECONNECT_INTERVAL = exports.PROTECT_MOTION_DURATION = exports.PROTECT_LOGIN_REFRESH_INTERVAL = exports.PROTECT_HOMEKIT_IDR_INTERVAL = exports.PROTECT_FFMPEG_VERBOSE_DURATION = exports.PROTECT_FFMPEG_OPTIONS = exports.PROTECT_FFMPEG_AUDIO_FILTER_LOWPASS = exports.PROTECT_FFMPEG_AUDIO_FILTER_HIGHPASS = exports.PROTECT_EVENTS_HEARTBEAT_INTERVAL = exports.PROTECT_API_TIMEOUT = exports.PROTECT_API_RETRY_INTERVAL = exports.PROTECT_API_ERROR_LIMIT = exports.PLATFORM_NAME = exports.PLUGIN_NAME = void 0;
|
|
4
4
|
/* Copyright(C) 2017-2022, HJD (https://github.com/hjdhjd). All rights reserved.
|
|
5
5
|
*
|
|
6
6
|
* settings.ts: Settings and constants for homebridge-unifi-protect.
|
|
@@ -26,6 +26,8 @@ exports.PROTECT_FFMPEG_AUDIO_FILTER_LOWPASS = 1000;
|
|
|
26
26
|
exports.PROTECT_FFMPEG_OPTIONS = [];
|
|
27
27
|
// Duration, in minutes, to increase the level of logging for FFmpeg when we encounter errors.
|
|
28
28
|
exports.PROTECT_FFMPEG_VERBOSE_DURATION = 5;
|
|
29
|
+
// HomeKit wants an I-frame interval of 4 seconds.
|
|
30
|
+
exports.PROTECT_HOMEKIT_IDR_INTERVAL = 4;
|
|
29
31
|
// How often, in seconds, should we refresh our Protect login credentials.
|
|
30
32
|
exports.PROTECT_LOGIN_REFRESH_INTERVAL = 1800;
|
|
31
33
|
// Default duration, in seconds, of motion events. Setting this too low will potentially cause a lot of notification spam.
|
|
@@ -37,6 +39,8 @@ exports.PROTECT_MQTT_TOPIC = "unifi/protect";
|
|
|
37
39
|
// How often, in seconds, should we check Protect controllers for new or removed devices.
|
|
38
40
|
// This will NOT impact motion or doorbell event detection on UniFi OS devices.
|
|
39
41
|
exports.PROTECT_NVR_UNIFIOS_REFRESH_INTERVAL = 10;
|
|
42
|
+
// Default duration, in seconds, of ring events.
|
|
43
|
+
exports.PROTECT_RING_DURATION = 4;
|
|
40
44
|
// How often, in seconds, should we heartbeat FFmpeg in two-way audio sessions. This should be less than 5 seconds, which is
|
|
41
45
|
// FFmpeg's input timeout interval.
|
|
42
46
|
exports.PROTECT_TWOWAY_HEARTBEAT_INTERVAL = 3.5;
|
package/dist/settings.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"settings.js","sourceRoot":"","sources":["../src/settings.ts"],"names":[],"mappings":";;;AAAA;;;GAGG;AACH,0BAA0B;AACb,QAAA,WAAW,GAAG,0BAA0B,CAAC;AAEtD,mCAAmC;AACtB,QAAA,aAAa,GAAG,eAAe,CAAC;AAE7C,oGAAoG;AACvF,QAAA,uBAAuB,GAAG,EAAE,CAAC;AAE1C,4HAA4H;AAC/G,QAAA,0BAA0B,GAAG,GAAG,CAAC;AAE9C,yFAAyF;AAC5E,QAAA,mBAAmB,GAAG,GAAG,CAAC;AAEvC,oFAAoF;AACpF,qDAAqD;AACxC,QAAA,iCAAiC,GAAG,EAAE,CAAC;AAEpD,4GAA4G;AAC/F,QAAA,oCAAoC,GAAG,GAAG,CAAC;AAExD,2GAA2G;AAC9F,QAAA,mCAAmC,GAAG,IAAI,CAAC;AAExD,+DAA+D;AAClD,QAAA,sBAAsB,GAAG,EAAE,CAAC;AAEzC,8FAA8F;AACjF,QAAA,+BAA+B,GAAG,CAAC,CAAC;AAEjD,0EAA0E;AAC7D,QAAA,8BAA8B,GAAG,IAAI,CAAC;AAEnD,0HAA0H;AAC7G,QAAA,uBAAuB,GAAG,EAAE,CAAC;AAE1C,oGAAoG;AACvF,QAAA,+BAA+B,GAAG,EAAE,CAAC;AAElD,uGAAuG;AAC1F,QAAA,kBAAkB,GAAG,eAAe,CAAC;AAElD,yFAAyF;AACzF,+EAA+E;AAClE,QAAA,oCAAoC,GAAG,EAAE,CAAC;AAEvD,4HAA4H;AAC5H,mCAAmC;AACtB,QAAA,iCAAiC,GAAG,GAAG,CAAC"}
|
|
1
|
+
{"version":3,"file":"settings.js","sourceRoot":"","sources":["../src/settings.ts"],"names":[],"mappings":";;;AAAA;;;GAGG;AACH,0BAA0B;AACb,QAAA,WAAW,GAAG,0BAA0B,CAAC;AAEtD,mCAAmC;AACtB,QAAA,aAAa,GAAG,eAAe,CAAC;AAE7C,oGAAoG;AACvF,QAAA,uBAAuB,GAAG,EAAE,CAAC;AAE1C,4HAA4H;AAC/G,QAAA,0BAA0B,GAAG,GAAG,CAAC;AAE9C,yFAAyF;AAC5E,QAAA,mBAAmB,GAAG,GAAG,CAAC;AAEvC,oFAAoF;AACpF,qDAAqD;AACxC,QAAA,iCAAiC,GAAG,EAAE,CAAC;AAEpD,4GAA4G;AAC/F,QAAA,oCAAoC,GAAG,GAAG,CAAC;AAExD,2GAA2G;AAC9F,QAAA,mCAAmC,GAAG,IAAI,CAAC;AAExD,+DAA+D;AAClD,QAAA,sBAAsB,GAAG,EAAE,CAAC;AAEzC,8FAA8F;AACjF,QAAA,+BAA+B,GAAG,CAAC,CAAC;AAEjD,kDAAkD;AACrC,QAAA,4BAA4B,GAAG,CAAC,CAAC;AAE9C,0EAA0E;AAC7D,QAAA,8BAA8B,GAAG,IAAI,CAAC;AAEnD,0HAA0H;AAC7G,QAAA,uBAAuB,GAAG,EAAE,CAAC;AAE1C,oGAAoG;AACvF,QAAA,+BAA+B,GAAG,EAAE,CAAC;AAElD,uGAAuG;AAC1F,QAAA,kBAAkB,GAAG,eAAe,CAAC;AAElD,yFAAyF;AACzF,+EAA+E;AAClE,QAAA,oCAAoC,GAAG,EAAE,CAAC;AAEvD,gDAAgD;AACnC,QAAA,qBAAqB,GAAG,CAAC,CAAC;AAEvC,4HAA4H;AAC5H,mCAAmC;AACtB,QAAA,iCAAiC,GAAG,GAAG,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "homebridge-unifi-protect",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "5.0.3",
|
|
4
4
|
"displayName": "Homebridge UniFi Protect",
|
|
5
|
-
"description": "Homebridge UniFi Protect plugin providing complete HomeKit integration for UniFi Protect with full support for most features including autoconfiguration, motion detection, multiple controllers, and realtime updates.",
|
|
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": {
|
|
7
7
|
"name": "HJD",
|
|
8
8
|
"url": "https://github.com/hjdhjd"
|
|
@@ -67,15 +67,16 @@
|
|
|
67
67
|
"@homebridge/camera-utils": "^2.0.4",
|
|
68
68
|
"execa": "=5.1.1",
|
|
69
69
|
"ffmpeg-for-homebridge": "^0.0.9",
|
|
70
|
-
"mqtt": "4.
|
|
71
|
-
"unifi-protect": "^2.
|
|
70
|
+
"mqtt": "4.3.4",
|
|
71
|
+
"unifi-protect": "^2.1.1",
|
|
72
|
+
"ws": "^8.4.0"
|
|
72
73
|
},
|
|
73
74
|
"devDependencies": {
|
|
74
75
|
"@types/ip": "^1.1.0",
|
|
75
|
-
"@types/node": "^17.0.
|
|
76
|
+
"@types/node": "^17.0.8",
|
|
76
77
|
"@types/ws": "^8.2.2",
|
|
77
|
-
"@typescript-eslint/eslint-plugin": "^5.
|
|
78
|
-
"@typescript-eslint/parser": "^5.
|
|
78
|
+
"@typescript-eslint/eslint-plugin": "^5.9.1",
|
|
79
|
+
"@typescript-eslint/parser": "^5.9.1",
|
|
79
80
|
"eslint": "^8.6.0",
|
|
80
81
|
"homebridge": "^1.3.9",
|
|
81
82
|
"nodemon": "^2.0.15",
|