@camera.ui/server 0.0.5 → 0.0.8
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/dist/interface/assets/{@tanstack-BqH4GyO-.js → @tanstack-B-9PO-kT.js} +1 -1
- package/dist/interface/assets/{@vee-validate-DCBdnGo-.js → @vee-validate-D_G0ehOl.js} +1 -1
- package/dist/interface/assets/{@vue-C7-KaDG4.js → @vue-C10tA4b9.js} +6 -6
- package/dist/interface/assets/{@vueform-arggO0eF.js → @vueform-Bj73kRPS.js} +1 -1
- package/dist/interface/assets/{@vueuse-C3WMTDqL.js → @vueuse-BPeqNGoM.js} +1 -1
- package/dist/interface/assets/Account-MEaGtu1D.js +1 -0
- package/dist/interface/assets/Adminpanel-D1ycltxf.js +1 -0
- package/dist/interface/assets/Appearance-Jlzp_P21.js +1 -0
- package/dist/interface/assets/Backup-1-ju9NDo.js +1 -0
- package/dist/interface/assets/Camera-BOu5dUel.js +1 -0
- package/dist/interface/assets/Cameras-C7eUXdZk.js +1 -0
- package/dist/interface/assets/Cameras-tmTzi1M6.css +1 -0
- package/dist/interface/assets/Camview-CEgwGCGR.js +1 -0
- package/dist/interface/assets/{Camview-vUAs5YHU.css → Camview-CWTrsoY0.css} +1 -1
- package/dist/interface/assets/Config-Dt-etQ3h.js +1 -0
- package/dist/interface/assets/{Console-Caz7y-T0.js → Console-FCve5CKy.js} +2 -2
- package/dist/interface/assets/FirstSteps-DLkKDSe9.js +1 -0
- package/dist/interface/assets/{NewCamera-B9t-0NCc.js → NewCamera-Cc1X79Ns.js} +2 -2
- package/dist/interface/assets/Plugin-CnQjafMC.js +1 -0
- package/dist/interface/assets/{Plugin-BSHKKjrl.css → Plugin-DzKKCoqQ.css} +1 -1
- package/dist/interface/assets/Plugins-B8gCgxOx.css +1 -0
- package/dist/interface/assets/Plugins-CwyUdMlv.js +1 -0
- package/dist/interface/assets/Recordings-Boeev1lV.js +1 -0
- package/dist/interface/assets/Recordings-D5ta7AYS.js +1 -0
- package/dist/interface/assets/Settings-Cvm2jnBr.js +1 -0
- package/dist/interface/assets/System-fHQ7XKri.js +1 -0
- package/dist/interface/assets/User-5o1VKizc.js +1 -0
- package/dist/interface/assets/VConfigEditor.vue_vue_type_script_setup_true_lang-C_95ELTZ.js +2 -0
- package/dist/interface/assets/VConsole-BHy92Ws0.js +1 -0
- package/dist/interface/assets/VConsole-MV9pQtJj.css +1 -0
- package/dist/interface/assets/{VPlayer-YdRn97Bs.js → VPlayer-LX5HGLrY.js} +1 -1
- package/dist/interface/assets/{VPluginCard--3bx6UJb.js → VPluginCard-CFpg0LM4.js} +2 -2
- package/dist/interface/assets/VPluginCard-Fl0AYmnF.css +1 -0
- package/dist/interface/assets/main-BCWSiwnj.js +9 -0
- package/dist/interface/assets/{main-B3IVLctZ.css → main-CQNVVncO.css} +1 -1
- package/dist/interface/assets/{pinia-D8MtiGcH.js → pinia-CitQ5b66.js} +2 -2
- package/dist/interface/assets/{plugins-Bf03y242.js → plugins-D80RNVmI.js} +1 -1
- package/dist/interface/assets/qrcode-SHonoxyK.js +8 -0
- package/dist/interface/assets/{system-BONnDA4y.js → system-CS_ZOs3_.js} +1 -1
- package/dist/interface/assets/{ui-CNpIJotI.js → ui-CHKoHLl-.js} +1 -1
- package/dist/interface/assets/{v-calendar-uh0aTGqP.js → v-calendar-C-8W4FeM.js} +1 -1
- package/dist/interface/assets/{vee-validate-D3FqbChK.js → vee-validate-Ck3I2guh.js} +1 -1
- package/dist/interface/assets/{vue-i18n-1AU8MPys.js → vue-i18n-DuCDz9TJ.js} +1 -1
- package/dist/interface/assets/{vue-inline-svg-2DDwYW6V.js → vue-inline-svg-C2gR6nRD.js} +1 -1
- package/dist/interface/assets/{vue-router-DfeQ8s4I.js → vue-router-OPGDMnws.js} +1 -1
- package/dist/interface/assets/{vue3-dnd-BwxcSU9Z.js → vue3-dnd-Hf295yge.js} +1 -1
- package/dist/interface/assets/{vue3-toastify-Ul-rf53I.js → vue3-toastify-DQr2dOCx.js} +1 -1
- package/dist/interface/assets/vuetify-CrcT8VHB.js +5 -0
- package/dist/interface/index.html +14 -15
- package/dist/interface/sw.js +1 -1
- package/dist/server/bin/cui-service.d.ts +1 -0
- package/dist/server/bin/cui-service.js +41 -9
- package/dist/server/bin/cui-service.js.map +1 -1
- package/dist/server/package.json +9 -8
- package/dist/server/requirements.txt +2 -3
- package/dist/server/src/api/controllers/cameras.controller.js +2 -2
- package/dist/server/src/api/controllers/cameras.controller.js.map +1 -1
- package/dist/server/src/api/controllers/plugins.controller.js +7 -6
- package/dist/server/src/api/controllers/plugins.controller.js.map +1 -1
- package/dist/server/src/api/go2rtc/api/streams.d.ts +4 -4
- package/dist/server/src/api/go2rtc/api/streams.js +2 -24
- package/dist/server/src/api/go2rtc/api/streams.js.map +1 -1
- package/dist/server/src/api/go2rtc/types.d.ts +6 -2
- package/dist/server/src/api/schemas/go2rtc.schema.d.ts +5 -5
- package/dist/server/src/api/services/cameras.service.d.ts +6 -5
- package/dist/server/src/api/services/cameras.service.js +72 -59
- package/dist/server/src/api/services/cameras.service.js.map +1 -1
- package/dist/server/src/api/services/plugins.service.js +11 -13
- package/dist/server/src/api/services/plugins.service.js.map +1 -1
- package/dist/server/src/api.d.ts +2 -2
- package/dist/server/src/camera/controller.d.ts +9 -4
- package/dist/server/src/camera/controller.js +21 -7
- package/dist/server/src/camera/controller.js.map +1 -1
- package/dist/server/src/camera/device.d.ts +15 -3
- package/dist/server/src/camera/device.js.map +1 -1
- package/dist/server/src/camera/index.d.ts +18 -39
- package/dist/server/src/camera/index.js +137 -165
- package/dist/server/src/camera/index.js.map +1 -1
- package/dist/server/src/camera/interfaces/camera.d.ts +0 -1
- package/dist/server/src/camera/interfaces/camera.js +0 -8
- package/dist/server/src/camera/interfaces/camera.js.map +1 -1
- package/dist/server/src/camera/streaming/werift-session.d.ts +10 -1
- package/dist/server/src/camera/streaming/werift-session.js +16 -1
- package/dist/server/src/camera/streaming/werift-session.js.map +1 -1
- package/dist/server/src/camera/types.d.ts +0 -1
- package/dist/server/src/camera/types.js.map +1 -1
- package/dist/server/src/camera/videoFrame.d.ts +3 -3
- package/dist/server/src/camera/videoFrame.js +6 -7
- package/dist/server/src/camera/videoFrame.js.map +1 -1
- package/dist/server/src/decoder/types.d.ts +4 -9
- package/dist/server/src/decoder/worker.d.ts +3 -5
- package/dist/server/src/decoder/worker.js +40 -64
- package/dist/server/src/decoder/worker.js.map +1 -1
- package/dist/server/src/go2rtc/index.js +1 -1
- package/dist/server/src/go2rtc/index.js.map +1 -1
- package/dist/server/src/index.d.ts +3 -3
- package/dist/server/src/main.js +1 -2
- package/dist/server/src/main.js.map +1 -1
- package/dist/server/src/nats/connection.d.ts +17 -0
- package/dist/server/src/nats/connection.js +66 -0
- package/dist/server/src/nats/connection.js.map +1 -0
- package/dist/server/src/nats/error.d.ts +9 -0
- package/dist/server/src/nats/error.js +11 -0
- package/dist/server/src/nats/error.js.map +1 -0
- package/dist/server/src/nats/index.d.ts +6 -4
- package/dist/server/src/nats/index.js +22 -17
- package/dist/server/src/nats/index.js.map +1 -1
- package/dist/server/src/nats/messageQueue.d.ts +7 -4
- package/dist/server/src/nats/messageQueue.js +43 -59
- package/dist/server/src/nats/messageQueue.js.map +1 -1
- package/dist/server/src/nats/proxy/cameraDevice.js +19 -24
- package/dist/server/src/nats/proxy/cameraDevice.js.map +1 -1
- package/dist/server/src/nats/proxy/deviceManager.d.ts +2 -2
- package/dist/server/src/nats/proxy/deviceManager.js +4 -14
- package/dist/server/src/nats/proxy/deviceManager.js.map +1 -1
- package/dist/server/src/nats/server.js +4 -10
- package/dist/server/src/nats/server.js.map +1 -1
- package/dist/server/src/nats/subscription.d.ts +12 -0
- package/dist/server/src/nats/subscription.js +21 -0
- package/dist/server/src/nats/subscription.js.map +1 -0
- package/dist/server/src/nats/types.d.ts +25 -40
- package/dist/server/src/nats/types.js +1 -10
- package/dist/server/src/nats/types.js.map +1 -1
- package/dist/server/src/nats/utils.d.ts +2 -4
- package/dist/server/src/nats/utils.js +3 -3
- package/dist/server/src/nats/utils.js.map +1 -1
- package/dist/server/src/plugins/index.d.ts +3 -5
- package/dist/server/src/plugins/index.js +54 -141
- package/dist/server/src/plugins/index.js.map +1 -1
- package/dist/server/src/plugins/plugin.d.ts +4 -13
- package/dist/server/src/plugins/plugin.js +40 -90
- package/dist/server/src/plugins/plugin.js.map +1 -1
- package/dist/server/src/plugins/types.d.ts +4 -0
- package/dist/server/src/plugins/types.js.map +1 -1
- package/dist/server/src/plugins/worker.d.ts +1 -1
- package/dist/server/src/plugins/worker.js +52 -66
- package/dist/server/src/plugins/worker.js.map +1 -1
- package/dist/server/src/polyglot/node/decoder/child.js +87 -159
- package/dist/server/src/polyglot/node/decoder/child.js.map +1 -1
- package/dist/server/src/polyglot/node/decoder/imageUtils.d.ts +1 -1
- package/dist/server/src/polyglot/node/plugins/cameraStorage.d.ts +2 -2
- package/dist/server/src/polyglot/node/plugins/cameraStorage.js.map +1 -1
- package/dist/server/src/polyglot/node/plugins/child.d.ts +1 -1
- package/dist/server/src/polyglot/node/plugins/child.js +34 -60
- package/dist/server/src/polyglot/node/plugins/child.js.map +1 -1
- package/dist/server/src/polyglot/node/plugins/{config.js → configService.js} +1 -1
- package/dist/server/src/polyglot/node/plugins/configService.js.map +1 -0
- package/dist/server/src/polyglot/node/plugins/{api.d.ts → pluginApi.d.ts} +9 -12
- package/dist/server/src/polyglot/node/plugins/pluginApi.js +34 -0
- package/dist/server/src/polyglot/node/plugins/pluginApi.js.map +1 -0
- package/dist/server/src/polyglot/node/plugins/{logger.d.ts → pluginLogger.d.ts} +2 -0
- package/dist/server/src/polyglot/node/plugins/pluginLogger.js +89 -0
- package/dist/server/src/polyglot/node/plugins/pluginLogger.js.map +1 -0
- package/dist/server/src/polyglot/node/plugins/proxy/cameraDevice.d.ts +8 -11
- package/dist/server/src/polyglot/node/plugins/proxy/cameraDevice.js +67 -129
- package/dist/server/src/polyglot/node/plugins/proxy/cameraDevice.js.map +1 -1
- package/dist/server/src/polyglot/node/plugins/proxy/deviceManager.d.ts +6 -8
- package/dist/server/src/polyglot/node/plugins/proxy/deviceManager.js +15 -43
- package/dist/server/src/polyglot/node/plugins/proxy/deviceManager.js.map +1 -1
- package/dist/server/src/polyglot/node/plugins/storageController.d.ts +2 -2
- package/dist/server/src/polyglot/node/plugins/storageController.js.map +1 -1
- package/dist/server/src/polyglot/python/camera/interfaces/camera.py +0 -6
- package/dist/server/src/polyglot/python/camera/video_frame.py +10 -18
- package/dist/server/src/polyglot/python/camera_ui_types/__init__.py +1 -5
- package/dist/server/src/polyglot/python/decoder/child.py +102 -161
- package/dist/server/src/polyglot/python/plugins/camera_storage.py +10 -23
- package/dist/server/src/polyglot/python/plugins/child.py +35 -60
- package/dist/server/src/polyglot/python/plugins/{proxy/message_queue.py → message_queue.py} +50 -81
- package/dist/server/src/polyglot/python/plugins/plugin_api.py +13 -21
- package/dist/server/src/polyglot/python/plugins/proxy/camera_device.py +90 -173
- package/dist/server/src/polyglot/python/plugins/proxy/device_manager.py +25 -64
- package/dist/server/src/polyglot/python/plugins/storage_controller.py +3 -4
- package/dist/server/src/polyglot/python/utilities/connection.py +86 -0
- package/dist/server/src/polyglot/python/utilities/object_path.py +12 -4
- package/dist/server/src/polyglot/python/utilities/subscriptions.py +20 -0
- package/dist/server/src/polyglot/python/utilities/task.py +11 -1
- package/dist/server/src/services/config/index.js +4 -2
- package/dist/server/src/services/config/index.js.map +1 -1
- package/dist/server/src/services/logger/index.js +11 -8
- package/dist/server/src/services/logger/index.js.map +1 -1
- package/dist/server/src/utils/ffmpeg.d.ts +2 -0
- package/dist/server/src/{decoder → utils}/ffmpeg.js +2 -2
- package/dist/server/src/utils/ffmpeg.js.map +1 -0
- package/dist/server/src/utils/pythonInstaller.d.ts +1 -1
- package/dist/server/src/utils/pythonInstaller.js +10 -4
- package/dist/server/src/utils/pythonInstaller.js.map +1 -1
- package/dist/server/src/utils/reader.js.map +1 -0
- package/dist/server/src/utils/subscribed.d.ts +4 -4
- package/dist/server/src/utils/subscribed.js.map +1 -1
- package/package.json +9 -8
- package/dist/interface/assets/@camera.ui-2NVnv26v.js +0 -8
- package/dist/interface/assets/Account-gJpkf0nE.js +0 -1
- package/dist/interface/assets/Adminpanel-Bge9nu5N.js +0 -1
- package/dist/interface/assets/Appearance-D22q-X_I.js +0 -1
- package/dist/interface/assets/Backup-pJm6s10G.js +0 -1
- package/dist/interface/assets/Camera-BgO2yRjb.js +0 -1
- package/dist/interface/assets/Cameras-BM3vSM_R.css +0 -1
- package/dist/interface/assets/Cameras-DjeKruR_.js +0 -1
- package/dist/interface/assets/Camview-DfzlprzN.js +0 -1
- package/dist/interface/assets/Config-BKIOIkjC.js +0 -1
- package/dist/interface/assets/FirstSteps-mQK4XFTs.js +0 -1
- package/dist/interface/assets/Plugin-Di_bBsg-.js +0 -1
- package/dist/interface/assets/Plugins-BsMITags.css +0 -1
- package/dist/interface/assets/Plugins-DhmzMNuO.js +0 -1
- package/dist/interface/assets/Recordings-Bu53bSBp.js +0 -1
- package/dist/interface/assets/Recordings-XY20w8yp.js +0 -1
- package/dist/interface/assets/Settings-gGRBRVST.js +0 -1
- package/dist/interface/assets/System-ZDrcLNk0.js +0 -1
- package/dist/interface/assets/User-D4vEhhzi.js +0 -1
- package/dist/interface/assets/VConfigEditor.vue_vue_type_script_setup_true_lang-CXFI-IeE.js +0 -2
- package/dist/interface/assets/VConsole-BHo3xprq.js +0 -1
- package/dist/interface/assets/VConsole-f-nUkOuD.css +0 -1
- package/dist/interface/assets/VPluginCard-BJYMuCLk.css +0 -1
- package/dist/interface/assets/encode-utf8-Cn5aGd7v.js +0 -1
- package/dist/interface/assets/main-C4rYiRNz.js +0 -2
- package/dist/interface/assets/qrcode-CGiDONbL.js +0 -8
- package/dist/interface/assets/vuetify-_-Oqac3B.js +0 -5
- package/dist/server/src/decoder/ffmpeg.d.ts +0 -2
- package/dist/server/src/decoder/ffmpeg.js.map +0 -1
- package/dist/server/src/nats/proxy/index.d.ts +0 -2
- package/dist/server/src/nats/proxy/index.js +0 -3
- package/dist/server/src/nats/proxy/index.js.map +0 -1
- package/dist/server/src/polyglot/node/decoder/reader.js.map +0 -1
- package/dist/server/src/polyglot/node/plugins/api.js +0 -34
- package/dist/server/src/polyglot/node/plugins/api.js.map +0 -1
- package/dist/server/src/polyglot/node/plugins/config.js.map +0 -1
- package/dist/server/src/polyglot/node/plugins/logger.js +0 -128
- package/dist/server/src/polyglot/node/plugins/logger.js.map +0 -1
- package/dist/server/src/polyglot/node/plugins/proxy/index.d.ts +0 -2
- package/dist/server/src/polyglot/node/plugins/proxy/index.js +0 -3
- package/dist/server/src/polyglot/node/plugins/proxy/index.js.map +0 -1
- package/dist/server/src/polyglot/node/plugins/proxy/messageQueue.d.ts +0 -20
- package/dist/server/src/polyglot/node/plugins/proxy/messageQueue.js +0 -152
- package/dist/server/src/polyglot/node/plugins/proxy/messageQueue.js.map +0 -1
- /package/dist/server/src/polyglot/node/plugins/{config.d.ts → configService.d.ts} +0 -0
- /package/dist/server/src/polyglot/python/plugins/{logger.py → plugin_logger.py} +0 -0
- /package/dist/server/src/{polyglot/node/decoder → utils}/reader.d.ts +0 -0
- /package/dist/server/src/{polyglot/node/decoder → utils}/reader.js +0 -0
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { filter, pairwise } from 'rxjs/operators';
|
|
2
|
-
import { isEqual
|
|
3
|
-
import {
|
|
2
|
+
import { isEqual } from '../utils/utils.js';
|
|
3
|
+
import { CameraDevice } from './device.js';
|
|
4
4
|
import { CameraInterface } from './interfaces/camera.js';
|
|
5
5
|
import { CameraPrebufferInterface } from './interfaces/prebuffer.js';
|
|
6
6
|
import { CameraPTZInterface } from './interfaces/ptz.js';
|
|
7
|
-
export class CameraController extends
|
|
7
|
+
export class CameraController extends CameraDevice {
|
|
8
8
|
proxy;
|
|
9
9
|
motionTimeout;
|
|
10
10
|
objectTimeout;
|
|
@@ -13,17 +13,19 @@ export class CameraController extends BaseCameraDevice {
|
|
|
13
13
|
doorbellTimeoutDuration = 2000;
|
|
14
14
|
prebufferStateSubscriptions = {};
|
|
15
15
|
cameraDelegate;
|
|
16
|
-
prebufferDelegate;
|
|
17
16
|
ptzDelegate;
|
|
17
|
+
prebufferDelegate;
|
|
18
18
|
get camera() {
|
|
19
19
|
return this.cameraObject;
|
|
20
20
|
}
|
|
21
21
|
get sources() {
|
|
22
|
-
const sources =
|
|
22
|
+
const sources = JSON.parse(JSON.stringify(this.cameraSubject.getValue().sources));
|
|
23
23
|
return sources.map((source) => {
|
|
24
24
|
return {
|
|
25
25
|
...source,
|
|
26
|
-
updatePrebufferingState: async (
|
|
26
|
+
updatePrebufferingState: async () => {
|
|
27
|
+
throw new Error('Method not implemented.');
|
|
28
|
+
},
|
|
27
29
|
getPrebufferingState: (container) => this.cameraSourcePrebufferState(source._id, container),
|
|
28
30
|
onPrebuffering: (container) => this.createPrebufferStateObservable(source._id, container),
|
|
29
31
|
getStreamInfo: async () => {
|
|
@@ -40,6 +42,18 @@ export class CameraController extends BaseCameraDevice {
|
|
|
40
42
|
this.ptzDelegate = new CameraPTZInterface(this.proxyRequest.bind(this), this.logger);
|
|
41
43
|
this.addSubscriptions(this.subscribeToCameraState(), ...this.subscribeToCameraSourcesState(), this.subscribeToCameraChanges(), this.subscribeToMotionState(), this.subscribeToObjectState(), this.subscribeToDoorbellState(), this.subscribeToStateChanges('light', this.lightState), this.subscribeToStateChanges('motion', this.motionState), this.subscribeToStateChanges('audio', this.audioState), this.subscribeToStateChanges('object', this.objectState), this.subscribeToStateChanges('doorbell', this.doorbellState), this.subscribeToStateChanges('siren', this.sirenState));
|
|
42
44
|
}
|
|
45
|
+
setDelegate() {
|
|
46
|
+
throw new Error('Method not implemented.');
|
|
47
|
+
}
|
|
48
|
+
getFfmpegPath() {
|
|
49
|
+
throw new Error('Method not implemented.');
|
|
50
|
+
}
|
|
51
|
+
getFrames() {
|
|
52
|
+
throw new Error('Method not implemented.');
|
|
53
|
+
}
|
|
54
|
+
getMotionFrames() {
|
|
55
|
+
throw new Error('Method not implemented.');
|
|
56
|
+
}
|
|
43
57
|
async connect() {
|
|
44
58
|
this.cameraState.next(true);
|
|
45
59
|
}
|
|
@@ -83,7 +97,7 @@ export class CameraController extends BaseCameraDevice {
|
|
|
83
97
|
}
|
|
84
98
|
subscribeToCameraSourcesState() {
|
|
85
99
|
const subscribtions = [];
|
|
86
|
-
for (const source of
|
|
100
|
+
for (const source of this.sources) {
|
|
87
101
|
const mp4Subscription = source.onPrebuffering('mp4').subscribe({
|
|
88
102
|
next: (state) => {
|
|
89
103
|
this.triggerProxyEvent('prebufferState', { sourceId: source._id, container: 'mp4', state });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"controller.js","sourceRoot":"","sources":["../../../../src/camera/controller.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAElD,OAAO,EAAE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"controller.js","sourceRoot":"","sources":["../../../../src/camera/controller.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,15 +4,27 @@ import { WeriftSession } from './streaming/werift-session.js';
|
|
|
4
4
|
import type { Observable } from 'rxjs';
|
|
5
5
|
import type { MotionFrame, VideoFrame } from '../decoder/types.js';
|
|
6
6
|
import type { StreamingConnectionOptions } from './streaming/peer-connection.js';
|
|
7
|
-
import type { CameraDelegates, FrameState } from './types.js';
|
|
7
|
+
import type { AudioSetEvent, BatterySetEvent, CameraConfigInputSettings, CameraDelegates, DoorbellSetEvent, FrameState, LightSetEvent, MotionSetEvent, ObjectSetEvent, SirenSetEvent } from './types.js';
|
|
8
8
|
export declare abstract class CameraDevice extends BaseCameraDevice {
|
|
9
9
|
protected readonly frameState: BehaviorSubject<FrameState>;
|
|
10
10
|
protected readonly onFrame: Observable<FrameState>;
|
|
11
11
|
abstract setDelegate<T extends keyof CameraDelegates>(name: T, delegate: CameraDelegates[T]): void;
|
|
12
|
-
|
|
13
|
-
|
|
12
|
+
abstract connect(): Promise<void>;
|
|
13
|
+
abstract disconnect(): Promise<void>;
|
|
14
14
|
abstract getFrames(prebufferDuration?: number): AsyncIterableIterator<VideoFrame>;
|
|
15
15
|
abstract getMotionFrames(): AsyncIterableIterator<MotionFrame>;
|
|
16
16
|
abstract getFfmpegPath(): Promise<string>;
|
|
17
|
+
abstract updateState(stateName: 'light', eventData: LightSetEvent): Promise<void>;
|
|
18
|
+
abstract updateState(stateName: 'motion', eventData: MotionSetEvent, frame?: VideoFrame): Promise<void>;
|
|
19
|
+
abstract updateState(stateName: 'audio', eventData: AudioSetEvent): Promise<void>;
|
|
20
|
+
abstract updateState(stateName: 'object', eventData: ObjectSetEvent): Promise<void>;
|
|
21
|
+
abstract updateState(stateName: 'doorbell', eventData: DoorbellSetEvent): Promise<void>;
|
|
22
|
+
abstract updateState(stateName: 'siren', eventData: SirenSetEvent): Promise<void>;
|
|
23
|
+
abstract updateState(stateName: 'battery', eventData: BatterySetEvent): Promise<void>;
|
|
24
|
+
abstract addCameraSource(source: CameraConfigInputSettings): Promise<void>;
|
|
25
|
+
abstract updateCameraSource(sourceId: string, source: Partial<CameraConfigInputSettings>): Promise<void>;
|
|
26
|
+
abstract removeCameraSource(sourceId: string): Promise<void>;
|
|
27
|
+
createSession(sourceName: string, options?: StreamingConnectionOptions): Promise<WeriftSession>;
|
|
28
|
+
protected removeAllListeners(): void;
|
|
17
29
|
private createMotionFrameObservable;
|
|
18
30
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"device.js","sourceRoot":"","sources":["../../../../src/camera/device.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,MAAM,CAAC;AAE7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"device.js","sourceRoot":"","sources":["../../../../src/camera/device.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,MAAM,CAAC;AAE7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAkB9D,MAAM,OAAgB,YAAa,SAAQ,gBAAgB;IACtC,UAAU,GAAG,IAAI,eAAe,CAAa,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,SAAS,EAAE,EAAe,EAAE,QAAQ,EAAE,EAAmB,EAAE,CAAC,CAAC;IACnJ,OAAO,GAAG,IAAI,CAAC,2BAA2B,EAAE,CAAC;IAuBzD,KAAK,CAAC,aAAa,CAAC,UAAkB,EAAE,UAAsC,EAAE;QACrF,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QAC9C,MAAM,UAAU,GAAG,IAAI,gBAAgB,CAAC,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC5F,OAAO,IAAI,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAC1D,CAAC;IAES,kBAAkB;QAC1B,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;QAC3B,KAAK,CAAC,kBAAkB,EAAE,CAAC;IAC7B,CAAC;IAEO,2BAA2B;QACjC,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,IAAI,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAChF,CAAC;CACF"}
|
|
@@ -1,18 +1,10 @@
|
|
|
1
1
|
import { LRUCache } from 'lru-cache';
|
|
2
2
|
import { BehaviorSubject } from 'rxjs';
|
|
3
|
-
import
|
|
3
|
+
import { Subscribed } from '../utils/subscribed.js';
|
|
4
|
+
import type { Observable } from 'rxjs';
|
|
4
5
|
import type { Camera, CameraActivitySettings, CameraFrameWorkerSettings, CameraInformation, CameraType } from '../api/database/types.js';
|
|
5
|
-
import type { VideoFrame } from '../decoder/types.js';
|
|
6
6
|
import type { IceServer } from '../services/config/types.js';
|
|
7
|
-
import type { AudioSetEvent, AudioState, BaseLogger, BatterySetEvent, BatteryState,
|
|
8
|
-
declare class Subscribed {
|
|
9
|
-
private readonly subscriptions;
|
|
10
|
-
private readonly additionalSubscriptions;
|
|
11
|
-
protected addSubscriptions(...subscriptions: Subscription[]): void;
|
|
12
|
-
protected addAdditionalSubscriptions(...subscriptions: Subscription[]): void;
|
|
13
|
-
protected unsubscribe(): void;
|
|
14
|
-
protected unsubscribeAdditional(): void;
|
|
15
|
-
}
|
|
7
|
+
import type { AudioSetEvent, AudioState, BaseLogger, BatterySetEvent, BatteryState, CameraDelegate, CameraPTZDelegate, CameraPrebufferDelegate, CameraSource, Container, DetectionZone, DoorbellSetEvent, DoorbellState, LightSetEvent, LightState, MotionSetEvent, MotionState, ObjectSetEvent, ObjectState, PrebufferState, SetValues, SirenSetEvent, SirenState, StateValues } from './types.js';
|
|
16
8
|
export declare abstract class BaseCameraDevice extends Subscribed {
|
|
17
9
|
protected logger: BaseLogger;
|
|
18
10
|
protected snapshotCache: LRUCache<string, ArrayBuffer, unknown>;
|
|
@@ -38,9 +30,9 @@ export declare abstract class BaseCameraDevice extends Subscribed {
|
|
|
38
30
|
readonly onDoorbellPressed: Observable<DoorbellState>;
|
|
39
31
|
readonly onSirenDetected: Observable<SirenState>;
|
|
40
32
|
readonly onBatteryChanged: Observable<BatteryState>;
|
|
41
|
-
abstract cameraDelegate: CameraDelegate;
|
|
33
|
+
protected abstract cameraDelegate: CameraDelegate;
|
|
34
|
+
protected abstract ptzDelegate: CameraPTZDelegate;
|
|
42
35
|
protected abstract prebufferDelegate: CameraPrebufferDelegate;
|
|
43
|
-
abstract ptzDelegate: CameraPTZDelegate;
|
|
44
36
|
protected get cameraObject(): Camera;
|
|
45
37
|
get id(): string;
|
|
46
38
|
get nativeId(): string | undefined;
|
|
@@ -63,44 +55,39 @@ export declare abstract class BaseCameraDevice extends Subscribed {
|
|
|
63
55
|
get activityZones(): DetectionZone[];
|
|
64
56
|
get activitySettings(): CameraActivitySettings;
|
|
65
57
|
get frameWorkerSettings(): CameraFrameWorkerSettings;
|
|
66
|
-
get sources(): CameraSource[];
|
|
67
58
|
get streamSource(): CameraSource;
|
|
68
59
|
get snapshotSource(): CameraSource | undefined;
|
|
69
60
|
get highResolutionSource(): CameraSource | undefined;
|
|
70
61
|
get midResolutionSource(): CameraSource | undefined;
|
|
71
62
|
get lowResolutionSource(): CameraSource | undefined;
|
|
63
|
+
get ptz(): CameraPTZDelegate;
|
|
64
|
+
abstract get sources(): CameraSource[];
|
|
72
65
|
constructor(camera: Camera, logger: BaseLogger);
|
|
66
|
+
abstract getIceServers(): Promise<IceServer[]>;
|
|
67
|
+
protected abstract cleanup(): void;
|
|
73
68
|
getValue<T extends keyof StateValues>(stateName: T): StateValues[T];
|
|
74
69
|
snapshot(forceNew?: boolean): Promise<ArrayBuffer>;
|
|
75
70
|
onStateChange<T extends keyof StateValues>(stateName: T): Observable<{
|
|
76
71
|
newState: StateValues[T];
|
|
77
72
|
oldState: StateValues[T];
|
|
78
73
|
}>;
|
|
79
|
-
abstract connect(): Promise<void>;
|
|
80
|
-
abstract disconnect(): Promise<void>;
|
|
81
|
-
abstract getIceServers(): Promise<IceServer[]>;
|
|
82
|
-
abstract updateState(stateName: 'light', eventData: LightSetEvent): Promise<void>;
|
|
83
|
-
abstract updateState(stateName: 'motion', eventData: MotionSetEvent, frame?: VideoFrame): Promise<void>;
|
|
84
|
-
abstract updateState(stateName: 'audio', eventData: AudioSetEvent): Promise<void>;
|
|
85
|
-
abstract updateState(stateName: 'object', eventData: ObjectSetEvent): Promise<void>;
|
|
86
|
-
abstract updateState(stateName: 'doorbell', eventData: DoorbellSetEvent): Promise<void>;
|
|
87
|
-
abstract updateState(stateName: 'siren', eventData: SirenSetEvent): Promise<void>;
|
|
88
|
-
abstract updateState(stateName: 'battery', eventData: BatterySetEvent): Promise<void>;
|
|
89
|
-
abstract addCameraSource(source: CameraConfigInputSettings): Promise<void>;
|
|
90
|
-
abstract updateCameraSource(sourceId: string, source: Partial<CameraConfigInputSettings>): Promise<void>;
|
|
91
|
-
abstract removeCameraSource(sourceId: string): Promise<void>;
|
|
92
|
-
protected abstract cleanup(): void;
|
|
93
|
-
protected updateStateInternal<T extends keyof SetValues>(stateName: T, eventData: SetValues[T], skipCheck?: boolean): void;
|
|
94
74
|
onPropertyChange<T extends keyof Camera>(property: T | T[]): Observable<{
|
|
95
75
|
property: T;
|
|
96
76
|
oldData: Camera[T];
|
|
97
77
|
newData: Camera[T];
|
|
98
78
|
}>;
|
|
99
|
-
removeAllListeners(): void;
|
|
79
|
+
protected removeAllListeners(): void;
|
|
80
|
+
protected updateCamera(updatedCamera: Camera): void;
|
|
81
|
+
protected updateCameraState(state: boolean): void;
|
|
82
|
+
protected updatePrebuffer(sourceId: string, container: Container, state: PrebufferState): void;
|
|
83
|
+
protected updateStateInternal<T extends keyof SetValues>(stateName: T, eventData: SetValues[T], skipCheck?: boolean): void;
|
|
100
84
|
protected checkStateInternal<T extends keyof SetValues>(stateName: T, event: SetValues[T]): {
|
|
101
85
|
changed: boolean;
|
|
102
86
|
event: StateValues[T];
|
|
103
87
|
};
|
|
88
|
+
protected cameraSourcePrebufferState(sourceId: string, container: Container): PrebufferState;
|
|
89
|
+
protected createPrebufferStateObservable(sourceId: string, container: Container): Observable<PrebufferState>;
|
|
90
|
+
protected stateChanged<T extends keyof SetValues>(oldState?: SetValues[T], newState?: SetValues[T], type?: keyof StateValues): boolean;
|
|
104
91
|
protected getAudioState(event: AudioSetEvent, ignoreLastEvet?: boolean): AudioState;
|
|
105
92
|
protected getMotionState(event: MotionSetEvent, ignoreLastEvet?: boolean): MotionState;
|
|
106
93
|
protected getObjectState(event: ObjectSetEvent, ignoreLastEvet?: boolean): ObjectState;
|
|
@@ -108,14 +95,6 @@ export declare abstract class BaseCameraDevice extends Subscribed {
|
|
|
108
95
|
protected getLightState(event: LightSetEvent, ignoreLastEvet?: boolean): LightState;
|
|
109
96
|
protected getSirenState(event: SirenSetEvent, ignoreLastEvet?: boolean): SirenState;
|
|
110
97
|
protected getBatteryState(event: BatterySetEvent, ignoreLastEvet?: boolean): BatteryState;
|
|
111
|
-
|
|
112
|
-
protected updatePrebuffer(sourceId: string, container: Container, state: PrebufferState): Promise<void>;
|
|
113
|
-
protected updateCameraSourcesState(): void;
|
|
114
|
-
protected updateCameraState(state: boolean): void;
|
|
115
|
-
protected cameraSourcePrebufferState(sourceId: string, container: Container): PrebufferState;
|
|
98
|
+
private isStateEvent;
|
|
116
99
|
private createStateObservable;
|
|
117
|
-
protected createPrebufferStateObservable(sourceId: string, container: Container): Observable<PrebufferState>;
|
|
118
|
-
protected stateChanged<T extends keyof SetValues>(oldState?: SetValues[T], newState?: SetValues[T], type?: keyof StateValues): boolean;
|
|
119
|
-
protected isStateEvent(state: States | Sets): state is States;
|
|
120
100
|
}
|
|
121
|
-
export {};
|
|
@@ -1,24 +1,9 @@
|
|
|
1
1
|
import { LRUCache } from 'lru-cache';
|
|
2
2
|
import { BehaviorSubject, ReplaySubject } from 'rxjs';
|
|
3
3
|
import { distinctUntilChanged, filter, map, mergeMap, pairwise, share } from 'rxjs/operators';
|
|
4
|
+
import { Subscribed } from '../utils/subscribed.js';
|
|
4
5
|
import { isEqual, structuredClone } from '../utils/utils.js';
|
|
5
6
|
import { areMotionDetectionsValid, areObjectDetectionsValid } from './polygon.js';
|
|
6
|
-
class Subscribed {
|
|
7
|
-
subscriptions = [];
|
|
8
|
-
additionalSubscriptions = [];
|
|
9
|
-
addSubscriptions(...subscriptions) {
|
|
10
|
-
this.subscriptions.push(...subscriptions);
|
|
11
|
-
}
|
|
12
|
-
addAdditionalSubscriptions(...subscriptions) {
|
|
13
|
-
this.additionalSubscriptions.push(...subscriptions);
|
|
14
|
-
}
|
|
15
|
-
unsubscribe() {
|
|
16
|
-
this.subscriptions.forEach((subscription) => subscription.unsubscribe());
|
|
17
|
-
}
|
|
18
|
-
unsubscribeAdditional() {
|
|
19
|
-
this.additionalSubscriptions.forEach((subscription) => subscription.unsubscribe());
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
7
|
export class BaseCameraDevice extends Subscribed {
|
|
23
8
|
logger;
|
|
24
9
|
snapshotCache = new LRUCache({ max: 100, ttl: 1000 * 60 * 5 });
|
|
@@ -106,21 +91,8 @@ export class BaseCameraDevice extends Subscribed {
|
|
|
106
91
|
get frameWorkerSettings() {
|
|
107
92
|
return structuredClone(this.cameraSubject.getValue().frameWorkerSettings);
|
|
108
93
|
}
|
|
109
|
-
get sources() {
|
|
110
|
-
const sources = structuredClone(this.cameraSubject.getValue().sources);
|
|
111
|
-
return sources.map((source) => {
|
|
112
|
-
return {
|
|
113
|
-
...source,
|
|
114
|
-
updatePrebufferingState: async (container, state) => this.updatePrebuffer(source._id, container, state),
|
|
115
|
-
getPrebufferingState: (container) => this.cameraSourcePrebufferState(source._id, container),
|
|
116
|
-
onPrebuffering: (container) => this.createPrebufferStateObservable(source._id, container),
|
|
117
|
-
getStreamInfo: async () => this.prebufferDelegate.getStreamInfo(source.name),
|
|
118
|
-
};
|
|
119
|
-
});
|
|
120
|
-
}
|
|
121
94
|
get streamSource() {
|
|
122
|
-
|
|
123
|
-
return source;
|
|
95
|
+
return (this.highResolutionSource || this.midResolutionSource || this.lowResolutionSource);
|
|
124
96
|
}
|
|
125
97
|
get snapshotSource() {
|
|
126
98
|
return this.sources.find((source) => source.roles.includes('snapshot'));
|
|
@@ -134,6 +106,9 @@ export class BaseCameraDevice extends Subscribed {
|
|
|
134
106
|
get lowResolutionSource() {
|
|
135
107
|
return this.sources.find((source) => source.roles.includes('low-resolution'));
|
|
136
108
|
}
|
|
109
|
+
get ptz() {
|
|
110
|
+
return this.ptzDelegate;
|
|
111
|
+
}
|
|
137
112
|
constructor(camera, logger) {
|
|
138
113
|
super();
|
|
139
114
|
this.logger = logger;
|
|
@@ -197,6 +172,51 @@ export class BaseCameraDevice extends Subscribed {
|
|
|
197
172
|
}
|
|
198
173
|
}), map(([oldState, newState]) => ({ oldState, newState })), share({ connector: () => new ReplaySubject(1) }));
|
|
199
174
|
}
|
|
175
|
+
onPropertyChange(property) {
|
|
176
|
+
return this.cameraSubject.pipe(pairwise(), mergeMap(([oldCamera, newCamera]) => {
|
|
177
|
+
const properties = Array.isArray(property) ? property : [property];
|
|
178
|
+
return properties.map((prop) => ({
|
|
179
|
+
property: prop,
|
|
180
|
+
oldData: oldCamera[prop],
|
|
181
|
+
newData: newCamera[prop],
|
|
182
|
+
}));
|
|
183
|
+
}), filter(({ oldData, newData }) => !isEqual(oldData, newData, true)), share({ connector: () => new ReplaySubject(1) }));
|
|
184
|
+
}
|
|
185
|
+
removeAllListeners() {
|
|
186
|
+
this.lightState.complete();
|
|
187
|
+
this.motionState.complete();
|
|
188
|
+
this.audioState.complete();
|
|
189
|
+
this.objectState.complete();
|
|
190
|
+
this.doorbellState.complete();
|
|
191
|
+
this.sirenState.complete();
|
|
192
|
+
this.batteryState.complete();
|
|
193
|
+
this.cameraSubject.complete();
|
|
194
|
+
this.cameraState.complete();
|
|
195
|
+
}
|
|
196
|
+
updateCamera(updatedCamera) {
|
|
197
|
+
this.cameraSubject.next(updatedCamera);
|
|
198
|
+
const sources = this.cameraSubject.getValue().sources;
|
|
199
|
+
for (const sourceId in this.prebufferStateSubjects) {
|
|
200
|
+
if (!sources.some((source) => source._id === sourceId)) {
|
|
201
|
+
for (const container in this.prebufferStateSubjects[sourceId]) {
|
|
202
|
+
this.prebufferStateSubjects[sourceId][container].complete();
|
|
203
|
+
}
|
|
204
|
+
delete this.prebufferStateSubjects[sourceId];
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
updateCameraState(state) {
|
|
209
|
+
this.cameraState.next(state);
|
|
210
|
+
}
|
|
211
|
+
updatePrebuffer(sourceId, container, state) {
|
|
212
|
+
if (this.prebufferStateSubjects[sourceId] && this.prebufferStateSubjects[sourceId][container]) {
|
|
213
|
+
this.prebufferStateSubjects[sourceId][container].next({
|
|
214
|
+
state: state.state,
|
|
215
|
+
url: state.url || undefined,
|
|
216
|
+
duration: state.duration,
|
|
217
|
+
});
|
|
218
|
+
}
|
|
219
|
+
}
|
|
200
220
|
updateStateInternal(stateName, eventData, skipCheck) {
|
|
201
221
|
let changed = false;
|
|
202
222
|
let event;
|
|
@@ -238,27 +258,6 @@ export class BaseCameraDevice extends Subscribed {
|
|
|
238
258
|
throw new Error(`Unknown state: ${stateName}`);
|
|
239
259
|
}
|
|
240
260
|
}
|
|
241
|
-
onPropertyChange(property) {
|
|
242
|
-
return this.cameraSubject.pipe(pairwise(), mergeMap(([oldCamera, newCamera]) => {
|
|
243
|
-
const properties = Array.isArray(property) ? property : [property];
|
|
244
|
-
return properties.map((prop) => ({
|
|
245
|
-
property: prop,
|
|
246
|
-
oldData: oldCamera[prop],
|
|
247
|
-
newData: newCamera[prop],
|
|
248
|
-
}));
|
|
249
|
-
}), filter(({ oldData, newData }) => !isEqual(oldData, newData, true)), share({ connector: () => new ReplaySubject(1) }));
|
|
250
|
-
}
|
|
251
|
-
removeAllListeners() {
|
|
252
|
-
this.lightState.complete();
|
|
253
|
-
this.motionState.complete();
|
|
254
|
-
this.audioState.complete();
|
|
255
|
-
this.objectState.complete();
|
|
256
|
-
this.doorbellState.complete();
|
|
257
|
-
this.sirenState.complete();
|
|
258
|
-
this.batteryState.complete();
|
|
259
|
-
this.cameraSubject.complete();
|
|
260
|
-
this.cameraState.complete();
|
|
261
|
-
}
|
|
262
261
|
checkStateInternal(stateName, event) {
|
|
263
262
|
let changed = false;
|
|
264
263
|
let targetState;
|
|
@@ -307,6 +306,91 @@ export class BaseCameraDevice extends Subscribed {
|
|
|
307
306
|
}
|
|
308
307
|
return { changed, event: targetState };
|
|
309
308
|
}
|
|
309
|
+
cameraSourcePrebufferState(sourceId, container) {
|
|
310
|
+
let prebufferState = { state: false, duration: 0 };
|
|
311
|
+
if (this.prebufferStateSubjects[sourceId] && this.prebufferStateSubjects[sourceId][container]) {
|
|
312
|
+
prebufferState = this.prebufferStateSubjects[sourceId][container].getValue();
|
|
313
|
+
}
|
|
314
|
+
return prebufferState;
|
|
315
|
+
}
|
|
316
|
+
createPrebufferStateObservable(sourceId, container) {
|
|
317
|
+
if (!this.prebufferStateSubjects[sourceId]) {
|
|
318
|
+
this.prebufferStateSubjects[sourceId] = {};
|
|
319
|
+
}
|
|
320
|
+
if (!this.prebufferStateSubjects[sourceId][container]) {
|
|
321
|
+
this.prebufferStateSubjects[sourceId][container] = new BehaviorSubject({ state: false, duration: 0 });
|
|
322
|
+
}
|
|
323
|
+
return this.prebufferStateSubjects[sourceId][container].pipe(distinctUntilChanged((previousState, currentState) => {
|
|
324
|
+
return previousState.state === currentState.state && previousState.url === currentState.url;
|
|
325
|
+
}), share({ connector: () => new ReplaySubject(1) }));
|
|
326
|
+
}
|
|
327
|
+
stateChanged(oldState, newState, type) {
|
|
328
|
+
if (!oldState || !newState || !type) {
|
|
329
|
+
return false;
|
|
330
|
+
}
|
|
331
|
+
if (type == 'audio') {
|
|
332
|
+
if (!this.hasAudioDetector) {
|
|
333
|
+
return false;
|
|
334
|
+
}
|
|
335
|
+
const _oldState = oldState;
|
|
336
|
+
const _newState = newState;
|
|
337
|
+
return _oldState.state !== _newState.state || _oldState.db !== _newState.db;
|
|
338
|
+
}
|
|
339
|
+
else if (type == 'motion') {
|
|
340
|
+
if (!this.hasMotionDetector) {
|
|
341
|
+
return false;
|
|
342
|
+
}
|
|
343
|
+
const _oldState = oldState;
|
|
344
|
+
const _newState = newState;
|
|
345
|
+
if (_newState.state !== undefined) {
|
|
346
|
+
return _oldState.state !== _newState.state;
|
|
347
|
+
}
|
|
348
|
+
return !isEqual(_oldState.detections, _newState.detections, true);
|
|
349
|
+
}
|
|
350
|
+
else if (type == 'object') {
|
|
351
|
+
if (!this.hasObjectDetector) {
|
|
352
|
+
return false;
|
|
353
|
+
}
|
|
354
|
+
const _oldState = oldState;
|
|
355
|
+
const _newState = newState;
|
|
356
|
+
return !isEqual(_oldState.detections, _newState.detections, true);
|
|
357
|
+
}
|
|
358
|
+
else if (type == 'siren') {
|
|
359
|
+
if (!this.hasSiren) {
|
|
360
|
+
return false;
|
|
361
|
+
}
|
|
362
|
+
const _oldState = oldState;
|
|
363
|
+
const _newState = newState;
|
|
364
|
+
return _oldState.state !== _newState.state || _oldState.level !== _newState.level;
|
|
365
|
+
}
|
|
366
|
+
else if (type == 'battery') {
|
|
367
|
+
if (!this.hasBattery) {
|
|
368
|
+
return false;
|
|
369
|
+
}
|
|
370
|
+
const _oldState = oldState;
|
|
371
|
+
const _newState = newState;
|
|
372
|
+
return _oldState.level !== _newState.level || _oldState.lowBattery !== _newState.lowBattery || _oldState.charging !== _newState.charging;
|
|
373
|
+
}
|
|
374
|
+
else if (type == 'doorbell') {
|
|
375
|
+
if (!this.hasBinarySensor) {
|
|
376
|
+
return false;
|
|
377
|
+
}
|
|
378
|
+
const _oldState = oldState;
|
|
379
|
+
const _newState = newState;
|
|
380
|
+
return _oldState.state !== _newState.state;
|
|
381
|
+
}
|
|
382
|
+
else if (type == 'light') {
|
|
383
|
+
if (!this.hasLight) {
|
|
384
|
+
return false;
|
|
385
|
+
}
|
|
386
|
+
const _oldState = oldState;
|
|
387
|
+
const _newState = newState;
|
|
388
|
+
return _oldState.state !== _newState.state;
|
|
389
|
+
}
|
|
390
|
+
else {
|
|
391
|
+
return false;
|
|
392
|
+
}
|
|
393
|
+
}
|
|
310
394
|
getAudioState(event, ignoreLastEvet = false) {
|
|
311
395
|
let lastEvent = undefined;
|
|
312
396
|
if (!ignoreLastEvet) {
|
|
@@ -521,123 +605,11 @@ export class BaseCameraDevice extends Subscribed {
|
|
|
521
605
|
}
|
|
522
606
|
return newState;
|
|
523
607
|
}
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
this.updateCameraSourcesState();
|
|
527
|
-
}
|
|
528
|
-
async updatePrebuffer(sourceId, container, state) {
|
|
529
|
-
if (this.prebufferStateSubjects[sourceId] && this.prebufferStateSubjects[sourceId][container]) {
|
|
530
|
-
this.prebufferStateSubjects[sourceId][container].next({
|
|
531
|
-
state: state.state,
|
|
532
|
-
url: state.url || undefined,
|
|
533
|
-
duration: state.duration,
|
|
534
|
-
});
|
|
535
|
-
}
|
|
536
|
-
}
|
|
537
|
-
updateCameraSourcesState() {
|
|
538
|
-
const sources = this.cameraSubject.getValue().sources;
|
|
539
|
-
for (const sourceId in this.prebufferStateSubjects) {
|
|
540
|
-
if (!sources.some((source) => source._id === sourceId)) {
|
|
541
|
-
for (const container in this.prebufferStateSubjects[sourceId]) {
|
|
542
|
-
this.prebufferStateSubjects[sourceId][container].complete();
|
|
543
|
-
}
|
|
544
|
-
delete this.prebufferStateSubjects[sourceId];
|
|
545
|
-
}
|
|
546
|
-
}
|
|
547
|
-
}
|
|
548
|
-
updateCameraState(state) {
|
|
549
|
-
this.cameraState.next(state);
|
|
550
|
-
}
|
|
551
|
-
cameraSourcePrebufferState(sourceId, container) {
|
|
552
|
-
let prebufferState = { state: false, duration: 0 };
|
|
553
|
-
if (this.prebufferStateSubjects[sourceId] && this.prebufferStateSubjects[sourceId][container]) {
|
|
554
|
-
prebufferState = this.prebufferStateSubjects[sourceId][container].getValue();
|
|
555
|
-
}
|
|
556
|
-
return prebufferState;
|
|
608
|
+
isStateEvent(state) {
|
|
609
|
+
return 'timestamp' in state;
|
|
557
610
|
}
|
|
558
611
|
createStateObservable(stateSubject) {
|
|
559
612
|
return stateSubject.pipe(share({ connector: () => new ReplaySubject(1) }));
|
|
560
613
|
}
|
|
561
|
-
createPrebufferStateObservable(sourceId, container) {
|
|
562
|
-
if (!this.prebufferStateSubjects[sourceId]) {
|
|
563
|
-
this.prebufferStateSubjects[sourceId] = {};
|
|
564
|
-
}
|
|
565
|
-
if (!this.prebufferStateSubjects[sourceId][container]) {
|
|
566
|
-
this.prebufferStateSubjects[sourceId][container] = new BehaviorSubject({ state: false, duration: 0 });
|
|
567
|
-
}
|
|
568
|
-
return this.prebufferStateSubjects[sourceId][container].pipe(distinctUntilChanged((previousState, currentState) => {
|
|
569
|
-
return previousState.state === currentState.state && previousState.url === currentState.url;
|
|
570
|
-
}), share({ connector: () => new ReplaySubject(1) }));
|
|
571
|
-
}
|
|
572
|
-
stateChanged(oldState, newState, type) {
|
|
573
|
-
if (!oldState || !newState || !type) {
|
|
574
|
-
return false;
|
|
575
|
-
}
|
|
576
|
-
if (type == 'audio') {
|
|
577
|
-
if (!this.hasAudioDetector) {
|
|
578
|
-
return false;
|
|
579
|
-
}
|
|
580
|
-
const _oldState = oldState;
|
|
581
|
-
const _newState = newState;
|
|
582
|
-
return _oldState.state !== _newState.state || _oldState.db !== _newState.db;
|
|
583
|
-
}
|
|
584
|
-
else if (type == 'motion') {
|
|
585
|
-
if (!this.hasMotionDetector) {
|
|
586
|
-
return false;
|
|
587
|
-
}
|
|
588
|
-
const _oldState = oldState;
|
|
589
|
-
const _newState = newState;
|
|
590
|
-
if (_newState.state !== undefined) {
|
|
591
|
-
return _oldState.state !== _newState.state;
|
|
592
|
-
}
|
|
593
|
-
return !isEqual(_oldState.detections, _newState.detections, true);
|
|
594
|
-
}
|
|
595
|
-
else if (type == 'object') {
|
|
596
|
-
if (!this.hasObjectDetector) {
|
|
597
|
-
return false;
|
|
598
|
-
}
|
|
599
|
-
const _oldState = oldState;
|
|
600
|
-
const _newState = newState;
|
|
601
|
-
return !isEqual(_oldState.detections, _newState.detections, true);
|
|
602
|
-
}
|
|
603
|
-
else if (type == 'siren') {
|
|
604
|
-
if (!this.hasSiren) {
|
|
605
|
-
return false;
|
|
606
|
-
}
|
|
607
|
-
const _oldState = oldState;
|
|
608
|
-
const _newState = newState;
|
|
609
|
-
return _oldState.state !== _newState.state || _oldState.level !== _newState.level;
|
|
610
|
-
}
|
|
611
|
-
else if (type == 'battery') {
|
|
612
|
-
if (!this.hasBattery) {
|
|
613
|
-
return false;
|
|
614
|
-
}
|
|
615
|
-
const _oldState = oldState;
|
|
616
|
-
const _newState = newState;
|
|
617
|
-
return _oldState.level !== _newState.level || _oldState.lowBattery !== _newState.lowBattery || _oldState.charging !== _newState.charging;
|
|
618
|
-
}
|
|
619
|
-
else if (type == 'doorbell') {
|
|
620
|
-
if (!this.hasBinarySensor) {
|
|
621
|
-
return false;
|
|
622
|
-
}
|
|
623
|
-
const _oldState = oldState;
|
|
624
|
-
const _newState = newState;
|
|
625
|
-
return _oldState.state !== _newState.state;
|
|
626
|
-
}
|
|
627
|
-
else if (type == 'light') {
|
|
628
|
-
if (!this.hasLight) {
|
|
629
|
-
return false;
|
|
630
|
-
}
|
|
631
|
-
const _oldState = oldState;
|
|
632
|
-
const _newState = newState;
|
|
633
|
-
return _oldState.state !== _newState.state;
|
|
634
|
-
}
|
|
635
|
-
else {
|
|
636
|
-
return false;
|
|
637
|
-
}
|
|
638
|
-
}
|
|
639
|
-
isStateEvent(state) {
|
|
640
|
-
return 'timestamp' in state;
|
|
641
|
-
}
|
|
642
614
|
}
|
|
643
615
|
//# sourceMappingURL=index.js.map
|