homebridge-eufy-security 4.4.2-beta.2 → 4.4.2-beta.20

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.
Files changed (147) hide show
  1. package/CHANGELOG.md +1 -1
  2. package/FUNDING.yml +1 -0
  3. package/README.md +14 -17
  4. package/dist/accessories/AutoSyncStationAccessory.js +26 -30
  5. package/dist/accessories/AutoSyncStationAccessory.js.map +1 -1
  6. package/dist/accessories/BaseAccessory.js +33 -46
  7. package/dist/accessories/BaseAccessory.js.map +1 -1
  8. package/dist/accessories/CameraAccessory.js +92 -167
  9. package/dist/accessories/CameraAccessory.js.map +1 -1
  10. package/dist/accessories/Device.js +11 -15
  11. package/dist/accessories/Device.js.map +1 -1
  12. package/dist/accessories/EntrySensorAccessory.js +7 -12
  13. package/dist/accessories/EntrySensorAccessory.js.map +1 -1
  14. package/dist/accessories/LockAccessory.js +20 -24
  15. package/dist/accessories/LockAccessory.js.map +1 -1
  16. package/dist/accessories/MotionSensorAccessory.js +7 -12
  17. package/dist/accessories/MotionSensorAccessory.js.map +1 -1
  18. package/dist/accessories/StationAccessory.js +40 -45
  19. package/dist/accessories/StationAccessory.js.map +1 -1
  20. package/dist/config.js +1 -4
  21. package/dist/config.js.map +1 -1
  22. package/dist/controller/LocalLivestreamManager.js +85 -89
  23. package/dist/controller/LocalLivestreamManager.js.map +1 -1
  24. package/dist/controller/recordingDelegate.js +116 -108
  25. package/dist/controller/recordingDelegate.js.map +1 -1
  26. package/dist/controller/snapshotDelegate.js +379 -0
  27. package/dist/controller/snapshotDelegate.js.map +1 -0
  28. package/dist/controller/streamingDelegate.js +202 -207
  29. package/dist/controller/streamingDelegate.js.map +1 -1
  30. package/dist/index.js +9 -7
  31. package/dist/index.js.map +1 -1
  32. package/dist/interfaces.js +1 -2
  33. package/dist/interfaces.js.map +1 -1
  34. package/dist/platform.js +145 -165
  35. package/dist/platform.js.map +1 -1
  36. package/dist/settings.js +26 -19
  37. package/dist/settings.js.map +1 -1
  38. package/dist/utils/Talkback.js +9 -13
  39. package/dist/utils/Talkback.js.map +1 -1
  40. package/dist/utils/configTypes.js +12 -7
  41. package/dist/utils/configTypes.js.map +1 -1
  42. package/dist/utils/ffmpeg.js +44 -52
  43. package/dist/utils/ffmpeg.js.map +1 -1
  44. package/dist/utils/interfaces.js +1 -5
  45. package/dist/utils/interfaces.js.map +1 -1
  46. package/dist/utils/utils.js +32 -134
  47. package/dist/utils/utils.js.map +1 -1
  48. package/dist/version.js +1 -4
  49. package/dist/version.js.map +1 -1
  50. package/eslint.config.mjs +25 -47
  51. package/homebridge-eufy-security.png +0 -0
  52. package/homebridge-ui/public/app.js +221 -0
  53. package/homebridge-ui/public/assets/devices/eufycam3pro_large.png +0 -0
  54. package/homebridge-ui/public/assets/devices/homebase3_large.png +0 -0
  55. package/homebridge-ui/public/assets/devices/homebasemini_large.jpg +0 -0
  56. package/homebridge-ui/public/assets/devices/indoorcamC210_large.png +0 -0
  57. package/homebridge-ui/public/assets/devices/indoorcamC220_large.png +0 -0
  58. package/homebridge-ui/public/assets/devices/indoorcamE30_large.png +0 -0
  59. package/homebridge-ui/public/assets/devices/solocamc35_large.png +0 -0
  60. package/homebridge-ui/public/assets/devices/solocame30_large.png +0 -0
  61. package/homebridge-ui/public/components/device-card.js +141 -0
  62. package/homebridge-ui/public/components/guard-modes.js +88 -0
  63. package/homebridge-ui/public/components/number-input.js +121 -0
  64. package/homebridge-ui/public/components/select.js +73 -0
  65. package/homebridge-ui/public/components/toggle.js +68 -0
  66. package/homebridge-ui/public/index.html +24 -14
  67. package/homebridge-ui/public/services/api.js +129 -0
  68. package/homebridge-ui/public/services/config.js +144 -0
  69. package/homebridge-ui/public/style.css +705 -0
  70. package/homebridge-ui/public/utils/countries.js +73 -0
  71. package/homebridge-ui/public/utils/device-images.js +69 -0
  72. package/homebridge-ui/public/utils/helpers.js +47 -0
  73. package/homebridge-ui/public/views/dashboard.js +211 -0
  74. package/homebridge-ui/public/views/device-detail.js +631 -0
  75. package/homebridge-ui/public/views/login.js +625 -0
  76. package/homebridge-ui/public/views/settings.js +389 -0
  77. package/homebridge-ui/public/views/unsupported-detail.js +216 -0
  78. package/homebridge-ui/server.js +567 -450
  79. package/package.json +19 -59
  80. package/dist/accessories/AutoSyncStationAccessory.d.ts +0 -42
  81. package/dist/accessories/AutoSyncStationAccessory.d.ts.map +0 -1
  82. package/dist/accessories/BaseAccessory.d.ts +0 -56
  83. package/dist/accessories/BaseAccessory.d.ts.map +0 -1
  84. package/dist/accessories/CameraAccessory.d.ts +0 -84
  85. package/dist/accessories/CameraAccessory.d.ts.map +0 -1
  86. package/dist/accessories/Device.d.ts +0 -19
  87. package/dist/accessories/Device.d.ts.map +0 -1
  88. package/dist/accessories/EntrySensorAccessory.d.ts +0 -25
  89. package/dist/accessories/EntrySensorAccessory.d.ts.map +0 -1
  90. package/dist/accessories/LockAccessory.d.ts +0 -45
  91. package/dist/accessories/LockAccessory.d.ts.map +0 -1
  92. package/dist/accessories/MotionSensorAccessory.d.ts +0 -25
  93. package/dist/accessories/MotionSensorAccessory.d.ts.map +0 -1
  94. package/dist/accessories/StationAccessory.d.ts +0 -86
  95. package/dist/accessories/StationAccessory.d.ts.map +0 -1
  96. package/dist/config.d.ts +0 -31
  97. package/dist/config.d.ts.map +0 -1
  98. package/dist/controller/LocalLivestreamManager.d.ts +0 -31
  99. package/dist/controller/LocalLivestreamManager.d.ts.map +0 -1
  100. package/dist/controller/SnapshotManager.d.ts +0 -64
  101. package/dist/controller/SnapshotManager.d.ts.map +0 -1
  102. package/dist/controller/SnapshotManager.js +0 -434
  103. package/dist/controller/SnapshotManager.js.map +0 -1
  104. package/dist/controller/recordingDelegate.d.ts +0 -27
  105. package/dist/controller/recordingDelegate.d.ts.map +0 -1
  106. package/dist/controller/streamingDelegate.d.ts +0 -52
  107. package/dist/controller/streamingDelegate.d.ts.map +0 -1
  108. package/dist/index.d.ts +0 -7
  109. package/dist/index.d.ts.map +0 -1
  110. package/dist/interfaces.d.ts +0 -15
  111. package/dist/interfaces.d.ts.map +0 -1
  112. package/dist/platform.d.ts +0 -94
  113. package/dist/platform.d.ts.map +0 -1
  114. package/dist/settings.d.ts +0 -23
  115. package/dist/settings.d.ts.map +0 -1
  116. package/dist/utils/Talkback.d.ts +0 -21
  117. package/dist/utils/Talkback.d.ts.map +0 -1
  118. package/dist/utils/configTypes.d.ts +0 -68
  119. package/dist/utils/configTypes.d.ts.map +0 -1
  120. package/dist/utils/ffmpeg.d.ts +0 -111
  121. package/dist/utils/ffmpeg.d.ts.map +0 -1
  122. package/dist/utils/interfaces.d.ts +0 -8
  123. package/dist/utils/interfaces.d.ts.map +0 -1
  124. package/dist/utils/utils.d.ts +0 -35
  125. package/dist/utils/utils.d.ts.map +0 -1
  126. package/dist/version.d.ts +0 -2
  127. package/dist/version.d.ts.map +0 -1
  128. package/homebridge-ui/configui/app/util/types.d.ts +0 -65
  129. package/homebridge-ui/configui/app/util/types.d.ts.map +0 -1
  130. package/homebridge-ui/configui/app/util/types.js +0 -18
  131. package/homebridge-ui/configui/app/util/types.js.map +0 -1
  132. package/homebridge-ui/public/3rdpartylicenses.txt +0 -561
  133. package/homebridge-ui/public/assets/devices/homebase2_large.jpg +0 -0
  134. package/homebridge-ui/public/assets/devices/homebase3_large.jpg +0 -0
  135. package/homebridge-ui/public/assets/images/homebridge-eufy-security.png +0 -0
  136. package/homebridge-ui/public/favicon.ico +0 -0
  137. package/homebridge-ui/public/main.f6423287e0411c87.js +0 -1
  138. package/homebridge-ui/public/polyfills.efa2f09ba3e49167.js +0 -1
  139. package/homebridge-ui/public/runtime.ccde331d62c423b3.js +0 -1
  140. package/homebridge-ui/public/styles.13e635bf7a488639.css +0 -5
  141. package/homebridge-ui/server.d.ts +0 -2
  142. package/homebridge-ui/server.d.ts.map +0 -1
  143. package/homebridge-ui/server.js.map +0 -1
  144. package/homebridge-ui/version.d.ts +0 -2
  145. package/homebridge-ui/version.d.ts.map +0 -1
  146. package/homebridge-ui/version.js +0 -5
  147. package/homebridge-ui/version.js.map +0 -1
@@ -1,64 +0,0 @@
1
- import { EventEmitter } from 'stream';
2
- import { LocalLivestreamManager } from './LocalLivestreamManager';
3
- import { SnapshotRequest } from 'homebridge';
4
- import { CameraAccessory } from '../accessories/CameraAccessory';
5
- import { ILogObj, Logger } from 'tslog';
6
- /**
7
- * possible performance settings:
8
- * 1. snapshots as current as possible (weak homebridge performance)
9
- * - always get a new image from cloud or cam
10
- * 2. balanced
11
- * - start snapshot refresh but return snapshot as fast as possible
12
- * if request takes too long old snapshot will be returned
13
- * 3. get an old snapshot immediately
14
- * - wait on cloud snapshot with new events
15
- *
16
- * extra options:
17
- * - force refresh snapshots with interval
18
- * - force immediate snapshot-reject when ringing
19
- *
20
- * Drawbacks: elapsed time in homekit might be wrong
21
- */
22
- export declare class SnapshotManager extends EventEmitter {
23
- private livestreamManager;
24
- private readonly platform;
25
- private readonly device;
26
- private cameraConfig;
27
- private readonly videoProcessor;
28
- private currentSnapshot?;
29
- private blackSnapshot?;
30
- private cameraOffline?;
31
- private cameraDisabled?;
32
- private unavailableSnapshot?;
33
- private refreshProcessRunning;
34
- private lastEvent;
35
- private lastRingEvent;
36
- readonly log: Logger<ILogObj>;
37
- private snapshotRefreshTimer?;
38
- constructor(camera: CameraAccessory, livestreamManager: LocalLivestreamManager);
39
- private onRingEvent;
40
- private onEvent;
41
- private storeSnapshotForCache;
42
- getSnapshotBufferResized(request: SnapshotRequest): Promise<Buffer>;
43
- private getSnapshotBuffer;
44
- /**
45
- * Retrieves the newest snapshot buffer asynchronously.
46
- * @returns A Promise resolving to a Buffer containing the newest snapshot image.
47
- */
48
- private getSnapshotFromStream;
49
- /**
50
- * Retrieves the newest cloud snapshot's image data.
51
- * @returns Buffer The image data as a Buffer.
52
- * @throws Error if there's no currentSnapshot available and no fallback image.
53
- */
54
- private getSnapshotFromCache;
55
- private getBalancedSnapshot;
56
- private automaticSnapshotRefresh;
57
- private storeImage;
58
- private onPropertyValueChanged;
59
- private fetchCurrentCameraSnapshot;
60
- private getCurrentCameraSnapshot;
61
- private getCameraSource;
62
- private resizeSnapshot;
63
- }
64
- //# sourceMappingURL=SnapshotManager.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SnapshotManager.d.ts","sourceRoot":"","sources":["../../src/plugin/controller/SnapshotManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAY,MAAM,QAAQ,CAAC;AAOhD,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAGlE,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAG7C,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAoBxC;;;;;;;;;;;;;;;GAeG;AAEH,qBAAa,eAAgB,SAAQ,YAAY;IAwB7C,OAAO,CAAC,iBAAiB;IAtB3B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAuB;IAChD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,YAAY,CAAe;IAEnC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA0B;IAEzD,OAAO,CAAC,eAAe,CAAC,CAAW;IACnC,OAAO,CAAC,aAAa,CAAC,CAAS;IAC/B,OAAO,CAAC,aAAa,CAAC,CAAS;IAC/B,OAAO,CAAC,cAAc,CAAC,CAAS;IAChC,OAAO,CAAC,mBAAmB,CAAC,CAAS;IAErC,OAAO,CAAC,qBAAqB,CAAS;IACtC,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,aAAa,CAAK;IAE1B,SAAgB,GAAG,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;IAErC,OAAO,CAAC,oBAAoB,CAAC,CAAiB;gBAG5C,MAAM,EAAE,eAAe,EACf,iBAAiB,EAAE,sBAAsB;IAiGnD,OAAO,CAAC,WAAW;IAOnB,OAAO,CAAC,OAAO;IAOf,OAAO,CAAC,qBAAqB;IAIhB,wBAAwB,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC;YAIlE,iBAAiB;IA0D/B;;;OAGG;IACH,OAAO,CAAC,qBAAqB;IA8B7B;;;;OAIG;IACH,OAAO,CAAC,oBAAoB;YAiBd,mBAAmB;IAUjC,OAAO,CAAC,wBAAwB;IAahC,OAAO,CAAC,UAAU;YAUJ,sBAAsB;YAWtB,0BAA0B;YAwB1B,wBAAwB;YAqCxB,eAAe;YAyBf,cAAc;CAW7B"}
@@ -1,434 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- var __importDefault = (this && this.__importDefault) || function (mod) {
36
- return (mod && mod.__esModule) ? mod : { "default": mod };
37
- };
38
- Object.defineProperty(exports, "__esModule", { value: true });
39
- exports.SnapshotManager = void 0;
40
- const stream_1 = require("stream");
41
- const eufy_security_client_1 = require("eufy-security-client");
42
- const ffmpeg_for_homebridge_1 = __importDefault(require("ffmpeg-for-homebridge"));
43
- const utils_1 = require("../utils/utils");
44
- const ffmpeg_1 = require("../utils/ffmpeg");
45
- const fs = __importStar(require("fs"));
46
- const CameraOffline = require.resolve('../../media/camera-offline.png');
47
- const CameraDisabled = require.resolve('../../media/camera-disabled.png');
48
- const SnapshotBlackPath = require.resolve('../../media/Snapshot-black.png');
49
- const SnapshotUnavailable = require.resolve('../../media/Snapshot-Unavailable.png');
50
- let MINUTES_TO_WAIT_FOR_AUTOMATIC_REFRESH_TO_BEGIN = 1; // should be incremented by 1 for every device
51
- /**
52
- * possible performance settings:
53
- * 1. snapshots as current as possible (weak homebridge performance)
54
- * - always get a new image from cloud or cam
55
- * 2. balanced
56
- * - start snapshot refresh but return snapshot as fast as possible
57
- * if request takes too long old snapshot will be returned
58
- * 3. get an old snapshot immediately
59
- * - wait on cloud snapshot with new events
60
- *
61
- * extra options:
62
- * - force refresh snapshots with interval
63
- * - force immediate snapshot-reject when ringing
64
- *
65
- * Drawbacks: elapsed time in homekit might be wrong
66
- */
67
- class SnapshotManager extends stream_1.EventEmitter {
68
- livestreamManager;
69
- platform;
70
- device;
71
- cameraConfig;
72
- videoProcessor = ffmpeg_for_homebridge_1.default || 'ffmpeg';
73
- currentSnapshot;
74
- blackSnapshot;
75
- cameraOffline;
76
- cameraDisabled;
77
- unavailableSnapshot;
78
- refreshProcessRunning = false;
79
- lastEvent = 0;
80
- lastRingEvent = 0;
81
- log;
82
- snapshotRefreshTimer;
83
- constructor(camera, livestreamManager) {
84
- super();
85
- this.livestreamManager = livestreamManager;
86
- this.platform = camera.platform;
87
- this.device = camera.device;
88
- this.cameraConfig = camera.cameraConfig;
89
- this.log = camera.log;
90
- this.device.on('property changed', this.onPropertyValueChanged.bind(this));
91
- const eventTypes = [
92
- 'motion detected',
93
- 'person detected',
94
- 'pet detected',
95
- 'sound detected',
96
- 'crying detected',
97
- 'vehicle detected',
98
- 'dog detected',
99
- 'dog lick detected',
100
- 'dog poop detected',
101
- 'stranger person detected',
102
- ];
103
- eventTypes.forEach(eventType => {
104
- this.device.on(eventType, this.onEvent.bind(this));
105
- });
106
- this.device.on('rings', this.onRingEvent.bind(this));
107
- if (this.cameraConfig.refreshSnapshotIntervalMinutes) {
108
- if (this.cameraConfig.refreshSnapshotIntervalMinutes < 5) {
109
- this.log.warn('The interval to automatically refresh snapshots is set too low. Minimum is one minute.');
110
- this.cameraConfig.refreshSnapshotIntervalMinutes = 5;
111
- }
112
- this.log.info('Setting up automatic snapshot refresh every ' + this.cameraConfig.refreshSnapshotIntervalMinutes + ' minutes. This may decrease battery life dramatically. The refresh process should begin in ' + MINUTES_TO_WAIT_FOR_AUTOMATIC_REFRESH_TO_BEGIN + ' minutes.');
113
- setTimeout(() => {
114
- this.automaticSnapshotRefresh();
115
- }, MINUTES_TO_WAIT_FOR_AUTOMATIC_REFRESH_TO_BEGIN * 60 * 1000);
116
- MINUTES_TO_WAIT_FOR_AUTOMATIC_REFRESH_TO_BEGIN++;
117
- }
118
- if (this.cameraConfig.snapshotHandlingMethod === 1) {
119
- this.log.info('is set to generate new snapshots on events every time. This might reduce homebridge performance and increase power consumption.');
120
- if (this.cameraConfig.refreshSnapshotIntervalMinutes) {
121
- this.log.warn('You have enabled automatic snapshot refreshing. It is recommened not to use this setting with forced snapshot refreshing.');
122
- }
123
- }
124
- else if (this.cameraConfig.snapshotHandlingMethod === 2) {
125
- this.log.info('is set to balanced snapshot handling.');
126
- }
127
- else if (this.cameraConfig.snapshotHandlingMethod === 3) {
128
- this.log.info('is set to handle snapshots with cloud images. Snapshots might be older than they appear.');
129
- }
130
- else {
131
- this.log.warn('unknown snapshot handling method. SNapshots will not be generated.');
132
- }
133
- try {
134
- this.blackSnapshot = fs.readFileSync(SnapshotBlackPath);
135
- if (this.cameraConfig.immediateRingNotificationWithoutSnapshot) {
136
- this.log.info('Empty snapshot will be sent on ring events immediately to speed up homekit notifications.');
137
- }
138
- }
139
- catch (error) {
140
- this.log.error('could not cache black snapshot file for further use: ' + error);
141
- }
142
- try {
143
- this.unavailableSnapshot = fs.readFileSync(SnapshotUnavailable);
144
- }
145
- catch (error) {
146
- this.log.error('could not cache SnapshotUnavailable file for further use: ' + error);
147
- }
148
- try {
149
- this.cameraOffline = fs.readFileSync(CameraOffline);
150
- }
151
- catch (error) {
152
- this.log.error('could not cache CameraOffline file for further use: ' + error);
153
- }
154
- try {
155
- this.cameraDisabled = fs.readFileSync(CameraDisabled);
156
- }
157
- catch (error) {
158
- this.log.error('could not cache CameraDisabled file for further use: ' + error);
159
- }
160
- try {
161
- const picture = this.device.getPropertyValue(eufy_security_client_1.PropertyName.DevicePicture);
162
- if (picture && picture.type) {
163
- this.storeSnapshotForCache(picture.data, 0);
164
- }
165
- else {
166
- throw new Error('No currentSnapshot');
167
- }
168
- }
169
- catch (error) {
170
- this.log.error('could not fetch old snapshot: ' + error);
171
- }
172
- }
173
- onRingEvent(device, state) {
174
- if (state) {
175
- this.log.debug('Snapshot handler detected ring event.');
176
- this.lastRingEvent = Date.now();
177
- }
178
- }
179
- onEvent(device, state) {
180
- if (state) {
181
- this.log.debug('Snapshot handler detected event.');
182
- this.lastEvent = Date.now();
183
- }
184
- }
185
- storeSnapshotForCache(data, time) {
186
- this.currentSnapshot = { timestamp: time ??= Date.now(), image: data };
187
- }
188
- async getSnapshotBufferResized(request) {
189
- return await this.resizeSnapshot(await this.getSnapshotBuffer(), request);
190
- }
191
- async getSnapshotBuffer() {
192
- // return a new snapshot if it is recent enough (not more than 15 seconds)
193
- if (this.currentSnapshot) {
194
- const diff = Math.abs((Date.now() - this.currentSnapshot.timestamp) / 1000);
195
- if (diff <= 15) {
196
- return this.currentSnapshot.image;
197
- }
198
- }
199
- // It should never happend since camera is disabled in HK but in case of...
200
- if (!this.device.isEnabled()) {
201
- if (this.cameraDisabled) {
202
- return this.cameraDisabled;
203
- }
204
- else {
205
- return Promise.reject('Something wrong with file systems. Looks likes not enought rights!');
206
- }
207
- }
208
- const diff = (Date.now() - this.lastRingEvent) / 1000;
209
- if (this.cameraConfig.immediateRingNotificationWithoutSnapshot && diff < 5) {
210
- this.log.debug('Sending empty snapshot to speed up homekit notification for ring event.');
211
- if (this.blackSnapshot) {
212
- return this.blackSnapshot;
213
- }
214
- else {
215
- return Promise.reject('Prioritize ring notification over snapshot request. But could not supply empty snapshot.');
216
- }
217
- }
218
- let snapshot = Buffer.from([]);
219
- try {
220
- if (this.cameraConfig.snapshotHandlingMethod === 1) {
221
- // return a preferablly most recent snapshot every time
222
- snapshot = await this.getSnapshotFromStream();
223
- }
224
- else if (this.cameraConfig.snapshotHandlingMethod === 2) {
225
- // balanced method
226
- snapshot = await this.getBalancedSnapshot();
227
- }
228
- else if (this.cameraConfig.snapshotHandlingMethod === 3) {
229
- // fastest method with potentially old snapshots
230
- snapshot = await this.getSnapshotFromCache();
231
- }
232
- else {
233
- return Promise.reject('No suitable handling method for snapshots defined');
234
- }
235
- return snapshot;
236
- }
237
- catch {
238
- try {
239
- return this.getSnapshotFromCache();
240
- }
241
- catch (error) {
242
- this.log.error(error);
243
- if (this.unavailableSnapshot) {
244
- return this.unavailableSnapshot;
245
- }
246
- else {
247
- throw (error);
248
- }
249
- }
250
- }
251
- }
252
- /**
253
- * Retrieves the newest snapshot buffer asynchronously.
254
- * @returns A Promise resolving to a Buffer containing the newest snapshot image.
255
- */
256
- getSnapshotFromStream() {
257
- this.log.info(`Begin live streaming to access the most recent snapshot (significant battery drain on the device)`);
258
- return new Promise((resolve, reject) => {
259
- // Set a timeout for the snapshot request
260
- const requestTimeout = setTimeout(() => {
261
- reject('getSnapshotFromStream timed out');
262
- }, 4 * 1000);
263
- // Define a listener for the 'new snapshot' event
264
- const snapshotListener = () => {
265
- clearTimeout(requestTimeout); // Clear the timeout if the snapshot is received
266
- if (this.currentSnapshot) {
267
- resolve(this.currentSnapshot.image); // Resolve the promise with the snapshot image
268
- }
269
- else {
270
- reject('getSnapshotFromStream error'); // Reject if there's an issue with the snapshot
271
- }
272
- };
273
- // Fetch the current camera snapshot and attach the 'new snapshot' listener
274
- this.fetchCurrentCameraSnapshot()
275
- .then(() => {
276
- this.once('new snapshot', snapshotListener); // Listen for the 'new snapshot' event
277
- })
278
- .catch((error) => {
279
- clearTimeout(requestTimeout); // Clear the timeout if an error occurs during fetching
280
- reject(error); // Reject the promise with the error
281
- });
282
- });
283
- }
284
- /**
285
- * Retrieves the newest cloud snapshot's image data.
286
- * @returns Buffer The image data as a Buffer.
287
- * @throws Error if there's no currentSnapshot available and no fallback image.
288
- */
289
- getSnapshotFromCache() {
290
- // Check if there's a currentSnapshot available
291
- if (this.currentSnapshot) {
292
- // If available, return the image data
293
- return this.currentSnapshot.image;
294
- }
295
- else {
296
- // If not available, try to use the unavailable snapshot image
297
- if (this.unavailableSnapshot) {
298
- this.log.warn('No currentSnapshot available, using fallback unavailable snapshot image');
299
- return this.unavailableSnapshot;
300
- }
301
- else {
302
- // If fallback image is also not available, throw an error
303
- throw new Error('No currentSnapshot available');
304
- }
305
- }
306
- }
307
- async getBalancedSnapshot() {
308
- if (this.currentSnapshot) {
309
- const diff = Math.abs((Date.now() - this.currentSnapshot.timestamp) / 1000);
310
- if (diff <= 30) {
311
- return this.currentSnapshot.image;
312
- }
313
- }
314
- return this.getSnapshotFromStream();
315
- }
316
- automaticSnapshotRefresh() {
317
- this.log.debug('Automatic snapshot refresh triggered.');
318
- this.fetchCurrentCameraSnapshot().catch((error) => this.log.warn(error));
319
- if (this.snapshotRefreshTimer) {
320
- clearTimeout(this.snapshotRefreshTimer);
321
- }
322
- if (this.cameraConfig.refreshSnapshotIntervalMinutes) {
323
- this.snapshotRefreshTimer = setTimeout(() => {
324
- this.automaticSnapshotRefresh();
325
- }, this.cameraConfig.refreshSnapshotIntervalMinutes * 60 * 1000);
326
- }
327
- }
328
- storeImage(file, image) {
329
- const filePath = `${this.platform.eufyPath}/${file}`;
330
- try {
331
- fs.writeFileSync(filePath, image);
332
- this.log.debug(`Stored Image: ${filePath}`);
333
- }
334
- catch (error) {
335
- this.log.debug(`Error: ${filePath} - ${error}`);
336
- }
337
- }
338
- async onPropertyValueChanged(device, name) {
339
- if (name === 'picture') {
340
- const picture = device.getPropertyValue(eufy_security_client_1.PropertyName.DevicePicture);
341
- if (picture && picture.type) {
342
- this.storeImage(`${device.getSerial()}.${picture.type.ext}`, picture.data);
343
- this.storeSnapshotForCache(picture.data);
344
- this.emit('new snapshot');
345
- }
346
- }
347
- }
348
- async fetchCurrentCameraSnapshot() {
349
- if (this.refreshProcessRunning) {
350
- return Promise.resolve();
351
- }
352
- this.refreshProcessRunning = true;
353
- this.log.debug('Locked refresh process.');
354
- this.log.debug('Fetching new snapshot from camera.');
355
- try {
356
- const snapshotBuffer = await this.getCurrentCameraSnapshot();
357
- this.refreshProcessRunning = false;
358
- this.log.debug('Unlocked refresh process.');
359
- this.log.debug('store new snapshot from camera in memory. Using this for future use.');
360
- this.storeSnapshotForCache(snapshotBuffer);
361
- this.emit('new snapshot');
362
- return Promise.resolve();
363
- }
364
- catch (error) {
365
- this.refreshProcessRunning = false;
366
- this.log.debug('Unlocked refresh process.');
367
- return Promise.reject(error);
368
- }
369
- }
370
- async getCurrentCameraSnapshot() {
371
- const source = await this.getCameraSource();
372
- if (!source) {
373
- return Promise.reject('No camera source detected.');
374
- }
375
- const parameters = await ffmpeg_1.FFmpegParameters.forSnapshot(this.cameraConfig.videoConfig?.debug);
376
- if (source.url) {
377
- parameters.setInputSource(source.url);
378
- }
379
- else if (source.stream) {
380
- await parameters.setInputStream(source.stream);
381
- }
382
- else {
383
- return Promise.reject('No valid camera source detected.');
384
- }
385
- if (this.cameraConfig.delayCameraSnapshot) {
386
- parameters.setDelayedSnapshot();
387
- }
388
- try {
389
- const ffmpeg = new ffmpeg_1.FFmpeg(`[Snapshot Process]`, parameters);
390
- const buffer = await ffmpeg.getResult();
391
- this.livestreamManager.stopLocalLiveStream();
392
- return Promise.resolve(buffer);
393
- }
394
- catch (error) {
395
- this.livestreamManager.stopLocalLiveStream();
396
- return Promise.reject(error);
397
- }
398
- }
399
- async getCameraSource() {
400
- if ((0, utils_1.is_rtsp_ready)(this.device, this.cameraConfig)) {
401
- try {
402
- const url = this.device.getPropertyValue(eufy_security_client_1.PropertyName.DeviceRTSPStreamUrl);
403
- this.log.debug('RTSP URL: ' + url);
404
- return {
405
- url: url,
406
- };
407
- }
408
- catch (error) {
409
- this.log.warn('Could not get snapshot from rtsp stream!', error);
410
- return null;
411
- }
412
- }
413
- else {
414
- try {
415
- const streamData = await this.livestreamManager.getLocalLivestream();
416
- return {
417
- stream: streamData.videostream,
418
- };
419
- }
420
- catch (error) {
421
- this.log.warn('Could not get snapshot from livestream!', error);
422
- return null;
423
- }
424
- }
425
- }
426
- async resizeSnapshot(snapshot, request) {
427
- const parameters = await ffmpeg_1.FFmpegParameters.forSnapshot(this.cameraConfig.videoConfig?.debug);
428
- parameters.setup(this.cameraConfig, request);
429
- const ffmpeg = new ffmpeg_1.FFmpeg(`[Snapshot Resize Process]`, parameters);
430
- return ffmpeg.getResult(snapshot);
431
- }
432
- }
433
- exports.SnapshotManager = SnapshotManager;
434
- //# sourceMappingURL=SnapshotManager.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SnapshotManager.js","sourceRoot":"","sources":["../../src/plugin/controller/SnapshotManager.ts"],"names":[],"mappings":"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"}
@@ -1,27 +0,0 @@
1
- import { Camera } from 'eufy-security-client';
2
- import { CameraController, CameraRecordingConfiguration, CameraRecordingDelegate, HDSProtocolSpecificErrorReason, PlatformAccessory, RecordingPacket } from 'homebridge';
3
- import { EufySecurityPlatform } from '../platform';
4
- import { CameraConfig } from '../utils/configTypes';
5
- import { LocalLivestreamManager } from './LocalLivestreamManager';
6
- export declare class RecordingDelegate implements CameraRecordingDelegate {
7
- private platform;
8
- private accessory;
9
- private camera;
10
- private cameraConfig;
11
- private localLivestreamManager;
12
- private configuration?;
13
- private forceStopTimeout?;
14
- private closeReason?;
15
- private handlingStreamingRequest;
16
- private controller?;
17
- private session?;
18
- constructor(platform: EufySecurityPlatform, accessory: PlatformAccessory, camera: Camera, cameraConfig: CameraConfig, localLivestreamManager: LocalLivestreamManager);
19
- setController(controller: CameraController): void;
20
- isRecording(): boolean;
21
- handleRecordingStreamRequest(): AsyncGenerator<RecordingPacket, any, unknown>;
22
- updateRecordingActive(active: boolean): void;
23
- updateRecordingConfiguration(configuration: CameraRecordingConfiguration | undefined): void;
24
- closeRecordingStream(streamId: number, reason: HDSProtocolSpecificErrorReason | undefined): void;
25
- acknowledgeStream(streamId: any): void;
26
- }
27
- //# sourceMappingURL=recordingDelegate.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"recordingDelegate.d.ts","sourceRoot":"","sources":["../../src/plugin/controller/recordingDelegate.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAgB,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EACL,gBAAgB,EAChB,4BAA4B,EAC5B,uBAAuB,EACvB,8BAA8B,EAC9B,iBAAiB,EACjB,eAAe,EAChB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,YAAY,EAAe,MAAM,sBAAsB,CAAC;AAIjE,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAiBlE,qBAAa,iBAAkB,YAAW,uBAAuB;IAsB7D,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,sBAAsB;IAxBhC,OAAO,CAAC,aAAa,CAAC,CAA+B;IAErD,OAAO,CAAC,gBAAgB,CAAC,CAAiB;IAC1C,OAAO,CAAC,WAAW,CAAC,CAAS;IAC7B,OAAO,CAAC,wBAAwB,CAAS;IAEzC,OAAO,CAAC,UAAU,CAAC,CAAmB;IAEtC,OAAO,CAAC,OAAO,CAAC,CASd;gBAGQ,QAAQ,EAAE,oBAAoB,EAC9B,SAAS,EAAE,iBAAiB,EAC5B,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,YAAY,EAC1B,sBAAsB,EAAE,sBAAsB;IAKjD,aAAa,CAAC,UAAU,EAAE,gBAAgB;IAI1C,WAAW,IAAI,OAAO;IAIrB,4BAA4B,IAAI,cAAc,CAAC,eAAe,EAAE,GAAG,EAAE,OAAO,CAAC;IA+IrF,qBAAqB,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI;IAI5C,4BAA4B,CAAC,aAAa,EAAE,4BAA4B,GAAG,SAAS,GAAG,IAAI;IAI3F,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,8BAA8B,GAAG,SAAS,GAAG,IAAI;IA8BhG,iBAAiB,CAAC,QAAQ,KAAA;CAI3B"}
@@ -1,52 +0,0 @@
1
- import { CameraController, CameraStreamingDelegate, PrepareStreamCallback, PrepareStreamRequest, SnapshotRequest, SnapshotRequestCallback, SRTPCryptoSuites, StreamingRequest, StreamRequestCallback } from 'homebridge';
2
- import { Socket } from 'dgram';
3
- import { FFmpeg } from '../utils/ffmpeg';
4
- import { LocalLivestreamManager } from './LocalLivestreamManager';
5
- import { TalkbackStream } from '../utils/Talkback';
6
- import { CameraAccessory } from '../accessories/CameraAccessory';
7
- import { Logger, ILogObj } from 'tslog';
8
- export type SessionInfo = {
9
- address: string;
10
- ipv6: boolean;
11
- videoPort: number;
12
- videoReturnPort: number;
13
- videoCryptoSuite: SRTPCryptoSuites;
14
- videoSRTP: Buffer;
15
- videoSSRC: number;
16
- audioPort: number;
17
- audioReturnPort: number;
18
- audioCryptoSuite: SRTPCryptoSuites;
19
- audioSRTP: Buffer;
20
- audioSSRC: number;
21
- };
22
- type ActiveSession = {
23
- videoProcess?: FFmpeg;
24
- audioProcess?: FFmpeg;
25
- returnProcess?: FFmpeg;
26
- timeout?: NodeJS.Timeout;
27
- socket?: Socket;
28
- talkbackStream?: TalkbackStream;
29
- };
30
- export declare class StreamingDelegate implements CameraStreamingDelegate {
31
- private camera;
32
- private videoConfig;
33
- private controller?;
34
- private platform;
35
- private device;
36
- readonly log: Logger<ILogObj>;
37
- private localLivestreamManager;
38
- private snapshotManager;
39
- pendingSessions: Map<string, SessionInfo>;
40
- ongoingSessions: Map<string, ActiveSession>;
41
- timeouts: Map<string, NodeJS.Timeout>;
42
- constructor(camera: CameraAccessory);
43
- setController(controller: CameraController): void;
44
- getLivestreamManager(): LocalLivestreamManager;
45
- handleSnapshotRequest(request: SnapshotRequest, callback: SnapshotRequestCallback): Promise<void>;
46
- prepareStream(request: PrepareStreamRequest, callback: PrepareStreamCallback): Promise<void>;
47
- private startStream;
48
- handleStreamRequest(request: StreamingRequest, callback: StreamRequestCallback): void;
49
- stopStream(sessionId: string): void;
50
- }
51
- export {};
52
- //# sourceMappingURL=streamingDelegate.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"streamingDelegate.d.ts","sourceRoot":"","sources":["../../src/plugin/controller/streamingDelegate.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,gBAAgB,EAChB,uBAAuB,EACvB,qBAAqB,EACrB,oBAAoB,EAEpB,eAAe,EACf,uBAAuB,EACvB,gBAAgB,EAEhB,gBAAgB,EAChB,qBAAqB,EAEtB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAgB,MAAM,EAAE,MAAM,OAAO,CAAC;AAE7C,OAAO,EAAE,MAAM,EAAoB,MAAM,iBAAiB,CAAC;AAK3D,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAElE,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAGnD,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAExC,MAAM,MAAM,WAAW,GAAG;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,OAAO,CAAC;IAEd,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAElB,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,KAAK,aAAa,GAAG;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,cAAc,CAAC;CACjC,CAAC;AAEF,qBAAa,iBAAkB,YAAW,uBAAuB;IAkB7D,OAAO,CAAC,MAAM;IAhBhB,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,UAAU,CAAC,CAAmB;IACtC,OAAO,CAAC,QAAQ,CAAuB;IACvC,OAAO,CAAC,MAAM,CAAS;IAEvB,SAAgB,GAAG,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;IAErC,OAAO,CAAC,sBAAsB,CAAyB;IACvD,OAAO,CAAC,eAAe,CAAkB;IAGzC,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAa;IACtD,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,CAAa;IACxD,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,CAAa;gBAGxC,MAAM,EAAE,eAAe;IAkB1B,aAAa,CAAC,UAAU,EAAE,gBAAgB;IAI1C,oBAAoB,IAAI,sBAAsB;IAI/C,qBAAqB,CAAC,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,uBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC;IAiBjG,aAAa,CAAC,OAAO,EAAE,oBAAoB,EAAE,QAAQ,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC;YAmDpF,WAAW;IAyIzB,mBAAmB,CAAC,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,qBAAqB,GAAG,IAAI;IA8B9E,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;CAiD3C"}
package/dist/index.d.ts DELETED
@@ -1,7 +0,0 @@
1
- import { API } from 'homebridge';
2
- /**
3
- * This method registers the platform with Homebridge
4
- */
5
- declare const _default: (api: API) => void;
6
- export = _default;
7
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/plugin/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;AAMjC;;GAEG;yBACO,KAAK,GAAG;AAAlB,kBAGE"}
@@ -1,15 +0,0 @@
1
- import { Station, Device } from 'eufy-security-client';
2
- export interface DeviceIdentifier {
3
- uniqueId: string;
4
- displayName: string;
5
- type: number;
6
- }
7
- export interface StationContainer {
8
- deviceIdentifier: DeviceIdentifier;
9
- eufyDevice: Station;
10
- }
11
- export interface DeviceContainer {
12
- deviceIdentifier: DeviceIdentifier;
13
- eufyDevice: Device;
14
- }
15
- //# sourceMappingURL=interfaces.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../src/plugin/interfaces.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAEvD,MAAM,WAAW,gBAAgB;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,gBAAgB;IAC7B,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,UAAU,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,eAAe;IAC5B,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,UAAU,EAAE,MAAM,CAAC;CACtB"}