eufy-security-client 3.8.0 → 4.0.0-dev.30
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 +24 -0
- package/build/eufysecurity.d.ts +2 -0
- package/build/eufysecurity.js +17 -0
- package/build/eufysecurity.js.map +1 -1
- package/build/http/api.d.ts +2 -0
- package/build/http/api.js +39 -6
- package/build/http/api.js.map +1 -1
- package/build/http/device.d.ts +13 -1
- package/build/http/device.js +70 -15
- package/build/http/device.js.map +1 -1
- package/build/http/interfaces.d.ts +1 -0
- package/build/http/models.d.ts +1 -0
- package/build/http/station.d.ts +9 -1
- package/build/http/station.js +108 -31
- package/build/http/station.js.map +1 -1
- package/build/http/types.d.ts +4 -0
- package/build/http/types.js +218 -7
- package/build/http/types.js.map +1 -1
- package/build/p2p/adts.d.ts +12 -0
- package/build/p2p/adts.js +185 -0
- package/build/p2p/adts.js.map +1 -0
- package/build/p2p/interfaces.d.ts +10 -0
- package/build/p2p/session.d.ts +3 -1
- package/build/p2p/session.js +138 -30
- package/build/p2p/session.js.map +1 -1
- package/build/p2p/types.d.ts +1 -0
- package/build/p2p/types.js +1 -0
- package/build/p2p/types.js.map +1 -1
- package/build/p2p/utils.d.ts +11 -0
- package/build/p2p/utils.js +76 -4
- package/build/p2p/utils.js.map +1 -1
- package/coverage/clover.xml +8665 -8452
- package/coverage/coverage-final.json +32 -31
- package/coverage/lcov-report/index.html +41 -41
- package/coverage/lcov.info +17294 -15644
- package/package.json +7 -7
- package/.idea/eufy-security-client.iml +0 -12
- package/.idea/modules.xml +0 -8
- package/.idea/vcs.xml +0 -7
- package/bin/act +0 -0
- package/coverage/lcov-report/cache.ts.html +0 -184
- 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
|
@@ -111,6 +111,30 @@ Instructions aimed at maintainers for deploying a new version: [Deployment](docs
|
|
|
111
111
|
|
|
112
112
|
## Changelog
|
|
113
113
|
|
|
114
|
+
### 4.0.0 (2026-05-28)
|
|
115
|
+
|
|
116
|
+
* Fix: Add missing GenericTypeProperty labels for 5 device types by @lenoxys in https://github.com/bropat/eufy-security-client/pull/828
|
|
117
|
+
* Feature: make P2P stream timeouts configurable by @lenoxys in https://github.com/bropat/eufy-security-client/pull/831
|
|
118
|
+
* Fix: add missing rtspStreamUrl property to SoloCam E42 metadata by @lenoxys in https://github.com/bropat/eufy-security-client/pull/832
|
|
119
|
+
* Fix: skip CMD_DOORBELL_SET_PAYLOAD for E340 on MiniBase Chime by @lenoxys in https://github.com/bropat/eufy-security-client/pull/834
|
|
120
|
+
* Fix: E340 talkback @lenoxys in https://github.com/bropat/eufy-security-client/pull/837
|
|
121
|
+
* Feature: Add fully notify when HB notify by @max246 in https://github.com/bropat/eufy-security-client/pull/838
|
|
122
|
+
* Fix: auto-accept invitations by @lenoxys in https://github.com/bropat/eufy-security-client/pull/839
|
|
123
|
+
* Fix: use correct motion detection property for SOLO_CAMERA_E30 (T8171) by @lenoxys in https://github.com/bropat/eufy-security-client/pull/840
|
|
124
|
+
* Feature: add sendHouseInvite method by @mabahamo in https://github.com/bropat/eufy-security-client/pull/845
|
|
125
|
+
* Feature: Add E30 (T8417) P2P livestream support by @ovikiss in https://github.com/bropat/eufy-security-client/pull/847
|
|
126
|
+
* Feature: normalize multi-RDB ADTS frames in P2P audio stream by @lenoxys in https://github.com/bropat/eufy-security-client/pull/852
|
|
127
|
+
* Feature: add NVR S4 Max (T8N00, type 300) support by @lenoxys in https://github.com/bropat/eufy-security-client/pull/854
|
|
128
|
+
* Feature: add PoE Bullet-PTZ Cam S4 (T8E00, type 301) support by @lenoxys in https://github.com/bropat/eufy-security-client/pull/855
|
|
129
|
+
* Fix: register LOCK_85V0 (T85V0) in DeviceProperties and DeviceCommands maps by @lenoxys in https://github.com/bropat/eufy-security-client/pull/858
|
|
130
|
+
* Feature: basic E30 T8417 support by @max246 in https://github.com/bropat/eufy-security-client/pull/865
|
|
131
|
+
* Fix: outer enableDevice for outdoor PT cams through CMD_SET_PAYLOAD by @max246 in https://github.com/bropat/eufy-security-client/pull/873
|
|
132
|
+
* Fix: read enabled state for outdoor PT cams from the wrapped privacy-mode key by @max246 in https://github.com/bropat/eufy-security-client/pull/874
|
|
133
|
+
* Feature: add FamiLock E34 (T85P0, type 209) support by @max246 in https://github.com/bropat/eufy-security-client/pull/876
|
|
134
|
+
* Fix: Restore CMD_STORAGE_INFO_HB3 notify handler removed by #847 merge by @max246 in https://github.com/bropat/eufy-security-client/pull/878
|
|
135
|
+
* Feature: upgrade to node 24 by @max246 in https://github.com/bropat/eufy-security-client/pull/897
|
|
136
|
+
|
|
137
|
+
|
|
114
138
|
### 3.8.0 (2026-03-01)
|
|
115
139
|
|
|
116
140
|
* Feature: Add support for Smart Lock E20 (T85V0) by @worldjoe/@max246 in https://github.com/bropat/eufy-security-client/pull/803
|
package/build/eufysecurity.d.ts
CHANGED
|
@@ -61,6 +61,7 @@ export declare class EufySecurity extends TypedEmitter<EufySecurityEvents> {
|
|
|
61
61
|
private handleHubs;
|
|
62
62
|
private refreshP2PData;
|
|
63
63
|
private onStationConnect;
|
|
64
|
+
private onHubNotifyUpdate;
|
|
64
65
|
private onStationConnectionError;
|
|
65
66
|
private onStationClose;
|
|
66
67
|
private handleDevices;
|
|
@@ -86,6 +87,7 @@ export declare class EufySecurity extends TypedEmitter<EufySecurityEvents> {
|
|
|
86
87
|
isMQTTConnected(): boolean;
|
|
87
88
|
isConnected(): boolean;
|
|
88
89
|
private processInvitations;
|
|
90
|
+
sendHouseInvite(houseID: string, email: string): Promise<boolean>;
|
|
89
91
|
private onPushMessage;
|
|
90
92
|
startStationDownload(deviceSN: string, path: string, cipherID: number): Promise<void>;
|
|
91
93
|
cancelStationDownload(deviceSN: string): Promise<void>;
|
package/build/eufysecurity.js
CHANGED
|
@@ -40,6 +40,7 @@ exports.EufySecurity = void 0;
|
|
|
40
40
|
const tiny_typed_emitter_1 = require("tiny-typed-emitter");
|
|
41
41
|
const fs_1 = require("fs");
|
|
42
42
|
const path = __importStar(require("path"));
|
|
43
|
+
const util = __importStar(require("util"));
|
|
43
44
|
const events_1 = __importDefault(require("events"));
|
|
44
45
|
const api_1 = require("./http/api");
|
|
45
46
|
const station_1 = require("./http/station");
|
|
@@ -558,6 +559,7 @@ class EufySecurity extends tiny_typed_emitter_1.TypedEmitter {
|
|
|
558
559
|
station.on("sensor status", (station, channel, status) => this.onStationSensorStatus(station, channel, status));
|
|
559
560
|
station.on("garage door status", (station, channel, doorId, status) => this.onStationGarageDoorStatus(station, channel, doorId, status));
|
|
560
561
|
station.on("storage info hb3", (station, channel, storageInfo) => this.onStorageInfoHb3(station, channel, storageInfo));
|
|
562
|
+
station.on("hub notify update", (station) => this.onHubNotifyUpdate(station));
|
|
561
563
|
this.addStation(station);
|
|
562
564
|
station.initialize();
|
|
563
565
|
}
|
|
@@ -617,6 +619,12 @@ class EufySecurity extends tiny_typed_emitter_1.TypedEmitter {
|
|
|
617
619
|
this.refreshP2PData(station);
|
|
618
620
|
}, this.P2P_REFRESH_INTERVAL_MIN * 60 * 1000);
|
|
619
621
|
}
|
|
622
|
+
onHubNotifyUpdate(station) {
|
|
623
|
+
logging_1.rootMainLogger.info("Hub notify update received, refreshing cloud data", {
|
|
624
|
+
stationSN: station.getSerial(),
|
|
625
|
+
});
|
|
626
|
+
this.refreshCloudData();
|
|
627
|
+
}
|
|
620
628
|
onStationConnectionError(station, error) {
|
|
621
629
|
this.emit("station connection error", station, error);
|
|
622
630
|
}
|
|
@@ -638,6 +646,7 @@ class EufySecurity extends tiny_typed_emitter_1.TypedEmitter {
|
|
|
638
646
|
}
|
|
639
647
|
handleDevices(devices) {
|
|
640
648
|
logging_1.rootMainLogger.debug("Got devices", { devices: devices });
|
|
649
|
+
logging_1.rootMainLogger.debug("Got devices - extended logging", { devices: util.inspect(devices, { depth: null }) });
|
|
641
650
|
const deviceSNs = Object.keys(this.devices);
|
|
642
651
|
const newDeviceSNs = Object.keys(devices);
|
|
643
652
|
const promises = [];
|
|
@@ -1081,6 +1090,14 @@ class EufySecurity extends tiny_typed_emitter_1.TypedEmitter {
|
|
|
1081
1090
|
if (refreshCloud)
|
|
1082
1091
|
this.refreshCloudData();
|
|
1083
1092
|
}
|
|
1093
|
+
async sendHouseInvite(houseID, email) {
|
|
1094
|
+
const result = await this.api.sendHouseInvite(houseID, email).catch((err) => {
|
|
1095
|
+
const error = (0, error_1.ensureError)(err);
|
|
1096
|
+
logging_1.rootMainLogger.error("Error sending house invite", { error: (0, utils_1.getError)(error), houseID, email });
|
|
1097
|
+
return false;
|
|
1098
|
+
});
|
|
1099
|
+
return result;
|
|
1100
|
+
}
|
|
1084
1101
|
onPushMessage(message) {
|
|
1085
1102
|
this.emit("push message", message);
|
|
1086
1103
|
try {
|