homebridge-eufy-security 2.3.1-beta.2 → 2.3.2
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 +134 -0
- package/README.md +2 -2
- package/dist/accessories/BaseAccessory.d.ts +37 -0
- package/dist/accessories/BaseAccessory.d.ts.map +1 -0
- package/dist/accessories/BaseAccessory.js +177 -0
- package/dist/accessories/BaseAccessory.js.map +1 -0
- package/dist/accessories/CameraAccessory.d.ts +27 -43
- package/dist/accessories/CameraAccessory.d.ts.map +1 -1
- package/dist/accessories/CameraAccessory.js +365 -273
- package/dist/accessories/CameraAccessory.js.map +1 -1
- package/dist/accessories/Device.d.ts +14 -16
- package/dist/accessories/Device.d.ts.map +1 -1
- package/dist/accessories/Device.js +55 -69
- package/dist/accessories/Device.js.map +1 -1
- package/dist/accessories/EntrySensorAccessory.d.ts +2 -6
- package/dist/accessories/EntrySensorAccessory.d.ts.map +1 -1
- package/dist/accessories/EntrySensorAccessory.js +14 -40
- package/dist/accessories/EntrySensorAccessory.js.map +1 -1
- package/dist/accessories/LockAccessory.d.ts +16 -0
- package/dist/accessories/LockAccessory.d.ts.map +1 -0
- package/dist/accessories/LockAccessory.js +135 -0
- package/dist/accessories/LockAccessory.js.map +1 -0
- package/dist/accessories/MotionSensorAccessory.d.ts +2 -6
- package/dist/accessories/MotionSensorAccessory.d.ts.map +1 -1
- package/dist/accessories/MotionSensorAccessory.js +14 -40
- package/dist/accessories/MotionSensorAccessory.js.map +1 -1
- package/dist/accessories/StationAccessory.d.ts +53 -17
- package/dist/accessories/StationAccessory.d.ts.map +1 -1
- package/dist/accessories/StationAccessory.js +226 -201
- package/dist/accessories/StationAccessory.js.map +1 -1
- package/dist/config.d.ts +1 -2
- package/dist/config.d.ts.map +1 -1
- package/dist/controller/LocalLivestreamManager.d.ts +7 -8
- package/dist/controller/LocalLivestreamManager.d.ts.map +1 -1
- package/dist/controller/LocalLivestreamManager.js +6 -47
- package/dist/controller/LocalLivestreamManager.js.map +1 -1
- package/dist/controller/SnapshotManager.d.ts +4 -9
- package/dist/controller/SnapshotManager.d.ts.map +1 -1
- package/dist/controller/SnapshotManager.js +48 -130
- package/dist/controller/SnapshotManager.js.map +1 -1
- package/dist/controller/recordingDelegate.d.ts +28 -0
- package/dist/controller/recordingDelegate.d.ts.map +1 -0
- package/dist/controller/recordingDelegate.js +186 -0
- package/dist/controller/recordingDelegate.js.map +1 -0
- package/dist/controller/streamingDelegate.d.ts +8 -4
- package/dist/controller/streamingDelegate.d.ts.map +1 -1
- package/dist/controller/streamingDelegate.js +21 -60
- package/dist/controller/streamingDelegate.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/platform.d.ts +6 -1
- package/dist/platform.d.ts.map +1 -1
- package/dist/platform.js +213 -104
- package/dist/platform.js.map +1 -1
- package/dist/utils/EufyClientInteractor.d.ts +35 -0
- package/dist/utils/EufyClientInteractor.d.ts.map +1 -0
- package/dist/utils/EufyClientInteractor.js +357 -0
- package/dist/utils/EufyClientInteractor.js.map +1 -0
- package/dist/utils/Talkback.d.ts +1 -0
- package/dist/utils/Talkback.d.ts.map +1 -1
- package/dist/utils/configTypes.d.ts +14 -6
- package/dist/utils/configTypes.d.ts.map +1 -1
- package/dist/utils/experimental.d.ts +4 -0
- package/dist/utils/experimental.d.ts.map +1 -0
- package/dist/utils/experimental.js +49 -0
- package/dist/utils/experimental.js.map +1 -0
- package/dist/utils/ffmpeg.d.ts +37 -5
- package/dist/utils/ffmpeg.d.ts.map +1 -1
- package/dist/utils/ffmpeg.js +322 -30
- package/dist/utils/ffmpeg.js.map +1 -1
- package/dist/utils/interfaces.d.ts +13 -0
- package/dist/utils/interfaces.d.ts.map +1 -0
- package/dist/utils/interfaces.js +12 -0
- package/dist/utils/interfaces.js.map +1 -0
- package/dist/utils/utils.d.ts +2 -2
- package/dist/utils/utils.d.ts.map +1 -1
- package/dist/utils/utils.js.map +1 -1
- package/homebridge-ui/configui/app/accessory.d.ts +1 -1
- package/homebridge-ui/configui/app/accessory.d.ts.map +1 -1
- package/homebridge-ui/configui/app/util/types.d.ts +2 -2
- package/homebridge-ui/configui/app/util/types.d.ts.map +1 -1
- package/homebridge-ui/plugin/utils/EufyClientInteractor.d.ts +35 -0
- package/homebridge-ui/plugin/utils/EufyClientInteractor.d.ts.map +1 -0
- package/homebridge-ui/plugin/utils/EufyClientInteractor.js +357 -0
- package/homebridge-ui/plugin/utils/EufyClientInteractor.js.map +1 -0
- package/homebridge-ui/plugin/utils/experimental.d.ts +4 -0
- package/homebridge-ui/plugin/utils/experimental.d.ts.map +1 -0
- package/homebridge-ui/plugin/utils/experimental.js +49 -0
- package/homebridge-ui/plugin/utils/experimental.js.map +1 -0
- package/homebridge-ui/plugin/utils/interfaces.d.ts +13 -0
- package/homebridge-ui/plugin/utils/interfaces.d.ts.map +1 -0
- package/homebridge-ui/plugin/utils/interfaces.js +12 -0
- package/homebridge-ui/plugin/utils/interfaces.js.map +1 -0
- package/homebridge-ui/public/3rdpartylicenses.txt +175 -22
- package/homebridge-ui/public/assets/devices/4g_lte_starlight_large.jpg +0 -0
- package/homebridge-ui/public/assets/devices/eufycam3_large.jpg +0 -0
- package/homebridge-ui/public/assets/devices/eufycam3c_large.jpg +0 -0
- package/homebridge-ui/public/assets/devices/garage_camera_t8452_large.jpg +0 -0
- package/homebridge-ui/public/assets/devices/homebase3_large.jpg +0 -0
- package/homebridge-ui/public/assets/devices/smartdrop_t8790_large.jpg +0 -0
- package/homebridge-ui/public/assets/devices/smartsafe_s10_t7400_large.jpg +0 -0
- package/homebridge-ui/public/assets/devices/smartsafe_s12_t7401_large.jpg +0 -0
- package/homebridge-ui/public/assets/devices/walllight_s100_large.jpg +0 -0
- package/homebridge-ui/public/index.html +2 -2
- package/homebridge-ui/public/main.c40b1db5eceb9425.js +1 -0
- package/homebridge-ui/public/polyfills.cdb21ff95fdea645.js +1 -0
- package/homebridge-ui/public/styles.68268876f5e65c91.css +5 -0
- package/homebridge-ui/server.js +71 -14
- package/homebridge-ui/server.js.map +1 -1
- package/package.json +48 -59
- package/dist/accessories/DoorbellCameraAccessory.d.ts +0 -17
- package/dist/accessories/DoorbellCameraAccessory.d.ts.map +0 -1
- package/dist/accessories/DoorbellCameraAccessory.js +0 -47
- package/dist/accessories/DoorbellCameraAccessory.js.map +0 -1
- package/dist/accessories/KeypadAccessory.d.ts +0 -24
- package/dist/accessories/KeypadAccessory.d.ts.map +0 -1
- package/dist/accessories/KeypadAccessory.js +0 -52
- package/dist/accessories/KeypadAccessory.js.map +0 -1
- package/dist/accessories/SmartLockAccessory.d.ts +0 -24
- package/dist/accessories/SmartLockAccessory.d.ts.map +0 -1
- package/dist/accessories/SmartLockAccessory.js +0 -99
- package/dist/accessories/SmartLockAccessory.js.map +0 -1
- package/dist/utils/logger.d.ts +0 -12
- package/dist/utils/logger.d.ts.map +0 -1
- package/dist/utils/logger.js +0 -36
- package/dist/utils/logger.js.map +0 -1
- package/homebridge-ui/public/main.d9308c6d7457a79d.js +0 -1
- package/homebridge-ui/public/polyfills.6050693665c0e882.js +0 -1
- package/homebridge-ui/public/styles.9ec071e4734414fd.css +0 -6
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,140 @@
|
|
|
2
2
|
|
|
3
3
|
You can find the complete detailled changelog for every beta release [here](https://github.com/homebridge-eufy-security/plugin/releases).
|
|
4
4
|
|
|
5
|
+
### Changelog 2.2.21
|
|
6
|
+
|
|
7
|
+
#### Added
|
|
8
|
+
- Unlocked the app-guard-modes-mapping component in the UI for station configuration options.
|
|
9
|
+
- Added helper functions for better configuration value selection in StationAccessory.ts.
|
|
10
|
+
- Modified and improved the convertHKtoEufy and convertEufytoHK methods to throw errors on invalid mode conversion.
|
|
11
|
+
|
|
12
|
+
#### Updated
|
|
13
|
+
- Update libs and dep
|
|
14
|
+
- Better handling push notification for Doorbell ring events
|
|
15
|
+
- Refactoring the code
|
|
16
|
+
|
|
17
|
+
#### Fixed
|
|
18
|
+
- Pruning characteristics wasn't correctly handled
|
|
19
|
+
|
|
20
|
+
### Changelog 2.2.20
|
|
21
|
+
|
|
22
|
+
#### Added
|
|
23
|
+
- New feature to display HomeKit switch for indoor chime on/off
|
|
24
|
+
|
|
25
|
+
#### Fixed
|
|
26
|
+
- Updated systeminformation from 5.21.4 to 5.21.8 to address vulnerabilities
|
|
27
|
+
|
|
28
|
+
### Changelog 2.2.19
|
|
29
|
+
|
|
30
|
+
#### Bug Fixes
|
|
31
|
+
|
|
32
|
+
- Fixing getter and setter for camera properties
|
|
33
|
+
|
|
34
|
+
#### Credits
|
|
35
|
+
|
|
36
|
+
- @cixio, @julien94800 and @zhodd on issue #420 and #365
|
|
37
|
+
|
|
38
|
+
### Changelog 2.2.18
|
|
39
|
+
|
|
40
|
+
#### Updated
|
|
41
|
+
- `BaseAccessory.ts`:
|
|
42
|
+
- Extended `getValue` and `setValue` to also accept `characteristic` and `service` as arguments.
|
|
43
|
+
- Removed some unnecessary lines of code.
|
|
44
|
+
- `CameraAccessory.ts`:
|
|
45
|
+
- Changed the method signatures for `getCameraPropertyValue` and `setCameraPropertyValue` to accommodate new characteristic arguments.
|
|
46
|
+
- Simplified and optimized logging and value updating processes.
|
|
47
|
+
|
|
48
|
+
### Changelog 2.2.17
|
|
49
|
+
|
|
50
|
+
#### Added
|
|
51
|
+
- New approach to handling `propertyName` in `CameraAccessory.ts` for more flexibility.
|
|
52
|
+
|
|
53
|
+
#### Updated
|
|
54
|
+
- Improved logging formats across `BaseAccessory.ts`, `platform.ts`, and `server.ts`.
|
|
55
|
+
- Fine-tuned execution delays in `BaseAccessory.ts`, `platform.ts`, and `server.ts` for better performance.
|
|
56
|
+
- `BaseAccessory.ts` to make `getValue` optional, allowing for more versatile accessory handling.
|
|
57
|
+
|
|
58
|
+
#### Fixed
|
|
59
|
+
- Switch-light issue in `CameraAccessory.ts`.
|
|
60
|
+
|
|
61
|
+
#### Removed
|
|
62
|
+
- `LockControlPoint` getter because it is not requested by Apple HomeKit Framework.
|
|
63
|
+
|
|
64
|
+
### Changelog 2.2.16
|
|
65
|
+
|
|
66
|
+
#### Bug Fixes
|
|
67
|
+
|
|
68
|
+
- **Found Issue #407 Conversion Error**
|
|
69
|
+
- Commit: bac87bb
|
|
70
|
+
- Author: Lenoxys
|
|
71
|
+
- Date: Sun Sep 10 20:37:01 2023 +0200
|
|
72
|
+
- Description: Fixed double conversion which led to an error.
|
|
73
|
+
|
|
74
|
+
#### New Features
|
|
75
|
+
|
|
76
|
+
- **Enhanced Lock Management Characteristics**
|
|
77
|
+
- Commit: 913ed54
|
|
78
|
+
- Author: Lenoxys
|
|
79
|
+
- Date: Sun Sep 10 14:17:50 2023 +0200
|
|
80
|
+
- Description: Added missing characteristics to Lock Management service.
|
|
81
|
+
|
|
82
|
+
#### Code Changes
|
|
83
|
+
|
|
84
|
+
- **LockAccessory.ts**
|
|
85
|
+
- Refactored Lock Management characteristics to adhere to Apple guidelines.
|
|
86
|
+
- Introduced new characteristics like `Version`, `LockManagementAutoSecurityTimeout`, `AdministratorOnlyAccess`, and `LockControlPoint`.
|
|
87
|
+
- Optimized code related to lock status updates.
|
|
88
|
+
|
|
89
|
+
### Changelog 2.2.15
|
|
90
|
+
|
|
91
|
+
#### New Features
|
|
92
|
+
|
|
93
|
+
- **Added Debug Logs for Lock Status**
|
|
94
|
+
- Commit: 7d5d9e5
|
|
95
|
+
- Author: Lenoxys
|
|
96
|
+
- Date: Sun Sep 10 12:35:18 2023 +0200
|
|
97
|
+
- Description: Added extra debug information to understand lock status callbacks.
|
|
98
|
+
|
|
99
|
+
#### Code Changes
|
|
100
|
+
|
|
101
|
+
- **BaseAccessory.ts**
|
|
102
|
+
- Additional logging for `ON` state of characteristics.
|
|
103
|
+
|
|
104
|
+
- **LockAccessory.ts**
|
|
105
|
+
- Enhanced error message to include more details on lock state and errors.
|
|
106
|
+
- Minor comment update for clarity on lock status.
|
|
107
|
+
|
|
108
|
+
### Changelog 2.2.14
|
|
109
|
+
|
|
110
|
+
#### Updates
|
|
111
|
+
|
|
112
|
+
- **Update libs**
|
|
113
|
+
- Commit: 711a966
|
|
114
|
+
- Author: Lenoxys
|
|
115
|
+
- Date: Fri Sep 8 21:28:15 2023 +0200
|
|
116
|
+
- Description: Libraries updated for improved performance and stability.
|
|
117
|
+
|
|
118
|
+
#### Fixes
|
|
119
|
+
|
|
120
|
+
- **Issue #407: Lock Property Error**
|
|
121
|
+
- Commit: 16dbb9f
|
|
122
|
+
- Author: Lenoxys
|
|
123
|
+
- Date: Fri Sep 8 21:25:48 2023 +0200
|
|
124
|
+
- Description: Fixed incorrect property set in the lock function.
|
|
125
|
+
- Credits: @InquisitorBR, @zhodd
|
|
126
|
+
|
|
127
|
+
#### Removals
|
|
128
|
+
|
|
129
|
+
- **Removed Reboot Loop**
|
|
130
|
+
- Commit: 7d58590
|
|
131
|
+
- Author: Lenoxys
|
|
132
|
+
- Date: Fri Sep 8 21:21:22 2023 +0200
|
|
133
|
+
- Description: Removed 'throw' causing a reboot loop, replaced with error message.
|
|
134
|
+
|
|
135
|
+
## 2.2.13
|
|
136
|
+
### Changed
|
|
137
|
+
- Refactored comments to better explain the purpose of the initial delay in device setup.
|
|
138
|
+
|
|
5
139
|
## 2.1.4 (2022-12-24)
|
|
6
140
|
|
|
7
141
|
### Changed
|
package/README.md
CHANGED
|
@@ -25,9 +25,9 @@ Homebridge plugin to control certain Eufy Security devices
|
|
|
25
25
|
|
|
26
26
|
### Prerequisites
|
|
27
27
|
|
|
28
|
-
- To use this plugin, you will need to already have [Homebridge](https://homebridge.io) (at least v1.
|
|
28
|
+
- To use this plugin, you will need to already have [Homebridge](https://homebridge.io) (at least v1.6.1) installed. Refer to the links for more information and installation instructions.
|
|
29
29
|
- For configuration Homebridge UI is recommenend. If you have 2FA enabled it is mandatory.
|
|
30
|
-
- It is recommended to use the current LTS version of Node, currently
|
|
30
|
+
- It is recommended to use the current LTS version of Node, currently v18.
|
|
31
31
|
|
|
32
32
|
#### Setup
|
|
33
33
|
* [Installation](https://github.com/homebridge-eufy-security/plugin/wiki/Installation-and-Configuration#installation)
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import { PlatformAccessory, Characteristic, CharacteristicValue, Service, WithUUID } from 'homebridge';
|
|
3
|
+
import { EufySecurityPlatform } from '../platform';
|
|
4
|
+
import { DeviceEvents, PropertyValue, StationEvents } from 'eufy-security-client';
|
|
5
|
+
import { EventEmitter } from 'events';
|
|
6
|
+
export type CharacteristicType = WithUUID<{
|
|
7
|
+
new (): Characteristic;
|
|
8
|
+
}>;
|
|
9
|
+
export type ServiceType = WithUUID<typeof Service> | Service;
|
|
10
|
+
export declare abstract class BaseAccessory extends EventEmitter {
|
|
11
|
+
protected platform: EufySecurityPlatform;
|
|
12
|
+
protected accessory: PlatformAccessory;
|
|
13
|
+
protected device: any;
|
|
14
|
+
protected servicesInUse: Service[];
|
|
15
|
+
protected SN: string;
|
|
16
|
+
constructor(platform: EufySecurityPlatform, accessory: PlatformAccessory, device: any);
|
|
17
|
+
private logPropertyKeys;
|
|
18
|
+
protected handleRawPropertyChange(device: any, type: number, value: string): void;
|
|
19
|
+
protected handlePropertyChange(device: any, name: string, value: PropertyValue): void;
|
|
20
|
+
protected registerCharacteristic({ characteristicType, serviceType, getValue, setValue, onValue, onSimpleValue, onMultipleValue, name, serviceSubType, setValueDebounceTime, }: {
|
|
21
|
+
characteristicType: CharacteristicType;
|
|
22
|
+
serviceType: ServiceType;
|
|
23
|
+
serviceSubType?: string;
|
|
24
|
+
name?: string;
|
|
25
|
+
getValue?: (data: any, characteristic?: Characteristic, service?: Service) => any;
|
|
26
|
+
setValue?: (value: any, characteristic?: Characteristic, service?: Service) => any;
|
|
27
|
+
onValue?: (service: Service, characteristic: Characteristic) => any;
|
|
28
|
+
onSimpleValue?: any;
|
|
29
|
+
onMultipleValue?: (keyof DeviceEvents | StationEvents)[];
|
|
30
|
+
setValueDebounceTime?: number;
|
|
31
|
+
}): void;
|
|
32
|
+
protected getService(serviceType: ServiceType, name?: string, subType?: string): Service;
|
|
33
|
+
protected pruneUnusedServices(): void;
|
|
34
|
+
protected handleDummyEventGet(serviceName: string): Promise<CharacteristicValue>;
|
|
35
|
+
protected handleDummyEventSet(serviceName: string, value: CharacteristicValue): void;
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=BaseAccessory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BaseAccessory.d.ts","sourceRoot":"","sources":["../../src/plugin/accessories/BaseAccessory.ts"],"names":[],"mappings":";AAAA,OAAO,EACL,iBAAiB,EACjB,cAAc,EACd,mBAAmB,EACnB,OAAO,EACP,QAAQ,EACT,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAc,YAAY,EAAE,aAAa,EAAmB,aAAa,EAAgB,MAAM,sBAAsB,CAAC;AAC7H,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAStC,MAAM,MAAM,kBAAkB,GAAG,QAAQ,CAAC;IAAE,QAAO,cAAc,CAAA;CAAE,CAAC,CAAC;AACrE,MAAM,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,OAAO,CAAC,GAAG,OAAO,CAAC;AAE7D,8BAAsB,aAAc,SAAQ,YAAY;IAMpD,SAAS,CAAC,QAAQ,EAAE,oBAAoB;IACxC,SAAS,CAAC,SAAS,EAAE,iBAAiB;IAEtC,SAAS,CAAC,MAAM,EAAE,GAAG;IAPvB,SAAS,CAAC,aAAa,EAAE,OAAO,EAAE,CAAM;IACxC,SAAS,CAAC,EAAE,EAAE,MAAM,CAAC;gBAGT,QAAQ,EAAE,oBAAoB,EAC9B,SAAS,EAAE,iBAAiB,EAE5B,MAAM,EAAE,GAAG;IAwDvB,OAAO,CAAC,eAAe;IAOvB,SAAS,CAAC,uBAAuB,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAKjF,SAAS,CAAC,oBAAoB,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,GAAG,IAAI;IAIrF,SAAS,CAAC,sBAAsB,CAAC,EAC/B,kBAAkB,EAClB,WAAW,EACX,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,aAAa,EACb,eAAe,EACf,IAAI,EACJ,cAAc,EACd,oBAAwB,GACzB,EAAE;QACD,kBAAkB,EAAE,kBAAkB,CAAC;QACvC,WAAW,EAAE,WAAW,CAAC;QACzB,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,IAAI,CAAC,EAAE,MAAM,CAAC;QAEd,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,cAAc,CAAC,EAAE,cAAc,EAAE,OAAO,CAAC,EAAE,OAAO,KAAK,GAAG,CAAC;QAElF,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,cAAc,CAAC,EAAE,cAAc,EAAE,OAAO,CAAC,EAAE,OAAO,KAAK,GAAG,CAAC;QAEnF,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,cAAc,KAAK,GAAG,CAAC;QAEpE,aAAa,CAAC,EAAE,GAAG,CAAC;QACpB,eAAe,CAAC,EAAE,CAAC,MAAM,YAAY,GAAG,aAAa,CAAC,EAAE,CAAC;QACzD,oBAAoB,CAAC,EAAE,MAAM,CAAC;KAC/B;IAoED,SAAS,CAAC,UAAU,CAClB,WAAW,EAAE,WAAW,EACxB,IAAI,SAA6B,EACjC,OAAO,CAAC,EAAE,MAAM,GACf,OAAO;IA4BV,SAAS,CAAC,mBAAmB;IAiB7B,SAAS,CAAC,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAgBhF,SAAS,CAAC,mBAAmB,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,mBAAmB;CAG9E"}
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.BaseAccessory = void 0;
|
|
4
|
+
const eufy_security_client_1 = require("eufy-security-client");
|
|
5
|
+
const events_1 = require("events");
|
|
6
|
+
function isServiceInstance(serviceType) {
|
|
7
|
+
// eslint-disable-next-line
|
|
8
|
+
return typeof serviceType === 'object';
|
|
9
|
+
}
|
|
10
|
+
class BaseAccessory extends events_1.EventEmitter {
|
|
11
|
+
constructor(platform, accessory,
|
|
12
|
+
// eslint-disable-next-line
|
|
13
|
+
device) {
|
|
14
|
+
super();
|
|
15
|
+
this.platform = platform;
|
|
16
|
+
this.accessory = accessory;
|
|
17
|
+
this.device = device;
|
|
18
|
+
this.servicesInUse = [];
|
|
19
|
+
this.platform = platform;
|
|
20
|
+
this.accessory = accessory;
|
|
21
|
+
this.device = device;
|
|
22
|
+
this.SN = this.device.getSerial();
|
|
23
|
+
this.registerCharacteristic({
|
|
24
|
+
serviceType: this.platform.Service.AccessoryInformation,
|
|
25
|
+
characteristicType: this.platform.Characteristic.Manufacturer,
|
|
26
|
+
getValue: (data) => 'Eufy',
|
|
27
|
+
});
|
|
28
|
+
this.registerCharacteristic({
|
|
29
|
+
serviceType: this.platform.Service.AccessoryInformation,
|
|
30
|
+
characteristicType: this.platform.Characteristic.Name,
|
|
31
|
+
getValue: (data) => this.accessory.displayName || 'Unknowm',
|
|
32
|
+
});
|
|
33
|
+
this.registerCharacteristic({
|
|
34
|
+
serviceType: this.platform.Service.AccessoryInformation,
|
|
35
|
+
characteristicType: this.platform.Characteristic.Model,
|
|
36
|
+
getValue: (data) => eufy_security_client_1.DeviceType[this.device.getDeviceType()] || 'Unknowm',
|
|
37
|
+
});
|
|
38
|
+
this.registerCharacteristic({
|
|
39
|
+
serviceType: this.platform.Service.AccessoryInformation,
|
|
40
|
+
characteristicType: this.platform.Characteristic.SerialNumber,
|
|
41
|
+
getValue: (data) => this.SN || 'Unknowm',
|
|
42
|
+
});
|
|
43
|
+
this.registerCharacteristic({
|
|
44
|
+
serviceType: this.platform.Service.AccessoryInformation,
|
|
45
|
+
characteristicType: this.platform.Characteristic.FirmwareRevision,
|
|
46
|
+
getValue: (data) => this.device.getSoftwareVersion() || 'Unknowm',
|
|
47
|
+
});
|
|
48
|
+
this.registerCharacteristic({
|
|
49
|
+
serviceType: this.platform.Service.AccessoryInformation,
|
|
50
|
+
characteristicType: this.platform.Characteristic.HardwareRevision,
|
|
51
|
+
getValue: (data) => this.device.getHardwareVersion() || 'Unknowm',
|
|
52
|
+
});
|
|
53
|
+
if (this.platform.config.enableDetailedLogging) {
|
|
54
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
55
|
+
this.device.on('raw property changed', (device, type, value) => this.handleRawPropertyChange(device, type, value));
|
|
56
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
57
|
+
this.device.on('property changed', (device, name, value) => this.handlePropertyChange(device, name, value));
|
|
58
|
+
}
|
|
59
|
+
this.logPropertyKeys();
|
|
60
|
+
}
|
|
61
|
+
// Function to extract and log keys
|
|
62
|
+
logPropertyKeys() {
|
|
63
|
+
const properties = this.device.getProperties();
|
|
64
|
+
const keys = Object.keys(properties).join(', ');
|
|
65
|
+
this.platform.log.debug(`${this.accessory.displayName} Property Keys: ${keys}`);
|
|
66
|
+
}
|
|
67
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
68
|
+
handleRawPropertyChange(device, type, value) {
|
|
69
|
+
this.platform.log.debug(`${this.accessory.displayName} Raw Property Changes: ${type} ${value}`);
|
|
70
|
+
}
|
|
71
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
72
|
+
handlePropertyChange(device, name, value) {
|
|
73
|
+
this.platform.log.debug(`${this.accessory.displayName} Property Changes: ${name} ${value}`);
|
|
74
|
+
}
|
|
75
|
+
registerCharacteristic({ characteristicType, serviceType, getValue, setValue, onValue, onSimpleValue, onMultipleValue, name, serviceSubType, setValueDebounceTime = 0, }) {
|
|
76
|
+
// eslint-disable-next-line max-len
|
|
77
|
+
this.platform.log.debug(`${this.accessory.displayName} REGISTER CHARACTERISTIC '${serviceType.name} / ${characteristicType.name}`);
|
|
78
|
+
const service = this.getService(serviceType, name, serviceSubType);
|
|
79
|
+
const characteristic = service.getCharacteristic(characteristicType);
|
|
80
|
+
// eslint-disable-next-line max-len
|
|
81
|
+
this.platform.log.debug(`${this.accessory.displayName} REGISTER CHARACTERISTIC '(${service.UUID}) / (${characteristic.UUID})`);
|
|
82
|
+
if (getValue) {
|
|
83
|
+
characteristic.onGet(async (data) => {
|
|
84
|
+
const value = getValue(data, characteristic, service);
|
|
85
|
+
this.platform.log.debug(`${this.accessory.displayName} GET '${serviceType.name} / ${characteristicType.name}': ${value}`);
|
|
86
|
+
return value;
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
if (setValue && setValueDebounceTime) {
|
|
90
|
+
let timeoutId = null;
|
|
91
|
+
characteristic.onSet(async (value) => {
|
|
92
|
+
if (timeoutId) {
|
|
93
|
+
clearTimeout(timeoutId);
|
|
94
|
+
}
|
|
95
|
+
timeoutId = setTimeout(() => {
|
|
96
|
+
timeoutId = null;
|
|
97
|
+
setValue(value, characteristic, service);
|
|
98
|
+
}, setValueDebounceTime);
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
else if (setValue) {
|
|
102
|
+
characteristic.onSet(async (value) => {
|
|
103
|
+
Promise.resolve(setValue(value, characteristic, service));
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
if (onSimpleValue) {
|
|
107
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
108
|
+
this.device.on(onSimpleValue, (device, value) => {
|
|
109
|
+
// eslint-disable-next-line max-len
|
|
110
|
+
this.platform.log.info(`${this.accessory.displayName} ON '${serviceType.name} / ${characteristicType.name} / ${onSimpleValue}': ${value}`);
|
|
111
|
+
characteristic.updateValue(value);
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
if (onValue) {
|
|
115
|
+
this.platform.log.debug(`${this.accessory.displayName} ON '${serviceType.name} / ${characteristicType.name}'`);
|
|
116
|
+
onValue(service, characteristic);
|
|
117
|
+
}
|
|
118
|
+
if (onMultipleValue) {
|
|
119
|
+
// Attach the common event handler to each event type
|
|
120
|
+
onMultipleValue.forEach(eventType => {
|
|
121
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
122
|
+
this.device.on(eventType, (device, value) => {
|
|
123
|
+
// eslint-disable-next-line max-len
|
|
124
|
+
this.platform.log.info(`${this.accessory.displayName} ON '${serviceType.name} / ${characteristicType.name} / ${eventType}': ${value}`);
|
|
125
|
+
characteristic.updateValue(value);
|
|
126
|
+
});
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
getService(serviceType, name = this.accessory.displayName, subType) {
|
|
131
|
+
if (isServiceInstance(serviceType)) {
|
|
132
|
+
return serviceType;
|
|
133
|
+
}
|
|
134
|
+
const existingService = subType ? this.accessory.getServiceById(serviceType, subType) : this.accessory.getService(serviceType);
|
|
135
|
+
const service = existingService ||
|
|
136
|
+
this.accessory.addService(serviceType, name, subType);
|
|
137
|
+
if (existingService &&
|
|
138
|
+
existingService.displayName &&
|
|
139
|
+
name !== existingService.displayName) {
|
|
140
|
+
throw new Error(`Overlapping services for device ${this.accessory.displayName} - ${name} != ${existingService.displayName} - ${serviceType}`);
|
|
141
|
+
}
|
|
142
|
+
if (!this.servicesInUse.includes(service)) {
|
|
143
|
+
this.servicesInUse.push(service);
|
|
144
|
+
}
|
|
145
|
+
return service;
|
|
146
|
+
}
|
|
147
|
+
pruneUnusedServices() {
|
|
148
|
+
const safeServiceUUIDs = [
|
|
149
|
+
this.platform.Service.CameraRTPStreamManagement.UUID,
|
|
150
|
+
];
|
|
151
|
+
this.accessory.services.forEach((service) => {
|
|
152
|
+
if (!this.servicesInUse.includes(service) &&
|
|
153
|
+
!safeServiceUUIDs.includes(service.UUID)) {
|
|
154
|
+
// eslint-disable-next-line max-len
|
|
155
|
+
this.platform.log.debug(`${this.accessory.displayName} Pruning unused service ${service.UUID} ${service.displayName || service.name}`);
|
|
156
|
+
this.accessory.removeService(service);
|
|
157
|
+
}
|
|
158
|
+
});
|
|
159
|
+
}
|
|
160
|
+
handleDummyEventGet(serviceName) {
|
|
161
|
+
const characteristicValues = {
|
|
162
|
+
'EventSnapshotsActive': this.platform.Characteristic.EventSnapshotsActive.DISABLE,
|
|
163
|
+
'HomeKitCameraActive': this.platform.Characteristic.HomeKitCameraActive.OFF,
|
|
164
|
+
};
|
|
165
|
+
const currentValue = characteristicValues[serviceName];
|
|
166
|
+
if (currentValue === undefined) {
|
|
167
|
+
throw new Error(`Invalid serviceName: ${serviceName}`);
|
|
168
|
+
}
|
|
169
|
+
this.platform.log.debug(`${this.accessory.displayName} IGNORE GET ${serviceName}: ${currentValue}`);
|
|
170
|
+
return Promise.resolve(currentValue);
|
|
171
|
+
}
|
|
172
|
+
handleDummyEventSet(serviceName, value) {
|
|
173
|
+
this.platform.log.debug(`${this.accessory.displayName} IGNORE SET ${serviceName}: ${value}`);
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
exports.BaseAccessory = BaseAccessory;
|
|
177
|
+
//# sourceMappingURL=BaseAccessory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BaseAccessory.js","sourceRoot":"","sources":["../../src/plugin/accessories/BaseAccessory.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { PlatformAccessory, CharacteristicValue } from 'homebridge';
|
|
2
2
|
import { EufySecurityPlatform } from '../platform';
|
|
3
3
|
import { DeviceAccessory } from './Device';
|
|
4
|
-
import { Camera } from 'eufy-security-client';
|
|
4
|
+
import { Camera, PropertyName } from 'eufy-security-client';
|
|
5
5
|
import { StreamingDelegate } from '../controller/streamingDelegate';
|
|
6
|
+
import { RecordingDelegate } from '../controller/recordingDelegate';
|
|
6
7
|
import { CameraConfig } from '../utils/configTypes';
|
|
7
8
|
/**
|
|
8
9
|
* Platform Accessory
|
|
@@ -10,52 +11,35 @@ import { CameraConfig } from '../utils/configTypes';
|
|
|
10
11
|
* Each accessory may expose multiple services of different service types.
|
|
11
12
|
*/
|
|
12
13
|
export declare class CameraAccessory extends DeviceAccessory {
|
|
13
|
-
protected
|
|
14
|
-
|
|
14
|
+
protected cameraStatus: {
|
|
15
|
+
isEnabled: boolean;
|
|
16
|
+
timestamp: number;
|
|
17
|
+
};
|
|
18
|
+
private notificationTimeout;
|
|
15
19
|
readonly cameraConfig: CameraConfig;
|
|
16
20
|
protected streamingDelegate: StreamingDelegate | null;
|
|
17
|
-
|
|
18
|
-
|
|
21
|
+
protected recordingDelegate?: RecordingDelegate | null;
|
|
22
|
+
private eventTypesToHandle;
|
|
23
|
+
private resolutions;
|
|
24
|
+
constructor(platform: EufySecurityPlatform, accessory: PlatformAccessory, device: Camera);
|
|
25
|
+
private setupCamera;
|
|
26
|
+
private getCameraControllerOptions;
|
|
27
|
+
private setupButtonService;
|
|
28
|
+
protected setupSwitchService(serviceName: string, serviceType: 'switch' | 'lightbulb' | 'outlet', propertyName: PropertyName): void;
|
|
29
|
+
private setupEnableButton;
|
|
30
|
+
private setupMotionButton;
|
|
31
|
+
private setupLightButton;
|
|
32
|
+
private setupChimeButton;
|
|
19
33
|
private getCameraConfig;
|
|
20
34
|
private cameraFunction;
|
|
21
|
-
|
|
35
|
+
private setupMotionFunction;
|
|
36
|
+
protected getCameraPropertyValue(characteristic: any, propertyName: PropertyName): CharacteristicValue;
|
|
37
|
+
protected setCameraPropertyValue(characteristic: any, propertyName: PropertyName, value: CharacteristicValue): Promise<void>;
|
|
22
38
|
/**
|
|
23
|
-
* Handle
|
|
39
|
+
* Handle push notifications for a doorbell device.
|
|
40
|
+
* Mute subsequent notifications within a timeout period.
|
|
41
|
+
* @param characteristic - The Characteristic to update for HomeKit.
|
|
24
42
|
*/
|
|
25
|
-
|
|
26
|
-
/**
|
|
27
|
-
* Handle requests to get the current value of the "HomeKit Camera Active" characteristic
|
|
28
|
-
*/
|
|
29
|
-
handleHomeKitCameraActiveGet(): Promise<CharacteristicValue>;
|
|
30
|
-
/**
|
|
31
|
-
* Handle requests to set the "HomeKit Camera Active" characteristic
|
|
32
|
-
*/
|
|
33
|
-
handleHomeKitCameraActiveSet(value: any): void;
|
|
34
|
-
/**
|
|
35
|
-
* Handle requests to get the current value of the "HomeKit Camera Active" characteristic
|
|
36
|
-
*/
|
|
37
|
-
handleHomeKitCameraOperatingModeIndicatorGet(): Promise<CharacteristicValue>;
|
|
38
|
-
/**
|
|
39
|
-
* Handle requests to set the "HomeKit Camera Active" characteristic
|
|
40
|
-
*/
|
|
41
|
-
handleHomeKitCameraOperatingModeIndicatorSet(value: any): Promise<void>;
|
|
42
|
-
/**
|
|
43
|
-
* Handle requests to get the current value of the "HomeKit Camera Active" characteristic
|
|
44
|
-
*/
|
|
45
|
-
handleHomeKitNightVisionGet(): Promise<CharacteristicValue>;
|
|
46
|
-
/**
|
|
47
|
-
* Handle requests to set the "HomeKit Camera Active" characteristic
|
|
48
|
-
*/
|
|
49
|
-
handleHomeKitNightVisionSet(value: any): Promise<void>;
|
|
50
|
-
private motionFunction;
|
|
51
|
-
handleMotionDetectedGet(): Promise<CharacteristicValue>;
|
|
52
|
-
private onDeviceMotionDetectedPushNotification;
|
|
53
|
-
handleEnableGet(): Promise<CharacteristicValue>;
|
|
54
|
-
handleManuallyDisabledGet(): Promise<CharacteristicValue>;
|
|
55
|
-
handleEnableSet(value: CharacteristicValue): Promise<void>;
|
|
56
|
-
handleMotionOnGet(): Promise<CharacteristicValue>;
|
|
57
|
-
handleMotionOnSet(value: CharacteristicValue): Promise<void>;
|
|
58
|
-
handleLightOnGet(): Promise<CharacteristicValue>;
|
|
59
|
-
handleLightOnSet(value: CharacteristicValue): Promise<void>;
|
|
43
|
+
private onDeviceRingsPushNotification;
|
|
60
44
|
}
|
|
61
45
|
//# sourceMappingURL=CameraAccessory.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CameraAccessory.d.ts","sourceRoot":"","sources":["../../src/plugin/accessories/CameraAccessory.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"CameraAccessory.d.ts","sourceRoot":"","sources":["../../src/plugin/accessories/CameraAccessory.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,iBAAiB,EAEjB,mBAAmB,EASpB,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAI3C,OAAO,EAAE,MAAM,EAAwB,YAAY,EAAe,MAAM,sBAAsB,CAAC;AAC/F,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AAEpE,OAAO,EAAE,YAAY,EAAe,MAAM,sBAAsB,CAAC;AAEjE;;;;GAIG;AACH,qBAAa,eAAgB,SAAQ,eAAe;IAGlD,SAAS,CAAC,YAAY,EAAE;QAAE,SAAS,EAAE,OAAO,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IAClE,OAAO,CAAC,mBAAmB,CAA+B;IAE1D,SAAgB,YAAY,EAAE,YAAY,CAAC;IAE3C,SAAS,CAAC,iBAAiB,EAAE,iBAAiB,GAAG,IAAI,CAAQ;IAC7D,SAAS,CAAC,iBAAiB,CAAC,EAAE,iBAAiB,GAAG,IAAI,CAAQ;IAG9D,OAAO,CAAC,kBAAkB,CASxB;IAEF,OAAO,CAAC,WAAW,CAYjB;gBAGA,QAAQ,EAAE,oBAAoB,EAC9B,SAAS,EAAE,iBAAiB,EAC5B,MAAM,EAAE,MAAM;IAgChB,OAAO,CAAC,WAAW;IA6CnB,OAAO,CAAC,0BAA0B;IAqFlC,OAAO,CAAC,kBAAkB;IAsB1B,SAAS,CAAC,kBAAkB,CAC1B,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,QAAQ,GAAG,WAAW,GAAG,QAAQ,EAC9C,YAAY,EAAE,YAAY;YAkBd,iBAAiB;YAIjB,iBAAiB;YAIjB,gBAAgB;YAIhB,gBAAgB;IAI9B,OAAO,CAAC,eAAe;IAoCvB,OAAO,CAAC,cAAc;IAqItB,OAAO,CAAC,mBAAmB;IAyB3B,SAAS,CAAC,sBAAsB,CAAC,cAAc,EAAE,GAAG,EAAE,YAAY,EAAE,YAAY,GAAG,mBAAmB;cAqCtF,sBAAsB,CAAC,cAAc,EAAE,GAAG,EAAE,YAAY,EAAE,YAAY,EAAE,KAAK,EAAE,mBAAmB;IAyBlH;;;;OAIG;IACH,OAAO,CAAC,6BAA6B;CAStC"}
|