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.
- package/CHANGELOG.md +65 -0
- package/README.md +15 -5
- package/config.schema.json +1 -585
- package/dist/accessories/CameraAccessory.d.ts +1 -0
- package/dist/accessories/CameraAccessory.d.ts.map +1 -1
- package/dist/accessories/CameraAccessory.js +41 -10
- package/dist/accessories/CameraAccessory.js.map +1 -1
- package/dist/accessories/Device.d.ts.map +1 -1
- package/dist/accessories/Device.js.map +1 -1
- package/dist/accessories/DoorbellCameraAccessory.d.ts.map +1 -1
- package/dist/accessories/DoorbellCameraAccessory.js +2 -1
- package/dist/accessories/DoorbellCameraAccessory.js.map +1 -1
- package/dist/accessories/EntrySensorAccessory.d.ts.map +1 -1
- package/dist/accessories/EntrySensorAccessory.js.map +1 -1
- package/dist/accessories/KeypadAccessory.d.ts.map +1 -1
- package/dist/accessories/KeypadAccessory.js.map +1 -1
- package/dist/accessories/LocalLivestreamManager.d.ts +6 -1
- package/dist/accessories/LocalLivestreamManager.d.ts.map +1 -1
- package/dist/accessories/LocalLivestreamManager.js +59 -39
- package/dist/accessories/LocalLivestreamManager.js.map +1 -1
- package/dist/accessories/MotionSensorAccessory.d.ts.map +1 -1
- package/dist/accessories/MotionSensorAccessory.js.map +1 -1
- package/dist/accessories/SmartLockAccessory.d.ts +2 -2
- package/dist/accessories/SmartLockAccessory.d.ts.map +1 -1
- package/dist/accessories/SmartLockAccessory.js +21 -9
- package/dist/accessories/SmartLockAccessory.js.map +1 -1
- package/dist/accessories/SnapshotManager.d.ts +57 -0
- package/dist/accessories/SnapshotManager.d.ts.map +1 -0
- package/dist/accessories/SnapshotManager.js +491 -0
- package/dist/accessories/SnapshotManager.js.map +1 -0
- package/dist/accessories/StationAccessory.d.ts +12 -1
- package/dist/accessories/StationAccessory.d.ts.map +1 -1
- package/dist/accessories/StationAccessory.js +157 -11
- package/dist/accessories/StationAccessory.js.map +1 -1
- package/dist/accessories/Talkback.d.ts +21 -0
- package/dist/accessories/Talkback.d.ts.map +1 -0
- package/dist/accessories/Talkback.js +86 -0
- package/dist/accessories/Talkback.js.map +1 -0
- package/dist/accessories/UniversalStream.d.ts.map +1 -1
- package/dist/accessories/UniversalStream.js +11 -7
- package/dist/accessories/UniversalStream.js.map +1 -1
- package/dist/accessories/configTypes.d.ts +15 -0
- package/dist/accessories/configTypes.d.ts.map +1 -1
- package/dist/accessories/configTypes.js.map +1 -1
- package/dist/accessories/ffmpeg.d.ts +3 -1
- package/dist/accessories/ffmpeg.d.ts.map +1 -1
- package/dist/accessories/ffmpeg.js +16 -5
- package/dist/accessories/ffmpeg.js.map +1 -1
- package/dist/accessories/logger.d.ts.map +1 -1
- package/dist/accessories/logger.js.map +1 -1
- package/dist/accessories/streamingDelegate.d.ts +4 -0
- package/dist/accessories/streamingDelegate.d.ts.map +1 -1
- package/dist/accessories/streamingDelegate.js +182 -101
- package/dist/accessories/streamingDelegate.js.map +1 -1
- package/dist/config.d.ts +3 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/interfaces.d.ts.map +1 -1
- package/dist/interfaces.js.map +1 -1
- package/dist/platform.d.ts +7 -3
- package/dist/platform.d.ts.map +1 -1
- package/dist/platform.js +231 -178
- package/dist/platform.js.map +1 -1
- package/dist/settings.d.ts.map +1 -1
- package/dist/settings.js.map +1 -1
- package/dist/utils/utils.d.ts +5 -0
- package/dist/utils/utils.d.ts.map +1 -0
- package/dist/utils/utils.js +29 -0
- package/dist/utils/utils.js.map +1 -0
- package/homebridge-ui/configui/app/accessory.d.ts +9 -0
- package/homebridge-ui/configui/app/accessory.d.ts.map +1 -0
- package/homebridge-ui/configui/app/accessory.js +3 -0
- package/homebridge-ui/configui/app/accessory.js.map +1 -0
- package/homebridge-ui/configui/app/util/types.d.ts +17 -0
- package/homebridge-ui/configui/app/util/types.d.ts.map +1 -0
- package/homebridge-ui/configui/app/util/types.js +11 -0
- package/homebridge-ui/configui/app/util/types.js.map +1 -0
- package/homebridge-ui/public/3rdpartylicenses.txt +700 -0
- package/homebridge-ui/public/assets/devices/batterydoorbell1080p_large.jpg +0 -0
- package/homebridge-ui/public/assets/devices/batterydoorbell2k_large.jpg +0 -0
- package/homebridge-ui/public/assets/devices/batterydoorbell2kdual_large.jpg +0 -0
- package/homebridge-ui/public/assets/devices/eufy-security-client.png +0 -0
- package/homebridge-ui/public/assets/devices/eufycam2_large.jpg +0 -0
- package/homebridge-ui/public/assets/devices/eufycam2c_large.jpg +0 -0
- package/homebridge-ui/public/assets/devices/eufycam2cpro_large.jpg +0 -0
- package/homebridge-ui/public/assets/devices/eufycam2pro_large.jpg +0 -0
- package/homebridge-ui/public/assets/devices/eufycam_large.jpg +0 -0
- package/homebridge-ui/public/assets/devices/floodlight2_large.jpg +0 -0
- package/homebridge-ui/public/assets/devices/floodlight2pro_large.jpg +0 -0
- package/homebridge-ui/public/assets/devices/floodlight_large.jpg +0 -0
- package/homebridge-ui/public/assets/devices/homebase2_large.jpg +0 -0
- package/homebridge-ui/public/assets/devices/homebase_large.jpg +0 -0
- package/homebridge-ui/public/assets/devices/indoorcammini_large.jpg +0 -0
- package/homebridge-ui/public/assets/devices/indoorcamp24_large.jpg +0 -0
- package/homebridge-ui/public/assets/devices/keypad_large.jpg +0 -0
- package/homebridge-ui/public/assets/devices/license.md +23 -0
- package/homebridge-ui/public/assets/devices/motionsensor_large.jpg +0 -0
- package/homebridge-ui/public/assets/devices/sensor_large.jpg +0 -0
- package/homebridge-ui/public/assets/devices/smartlock_t8500_large.jpg +0 -0
- package/homebridge-ui/public/assets/devices/smartlock_t8500_wifibridge_large.jpg +0 -0
- package/homebridge-ui/public/assets/devices/smartlock_touch_and_wifi_t8520_large.jpg +0 -0
- package/homebridge-ui/public/assets/devices/smartlock_touch_t8510_large.jpg +0 -0
- package/homebridge-ui/public/assets/devices/smartlock_touch_t8510_wifibridge_large.jpg +0 -0
- package/homebridge-ui/public/assets/devices/smartlockwifibridge_t8021_large.jpg +0 -0
- package/homebridge-ui/public/assets/devices/solocame20_large.jpg +0 -0
- package/homebridge-ui/public/assets/devices/solocame40_large.jpg +0 -0
- package/homebridge-ui/public/assets/devices/solocaml20_large.jpg +0 -0
- package/homebridge-ui/public/assets/devices/solocams40_large.jpg +0 -0
- package/homebridge-ui/public/assets/devices/soloindoorcamc24_large.jpg +0 -0
- package/homebridge-ui/public/assets/devices/solooutdoorcamc22_large.jpg +0 -0
- package/homebridge-ui/public/assets/devices/solooutdoorcamc24_large.jpg +0 -0
- package/homebridge-ui/public/assets/devices/unknown.png +0 -0
- package/homebridge-ui/public/assets/devices/wireddoorbell1080p_large.jpg +0 -0
- package/homebridge-ui/public/assets/devices/wireddoorbell2k_large.jpg +0 -0
- package/homebridge-ui/public/assets/devices/wireddoorbelldual_large.jpg +0 -0
- package/homebridge-ui/public/{images → assets/images}/homebridge-eufy-security.png +0 -0
- package/homebridge-ui/public/favicon.ico +0 -0
- package/homebridge-ui/public/index.html +13 -679
- package/homebridge-ui/public/main.9d97398c97793f7e.js +1 -0
- package/homebridge-ui/public/polyfills.6050693665c0e882.js +1 -0
- package/homebridge-ui/public/runtime.1b3e1be22c2e329f.js +1 -0
- package/homebridge-ui/public/styles.e02689e7df4304da.css +6 -0
- package/homebridge-ui/server.d.ts +2 -0
- package/homebridge-ui/server.d.ts.map +1 -0
- package/homebridge-ui/server.js +204 -323
- package/homebridge-ui/server.js.map +1 -0
- package/media/Snapshot-black.png +0 -0
- package/package.json +64 -14
- package/homebridge-ui/public/css/style.css +0 -94
- 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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
package/config.schema.json
CHANGED
|
@@ -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
|
}
|