eufy-security-client 3.7.2 → 3.8.0-dev.10
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/README.md +27 -0
- package/build/eufysecurity.d.ts +1 -0
- package/build/eufysecurity.js +25 -3
- package/build/eufysecurity.js.map +1 -1
- package/build/http/api.d.ts +2 -0
- package/build/http/api.js +40 -7
- package/build/http/api.js.map +1 -1
- package/build/http/device.d.ts +14 -0
- package/build/http/device.js +101 -7
- package/build/http/device.js.map +1 -1
- package/build/http/parameter.js +1 -1
- package/build/http/parameter.js.map +1 -1
- package/build/http/station.js +94 -26
- package/build/http/station.js.map +1 -1
- package/build/http/types.d.ts +12 -0
- package/build/http/types.js +564 -3
- package/build/http/types.js.map +1 -1
- package/build/http/utils.d.ts +2 -2
- package/build/http/utils.js +5 -5
- package/build/http/utils.js.map +1 -1
- package/build/p2p/session.js +14 -2
- package/build/p2p/session.js.map +1 -1
- package/build/p2p/utils.js +1 -0
- package/build/p2p/utils.js.map +1 -1
- package/build/push/service.js +9 -1
- package/build/push/service.js.map +1 -1
- package/build/push/types.d.ts +3 -1
- package/build/push/types.js +2 -0
- package/build/push/types.js.map +1 -1
- package/coverage/clover.xml +13239 -10604
- package/coverage/coverage-final.json +31 -21
- package/coverage/lcov-report/index.html +65 -50
- package/coverage/lcov.info +25731 -20613
- package/package.json +7 -3
- package/scripts/cut_release.sh +2 -0
- package/scripts/generate_changelog.sh +93 -0
- package/.idea/eufy-security-client.iml +0 -12
- package/.idea/modules.xml +0 -8
- package/.idea/vcs.xml +0 -7
- package/a.ts +0 -61
- package/bin/act +0 -0
- package/coverage/lcov-report/error.ts.html +0 -871
- package/coverage/lcov-report/logging.ts.html +0 -598
- package/dont-care.js +0 -101
package/README.md
CHANGED
|
@@ -23,6 +23,12 @@ The development of this shared library was inspired by the work of the following
|
|
|
23
23
|
|
|
24
24
|
Credits go to them as well.
|
|
25
25
|
|
|
26
|
+
## Unknown device?
|
|
27
|
+
|
|
28
|
+
If you see a `New unknown device detected` warning in your logs, your device is not yet supported. You can help us add support for it by [reporting it](https://github.com/bropat/eufy-security-client/issues/new?template=unknown_device.yml). See the [guide](docs/reporting_unknown_devices.md) for details on how to extract the log.
|
|
29
|
+
|
|
30
|
+
## Support
|
|
31
|
+
|
|
26
32
|
If you appreciate my work and progress and want to support me, you can do it here:
|
|
27
33
|
|
|
28
34
|
[](https://ko-fi.com/E1E332Q6Z)
|
|
@@ -105,6 +111,27 @@ Instructions aimed at maintainers for deploying a new version: [Deployment](docs
|
|
|
105
111
|
|
|
106
112
|
## Changelog
|
|
107
113
|
|
|
114
|
+
### 3.8.0 (2026-03-01)
|
|
115
|
+
|
|
116
|
+
* Feature: Add support for Smart Lock E20 (T85V0) by @worldjoe/@max246 in https://github.com/bropat/eufy-security-client/pull/803
|
|
117
|
+
* Feature: Add support for Smart Lock C33 (T85L0) by @max246 in https://github.com/bropat/eufy-security-client/pull/804
|
|
118
|
+
* Feature: Add support for locks C30 & E330 by @max246 in https://github.com/bropat/eufy-security-client/pull/806
|
|
119
|
+
* Feature: Add support for Camera S40 (T8172) by @lenoxys in https://github.com/bropat/eufy-security-client/pull/807
|
|
120
|
+
* Feature: Add support for Motion Sensor E20 (T90M0) and Sirene E20 (T90R0) by @max246 in https://github.com/bropat/eufy-security-client/pull/808
|
|
121
|
+
* Feature: Add support for SoloCam E42 (T8173) by @lenoxys in https://github.com/bropat/eufy-security-client/pull/809
|
|
122
|
+
* Feature: Add support for 4G LTE Cam S330 (T86P2) by @lenoxys in https://github.com/bropat/eufy-security-client/pull/821
|
|
123
|
+
* Feature: Add support for C220 V3 by @max246 in https://github.com/bropat/eufy-security-client/pull/823
|
|
124
|
+
* Feature: Add debug message for new device and reporting guide by @max246 in https://github.com/bropat/eufy-security-client/pull/825
|
|
125
|
+
* Fix: Fix T8214 and T8425 livestream by @lenoxys in https://github.com/bropat/eufy-security-client/pull/793
|
|
126
|
+
* Fix: C210 preset support by @tomc128 in https://github.com/bropat/eufy-security-client/pull/811
|
|
127
|
+
* Fix: Mock timezone in getTimezoneGMTString test by @nick-pape in https://github.com/bropat/eufy-security-client/pull/814
|
|
128
|
+
* Fix: Restore missing CAMERA_S4 (T8172) StationProperties and StationCommands entries by @lenoxys in https://github.com/bropat/eufy-security-client/pull/819
|
|
129
|
+
* Fix: Fix start date by @max246 in https://github.com/bropat/eufy-security-client/pull/816
|
|
130
|
+
* Chore: Upgrade qs from 6.14.2 to 6.15.0 by @max246 in https://github.com/bropat/eufy-security-client/pull/802
|
|
131
|
+
* Chore: Upgrade date-and-time from 4.2.0 to 4.3.0 by @max246 in https://github.com/bropat/eufy-security-client/pull/815
|
|
132
|
+
* Chore: Add dev publish and enforce target branch workflows by @lenoxys in https://github.com/bropat/eufy-security-client/pull/818
|
|
133
|
+
* Chore: Add more testing and format check task by @max246 in https://github.com/bropat/eufy-security-client/pull/822
|
|
134
|
+
|
|
108
135
|
### 3.7.2 (2026-02-16)
|
|
109
136
|
* Fix: Revert due to failure to communicate with HB3 https://github.com/bropat/eufy-security-client/pull/790
|
|
110
137
|
* Fix: 2FA login by @lenoxys in https://github.com/bropat/eufy-security-client/pull/789
|
package/build/eufysecurity.d.ts
CHANGED
|
@@ -86,6 +86,7 @@ export declare class EufySecurity extends TypedEmitter<EufySecurityEvents> {
|
|
|
86
86
|
isMQTTConnected(): boolean;
|
|
87
87
|
isConnected(): boolean;
|
|
88
88
|
private processInvitations;
|
|
89
|
+
sendHouseInvite(houseID: string, email: string): Promise<boolean>;
|
|
89
90
|
private onPushMessage;
|
|
90
91
|
startStationDownload(deviceSN: string, path: string, cipherID: number): Promise<void>;
|
|
91
92
|
cancelStationDownload(deviceSN: string): Promise<void>;
|
package/build/eufysecurity.js
CHANGED
|
@@ -702,6 +702,16 @@ class EufySecurity extends tiny_typed_emitter_1.TypedEmitter {
|
|
|
702
702
|
new_device = device_1.LockKeypad.getInstance(this.api, device, deviceConfig);
|
|
703
703
|
}
|
|
704
704
|
else {
|
|
705
|
+
logging_1.rootMainLogger.warn(`New unknown device detected`, {
|
|
706
|
+
device_type: device.device_type,
|
|
707
|
+
device_sn: device.device_sn,
|
|
708
|
+
device_name: device.device_name,
|
|
709
|
+
device_model: device.device_model,
|
|
710
|
+
station_sn: device.station_sn,
|
|
711
|
+
main_sw_version: device.main_sw_version,
|
|
712
|
+
main_hw_version: device.main_hw_version,
|
|
713
|
+
params: device.params,
|
|
714
|
+
});
|
|
705
715
|
new_device = device_1.UnknownDevice.getInstance(this.api, device, deviceConfig);
|
|
706
716
|
}
|
|
707
717
|
promises.push(new_device.then((device) => {
|
|
@@ -1071,6 +1081,14 @@ class EufySecurity extends tiny_typed_emitter_1.TypedEmitter {
|
|
|
1071
1081
|
if (refreshCloud)
|
|
1072
1082
|
this.refreshCloudData();
|
|
1073
1083
|
}
|
|
1084
|
+
async sendHouseInvite(houseID, email) {
|
|
1085
|
+
const result = await this.api.sendHouseInvite(houseID, email).catch((err) => {
|
|
1086
|
+
const error = (0, error_1.ensureError)(err);
|
|
1087
|
+
logging_1.rootMainLogger.error("Error sending house invite", { error: (0, utils_1.getError)(error), houseID, email });
|
|
1088
|
+
return false;
|
|
1089
|
+
});
|
|
1090
|
+
return result;
|
|
1091
|
+
}
|
|
1074
1092
|
onPushMessage(message) {
|
|
1075
1093
|
this.emit("push message", message);
|
|
1076
1094
|
try {
|
|
@@ -2019,7 +2037,8 @@ class EufySecurity extends tiny_typed_emitter_1.TypedEmitter {
|
|
|
2019
2037
|
!device.isLockWifiT8506() &&
|
|
2020
2038
|
!device.isLockWifiT8502() &&
|
|
2021
2039
|
!device.isLockWifiT8510P() &&
|
|
2022
|
-
!device.isLockWifiT8520P()
|
|
2040
|
+
!device.isLockWifiT8520P() &&
|
|
2041
|
+
!device.isLockWifiT85L0()) ||
|
|
2023
2042
|
(result.customData !== undefined &&
|
|
2024
2043
|
result.customData.property !== undefined &&
|
|
2025
2044
|
device.isSmartSafe() &&
|
|
@@ -2029,7 +2048,8 @@ class EufySecurity extends tiny_typed_emitter_1.TypedEmitter {
|
|
|
2029
2048
|
(device.isLockWifiT8506() ||
|
|
2030
2049
|
device.isLockWifiT8502() ||
|
|
2031
2050
|
device.isLockWifiT8510P() ||
|
|
2032
|
-
device.isLockWifiT8520P()
|
|
2051
|
+
device.isLockWifiT8520P() ||
|
|
2052
|
+
device.isLockWifiT85L0()) &&
|
|
2033
2053
|
result.command_type !== types_2.CommandType.CMD_DOORLOCK_SET_PUSH_MODE)) {
|
|
2034
2054
|
if (device.hasProperty(result.customData.property.name)) {
|
|
2035
2055
|
const metadata = device.getPropertyMetadata(result.customData.property.name);
|
|
@@ -2801,7 +2821,9 @@ class EufySecurity extends tiny_typed_emitter_1.TypedEmitter {
|
|
|
2801
2821
|
if ((device.isLockWifiT8506() ||
|
|
2802
2822
|
device.isLockWifiT8502() ||
|
|
2803
2823
|
device.isLockWifiT8510P() ||
|
|
2804
|
-
device.isLockWifiT8520P()
|
|
2824
|
+
device.isLockWifiT8520P() ||
|
|
2825
|
+
device.isLockWifiT8531() ||
|
|
2826
|
+
device.isLockWifiT85L0()) &&
|
|
2805
2827
|
user.password_list.length > 0) {
|
|
2806
2828
|
for (const entry of user.password_list) {
|
|
2807
2829
|
if (entry.password_type === types_1.UserPasswordType.PIN) {
|