From 0da966afd37fefe6d1fd3cbc5fc5828bbe08bdca Mon Sep 17 00:00:00 2001 From: Koushik Dutta Date: Thu, 10 Mar 2022 09:47:12 -0800 Subject: [PATCH] unifi-protect: fix login timeout. use rtsps by default. --- plugins/unifi-protect/.vscode/launch.json | 1 + plugins/unifi-protect/package-lock.json | 4 ++-- plugins/unifi-protect/package.json | 2 +- plugins/unifi-protect/src/camera.ts | 24 +++++++--------------- plugins/unifi-protect/src/main.ts | 1 + plugins/unifi-protect/src/unifi-protect.ts | 3 ++- 6 files changed, 14 insertions(+), 21 deletions(-) diff --git a/plugins/unifi-protect/.vscode/launch.json b/plugins/unifi-protect/.vscode/launch.json index 0669f79b4..03660e3c2 100644 --- a/plugins/unifi-protect/.vscode/launch.json +++ b/plugins/unifi-protect/.vscode/launch.json @@ -10,6 +10,7 @@ "port": 10081, "request": "attach", "skipFiles": [ + "**/plugin-remote-worker.*", "/**" ], "preLaunchTask": "scrypted: deploy+debug", diff --git a/plugins/unifi-protect/package-lock.json b/plugins/unifi-protect/package-lock.json index 28fb5d2f8..1d2e6307a 100644 --- a/plugins/unifi-protect/package-lock.json +++ b/plugins/unifi-protect/package-lock.json @@ -1,12 +1,12 @@ { "name": "@scrypted/unifi-protect", - "version": "0.0.102", + "version": "0.0.104", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@scrypted/unifi-protect", - "version": "0.0.102", + "version": "0.0.104", "license": "Apache", "dependencies": { "@koush/unifi-protect": "file:../../external/unifi-protect", diff --git a/plugins/unifi-protect/package.json b/plugins/unifi-protect/package.json index c0948d0a9..b95e05ee4 100644 --- a/plugins/unifi-protect/package.json +++ b/plugins/unifi-protect/package.json @@ -1,6 +1,6 @@ { "name": "@scrypted/unifi-protect", - "version": "0.0.102", + "version": "0.0.104", "description": "Unifi Protect Plugin for Scrypted", "author": "Scrypted", "license": "Apache", diff --git a/plugins/unifi-protect/src/camera.ts b/plugins/unifi-protect/src/camera.ts index ae6c7d7a3..afb46bcf4 100644 --- a/plugins/unifi-protect/src/camera.ts +++ b/plugins/unifi-protect/src/camera.ts @@ -189,17 +189,6 @@ export class UnifiCamera extends ScryptedDeviceBase implements Notifier, Interco return mediaManager.createMediaObject(Buffer.from(data), 'image/jpeg'); } - getDefaultOrderedVideoStreamOptions(vsos: MediaStreamOptions[]) { - if (!vsos || !vsos.length) - return vsos; - const defaultStream = this.getDefaultStream(vsos); - if (!defaultStream) - return vsos; - vsos = vsos.filter(vso => vso.id !== defaultStream?.id); - vsos.unshift(defaultStream); - return vsos; - } - getDefaultStream(vsos: MediaStreamOptions[]) { let defaultStreamIndex = vsos.findIndex(vso => vso.id === this.storage.getItem('defaultStream')); if (defaultStreamIndex === -1) @@ -309,13 +298,14 @@ export class UnifiCamera extends ScryptedDeviceBase implements Notifier, Interco const rtspChannel = camera.channels.find(check => check.id.toString() === vso.id); const { rtspAlias } = rtspChannel; - const u = `rtsp://${this.protect.getSetting('ip')}:7447/${rtspAlias}` + const u = `rtsps://${this.protect.getSetting('ip')}:7441/${rtspAlias}` - return mediaManager.createMediaObject({ + const data = Buffer.from(JSON.stringify({ url: u, container: 'rtsp', mediaStreamOptions: this.createMediaStreamOptions(rtspChannel), - } as MediaStreamUrl, ScryptedMimeTypes.MediaStreamUrl); + } as MediaStreamUrl)); + return mediaManager.createMediaObject(data, ScryptedMimeTypes.MediaStreamUrl); } createMediaStreamOptions(channel: ProtectCameraChannelConfig) { @@ -346,10 +336,10 @@ export class UnifiCamera extends ScryptedDeviceBase implements Notifier, Interco async getVideoStreamOptions(): Promise { const camera = this.findCamera(); - const video: MediaStreamOptions[] = camera.channels + const vsos = camera.channels .map(channel => this.createMediaStreamOptions(channel)); - return this.getDefaultOrderedVideoStreamOptions(video); + return vsos; } async setVideoStreamOptions(options: MediaStreamOptions): Promise { @@ -361,7 +351,7 @@ export class UnifiCamera extends ScryptedDeviceBase implements Notifier, Interco const channel = camera.channels.find(channel => channel.id.toString() === options.id); const sanitizedBitrate = Math.min(channel.maxBitrate, Math.max(channel.minBitrate, bitrate)); - this.console.log('bitrate change requested', bitrate, 'clamped to', sanitizedBitrate); + this.console.log(channel.name, 'bitrate change requested', bitrate, 'clamped to', sanitizedBitrate); channel.bitrate = sanitizedBitrate; const cameraResult = await this.protect.api.updateCameraChannels(camera); if (!cameraResult) { diff --git a/plugins/unifi-protect/src/main.ts b/plugins/unifi-protect/src/main.ts index 7f53051b2..45a3700e7 100644 --- a/plugins/unifi-protect/src/main.ts +++ b/plugins/unifi-protect/src/main.ts @@ -11,6 +11,7 @@ import { UnifiLock } from "./lock"; const { deviceManager } = sdk; const filter = [ + 'channels', 'recordingSchedules', 'stats', 'wifiConnectionState', diff --git a/plugins/unifi-protect/src/unifi-protect.ts b/plugins/unifi-protect/src/unifi-protect.ts index 3d3d424e9..1d9e6565e 100644 --- a/plugins/unifi-protect/src/unifi-protect.ts +++ b/plugins/unifi-protect/src/unifi-protect.ts @@ -1,2 +1,3 @@ -export * from '@koush/unifi-protect' +// export * from '@koush/unifi-protect' +export * from '@koush/unifi-protect/src/index' // export * from '../../../external/unifi-protect/src/index'