homebridge-eufy-security 2.0.1 → 2.1.0-beta.11

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 (132) hide show
  1. package/CHANGELOG.md +65 -0
  2. package/README.md +15 -5
  3. package/config.schema.json +1 -585
  4. package/dist/accessories/CameraAccessory.d.ts +1 -0
  5. package/dist/accessories/CameraAccessory.d.ts.map +1 -1
  6. package/dist/accessories/CameraAccessory.js +41 -10
  7. package/dist/accessories/CameraAccessory.js.map +1 -1
  8. package/dist/accessories/Device.d.ts.map +1 -1
  9. package/dist/accessories/Device.js.map +1 -1
  10. package/dist/accessories/DoorbellCameraAccessory.d.ts.map +1 -1
  11. package/dist/accessories/DoorbellCameraAccessory.js +2 -1
  12. package/dist/accessories/DoorbellCameraAccessory.js.map +1 -1
  13. package/dist/accessories/EntrySensorAccessory.d.ts.map +1 -1
  14. package/dist/accessories/EntrySensorAccessory.js.map +1 -1
  15. package/dist/accessories/KeypadAccessory.d.ts.map +1 -1
  16. package/dist/accessories/KeypadAccessory.js.map +1 -1
  17. package/dist/accessories/LocalLivestreamManager.d.ts +6 -1
  18. package/dist/accessories/LocalLivestreamManager.d.ts.map +1 -1
  19. package/dist/accessories/LocalLivestreamManager.js +59 -39
  20. package/dist/accessories/LocalLivestreamManager.js.map +1 -1
  21. package/dist/accessories/MotionSensorAccessory.d.ts.map +1 -1
  22. package/dist/accessories/MotionSensorAccessory.js.map +1 -1
  23. package/dist/accessories/SmartLockAccessory.d.ts +2 -2
  24. package/dist/accessories/SmartLockAccessory.d.ts.map +1 -1
  25. package/dist/accessories/SmartLockAccessory.js +21 -9
  26. package/dist/accessories/SmartLockAccessory.js.map +1 -1
  27. package/dist/accessories/SnapshotManager.d.ts +57 -0
  28. package/dist/accessories/SnapshotManager.d.ts.map +1 -0
  29. package/dist/accessories/SnapshotManager.js +491 -0
  30. package/dist/accessories/SnapshotManager.js.map +1 -0
  31. package/dist/accessories/StationAccessory.d.ts +12 -1
  32. package/dist/accessories/StationAccessory.d.ts.map +1 -1
  33. package/dist/accessories/StationAccessory.js +157 -11
  34. package/dist/accessories/StationAccessory.js.map +1 -1
  35. package/dist/accessories/Talkback.d.ts +21 -0
  36. package/dist/accessories/Talkback.d.ts.map +1 -0
  37. package/dist/accessories/Talkback.js +86 -0
  38. package/dist/accessories/Talkback.js.map +1 -0
  39. package/dist/accessories/UniversalStream.d.ts.map +1 -1
  40. package/dist/accessories/UniversalStream.js +11 -7
  41. package/dist/accessories/UniversalStream.js.map +1 -1
  42. package/dist/accessories/configTypes.d.ts +15 -0
  43. package/dist/accessories/configTypes.d.ts.map +1 -1
  44. package/dist/accessories/configTypes.js.map +1 -1
  45. package/dist/accessories/ffmpeg.d.ts +3 -1
  46. package/dist/accessories/ffmpeg.d.ts.map +1 -1
  47. package/dist/accessories/ffmpeg.js +16 -5
  48. package/dist/accessories/ffmpeg.js.map +1 -1
  49. package/dist/accessories/logger.d.ts.map +1 -1
  50. package/dist/accessories/logger.js.map +1 -1
  51. package/dist/accessories/streamingDelegate.d.ts +4 -0
  52. package/dist/accessories/streamingDelegate.d.ts.map +1 -1
  53. package/dist/accessories/streamingDelegate.js +182 -101
  54. package/dist/accessories/streamingDelegate.js.map +1 -1
  55. package/dist/config.d.ts +3 -1
  56. package/dist/config.d.ts.map +1 -1
  57. package/dist/config.js.map +1 -1
  58. package/dist/index.d.ts.map +1 -1
  59. package/dist/index.js.map +1 -1
  60. package/dist/interfaces.d.ts.map +1 -1
  61. package/dist/interfaces.js.map +1 -1
  62. package/dist/platform.d.ts +7 -3
  63. package/dist/platform.d.ts.map +1 -1
  64. package/dist/platform.js +231 -178
  65. package/dist/platform.js.map +1 -1
  66. package/dist/settings.d.ts.map +1 -1
  67. package/dist/settings.js.map +1 -1
  68. package/dist/utils/utils.d.ts +5 -0
  69. package/dist/utils/utils.d.ts.map +1 -0
  70. package/dist/utils/utils.js +29 -0
  71. package/dist/utils/utils.js.map +1 -0
  72. package/homebridge-ui/configui/app/accessory.d.ts +9 -0
  73. package/homebridge-ui/configui/app/accessory.d.ts.map +1 -0
  74. package/homebridge-ui/configui/app/accessory.js +3 -0
  75. package/homebridge-ui/configui/app/accessory.js.map +1 -0
  76. package/homebridge-ui/configui/app/util/types.d.ts +17 -0
  77. package/homebridge-ui/configui/app/util/types.d.ts.map +1 -0
  78. package/homebridge-ui/configui/app/util/types.js +11 -0
  79. package/homebridge-ui/configui/app/util/types.js.map +1 -0
  80. package/homebridge-ui/public/3rdpartylicenses.txt +700 -0
  81. package/homebridge-ui/public/assets/devices/batterydoorbell1080p_large.jpg +0 -0
  82. package/homebridge-ui/public/assets/devices/batterydoorbell2k_large.jpg +0 -0
  83. package/homebridge-ui/public/assets/devices/batterydoorbell2kdual_large.jpg +0 -0
  84. package/homebridge-ui/public/assets/devices/eufy-security-client.png +0 -0
  85. package/homebridge-ui/public/assets/devices/eufycam2_large.jpg +0 -0
  86. package/homebridge-ui/public/assets/devices/eufycam2c_large.jpg +0 -0
  87. package/homebridge-ui/public/assets/devices/eufycam2cpro_large.jpg +0 -0
  88. package/homebridge-ui/public/assets/devices/eufycam2pro_large.jpg +0 -0
  89. package/homebridge-ui/public/assets/devices/eufycam_large.jpg +0 -0
  90. package/homebridge-ui/public/assets/devices/floodlight2_large.jpg +0 -0
  91. package/homebridge-ui/public/assets/devices/floodlight2pro_large.jpg +0 -0
  92. package/homebridge-ui/public/assets/devices/floodlight_large.jpg +0 -0
  93. package/homebridge-ui/public/assets/devices/homebase2_large.jpg +0 -0
  94. package/homebridge-ui/public/assets/devices/homebase_large.jpg +0 -0
  95. package/homebridge-ui/public/assets/devices/indoorcammini_large.jpg +0 -0
  96. package/homebridge-ui/public/assets/devices/indoorcamp24_large.jpg +0 -0
  97. package/homebridge-ui/public/assets/devices/keypad_large.jpg +0 -0
  98. package/homebridge-ui/public/assets/devices/license.md +23 -0
  99. package/homebridge-ui/public/assets/devices/motionsensor_large.jpg +0 -0
  100. package/homebridge-ui/public/assets/devices/sensor_large.jpg +0 -0
  101. package/homebridge-ui/public/assets/devices/smartlock_t8500_large.jpg +0 -0
  102. package/homebridge-ui/public/assets/devices/smartlock_t8500_wifibridge_large.jpg +0 -0
  103. package/homebridge-ui/public/assets/devices/smartlock_touch_and_wifi_t8520_large.jpg +0 -0
  104. package/homebridge-ui/public/assets/devices/smartlock_touch_t8510_large.jpg +0 -0
  105. package/homebridge-ui/public/assets/devices/smartlock_touch_t8510_wifibridge_large.jpg +0 -0
  106. package/homebridge-ui/public/assets/devices/smartlockwifibridge_t8021_large.jpg +0 -0
  107. package/homebridge-ui/public/assets/devices/solocame20_large.jpg +0 -0
  108. package/homebridge-ui/public/assets/devices/solocame40_large.jpg +0 -0
  109. package/homebridge-ui/public/assets/devices/solocaml20_large.jpg +0 -0
  110. package/homebridge-ui/public/assets/devices/solocams40_large.jpg +0 -0
  111. package/homebridge-ui/public/assets/devices/soloindoorcamc24_large.jpg +0 -0
  112. package/homebridge-ui/public/assets/devices/solooutdoorcamc22_large.jpg +0 -0
  113. package/homebridge-ui/public/assets/devices/solooutdoorcamc24_large.jpg +0 -0
  114. package/homebridge-ui/public/assets/devices/unknown.png +0 -0
  115. package/homebridge-ui/public/assets/devices/wireddoorbell1080p_large.jpg +0 -0
  116. package/homebridge-ui/public/assets/devices/wireddoorbell2k_large.jpg +0 -0
  117. package/homebridge-ui/public/assets/devices/wireddoorbelldual_large.jpg +0 -0
  118. package/homebridge-ui/public/{images → assets/images}/homebridge-eufy-security.png +0 -0
  119. package/homebridge-ui/public/favicon.ico +0 -0
  120. package/homebridge-ui/public/index.html +13 -679
  121. package/homebridge-ui/public/main.9d97398c97793f7e.js +1 -0
  122. package/homebridge-ui/public/polyfills.6050693665c0e882.js +1 -0
  123. package/homebridge-ui/public/runtime.1b3e1be22c2e329f.js +1 -0
  124. package/homebridge-ui/public/styles.e02689e7df4304da.css +6 -0
  125. package/homebridge-ui/server.d.ts +2 -0
  126. package/homebridge-ui/server.d.ts.map +1 -0
  127. package/homebridge-ui/server.js +204 -323
  128. package/homebridge-ui/server.js.map +1 -0
  129. package/media/Snapshot-black.png +0 -0
  130. package/package.json +64 -14
  131. package/homebridge-ui/public/css/style.css +0 -94
  132. package/homebridge-ui/public/js/main.js +0 -924
package/CHANGELOG.md CHANGED
@@ -1,5 +1,70 @@
1
1
  # Change Log
2
2
 
3
+ You can find the complete detailled changelog for every beta release [here](https://github.com/homebridge-eufy-security/plugin/releases).
4
+
5
+ ## 2.1.0-beta.11 (20/07/2022) - latest changes
6
+
7
+ ### Changed
8
+
9
+ - Use just one ffmpeg process for rtsp streaming
10
+ - Updated repo funding details (Readme.md and package.json)
11
+ - Cleaned up dependencies
12
+ - Improved readablity of the changelog (i hope)
13
+
14
+ ### Fixed
15
+
16
+ - Bug where an error saying 'talkback will not work with rtsp setting enabled' was displayed even though one of theses settings was not available (see [here](https://github.com/homebridge-eufy-security/plugin/issues/103#issuecomment-1189244061))
17
+ - plugin crashed if dependencies were stored in in non default places by npm (see [here](https://github.com/homebridge-eufy-security/plugin/issues/72#issuecomment-1189144152))
18
+
19
+ ## 2.1.0 (beta) - complete changes of the beta so far (19/07/2022)
20
+
21
+ ### Added
22
+
23
+ - Talkback support #103
24
+ - Improved snapshot handling: 3 different snapshot methods
25
+ - Feature to improve camera snapshots at night (night vision)
26
+ - Feature to automatically generate camera snapshots a given period of time, so that snapshots are more up-to-date
27
+ - Feature allowing enabling and disabling motion detection throug switch if camera is used as a motion sensor only
28
+ - Feature allowing enabling and disabling the camera throug switch even if camera is used as a motion sensor only
29
+ - Control Station alarm through HomeKit (reset the alarm and even trigger it with HomeKit automations. You can now trigger the alarm even with third party accessories - e.g. with devices from vendors other than eufy) - see #26
30
+ - Setting to disable log file storage to disk (possible fix for #93)
31
+
32
+ ### Changed
33
+
34
+ - Complete redesign of the config ui screen
35
+ - RTSP setting is now only avaiable on compatible devices
36
+ - Plugin will use two separate ffmpeg process for audio and video to increase stability (exception: rtsp streams)
37
+ - Updated to latest version of eufy-security-client (2.1.1) (fix for #72 and #38)
38
+ - Refactored whole project structure to resemble the new workspace layout (plugin + custom ui)
39
+ - Reimplementation of device discovery algorithm to better reflect best practices mentioned in [this comment](https://github.com/bropat/eufy-security-client/issues/167#issuecomment-1155388624)
40
+ - Added timeouts for guard mode changes. If these fail HomeKit will no longer get stuck, trying to change the guard mode and an error will be written to the log output (see #39)
41
+ - Limit value for maximum streaming duration to prevent unexpected behaviour (see #111)
42
+ - Additional debug messages to help with issues
43
+ - Updated repo funding details (Readme.md and package.json)
44
+ - Cleaned up dependencies
45
+
46
+ ### Fixed
47
+
48
+ - Plugin crash if guard modes were configured incorrectly (see #52)
49
+ - Plugin crashed if station was disarmed with certain configured guard modes
50
+ - Config ui crash due to a wrong node version requirement (#44)
51
+ - Livestream could not be started if previous local livestream cache was not shut down correctly (e.g. #43)
52
+ - Livestream was not working if videoconfig was populated with empty values
53
+ - Plugin may have crashed due to a race condition regarding log file rotation (see #56)
54
+ - Motion events were not reseted correctly in some cases. So new events would not be recognized
55
+ - Push notifications stopped working if the configuration editor was opened and the plugin not restarted aftwerwards (see #59)
56
+ - Options enableCamera and enableMotion were not working in specific configuration situations (see #48)
57
+ - Unbridge setting was not working for doorbell cameras (see #79)
58
+ - Fixed #81
59
+ - Fixed all lint warnings and errors
60
+ - Fixed npm warnings
61
+ - Smart lock states could be wrong on plugin startup (further improvements needed for smartlocks)
62
+
63
+ ## 2.0.1 (20.06.2022)
64
+
65
+ ### Fixed
66
+ - locked dependency version to prevent breaking changes
67
+
3
68
  ## 2.0 (25/05/2022)
4
69
 
5
70
  ### Added
package/README.md CHANGED
@@ -26,7 +26,7 @@ Homebridge plugin to control certain Eufy Security devices
26
26
  ### Prerequisites
27
27
 
28
28
  - To use this plugin, you will need to already have [Homebridge](https://homebridge.io) (at least v1.3.4) installed. Refer to the links for more information and installation instructions.
29
- - It is recommended to use the current LTS version of Node, currently v14, however Node v12 is also supported.
29
+ - It is recommended to use the current LTS version of Node, currently v16, however Node v12 is also supported.
30
30
 
31
31
  ### Setup
32
32
 
@@ -49,11 +49,21 @@ Homebridge plugin to control certain Eufy Security devices
49
49
 
50
50
  ### Supporting
51
51
 
52
- - **[samemory](https://github.com/samemory)**
53
- - **[schliemann](https://github.com/schliemann)**
54
- - **[lenoxys](https://github.com/lenoxys)**
52
+ If you appreciate this plugin and want to support the work we do, you can use one of the following links:
55
53
 
56
- Big thanks to **[bropat](https://github.com/bropat)** who made this possible. Please consider buying a coffee for him over here: https://ko-fi.com/bropat
54
+ **Active Contributors**
55
+
56
+ - **[lenoxys](https://github.com/sponsors/lenoxys)**
57
+ - **[schliemann](https://github.com/schliemann)**
58
+ - **[thieren](https://ko-fi.com/thieren)**
59
+
60
+ **The guy who started it all**
61
+
62
+ - **[samemory](https://ko-fi.com/S6S24XCVJ)**
63
+
64
+ **And also**
65
+
66
+ Big thanks to **[bropat](https://github.com/bropat)** who made this possible. You can support him [here](https://ko-fi.com/bropat)
57
67
 
58
68
  ### Disclaimer
59
69
 
@@ -2,589 +2,5 @@
2
2
  "pluginAlias": "EufySecurity",
3
3
  "pluginType": "platform",
4
4
  "singular": true,
5
- "customUi": true,
6
- "schema": {
7
- "type": "object",
8
- "properties": {
9
- "username": {
10
- "title": "Eufy username",
11
- "type": "string",
12
- "required": true,
13
- "description": "Eufy username/email"
14
- },
15
- "password": {
16
- "title": "Eufy Password",
17
- "type": "string",
18
- "required": true,
19
- "description": "Eufy password"
20
- },
21
- "enableDetailedLogging": {
22
- "title": "Enable Detailed Logging?",
23
- "type": "number",
24
- "default": 0,
25
- "oneOf": [
26
- {
27
- "title": "Normal",
28
- "enum": [
29
- 0
30
- ]
31
- },
32
- {
33
- "title": "Debug",
34
- "enum": [
35
- 1
36
- ]
37
- },
38
- {
39
- "title": "Insane",
40
- "enum": [
41
- 2
42
- ]
43
- }
44
- ],
45
- "description": "Becarefull Debug and Insane may contain credential and personnal information which could be use to login into your Eufy Account",
46
- "required": true
47
- },
48
- "enableCamera": {
49
- "title": "Camera device seen as Camera",
50
- "description": "Camera seen as Motion Sensor by default, enable this setting to transform as Camera",
51
- "type": "boolean",
52
- "required": false
53
- },
54
- "CameraMaxLivestreamDuration": {
55
- "title": "Camera Max Livestream Duration (in seconds) ",
56
- "type": "number",
57
- "required": false
58
- },
59
- "pollingIntervalMinutes": {
60
- "title": "Polling Interval (in minutes) ",
61
- "type": "number",
62
- "required": false
63
- },
64
- "enableButton": {
65
- "title": "Display homekit button to switch on/off camera",
66
- "description": "When disabling theses buttons you might need to clear accessory cache (homebridge settings) so it can take effect into homekit.",
67
- "type": "boolean",
68
- "default": true,
69
- "required": false
70
- },
71
- "motionButton": {
72
- "title": "Display homekit button to switch on/off motion camera",
73
- "description": "When disabling theses buttons you might need to clear accessory cache (homebridge settings) so it can take effect into homekit.",
74
- "type": "boolean",
75
- "default": true,
76
- "required": false
77
- },
78
- "ignoreStations": {
79
- "title": "Ignoring stations",
80
- "type": "array",
81
- "required": false,
82
- "items": {
83
- "type": "string"
84
- }
85
- },
86
- "ignoreDevices": {
87
- "title": "Ignoring devices",
88
- "type": "array",
89
- "required": false,
90
- "items": {
91
- "type": "string"
92
- }
93
- },
94
- "hkHome": {
95
- "title": "HomeKit Home",
96
- "type": "number",
97
- "default": 1,
98
- "oneOf": [
99
- {
100
- "title": "Home",
101
- "enum": [
102
- 1
103
- ]
104
- },
105
- {
106
- "title": "Away",
107
- "enum": [
108
- 0
109
- ]
110
- },
111
- {
112
- "title": "Schedule",
113
- "enum": [
114
- 2
115
- ]
116
- },
117
- {
118
- "title": "Custom 1",
119
- "enum": [
120
- 3
121
- ]
122
- },
123
- {
124
- "title": "Custom 2",
125
- "enum": [
126
- 4
127
- ]
128
- },
129
- {
130
- "title": "Custom 3",
131
- "enum": [
132
- 5
133
- ]
134
- },
135
- {
136
- "title": "Geofencing",
137
- "enum": [
138
- 47
139
- ]
140
- },
141
- {
142
- "title": "Disarmed",
143
- "enum": [
144
- 63
145
- ]
146
- }
147
- ],
148
- "required": false
149
- },
150
- "hkAway": {
151
- "title": "HomeKit Away",
152
- "type": "number",
153
- "default": 0,
154
- "oneOf": [
155
- {
156
- "title": "Home",
157
- "enum": [
158
- 1
159
- ]
160
- },
161
- {
162
- "title": "Away",
163
- "enum": [
164
- 0
165
- ]
166
- },
167
- {
168
- "title": "Schedule",
169
- "enum": [
170
- 2
171
- ]
172
- },
173
- {
174
- "title": "Custom 1",
175
- "enum": [
176
- 3
177
- ]
178
- },
179
- {
180
- "title": "Custom 2",
181
- "enum": [
182
- 4
183
- ]
184
- },
185
- {
186
- "title": "Custom 3",
187
- "enum": [
188
- 5
189
- ]
190
- },
191
- {
192
- "title": "Geofencing",
193
- "enum": [
194
- 47
195
- ]
196
- },
197
- {
198
- "title": "Disarmed",
199
- "enum": [
200
- 63
201
- ]
202
- }
203
- ],
204
- "required": false
205
- },
206
- "hkNight": {
207
- "title": "HomeKit Night",
208
- "type": "number",
209
- "default": 3,
210
- "oneOf": [
211
- {
212
- "title": "Home",
213
- "enum": [
214
- 1
215
- ]
216
- },
217
- {
218
- "title": "Away",
219
- "enum": [
220
- 0
221
- ]
222
- },
223
- {
224
- "title": "Schedule",
225
- "enum": [
226
- 2
227
- ]
228
- },
229
- {
230
- "title": "Custom 1",
231
- "enum": [
232
- 3
233
- ]
234
- },
235
- {
236
- "title": "Custom 2",
237
- "enum": [
238
- 4
239
- ]
240
- },
241
- {
242
- "title": "Custom 3",
243
- "enum": [
244
- 5
245
- ]
246
- },
247
- {
248
- "title": "Geofencing",
249
- "enum": [
250
- 47
251
- ]
252
- },
253
- {
254
- "title": "Disarmed",
255
- "enum": [
256
- 63
257
- ]
258
- }
259
- ],
260
- "required": false
261
- },
262
- "hkOff": {
263
- "title": "HomeKit Off",
264
- "type": "number",
265
- "default": 63,
266
- "oneOf": [
267
- {
268
- "title": "Home",
269
- "enum": [
270
- 1
271
- ]
272
- },
273
- {
274
- "title": "Away",
275
- "enum": [
276
- 0
277
- ]
278
- },
279
- {
280
- "title": "Schedule",
281
- "enum": [
282
- 2
283
- ]
284
- },
285
- {
286
- "title": "Custom 1",
287
- "enum": [
288
- 3
289
- ]
290
- },
291
- {
292
- "title": "Custom 2",
293
- "enum": [
294
- 4
295
- ]
296
- },
297
- {
298
- "title": "Custom 3",
299
- "enum": [
300
- 5
301
- ]
302
- },
303
- {
304
- "title": "Geofencing",
305
- "enum": [
306
- 47
307
- ]
308
- },
309
- {
310
- "title": "Disarmed",
311
- "enum": [
312
- 63
313
- ]
314
- }
315
- ],
316
- "required": false
317
- },
318
- "country": {
319
- "title": "Eufy Country",
320
- "type": "string",
321
- "required": false,
322
- "discription": "Eufy Country selection"
323
- },
324
- "cameras": {
325
- "type": "array",
326
- "items": {
327
- "title": "Cameras",
328
- "type": "object",
329
- "properties": {
330
- "serialNumber": {
331
- "name": "Serial Number",
332
- "type": "string",
333
- "placeholder": "SerialNumber",
334
- "description": "Set the serial number for display in the Home app."
335
- },
336
- "videoConfig": {
337
- "title": "Video Configuration",
338
- "type": "object",
339
- "properties": {
340
- "readRate": {
341
- "title": "Read Rate",
342
- "type": "boolean",
343
- "description": "Read input at native frame rate (-re)."
344
- },
345
- "analyzeDuration": {
346
- "title": "Analyze Duration",
347
- "type": "integer",
348
- "description": "Specify how many microseconds are analyzed to probe the input. A higher value will enable detecting more accurate information, but will increase latency. It defaults to 5,000,000 microseconds = 5 seconds (-analyzeduration)."
349
- },
350
- "probeSize": {
351
- "title": "Probe Size",
352
- "type": "integer",
353
- "description": "Set probing size in bytes, i.e. the size of the data to analyze to get stream information. A higher value will enable detecting more information in case it is dispersed into the stream, but will increase latency. Must be an integer not lesser than 32. It is 5000000 by default (-probesize)."
354
- },
355
- "reorderQueueSize": {
356
- "title": "Reorder Queue Size (Jitter buffer size)",
357
- "type": "integer",
358
- "description": "Packets may be received out of order, so before they can be passed onwards, they need to be reordered. Default jitter buffer size is 500. This option allows you to specify it manually. Higher values will lead to greater latency. Only applicable for reception over UDP (-reorder_queue_size)."
359
- },
360
- "maxDelay": {
361
- "title": "Max Delay",
362
- "type": "integer",
363
- "description": "When receiving data over UDP, the demuxer tries to reorder received packets (since they may arrive out of order, or packets may get lost totally). This can be disabled by setting the maximum demuxing delay to zero (-max_delay)."
364
- },
365
- "maxStreams": {
366
- "title": "Maximum Concurrent Streams",
367
- "type": "integer",
368
- "default": 2,
369
- "minimum": 1,
370
- "description": "The maximum number of streams that will be allowed at once to this camera."
371
- },
372
- "maxFPS": {
373
- "title": "Maximum Framerate",
374
- "type": "integer",
375
- "placeholder": 20,
376
- "minimum": 0,
377
- "description": "The maximum frame rate used for video streamed to HomeKit. If set to 0, the framerate of the source is used. If not set, will use any framerate HomeKit requests (-r)."
378
- },
379
- "maxBitrate": {
380
- "title": "Maximum Bitrate",
381
- "type": "integer",
382
- "placeholder": 299,
383
- "minimum": 0,
384
- "description": "The maximum bitrate used for video stream, in kbit/s. If not set, will use any bitrate HomeKit requests (-b:v)."
385
- },
386
- "forceMax": {
387
- "title": "Force Maximums",
388
- "type": "boolean",
389
- "description": "If set, the settings requested by HomeKit will be overridden with any 'maximum' values defined in this config."
390
- },
391
- "vcodec": {
392
- "title": "Video Codec",
393
- "type": "string",
394
- "default": "copy",
395
- "typeahead": {
396
- "source": [
397
- "libx264",
398
- "h264_omx",
399
- "h264_videotoolbox",
400
- "copy"
401
- ]
402
- },
403
- "description": "Set the codec used for encoding video sent to HomeKit, must be H.264-based. You can change to a hardware accelerated video codec with this option, if one is available (-vcodec)."
404
- },
405
- "acodec": {
406
- "title": "Audio Codec",
407
- "type": "string",
408
- "default": "libfdk_aac",
409
- "typeahead": {
410
- "source": [
411
- "libfdk_aac",
412
- "copy"
413
- ]
414
- },
415
- "description": "Set the codec used for encoding audio sent to HomeKit for HSV, must be AAC-based (-acodec)."
416
- },
417
- "packetSize": {
418
- "title": "Packet Size",
419
- "type": "number",
420
- "placeholder": 1316,
421
- "multipleOf": 188,
422
- "minimum": 188,
423
- "description": "If audio or video is choppy try a smaller value."
424
- },
425
- "stimeout": {
426
- "title": "Socket Timeout",
427
- "type": "number",
428
- "description": "Socket TCP I/O timeout in seconds. If you have problems with hanging FFmpeg processes in the background, you can enter any value here to stop the process automatically after the entered time, if no response comes (-stimeout).",
429
- "minimum": 0,
430
- "maximum": 60
431
- },
432
- "videoFilter": {
433
- "title": "Additional Video Filters",
434
- "type": "string",
435
- "description": "Comma-delimited list of additional video filters for FFmpeg to run on the video. If 'none' is included, the default video filters are disabled (-filter:v)."
436
- },
437
- "encoderOptions": {
438
- "title": "Encoder Options",
439
- "type": "string",
440
- "placeholder": "-preset ultrafast -tune zerolatency",
441
- "description": "Options to be passed to the video encoder."
442
- },
443
- "mapvideo": {
444
- "type": "string",
445
- "title": "Video Stream",
446
- "description": "Selects the stream used for video (-map)."
447
- },
448
- "mapaudio": {
449
- "type": "string",
450
- "title": "Audio Stream",
451
- "description": "Selects the stream used for audio (-map)."
452
- }
453
- }
454
- }
455
- }
456
- }
457
- }
458
- }
459
- },
460
- "layout": [
461
- {
462
- "type": "flex",
463
- "flex-flow": "row wrap",
464
- "items": [
465
- "username",
466
- {
467
- "key": "password",
468
- "type": "password"
469
- }
470
- ]
471
- },
472
- {
473
- "type": "fieldset",
474
- "title": "Cameras",
475
- "expandable": true,
476
- "expanded": false,
477
- "items": [
478
- {
479
- "key": "cameras",
480
- "type": "tabarray",
481
- "title": "{{ value.serialNumber || 'new Camera' }}",
482
- "items": [
483
- "cameras[].serialNumber",
484
- {
485
- "key": "cameras[]",
486
- "type": "section",
487
- "title": "Stream Configuration",
488
- "expandable": true,
489
- "expanded": false,
490
- "items": [
491
- "cameras[].videoConfig.maxStreams",
492
- "cameras[].videoConfig.maxFPS",
493
- "cameras[].videoConfig.maxBitrate",
494
- "cameras[].videoConfig.forceMax"
495
- ]
496
- },
497
- {
498
- "key": "cameras[]",
499
- "type": "section",
500
- "title": "Advanced Stream Configuration",
501
- "expandable": true,
502
- "expanded": false,
503
- "items": [
504
- "cameras[].videoConfig.readRate",
505
- "cameras[].videoConfig.acodec",
506
- "cameras[].videoConfig.vcodec",
507
- "cameras[].videoConfig.analyzeDuration",
508
- "cameras[].videoConfig.probeSize",
509
- "cameras[].videoConfig.reorderQueueSize",
510
- "cameras[].videoConfig.maxDelay",
511
- "cameras[].videoConfig.stimeout",
512
- "cameras[].videoConfig.packetSize",
513
- "cameras[].videoConfig.mapvideo",
514
- "cameras[].videoConfig.mapaudio",
515
- "cameras[].videoConfig.videoFilter",
516
- "cameras[].videoConfig.encoderOptions"
517
- ]
518
- }
519
- ]
520
- }
521
- ]
522
- },
523
- {
524
- "type": "section",
525
- "title": "HomeKit Security Mode Settings",
526
- "description": "Change how each mode in the HomeKit security system is mapped to the modes in the Eufy App",
527
- "expandable": true,
528
- "expanded": false,
529
- "items": [
530
- "hkHome",
531
- "hkAway",
532
- "hkNight",
533
- "hkOff"
534
- ]
535
- },
536
- {
537
- "type": "section",
538
- "title": "Optional Settings",
539
- "expandable": true,
540
- "expanded": false,
541
- "items": [
542
- "enableDetailedLogging",
543
- "enableCamera",
544
- "enableButton",
545
- "motionButton",
546
- "CameraMaxLivestreamDuration",
547
- "pollingIntervalMinutes",
548
- "country",
549
- "codec",
550
- "ffmpegdebug",
551
- {
552
- "key": "ignoreStations",
553
- "add": "Add Another Device ID",
554
- "type": "array",
555
- "items": [
556
- {
557
- "type": "div",
558
- "displayFlex": true,
559
- "flex-direction": "row",
560
- "items": [
561
- {
562
- "key": "ignoreStations[]",
563
- "placeholder": "Device ID"
564
- }
565
- ]
566
- }
567
- ]
568
- },
569
- {
570
- "key": "ignoreDevices",
571
- "add": "Add Another Device ID",
572
- "type": "array",
573
- "items": [
574
- {
575
- "type": "div",
576
- "displayFlex": true,
577
- "flex-direction": "row",
578
- "items": [
579
- {
580
- "key": "ignoreDevices[]",
581
- "placeholder": "Device ID"
582
- }
583
- ]
584
- }
585
- ]
586
- }
587
- ]
588
- }
589
- ]
5
+ "customUi": true
590
6
  }