homebridge-unifi-protect 5.0.5 → 5.2.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.
@@ -0,0 +1,250 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ProtectRecordingDelegate = void 0;
4
+ const protect_ffmpeg_1 = require("./protect-ffmpeg");
5
+ const protect_timeshift_1 = require("./protect-timeshift");
6
+ // Camera recording delegate implementation for Protect.
7
+ class ProtectRecordingDelegate {
8
+ constructor(protectCamera) {
9
+ var _a;
10
+ this.accessory = protectCamera.accessory;
11
+ this.api = protectCamera.api;
12
+ this.timeshift = new protect_timeshift_1.ProtectTimeshiftBuffer(protectCamera);
13
+ this.debug = protectCamera.platform.debug.bind(protectCamera.platform);
14
+ this.ffmpegStream = null;
15
+ this.isInitialized = false;
16
+ this._isRecording = false;
17
+ this.log = protectCamera.platform.log;
18
+ this.name = protectCamera.name.bind(protectCamera);
19
+ this.nvr = protectCamera.nvr;
20
+ this.protectCamera = protectCamera;
21
+ this.maxRecordingDuration = parseInt((_a = this.nvr.optionGet(this.accessory.context.device, "Video.HKSV.Recording.MaxDuration")) !== null && _a !== void 0 ? _a : "0");
22
+ this.recordedSegments = 0;
23
+ this.rtspEntry = null;
24
+ this.transmitListener = null;
25
+ }
26
+ // Process HomeKit requests to activate or deactivate HKSV recording capabilities for a camera.
27
+ async updateRecordingActive(active) {
28
+ // If we are no longer recording, stop the livestream.
29
+ if (!active) {
30
+ this.timeshift.stop();
31
+ // Inform the user of the state change, if needed.
32
+ if (this.isRecording !== active) {
33
+ this.log.info("%s: Disabling HomeKit Secure Video event recording.", this.name());
34
+ }
35
+ this._isRecording = active;
36
+ return;
37
+ }
38
+ // We have no recording configuration available yet. Set our desired state and we're done.
39
+ // Once we have a recording configuration, we'll get called again and be able to begin timeshifting.
40
+ if (!this.recordingConfig) {
41
+ this._isRecording = active;
42
+ return;
43
+ }
44
+ // Figure out which camera channel we should use for the livestream based on the requested resolution.
45
+ this.rtspEntry = this.protectCamera.findRtsp(this.recordingConfig.videoCodec.resolution[0], this.recordingConfig.videoCodec.resolution[1], this.accessory.context.device);
46
+ if (!this.rtspEntry) {
47
+ this._isRecording = false;
48
+ this.log.error("%s: Unable to start the HomeKit Secure Video timeshift buffer: no valid RTSP stream profile was found.", this.name());
49
+ return;
50
+ }
51
+ // Set the bitrate to what HomeKit is looking for. This is particularly useful when we occasionally have
52
+ // to livestream to a user, where bitrates can be different and even get reconfigured in realtime. By
53
+ // contrast, HomeKit Secure Video has a consistent bitrate it accepts, and we want to try to match it as
54
+ // closely as posible.
55
+ if (!(await this.protectCamera.setBitrate(this.rtspEntry.channel.id, this.recordingConfig.videoCodec.parameters.bitRate * 1000))) {
56
+ this.log.error("%s: Unable to set the bitrate to %skbps for HomeKit Secure Video event recording.", this.name(), this.recordingConfig.videoCodec.parameters.bitRate);
57
+ return;
58
+ }
59
+ // Fire up the timeshift buffer.
60
+ if (!(await this.timeshift.start(this.rtspEntry.channel.id))) {
61
+ this.log.error("%s: Unable to start the timeshift buffer for HomeKit Secure Video.", this.name());
62
+ return;
63
+ }
64
+ // Inform the user of the state change, if needed.
65
+ if ((this._isRecording !== active) || !this.isInitialized) {
66
+ this.isInitialized = true;
67
+ this.log.info("%s: Enabling HomeKit Secure Video event recording: %sx%s@%sfps, %s kbps with a %s second timeshift buffer.", this.name(), this.rtspEntry.resolution[0], this.rtspEntry.resolution[1], this.rtspEntry.resolution[2], this.recordingConfig.videoCodec.parameters.bitRate, this.timeshift.length / 1000);
68
+ // Inform the user if there's a maximum event recording duration set.
69
+ if (this.maxRecordingDuration) {
70
+ this.log.info("%s: HomeKit Secure Video recordings will be no longer than ~%s seconds.", this.name(), this.maxRecordingDuration);
71
+ }
72
+ }
73
+ // Update our recording state internally.
74
+ this._isRecording = active;
75
+ }
76
+ // Process updated recording configuration settings from HomeKit Secure Video.
77
+ updateRecordingConfiguration(configuration) {
78
+ // If we're set to an undefined state, it's because HomeKit can't figure out a valid configuration to use.
79
+ // This is typically due to a factory reset of the camera or a similar edge case. We choose to handle it
80
+ // by stopping our timeshift buffer.
81
+ if (!configuration) {
82
+ this.recordingConfig = configuration;
83
+ this.timeshift.stop();
84
+ return;
85
+ }
86
+ // Save the new recording configuration.
87
+ this.recordingConfig = configuration;
88
+ // Tell our timeshift buffer how many seconds HomeKit has requested we prebuffer.
89
+ this.timeshift.length = this.recordingConfig.prebufferLength;
90
+ // Start or restart our timeshift buffer based on our updated configuration.
91
+ void this.updateRecordingActive(this.isRecording);
92
+ }
93
+ // Handle the actual recording stream request.
94
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
95
+ async *handleRecordingStreamRequest(streamId) {
96
+ // If we've explicitly disabled HKSV recording, we're done right now.
97
+ if (!this.accessory.context.hksvRecording) {
98
+ const streamHeader = await this.timeshift.getStreamHeader();
99
+ if (streamHeader) {
100
+ yield { data: streamHeader, isLast: true };
101
+ return;
102
+ }
103
+ // We should never get to this point, but in case we do, this is a failsafe to ensure that no video
104
+ // recording can ever take place if we've disabled it through the HKSV recording switch accessory.
105
+ // It will generate a warning in Homebridge that can be ignored, but it will ensure nothing can be recorded.
106
+ yield { data: Buffer.alloc(0), isLast: true };
107
+ return;
108
+ }
109
+ // Start transmitting our timeshift buffer and process it through FFmpeg.
110
+ if (!this.startTransmitting() || !this.ffmpegStream) {
111
+ // Something went wrong, so we gracefully tell HomeKit we have no packets to transmit and return.
112
+ this.stopTransmitting();
113
+ yield { data: Buffer.alloc(0), isLast: true };
114
+ return;
115
+ }
116
+ for await (const segment of this.ffmpegStream.generator()) {
117
+ let isLastSegment = false;
118
+ // If we've stopped transmitting - make sure we don't send anything else.
119
+ if (!this.timeshift.isTransmitting) {
120
+ return;
121
+ }
122
+ // No segment doesn't mean we're done necessarily, but it does mean we need to wait for FFmpeg to catch up.
123
+ if (!segment) {
124
+ continue;
125
+ }
126
+ // If we've exceeded a user-configured maximum recording duration, let HomeKit know we're stopping.
127
+ if (this.maxRecordingDuration && ((this.recordedSegments * this.timeshift.segmentLength) / 1000) > this.maxRecordingDuration) {
128
+ isLastSegment = true;
129
+ }
130
+ yield {
131
+ data: segment,
132
+ isLast: isLastSegment
133
+ };
134
+ if (isLastSegment) {
135
+ return;
136
+ }
137
+ }
138
+ }
139
+ // Receive an acknowledgement from HomeKit that it's seen an end-of-stream packet from us.
140
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
141
+ acknowledgeStream(streamId) {
142
+ // Since HomeKit knows our transmission is ending, it's safe to do so now.
143
+ this.stopTransmitting();
144
+ }
145
+ // Process HomeKit requests to end the transmission of the recording stream.
146
+ closeRecordingStream(streamId, reason) {
147
+ this.stopTransmitting(reason);
148
+ }
149
+ // Start transmitting to the HomeKit hub our timeshifted fMP4 stream.
150
+ startTransmitting() {
151
+ var _a;
152
+ // If there's a prior instance of FFmpeg, clean up after ourselves.
153
+ if (this.ffmpegStream) {
154
+ this.ffmpegStream.stop();
155
+ this.ffmpegStream = null;
156
+ }
157
+ // If there's a prior instance of our transmit handler, clean it up.
158
+ if (this.transmitListener) {
159
+ this.timeshift.removeListener("segment", this.transmitListener);
160
+ this.transmitListener = null;
161
+ }
162
+ // If we don't have a recording configuration from HomeKit or an RTSP profile, we can't continue.
163
+ if (!this.recordingConfig || !this.rtspEntry) {
164
+ return false;
165
+ }
166
+ // Start a new FFmpeg instance to transcode using HomeKit's requirements.
167
+ // We want to keep feeding HomeKit until it tells us it's finished, or we decide we don't want to send anymore
168
+ // fMP4 packets. We treat this the same was a DVR works where you can pause live television, but it continues to
169
+ // buffer what's being broadcast until you're ready to watch it. This is the same idea.
170
+ // Keep track of how many fMP4 segments we are feeding FFmpeg.
171
+ this.recordedSegments = 0;
172
+ // Check to see if the user has audio enabled or disabled for recordings.
173
+ const isAudioActive = ((_a = this.protectCamera.stream.controller.recordingManagement) === null || _a === void 0 ? void 0 : _a.recordingManagementService.getCharacteristic(this.api.hap.Characteristic.RecordingAudioActive).value) === 1 ? true : false;
174
+ this.ffmpegStream = new protect_ffmpeg_1.FfmpegRecordingProcess(this.protectCamera, this.recordingConfig, isAudioActive);
175
+ // Start the livestream.
176
+ const timeshiftedSeconds = this.timeshift.length / 1000;
177
+ // Let the timeshift buffer know it's time to transmit and continue timeshifting.
178
+ this.timeshift.transmitStream(true);
179
+ let seenFtyp = false;
180
+ let seenMoov = false;
181
+ // Listen in for events from the timeshift buffer and feed FFmpeg. This looks simple, conceptually,
182
+ // but there's a lot going on here.
183
+ this.transmitListener = (segment) => {
184
+ var _a, _b;
185
+ (_b = (_a = this.ffmpegStream) === null || _a === void 0 ? void 0 : _a.stdin) === null || _b === void 0 ? void 0 : _b.write(segment);
186
+ // We don't want the fMP4 ftyp or moov boxes accounted for in our recording statistics so
187
+ // let's filter them out.
188
+ if (!seenFtyp && this.timeshift.isFtyp(segment)) {
189
+ seenFtyp = true;
190
+ return;
191
+ }
192
+ if (!seenMoov && this.timeshift.isMoov(segment)) {
193
+ seenMoov = true;
194
+ return;
195
+ }
196
+ this.recordedSegments++;
197
+ };
198
+ this.timeshift.on("segment", this.transmitListener);
199
+ // Inform the user.
200
+ this.log.debug("%s: Beginning a HomeKit Secure Video recording event with a timeshift buffer of %s seconds.", this.name(), timeshiftedSeconds);
201
+ return true;
202
+ }
203
+ // Stop transmitting the HomeKit hub our timeshifted fMP4 stream.
204
+ stopTransmitting(reason) {
205
+ // We're done transmitting, so we can go back to maintaining our timeshift buffer for HomeKit.
206
+ this.timeshift.transmitStream(false);
207
+ // Kill any FFmpeg sessions.
208
+ if (this.ffmpegStream) {
209
+ this.ffmpegStream.stop();
210
+ this.ffmpegStream = null;
211
+ }
212
+ if (this.transmitListener) {
213
+ this.timeshift.removeListener("segment", this.transmitListener);
214
+ this.transmitListener = null;
215
+ }
216
+ // Inform the user.
217
+ if (this.accessory.context.hksvRecording) {
218
+ this.log.info("%s: HomeKit Secure Video has recorded a %s second motion event.", this.name(), Math.round((this.recordedSegments * this.timeshift.segmentLength) / 1000));
219
+ }
220
+ // If we have a reason for stopping defined, and it's noteworthy, inform the user.
221
+ let reasonDescription;
222
+ switch (reason) {
223
+ case 3 /* CANCELLED */:
224
+ reasonDescription = "HomeKit canceled the request.";
225
+ break;
226
+ case 5 /* UNEXPECTED_FAILURE */:
227
+ reasonDescription = "An unexpected protocol failure has occured.";
228
+ break;
229
+ case 6 /* TIMEOUT */:
230
+ reasonDescription = "The request timed out.";
231
+ break;
232
+ default:
233
+ break;
234
+ }
235
+ if ((reason !== undefined) && (reason !== 0 /* NORMAL */)) {
236
+ this.log.error("%s: HomeKit Secure Video event recording ended abnormally: %s", this.name(), reasonDescription);
237
+ }
238
+ }
239
+ // Return our HomeKit Secure Video recording state. This effectively tells us if HKSV has been configured and is on.
240
+ get isRecording() {
241
+ return this._isRecording;
242
+ }
243
+ // Return our current HomeKit Secure Video recording configuration.
244
+ get recordingConfiguration() {
245
+ var _a;
246
+ return (_a = this.recordingConfig) !== null && _a !== void 0 ? _a : null;
247
+ }
248
+ }
249
+ exports.ProtectRecordingDelegate = ProtectRecordingDelegate;
250
+ //# sourceMappingURL=protect-record.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"protect-record.js","sourceRoot":"","sources":["../src/protect-record.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ProtectSecuritySystem = void 0;
4
+ /* Copyright(C) 2019-2022, HJD (https://github.com/hjdhjd). All rights reserved.
5
+ *
6
+ * protect-securitysystem.ts: Security system accessory for UniFi Protect.
7
+ */
4
8
  const protect_accessory_1 = require("./protect-accessory");
5
9
  class ProtectSecuritySystem extends protect_accessory_1.ProtectAccessory {
6
10
  // Configure a security system accessory for HomeKit.
@@ -150,9 +154,9 @@ class ProtectSecuritySystem extends protect_accessory_1.ProtectAccessory {
150
154
  // Handlers to get our current state, and initialize on startup.
151
155
  (_a = securityService
152
156
  .updateCharacteristic(SecuritySystemCurrentState, accessory.context.securityState)
153
- .getCharacteristic(SecuritySystemCurrentState)) === null || _a === void 0 ? void 0 : _a.on("get" /* GET */, this.getSecurityState.bind(this));
157
+ .getCharacteristic(SecuritySystemCurrentState)) === null || _a === void 0 ? void 0 : _a.onGet(this.getSecurityState.bind(this));
154
158
  // Handlers for triggering a change in the security system state.
155
- (_b = accessory.getService(hap.Service.SecuritySystem)) === null || _b === void 0 ? void 0 : _b.getCharacteristic(SecuritySystemTargetState).on("set" /* SET */, this.setSecurityState.bind(this));
159
+ (_b = accessory.getService(hap.Service.SecuritySystem)) === null || _b === void 0 ? void 0 : _b.getCharacteristic(SecuritySystemTargetState).onSet(this.setSecurityState.bind(this));
156
160
  // Set the initial state after we have setup our handlers above. This way, when we startup, we
157
161
  // automatically restore the scene we've been set to, if any.
158
162
  (_c = accessory.getService(hap.Service.SecuritySystem)) === null || _c === void 0 ? void 0 : _c.updateCharacteristic(SecuritySystemTargetState, targetSecurityState);
@@ -184,12 +188,11 @@ class ProtectSecuritySystem extends protect_accessory_1.ProtectAccessory {
184
188
  this.log.info("%s: Enabling the security alarm switch on the security system accessory.", this.name());
185
189
  // Activate or deactivate the security alarm.
186
190
  (_b = switchService
187
- .getCharacteristic(this.hap.Characteristic.On)) === null || _b === void 0 ? void 0 : _b.on("get" /* GET */, (callback) => {
188
- callback(null, this.isAlarmTriggered === true);
189
- }).on("set" /* SET */, (value, callback) => {
191
+ .getCharacteristic(this.hap.Characteristic.On)) === null || _b === void 0 ? void 0 : _b.onGet(() => {
192
+ return this.isAlarmTriggered === true;
193
+ }).onSet((value) => {
190
194
  this.setSecurityAlarm(value === true);
191
195
  this.log.info("%s: Security system alarm %s.", this.name(), (value === true) ? "triggered" : "reset");
192
- callback(null);
193
196
  });
194
197
  // Initialize the value.
195
198
  switchService.updateCharacteristic(this.hap.Characteristic.On, this.isAlarmTriggered);
@@ -221,13 +224,13 @@ class ProtectSecuritySystem extends protect_accessory_1.ProtectAccessory {
221
224
  (_a = this.nvr.mqtt) === null || _a === void 0 ? void 0 : _a.publish(this.accessory, "securitysystem", this.isAlarmTriggered ? "Alarm" : state);
222
225
  }
223
226
  // Get the current security system state.
224
- getSecurityState(callback) {
225
- callback(null, this.isAlarmTriggered ?
227
+ getSecurityState() {
228
+ return this.isAlarmTriggered ?
226
229
  this.hap.Characteristic.SecuritySystemCurrentState.ALARM_TRIGGERED :
227
- this.accessory.context.securityState);
230
+ this.accessory.context.securityState;
228
231
  }
229
232
  // Change the security system state, and enable or disable motion detection accordingly.
230
- setSecurityState(value, callback) {
233
+ setSecurityState(value) {
231
234
  var _a, _b, _c, _d, _e, _f;
232
235
  const accessory = this.accessory;
233
236
  const hap = this.hap;
@@ -239,9 +242,6 @@ class ProtectSecuritySystem extends protect_accessory_1.ProtectAccessory {
239
242
  let viewScene = "";
240
243
  // If we don't have any liveviews or the bootstrap configuration, there's nothing for us to do.
241
244
  if (!liveviews || !nvrApi.bootstrap) {
242
- if (callback) {
243
- callback(null);
244
- }
245
245
  return;
246
246
  }
247
247
  // We have three different states which can be triggered (aside from disarming).
@@ -280,16 +280,13 @@ class ProtectSecuritySystem extends protect_accessory_1.ProtectAccessory {
280
280
  this.log.info("%s: No liveview configured for this security system state. Create a liveview named %s in the Protect webUI to use this feature.", this.name(), viewScene);
281
281
  accessory.context.securityState = newState;
282
282
  (_b = accessory.getService(hap.Service.SecuritySystem)) === null || _b === void 0 ? void 0 : _b.updateCharacteristic(SecuritySystemCurrentState, newState);
283
- if (callback) {
284
- callback(null);
285
- }
286
283
  return;
287
284
  }
288
285
  this.log.info("%s: Setting the liveview scene: %s.", this.name(), viewScene);
289
286
  // Iterate through the list of accessories and set the Protect scene.
290
287
  for (const targetAccessory of this.platform.accessories) {
291
288
  // We only want accessories associated with this Protect controller.
292
- if (!((_c = targetAccessory.context) === null || _c === void 0 ? void 0 : _c.camera) || targetAccessory.context.nvr !== nvrApi.bootstrap.nvr.mac) {
289
+ if (!((_c = targetAccessory.context) === null || _c === void 0 ? void 0 : _c.device) || targetAccessory.context.nvr !== nvrApi.bootstrap.nvr.mac) {
293
290
  continue;
294
291
  }
295
292
  let targetState = false;
@@ -321,9 +318,6 @@ class ProtectSecuritySystem extends protect_accessory_1.ProtectAccessory {
321
318
  }
322
319
  // Publish to MQTT, if configured.
323
320
  this.publishSecurityState();
324
- if (callback) {
325
- callback(null);
326
- }
327
321
  }
328
322
  // Set the security alarm.
329
323
  setSecurityAlarm(value) {
@@ -1 +1 @@
1
- {"version":3,"file":"protect-securitysystem.js","sourceRoot":"","sources":["../src/protect-securitysystem.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"protect-securitysystem.js","sourceRoot":"","sources":["../src/protect-securitysystem.ts"],"names":[],"mappings":"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"}