@viguza/homebridge-ezviz 1.3.0 → 1.6.0
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/.claude/settings.local.json +14 -0
- package/CHANGELOG.md +24 -0
- package/dist/accessories/alarm-mode-switch.d.ts +29 -0
- package/dist/accessories/alarm-mode-switch.js +72 -0
- package/dist/accessories/alarm-mode-switch.js.map +1 -0
- package/dist/api/ezviz-api.d.ts +20 -0
- package/dist/api/ezviz-api.js +155 -3
- package/dist/api/ezviz-api.js.map +1 -1
- package/dist/api/ezviz-constants.d.ts +3 -0
- package/dist/api/ezviz-constants.js +3 -0
- package/dist/api/ezviz-constants.js.map +1 -1
- package/dist/platform.js +25 -8
- package/dist/platform.js.map +1 -1
- package/dist/types/data.d.ts +2 -1
- package/dist/types/devices.d.ts +9 -0
- package/dist/utils/enums.d.ts +9 -0
- package/dist/utils/enums.js +15 -0
- package/dist/utils/enums.js.map +1 -1
- package/dist/utils/streaming-delegate.d.ts +1 -0
- package/dist/utils/streaming-delegate.js +22 -31
- package/dist/utils/streaming-delegate.js.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
{
|
|
2
|
+
"permissions": {
|
|
3
|
+
"allow": [
|
|
4
|
+
"Bash(gh issue *)",
|
|
5
|
+
"WebSearch",
|
|
6
|
+
"WebFetch(domain:raw.githubusercontent.com)",
|
|
7
|
+
"WebFetch(domain:github.com)",
|
|
8
|
+
"Bash(gh api *)",
|
|
9
|
+
"Bash(npm test *)",
|
|
10
|
+
"Bash(npm run *)",
|
|
11
|
+
"Bash(grep -v \"^$\")"
|
|
12
|
+
]
|
|
13
|
+
}
|
|
14
|
+
}
|
package/CHANGELOG.md
CHANGED
|
@@ -19,6 +19,30 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
19
19
|
### Removed
|
|
20
20
|
- Nothing yet
|
|
21
21
|
|
|
22
|
+
## [1.6.0] - 2026-05-31
|
|
23
|
+
|
|
24
|
+
### Added
|
|
25
|
+
- Session refresh using refresh token — scheduled re-authentication now uses `PUT /v3/apigateway/login` with the existing refresh token instead of a full re-login, falling back to full re-authentication if the token is rejected (#21)
|
|
26
|
+
- Support for BatteryCamera and BDoorBell device categories — these devices are no longer silently skipped during discovery and are exposed as cameras in HomeKit (#24)
|
|
27
|
+
|
|
28
|
+
### Fixed
|
|
29
|
+
- WiFi cameras failing to stream or take snapshots (#26)
|
|
30
|
+
- Plugin now requests WIFI IP data from the pagelist API and prefers `WIFI.address` over `CONNECTION.localIp`, which returns `0.0.0.0` for many WiFi cameras
|
|
31
|
+
- Switched RTSP transport from UDP to TCP (`-rtsp_transport tcp`) for reliable WiFi streaming
|
|
32
|
+
- RTSP URL now includes the correct port from `CONNECTION.localRtspPort`
|
|
33
|
+
- Added `-use_wallclock_as_timestamps 1` to fix non-monotonic timestamp warnings from cameras
|
|
34
|
+
- Added `-af aresample=async=1` to fix audio distortion caused by backward audio timestamps
|
|
35
|
+
|
|
36
|
+
## [1.5.0] - 2025-11-04
|
|
37
|
+
|
|
38
|
+
### Added
|
|
39
|
+
- Alarm Mode Switch: Added HomeKit switch accessory to control EZVIZ defence/alarm modes (#11)
|
|
40
|
+
- Switch ON = AWAY_MODE (fully armed)
|
|
41
|
+
- Switch OFF = HOME_MODE (disarmed)
|
|
42
|
+
- Switch state automatically reflects current defence mode status
|
|
43
|
+
- Supports control via Apple Shortcuts, Siri, and Home app
|
|
44
|
+
- Added API methods for getting and setting defence mode
|
|
45
|
+
|
|
22
46
|
## [1.3.0] - 2025-11-03
|
|
23
47
|
|
|
24
48
|
### Added
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { CharacteristicValue, PlatformAccessory } from 'homebridge';
|
|
2
|
+
import type { EZVIZPlatform } from '../platform.js';
|
|
3
|
+
import { EZVIZAPI } from '../api/ezviz-api.js';
|
|
4
|
+
/**
|
|
5
|
+
* Alarm Mode Switch accessory for EZVIZ
|
|
6
|
+
* Handles on/off functionality for alarm/defence mode
|
|
7
|
+
* ON = AWAY_MODE (fully armed), OFF = UNSET_MODE (disarmed)
|
|
8
|
+
*/
|
|
9
|
+
export declare class AlarmModeSwitch {
|
|
10
|
+
private readonly platform;
|
|
11
|
+
private readonly accessory;
|
|
12
|
+
private api;
|
|
13
|
+
constructor(api: EZVIZAPI, platform: EZVIZPlatform, accessory: PlatformAccessory);
|
|
14
|
+
/**
|
|
15
|
+
* Sets the alarm mode (defence mode) on/off
|
|
16
|
+
* @param value - The value to set (true = AWAY_MODE/armed, false = HOME_MODE/disarmed)
|
|
17
|
+
*/
|
|
18
|
+
setAlarmMode(value: CharacteristicValue): Promise<void>;
|
|
19
|
+
/**
|
|
20
|
+
* Gets the current alarm mode (defence mode) state
|
|
21
|
+
* @returns Promise resolving to the current state (true = armed, false = disarmed)
|
|
22
|
+
*/
|
|
23
|
+
getAlarmMode(): Promise<CharacteristicValue>;
|
|
24
|
+
/**
|
|
25
|
+
* Gets the accessory instance
|
|
26
|
+
* @returns The platform accessory
|
|
27
|
+
*/
|
|
28
|
+
getAccessory(): PlatformAccessory<import("homebridge").UnknownContext>;
|
|
29
|
+
}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { DefenceMode } from '../utils/enums.js';
|
|
2
|
+
import { DEFAULT_GROUP_ID } from '../api/ezviz-constants.js';
|
|
3
|
+
/**
|
|
4
|
+
* Alarm Mode Switch accessory for EZVIZ
|
|
5
|
+
* Handles on/off functionality for alarm/defence mode
|
|
6
|
+
* ON = AWAY_MODE (fully armed), OFF = UNSET_MODE (disarmed)
|
|
7
|
+
*/
|
|
8
|
+
export class AlarmModeSwitch {
|
|
9
|
+
platform;
|
|
10
|
+
accessory;
|
|
11
|
+
api;
|
|
12
|
+
constructor(api, platform, accessory) {
|
|
13
|
+
this.platform = platform;
|
|
14
|
+
this.accessory = accessory;
|
|
15
|
+
this.api = api;
|
|
16
|
+
// Set accessory information
|
|
17
|
+
this.accessory.getService(this.platform.Service.AccessoryInformation)
|
|
18
|
+
.setCharacteristic(this.platform.Characteristic.Manufacturer, 'EZVIZ')
|
|
19
|
+
.setCharacteristic(this.platform.Characteristic.Model, 'Alarm Mode Switch')
|
|
20
|
+
.setCharacteristic(this.platform.Characteristic.SerialNumber, 'EZVIZ-AlarmMode');
|
|
21
|
+
// Set up the switch service
|
|
22
|
+
const alarmService = this.accessory.getService(this.platform.Service.Switch) ||
|
|
23
|
+
this.accessory.addService(this.platform.Service.Switch, 'Alarm Mode');
|
|
24
|
+
alarmService.setCharacteristic(this.platform.Characteristic.Name, 'Alarm Mode');
|
|
25
|
+
// Set up event handlers
|
|
26
|
+
alarmService.getCharacteristic(this.platform.Characteristic.On)
|
|
27
|
+
.onSet(this.setAlarmMode.bind(this))
|
|
28
|
+
.onGet(this.getAlarmMode.bind(this));
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Sets the alarm mode (defence mode) on/off
|
|
32
|
+
* @param value - The value to set (true = AWAY_MODE/armed, false = HOME_MODE/disarmed)
|
|
33
|
+
*/
|
|
34
|
+
async setAlarmMode(value) {
|
|
35
|
+
try {
|
|
36
|
+
// ON = AWAY_MODE (2) = fully armed, OFF = HOME_MODE (1) = disarmed
|
|
37
|
+
const mode = value ? DefenceMode.AWAY_MODE : DefenceMode.HOME_MODE;
|
|
38
|
+
await this.api.setDefenceMode(DEFAULT_GROUP_ID, mode);
|
|
39
|
+
this.platform.log.debug(`Successfully set alarm mode to ${value ? 'AWAY_MODE (armed)' : 'HOME_MODE (disarmed)'}`);
|
|
40
|
+
}
|
|
41
|
+
catch (error) {
|
|
42
|
+
this.platform.log.error('Unable to set alarm mode:', error);
|
|
43
|
+
throw new this.platform.api.hap.HapStatusError(-70402 /* this.platform.api.hap.HAPStatus.SERVICE_COMMUNICATION_FAILURE */);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Gets the current alarm mode (defence mode) state
|
|
48
|
+
* @returns Promise resolving to the current state (true = armed, false = disarmed)
|
|
49
|
+
*/
|
|
50
|
+
async getAlarmMode() {
|
|
51
|
+
try {
|
|
52
|
+
const mode = await this.api.getDefenceMode(DEFAULT_GROUP_ID);
|
|
53
|
+
// Return true if mode is AWAY_MODE (fully armed), false otherwise
|
|
54
|
+
const isArmed = mode === DefenceMode.AWAY_MODE;
|
|
55
|
+
this.platform.log.debug(`Current alarm mode: ${DefenceMode[mode]} (${mode}), switch is ${isArmed ? 'ON' : 'OFF'}`);
|
|
56
|
+
return isArmed;
|
|
57
|
+
}
|
|
58
|
+
catch (error) {
|
|
59
|
+
this.platform.log.error('Unable to get alarm mode:', error);
|
|
60
|
+
// Return false (disarmed) as default on error
|
|
61
|
+
return false;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Gets the accessory instance
|
|
66
|
+
* @returns The platform accessory
|
|
67
|
+
*/
|
|
68
|
+
getAccessory() {
|
|
69
|
+
return this.accessory;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=alarm-mode-switch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"alarm-mode-switch.js","sourceRoot":"","sources":["../../src/accessories/alarm-mode-switch.ts"],"names":[],"mappings":"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"}
|
package/dist/api/ezviz-api.d.ts
CHANGED
|
@@ -2,6 +2,7 @@ import { Logging } from 'homebridge';
|
|
|
2
2
|
import { Credentials } from '../types/login.js';
|
|
3
3
|
import { ListDevicesResponse } from '../types/devices.js';
|
|
4
4
|
import { EZVIZConfig } from '../types/config.js';
|
|
5
|
+
import { DefenceMode } from '../utils/enums.js';
|
|
5
6
|
/**
|
|
6
7
|
* EZVIZ API client for interacting with EZVIZ services
|
|
7
8
|
*/
|
|
@@ -21,6 +22,12 @@ export declare class EZVIZAPI {
|
|
|
21
22
|
* @returns Promise resolving to credentials or undefined if authentication fails
|
|
22
23
|
*/
|
|
23
24
|
authenticate(): Promise<Credentials | undefined>;
|
|
25
|
+
/**
|
|
26
|
+
* Refreshes the session using the refresh token, falling back to full re-authentication
|
|
27
|
+
* if the refresh token is missing or rejected.
|
|
28
|
+
* @returns Promise resolving to updated credentials or undefined on failure
|
|
29
|
+
*/
|
|
30
|
+
refreshSession(): Promise<Credentials | undefined>;
|
|
24
31
|
/**
|
|
25
32
|
* Gets the domain URL for the specified region
|
|
26
33
|
* @param id - The region ID
|
|
@@ -46,4 +53,17 @@ export declare class EZVIZAPI {
|
|
|
46
53
|
* @returns Promise resolving to the switch state
|
|
47
54
|
*/
|
|
48
55
|
getSwitchState(serialNumber: string, type: number): Promise<boolean>;
|
|
56
|
+
/**
|
|
57
|
+
* Sets the defence mode (alarm mode) for a group
|
|
58
|
+
* @param groupId - The group ID (default: 1)
|
|
59
|
+
* @param mode - The defence mode (DefenceMode enum value)
|
|
60
|
+
* @returns Promise resolving when defence mode is set
|
|
61
|
+
*/
|
|
62
|
+
setDefenceMode(groupId: number | undefined, mode: DefenceMode): Promise<void>;
|
|
63
|
+
/**
|
|
64
|
+
* Gets the current defence mode (alarm mode) for a group
|
|
65
|
+
* @param groupId - The group ID (default: 1)
|
|
66
|
+
* @returns Promise resolving to the current defence mode (DefenceMode enum value)
|
|
67
|
+
*/
|
|
68
|
+
getDefenceMode(groupId?: number): Promise<DefenceMode>;
|
|
49
69
|
}
|
package/dist/api/ezviz-api.js
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import axios from 'axios';
|
|
2
2
|
import querystring from 'querystring';
|
|
3
3
|
import crypto, { randomBytes } from 'crypto';
|
|
4
|
-
import { EZVIZ_CLIENT_TYPE, EZVIZ_USER_AGENT, EZVIZ_BASE_API_URL, EZVIZ_DOMAINS_ENDPOINT, EZVIZ_AUTH_ENDPOINT, EZVIZ_DEVICES_ENDPOINT, EZVIZ_SWITCH_STATUS_ENDPOINT, RUSSIA_DOMAIN, RUSSIA_AREA_ID, } from './ezviz-constants.js';
|
|
4
|
+
import { EZVIZ_CLIENT_TYPE, EZVIZ_USER_AGENT, EZVIZ_BASE_API_URL, EZVIZ_DOMAINS_ENDPOINT, EZVIZ_AUTH_ENDPOINT, EZVIZ_DEVICES_ENDPOINT, EZVIZ_SWITCH_STATUS_ENDPOINT, EZVIZ_DEFENCE_MODE_ENDPOINT, EZVIZ_DEFENCE_MODE_GET_ENDPOINT, API_ENDPOINT_REFRESH, RUSSIA_DOMAIN, RUSSIA_AREA_ID, DEFAULT_GROUP_ID, } from './ezviz-constants.js';
|
|
5
|
+
import { DefenceMode } from '../utils/enums.js';
|
|
5
6
|
import { sendRequest } from './ezviz-requests.js';
|
|
6
7
|
/**
|
|
7
8
|
* EZVIZ API client for interacting with EZVIZ services
|
|
@@ -90,6 +91,56 @@ export class EZVIZAPI {
|
|
|
90
91
|
throw error;
|
|
91
92
|
}
|
|
92
93
|
}
|
|
94
|
+
/**
|
|
95
|
+
* Refreshes the session using the refresh token, falling back to full re-authentication
|
|
96
|
+
* if the refresh token is missing or rejected.
|
|
97
|
+
* @returns Promise resolving to updated credentials or undefined on failure
|
|
98
|
+
*/
|
|
99
|
+
async refreshSession() {
|
|
100
|
+
const creds = this.config.credentials;
|
|
101
|
+
if (!creds?.rfSessionId) {
|
|
102
|
+
this.log?.debug('No refresh token available, falling back to full re-authentication');
|
|
103
|
+
return this.authenticate();
|
|
104
|
+
}
|
|
105
|
+
const data = querystring.stringify({
|
|
106
|
+
cuName: creds.cuName,
|
|
107
|
+
featureCode: creds.featureCode,
|
|
108
|
+
refreshSessionId: creds.rfSessionId,
|
|
109
|
+
});
|
|
110
|
+
const config = {
|
|
111
|
+
method: 'put',
|
|
112
|
+
url: `${this.config.domain}${API_ENDPOINT_REFRESH}`,
|
|
113
|
+
headers: {
|
|
114
|
+
'Content-Type': 'application/x-www-form-urlencoded',
|
|
115
|
+
'clientType': EZVIZ_CLIENT_TYPE,
|
|
116
|
+
'User-Agent': EZVIZ_USER_AGENT,
|
|
117
|
+
'sessionId': this.sessionId ?? '',
|
|
118
|
+
},
|
|
119
|
+
data,
|
|
120
|
+
};
|
|
121
|
+
try {
|
|
122
|
+
const response = await axios(config);
|
|
123
|
+
const result = response.data;
|
|
124
|
+
if (result.meta?.code !== 200) {
|
|
125
|
+
this.log?.debug(`Session refresh rejected (code ${result.meta?.code}), falling back to full re-authentication`);
|
|
126
|
+
return this.authenticate();
|
|
127
|
+
}
|
|
128
|
+
const updated = {
|
|
129
|
+
sessionId: result.sessionInfo.sessionId,
|
|
130
|
+
rfSessionId: result.sessionInfo.refreshSessionId,
|
|
131
|
+
featureCode: creds.featureCode,
|
|
132
|
+
cuName: creds.cuName,
|
|
133
|
+
};
|
|
134
|
+
this.sessionId = updated.sessionId;
|
|
135
|
+
this.config.credentials = updated;
|
|
136
|
+
this.log?.debug('Session refreshed successfully');
|
|
137
|
+
return updated;
|
|
138
|
+
}
|
|
139
|
+
catch (error) {
|
|
140
|
+
this.log?.debug('Session refresh failed, falling back to full re-authentication:', error);
|
|
141
|
+
return this.authenticate();
|
|
142
|
+
}
|
|
143
|
+
}
|
|
93
144
|
/**
|
|
94
145
|
* Gets the domain URL for the specified region
|
|
95
146
|
* @param id - The region ID
|
|
@@ -141,8 +192,8 @@ export class EZVIZAPI {
|
|
|
141
192
|
}
|
|
142
193
|
try {
|
|
143
194
|
const query = querystring.stringify({
|
|
144
|
-
filter: 'CONNECTION,SWITCH,STATUS,NODISTURB,P2P,FEATURE,DETECTOR',
|
|
145
|
-
groupId:
|
|
195
|
+
filter: 'CONNECTION,WIFI,SWITCH,STATUS,NODISTURB,P2P,FEATURE,DETECTOR',
|
|
196
|
+
groupId: DEFAULT_GROUP_ID,
|
|
146
197
|
limit: 30,
|
|
147
198
|
offset: 0,
|
|
148
199
|
});
|
|
@@ -245,5 +296,106 @@ export class EZVIZAPI {
|
|
|
245
296
|
}
|
|
246
297
|
return deviceSwitch?.enable;
|
|
247
298
|
}
|
|
299
|
+
/**
|
|
300
|
+
* Sets the defence mode (alarm mode) for a group
|
|
301
|
+
* @param groupId - The group ID (default: 1)
|
|
302
|
+
* @param mode - The defence mode (DefenceMode enum value)
|
|
303
|
+
* @returns Promise resolving when defence mode is set
|
|
304
|
+
*/
|
|
305
|
+
async setDefenceMode(groupId = DEFAULT_GROUP_ID, mode) {
|
|
306
|
+
if (!Object.values(DefenceMode).includes(mode)) {
|
|
307
|
+
throw new Error(`Invalid defence mode. Must be one of: ${Object.values(DefenceMode).join(', ')}`);
|
|
308
|
+
}
|
|
309
|
+
if (!this.sessionId) {
|
|
310
|
+
try {
|
|
311
|
+
await this.authenticate();
|
|
312
|
+
}
|
|
313
|
+
catch (error) {
|
|
314
|
+
this.log?.error('Failed to authenticate before setting defence mode:', error);
|
|
315
|
+
throw error;
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
const query = querystring.stringify({
|
|
319
|
+
groupId: groupId,
|
|
320
|
+
mode: mode,
|
|
321
|
+
});
|
|
322
|
+
const config = {
|
|
323
|
+
method: 'post',
|
|
324
|
+
url: `${this.config.domain}${EZVIZ_DEFENCE_MODE_ENDPOINT}?${query}`,
|
|
325
|
+
headers: {
|
|
326
|
+
'sessionid': this.sessionId,
|
|
327
|
+
'clienttype': EZVIZ_CLIENT_TYPE,
|
|
328
|
+
'user-agent': EZVIZ_USER_AGENT,
|
|
329
|
+
},
|
|
330
|
+
};
|
|
331
|
+
try {
|
|
332
|
+
const response = await axios(config);
|
|
333
|
+
if (response.data?.retcode && response.data.retcode !== '200') {
|
|
334
|
+
throw new Error(`Defence mode update failed: ${response.data.retcode}`);
|
|
335
|
+
}
|
|
336
|
+
if (response.data?.meta?.code && response.data.meta.code !== 200) {
|
|
337
|
+
throw new Error(`Defence mode update failed: ${response.data.meta.code} - ${response.data.meta.message}`);
|
|
338
|
+
}
|
|
339
|
+
return response.data;
|
|
340
|
+
}
|
|
341
|
+
catch (error) {
|
|
342
|
+
this.log?.error('Error setting defence mode:', error);
|
|
343
|
+
throw error;
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
/**
|
|
347
|
+
* Gets the current defence mode (alarm mode) for a group
|
|
348
|
+
* @param groupId - The group ID (default: 1)
|
|
349
|
+
* @returns Promise resolving to the current defence mode (DefenceMode enum value)
|
|
350
|
+
*/
|
|
351
|
+
async getDefenceMode(groupId = DEFAULT_GROUP_ID) {
|
|
352
|
+
if (!this.sessionId) {
|
|
353
|
+
try {
|
|
354
|
+
await this.authenticate();
|
|
355
|
+
}
|
|
356
|
+
catch (error) {
|
|
357
|
+
this.log?.error('Failed to authenticate before getting defence mode:', error);
|
|
358
|
+
throw error;
|
|
359
|
+
}
|
|
360
|
+
}
|
|
361
|
+
const query = querystring.stringify({
|
|
362
|
+
groupId: groupId,
|
|
363
|
+
});
|
|
364
|
+
const config = {
|
|
365
|
+
method: 'get',
|
|
366
|
+
url: `${this.config.domain}${EZVIZ_DEFENCE_MODE_GET_ENDPOINT}?${query}`,
|
|
367
|
+
headers: {
|
|
368
|
+
'sessionid': this.sessionId,
|
|
369
|
+
'clienttype': EZVIZ_CLIENT_TYPE,
|
|
370
|
+
'user-agent': EZVIZ_USER_AGENT,
|
|
371
|
+
},
|
|
372
|
+
};
|
|
373
|
+
try {
|
|
374
|
+
const response = await axios(config);
|
|
375
|
+
if (response.data?.retcode && response.data.retcode !== '200') {
|
|
376
|
+
throw new Error(`Failed to get defence mode: ${response.data.retcode}`);
|
|
377
|
+
}
|
|
378
|
+
if (response.data?.meta?.code && response.data.meta.code !== 200) {
|
|
379
|
+
throw new Error(`Failed to get defence mode: ${response.data.meta.code} - ${response.data.meta.message}`);
|
|
380
|
+
}
|
|
381
|
+
// Extract the mode from the response
|
|
382
|
+
// The response structure may vary, but typically it's in response.data.mode or response.data.defenceMode
|
|
383
|
+
const mode = response.data?.mode || response.data?.defenceMode || response.data?.data?.mode;
|
|
384
|
+
if (mode === undefined || mode === null) {
|
|
385
|
+
this.log?.debug('No mode found in response, defaulting to UNSET_MODE');
|
|
386
|
+
return DefenceMode.UNSET_MODE;
|
|
387
|
+
}
|
|
388
|
+
const modeValue = typeof mode === 'string' ? parseInt(mode, 10) : mode;
|
|
389
|
+
if (!Object.values(DefenceMode).includes(modeValue)) {
|
|
390
|
+
this.log?.debug(`Unknown defence mode value: ${modeValue}, defaulting to UNSET_MODE`);
|
|
391
|
+
return DefenceMode.UNSET_MODE;
|
|
392
|
+
}
|
|
393
|
+
return modeValue;
|
|
394
|
+
}
|
|
395
|
+
catch (error) {
|
|
396
|
+
this.log?.error('Error getting defence mode:', error);
|
|
397
|
+
throw error;
|
|
398
|
+
}
|
|
399
|
+
}
|
|
248
400
|
}
|
|
249
401
|
//# sourceMappingURL=ezviz-api.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ezviz-api.js","sourceRoot":"","sources":["../../src/api/ezviz-api.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ezviz-api.js","sourceRoot":"","sources":["../../src/api/ezviz-api.ts"],"names":[],"mappings":"AAAA,OAAO,KAA6B,MAAM,OAAO,CAAC;AAClD,OAAO,WAAW,MAAM,aAAa,CAAC;AACtC,OAAO,MAAM,EAAE,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAK7C,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,kBAAkB,EAClB,sBAAsB,EACtB,mBAAmB,EACnB,sBAAsB,EACtB,4BAA4B,EAC5B,2BAA2B,EAC3B,+BAA+B,EAC/B,oBAAoB,EACpB,aAAa,EACb,cAAc,EACd,gBAAgB,GACjB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAElD;;GAEG;AACH,MAAM,OAAO,QAAQ;IACX,MAAM,CAAc;IACrB,SAAS,CAAgB;IACxB,GAAG,CAAsB;IAEjC,YAAY,MAAmB,EAAE,GAAa;QAC5C,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;IACjB,CAAC;IAED;;;;OAIG;IACH,SAAS,CAAC,MAAc;QACtB,OAAO,WAAW,CAAC,MAAM,CAAC;aACvB,QAAQ,CAAC,QAAQ,CAAC;aAClB,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC;aAChB,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;aACnB,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IACzB,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,YAAY;QAChB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;YAChD,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,oDAAoD,CAAC,CAAC;YACtE,OAAO;QACT,CAAC;QAED,MAAM,SAAS,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACnF,MAAM,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACrF,MAAM,IAAI,GAAG,WAAW,CAAC,SAAS,CAAC;YACjC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK;YAC1B,WAAW,EAAE,SAAS;YACtB,QAAQ,EAAE,QAAQ;SACnB,CAAC,CAAC;QACH,MAAM,MAAM,GAAuB;YACjC,MAAM,EAAE,MAAM;YACd,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,mBAAmB,EAAE;YAClD,OAAO,EAAE;gBACP,cAAc,EAAE,mCAAmC;gBACnD,YAAY,EAAE,iBAAiB;gBAC/B,YAAY,EAAE,gBAAgB;aAC/B;YACD,IAAI;SACL,CAAC;QAEF,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,CAAC;YACrC,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;YAE3B,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBACjB,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,gBAAgB,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;gBAChD,OAAO;YACT,CAAC;YAED,IAAI,IAAI,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,EAAE,CAAC;gBAC7B,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,kEAAkE,CAAC,CAAC;gBACpF,OAAO;YACT,CAAC;YAED,IAAI,IAAI,CAAC,IAAI,EAAE,IAAI,KAAK,GAAG,EAAE,CAAC;gBAC5B,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,mBAAmB,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;gBACtD,OAAO;YACT,CAAC;YAED,IAAI,IAAI,CAAC,YAAY,EAAE,SAAS,EAAE,CAAC;gBACjC,MAAM,KAAK,GAAG,IAAa,CAAC;gBAC5B,MAAM,WAAW,GAAgB;oBAC/B,SAAS,EAAE,KAAK,CAAC,YAAY,CAAC,SAAS;oBACvC,WAAW,EAAE,KAAK,CAAC,YAAY,CAAC,WAAW;oBAC3C,WAAW,EAAE,SAAS;oBACtB,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;iBAC3B,CAAC;gBACF,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,YAAY,CAAC,SAAS,CAAC;gBAC9C,IAAI,CAAC,MAAM,CAAC,WAAW,GAAG,WAAW,CAAC;gBACtC,OAAO,WAAW,CAAC;YACrB,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,sCAAsC,CAAC,CAAC;gBACxD,OAAO;YACT,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;YAC3C,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,cAAc;QAClB,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;QAEtC,IAAI,CAAC,KAAK,EAAE,WAAW,EAAE,CAAC;YACxB,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,oEAAoE,CAAC,CAAC;YACtF,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC;QAC7B,CAAC;QAED,MAAM,IAAI,GAAG,WAAW,CAAC,SAAS,CAAC;YACjC,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,WAAW,EAAE,KAAK,CAAC,WAAW;YAC9B,gBAAgB,EAAE,KAAK,CAAC,WAAW;SACpC,CAAC,CAAC;QAEH,MAAM,MAAM,GAAuB;YACjC,MAAM,EAAE,KAAK;YACb,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,oBAAoB,EAAE;YACnD,OAAO,EAAE;gBACP,cAAc,EAAE,mCAAmC;gBACnD,YAAY,EAAE,iBAAiB;gBAC/B,YAAY,EAAE,gBAAgB;gBAC9B,WAAW,EAAE,IAAI,CAAC,SAAS,IAAI,EAAE;aAClC;YACD,IAAI;SACL,CAAC;QAEF,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,CAAC;YACrC,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAsB,CAAC;YAE/C,IAAI,MAAM,CAAC,IAAI,EAAE,IAAI,KAAK,GAAG,EAAE,CAAC;gBAC9B,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,kCAAkC,MAAM,CAAC,IAAI,EAAE,IAAI,2CAA2C,CAAC,CAAC;gBAChH,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC;YAC7B,CAAC;YAED,MAAM,OAAO,GAAgB;gBAC3B,SAAS,EAAE,MAAM,CAAC,WAAW,CAAC,SAAS;gBACvC,WAAW,EAAE,MAAM,CAAC,WAAW,CAAC,gBAAgB;gBAChD,WAAW,EAAE,KAAK,CAAC,WAAW;gBAC9B,MAAM,EAAE,KAAK,CAAC,MAAM;aACrB,CAAC;YAEF,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;YACnC,IAAI,CAAC,MAAM,CAAC,WAAW,GAAG,OAAO,CAAC;YAClC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,gCAAgC,CAAC,CAAC;YAClD,OAAO,OAAO,CAAC;QACjB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,iEAAiE,EAAE,KAAK,CAAC,CAAC;YAC1F,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC;QAC7B,CAAC;IACH,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,SAAS,CAAC,EAAU;QACxB,IAAI,EAAE,KAAK,cAAc,EAAE,CAAC;YAC1B,OAAO,WAAW,aAAa,EAAE,CAAC;QACpC,CAAC;QAED,MAAM,OAAO,GAAG;YACd,cAAc,EAAE,mCAAmC;YACnD,YAAY,EAAE,iBAAiB;YAC/B,YAAY,EAAE,gBAAgB;SAC/B,CAAC;QAEF,MAAM,SAAS,GAAuB;YACpC,OAAO,EAAE,OAAO;YAChB,MAAM,EAAE,MAAM;YACd,GAAG,EAAE,GAAG,kBAAkB,GAAG,sBAAsB,EAAE;YACrD,IAAI,EAAE,WAAW,CAAC,SAAS,CAAC;gBAC1B,MAAM,EAAE,EAAE;aACX,CAAC;SACH,CAAC;QAEF,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,SAAS,CAAC,CAAC;YACxC,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAc,CAAC;YAEvC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;gBACnB,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;YACtD,CAAC;YAED,OAAO,WAAW,MAAM,CAAC,MAAM,EAAE,CAAC;QACpC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,wBAAwB,EAAE,KAAK,CAAC,CAAC;YACjD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,WAAW;QACf,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACpB,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;YAC5B,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,gDAAgD,EAAE,KAAK,CAAC,CAAC;gBACzE,OAAO;YACT,CAAC;QACH,CAAC;QAED,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,WAAW,CAAC,SAAS,CAAC;gBAClC,MAAM,EAAE,8DAA8D;gBACtE,OAAO,EAAE,gBAAgB;gBACzB,KAAK,EAAE,EAAE;gBACT,MAAM,EAAE,CAAC;aACV,CAAC,CAAC;YAEH,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,sBAAsB,IAAI,KAAK,EAAE,EAAE,KAAK,CAAC,CAAC;YAC7G,OAAO,IAA2B,CAAC;QACrC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,yBAAyB,EAAE,KAAK,CAAC,CAAC;YAClD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,cAAc,CAAC,YAAoB,EAAE,IAAY,EAAE,KAAc;QACrE,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;QAC/C,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACpB,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;YAC5B,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,qDAAqD,EAAE,KAAK,CAAC,CAAC;gBAC9E,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC;QAED,MAAM,MAAM,GAAuB;YACjC,MAAM,EAAE,MAAM;YACd,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,4BAA4B,EAAE;YAC3D,OAAO,EAAE;gBACP,WAAW,EAAE,IAAI,CAAC,SAAS;gBAC3B,YAAY,EAAE,iBAAiB;gBAC/B,YAAY,EAAE,gBAAgB;aAC/B;YACD,IAAI,EAAE,WAAW,CAAC,SAAS,CAAC;gBAC1B,OAAO,EAAE,CAAC;gBACV,UAAU,EAAE,CAAC;gBACb,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACrB,MAAM,EAAE,YAAY;gBACpB,IAAI,EAAE,IAAI;aACX,CAAC;SACH,CAAC;QAEF,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,CAAC;YAErC,IAAI,QAAQ,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC;gBAC3B,MAAM,IAAI,KAAK,CAAC,+BAA+B,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;YAC1E,CAAC;YAED,OAAO,QAAQ,CAAC,IAAI,CAAC;QACvB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,6BAA6B,EAAE,KAAK,CAAC,CAAC;YACtD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,cAAc,CAAC,YAAoB,EAAE,IAAY;QACrD,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;QAC/C,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACpB,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;YAC5B,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,qDAAqD,EAAE,KAAK,CAAC,CAAC;gBAC9E,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC;QAED,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;QAC5C,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,MAAM,OAAO,GAAG,kBAAkB,CAAC;YACnC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;QAC3B,CAAC;QAED,MAAM,UAAU,GAAG,UAAU,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,YAAY,KAAK,YAAY,CAAC,CAAC;QAClG,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,MAAM,OAAO,GAAG,sBAAsB,YAAY,gBAAgB,CAAC;YACnE,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;QAC3B,CAAC;QAED,IAAI,UAAU,EAAE,MAAM,KAAK,CAAC,EAAE,CAAC;YAC7B,MAAM,OAAO,GAAG,sBAAsB,YAAY,aAAa,CAAC;YAChE,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;QAC3B,CAAC;QAED,MAAM,YAAY,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,YAAY,CAAC,EAAE,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;QAC/F,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,MAAM,OAAO,GAAG,4BAA4B,YAAY,gBAAgB,CAAC;YACzE,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;QAC3B,CAAC;QAED,OAAO,YAAY,EAAE,MAAM,CAAC;IAC9B,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,cAAc,CAAC,UAAkB,gBAAgB,EAAE,IAAiB;QACxE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/C,MAAM,IAAI,KAAK,CAAC,yCAAyC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACpG,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACpB,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;YAC5B,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,qDAAqD,EAAE,KAAK,CAAC,CAAC;gBAC9E,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC;QAED,MAAM,KAAK,GAAG,WAAW,CAAC,SAAS,CAAC;YAClC,OAAO,EAAE,OAAO;YAChB,IAAI,EAAE,IAAI;SACX,CAAC,CAAC;QAEH,MAAM,MAAM,GAAuB;YACjC,MAAM,EAAE,MAAM;YACd,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,2BAA2B,IAAI,KAAK,EAAE;YACnE,OAAO,EAAE;gBACP,WAAW,EAAE,IAAI,CAAC,SAAS;gBAC3B,YAAY,EAAE,iBAAiB;gBAC/B,YAAY,EAAE,gBAAgB;aAC/B;SACF,CAAC;QAEF,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,CAAC;YAErC,IAAI,QAAQ,CAAC,IAAI,EAAE,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,OAAO,KAAK,KAAK,EAAE,CAAC;gBAC9D,MAAM,IAAI,KAAK,CAAC,+BAA+B,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;YAC1E,CAAC;YAED,IAAI,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,GAAG,EAAE,CAAC;gBACjE,MAAM,IAAI,KAAK,CAAC,+BAA+B,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;YAC5G,CAAC;YAED,OAAO,QAAQ,CAAC,IAAI,CAAC;QACvB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,6BAA6B,EAAE,KAAK,CAAC,CAAC;YACtD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,cAAc,CAAC,UAAkB,gBAAgB;QACrD,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACpB,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;YAC5B,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,qDAAqD,EAAE,KAAK,CAAC,CAAC;gBAC9E,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC;QAED,MAAM,KAAK,GAAG,WAAW,CAAC,SAAS,CAAC;YAClC,OAAO,EAAE,OAAO;SACjB,CAAC,CAAC;QAEH,MAAM,MAAM,GAAuB;YACjC,MAAM,EAAE,KAAK;YACb,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,+BAA+B,IAAI,KAAK,EAAE;YACvE,OAAO,EAAE;gBACP,WAAW,EAAE,IAAI,CAAC,SAAS;gBAC3B,YAAY,EAAE,iBAAiB;gBAC/B,YAAY,EAAE,gBAAgB;aAC/B;SACF,CAAC;QAEF,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,CAAC;YAErC,IAAI,QAAQ,CAAC,IAAI,EAAE,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,OAAO,KAAK,KAAK,EAAE,CAAC;gBAC9D,MAAM,IAAI,KAAK,CAAC,+BAA+B,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;YAC1E,CAAC;YAED,IAAI,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,GAAG,EAAE,CAAC;gBACjE,MAAM,IAAI,KAAK,CAAC,+BAA+B,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;YAC5G,CAAC;YAED,qCAAqC;YACrC,yGAAyG;YACzG,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,EAAE,IAAI,IAAI,QAAQ,CAAC,IAAI,EAAE,WAAW,IAAI,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;YAE5F,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;gBACxC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,qDAAqD,CAAC,CAAC;gBACvE,OAAO,WAAW,CAAC,UAAU,CAAC;YAChC,CAAC;YAED,MAAM,SAAS,GAAG,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YAEvE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,SAAwB,CAAC,EAAE,CAAC;gBACnE,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,+BAA+B,SAAS,4BAA4B,CAAC,CAAC;gBACtF,OAAO,WAAW,CAAC,UAAU,CAAC;YAChC,CAAC;YAED,OAAO,SAAwB,CAAC;QAClC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,6BAA6B,EAAE,KAAK,CAAC,CAAC;YACtD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;CACF"}
|
|
@@ -5,6 +5,9 @@ export declare const EZVIZ_DOMAINS_ENDPOINT = "/api/area/domain";
|
|
|
5
5
|
export declare const EZVIZ_AUTH_ENDPOINT = "/v3/users/login/v5";
|
|
6
6
|
export declare const EZVIZ_DEVICES_ENDPOINT = "/v3/userdevices/v1/resources/pagelist";
|
|
7
7
|
export declare const EZVIZ_SWITCH_STATUS_ENDPOINT = "/api/device/switchStatus";
|
|
8
|
+
export declare const EZVIZ_DEFENCE_MODE_ENDPOINT = "/v3/userdevices/v1/group/switchDefenceMode";
|
|
9
|
+
export declare const EZVIZ_DEFENCE_MODE_GET_ENDPOINT = "/v3/userdevices/v1/group/defenceMode";
|
|
8
10
|
export declare const API_ENDPOINT_REFRESH = "/v3/apigateway/login";
|
|
9
11
|
export declare const RUSSIA_AREA_ID = 114;
|
|
10
12
|
export declare const RUSSIA_DOMAIN = "apiirus.ezvizru.com";
|
|
13
|
+
export declare const DEFAULT_GROUP_ID = -1;
|
|
@@ -5,7 +5,10 @@ export const EZVIZ_DOMAINS_ENDPOINT = '/api/area/domain';
|
|
|
5
5
|
export const EZVIZ_AUTH_ENDPOINT = '/v3/users/login/v5';
|
|
6
6
|
export const EZVIZ_DEVICES_ENDPOINT = '/v3/userdevices/v1/resources/pagelist';
|
|
7
7
|
export const EZVIZ_SWITCH_STATUS_ENDPOINT = '/api/device/switchStatus';
|
|
8
|
+
export const EZVIZ_DEFENCE_MODE_ENDPOINT = '/v3/userdevices/v1/group/switchDefenceMode';
|
|
9
|
+
export const EZVIZ_DEFENCE_MODE_GET_ENDPOINT = '/v3/userdevices/v1/group/defenceMode';
|
|
8
10
|
export const API_ENDPOINT_REFRESH = '/v3/apigateway/login';
|
|
9
11
|
export const RUSSIA_AREA_ID = 114;
|
|
10
12
|
export const RUSSIA_DOMAIN = 'apiirus.ezvizru.com';
|
|
13
|
+
export const DEFAULT_GROUP_ID = -1;
|
|
11
14
|
//# sourceMappingURL=ezviz-constants.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ezviz-constants.js","sourceRoot":"","sources":["../../src/api/ezviz-constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,iBAAiB,GAAG,GAAG,CAAC;AACrC,MAAM,CAAC,MAAM,gBAAgB,GAAG,4CAA4C,CAAC;AAC7E,MAAM,CAAC,MAAM,kBAAkB,GAAG,2BAA2B,CAAC;AAC9D,MAAM,CAAC,MAAM,sBAAsB,GAAG,kBAAkB,CAAC;AACzD,MAAM,CAAC,MAAM,mBAAmB,GAAG,oBAAoB,CAAC;AACxD,MAAM,CAAC,MAAM,sBAAsB,GAAG,uCAAuC,CAAC;AAC9E,MAAM,CAAC,MAAM,4BAA4B,GAAG,0BAA0B,CAAC;AACvE,MAAM,CAAC,MAAM,oBAAoB,GAAG,sBAAsB,CAAC;AAC3D,MAAM,CAAC,MAAM,cAAc,GAAG,GAAG,CAAC;AAClC,MAAM,CAAC,MAAM,aAAa,GAAG,qBAAqB,CAAC"}
|
|
1
|
+
{"version":3,"file":"ezviz-constants.js","sourceRoot":"","sources":["../../src/api/ezviz-constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,iBAAiB,GAAG,GAAG,CAAC;AACrC,MAAM,CAAC,MAAM,gBAAgB,GAAG,4CAA4C,CAAC;AAC7E,MAAM,CAAC,MAAM,kBAAkB,GAAG,2BAA2B,CAAC;AAC9D,MAAM,CAAC,MAAM,sBAAsB,GAAG,kBAAkB,CAAC;AACzD,MAAM,CAAC,MAAM,mBAAmB,GAAG,oBAAoB,CAAC;AACxD,MAAM,CAAC,MAAM,sBAAsB,GAAG,uCAAuC,CAAC;AAC9E,MAAM,CAAC,MAAM,4BAA4B,GAAG,0BAA0B,CAAC;AACvE,MAAM,CAAC,MAAM,2BAA2B,GAAG,4CAA4C,CAAC;AACxF,MAAM,CAAC,MAAM,+BAA+B,GAAG,sCAAsC,CAAC;AACtF,MAAM,CAAC,MAAM,oBAAoB,GAAG,sBAAsB,CAAC;AAC3D,MAAM,CAAC,MAAM,cAAc,GAAG,GAAG,CAAC;AAClC,MAAM,CAAC,MAAM,aAAa,GAAG,qBAAqB,CAAC;AACnD,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,CAAC"}
|
package/dist/platform.js
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { SmartPlug } from './accessories/smart-plug.js';
|
|
2
2
|
import { IPCamera } from './accessories/ip-camera.js';
|
|
3
|
+
import { AlarmModeSwitch } from './accessories/alarm-mode-switch.js';
|
|
3
4
|
import { PLATFORM_NAME, PLUGIN_NAME } from './settings.js';
|
|
4
5
|
import { EZVIZAPI } from './api/ezviz-api.js';
|
|
5
|
-
import { DeviceTypes } from './utils/enums.js';
|
|
6
|
+
import { DeviceTypes, CAMERA_DEVICE_TYPES } from './utils/enums.js';
|
|
6
7
|
/**
|
|
7
8
|
* EZVIZ Platform for Homebridge
|
|
8
9
|
* Handles device discovery, authentication, and accessory management
|
|
@@ -34,14 +35,14 @@ export class EZVIZPlatform {
|
|
|
34
35
|
const ezvizAPI = new EZVIZAPI(this.config, this.log);
|
|
35
36
|
const credentials = await this.authenticate(ezvizAPI);
|
|
36
37
|
if (credentials) {
|
|
37
|
-
//
|
|
38
|
+
// Refresh session every 12 hours (uses refresh token, falls back to full re-auth)
|
|
38
39
|
setInterval(async () => {
|
|
39
|
-
this.log.debug('
|
|
40
|
+
this.log.debug('Refreshing EZVIZ session');
|
|
40
41
|
try {
|
|
41
|
-
await
|
|
42
|
+
await ezvizAPI.refreshSession();
|
|
42
43
|
}
|
|
43
44
|
catch (error) {
|
|
44
|
-
this.log.error('
|
|
45
|
+
this.log.error('Session refresh failed:', error);
|
|
45
46
|
}
|
|
46
47
|
}, 3600000 * 12);
|
|
47
48
|
await this.discoverDevices(ezvizAPI);
|
|
@@ -122,6 +123,20 @@ export class EZVIZPlatform {
|
|
|
122
123
|
}
|
|
123
124
|
this.discoveredCacheUUIDs.push(device.UUID);
|
|
124
125
|
}
|
|
126
|
+
// Create a single alarm mode switch accessory
|
|
127
|
+
const alarmUuid = this.api.hap.uuid.generate('EZVIZ-AlarmMode');
|
|
128
|
+
const existingAlarmAccessory = this.accessories.get(alarmUuid);
|
|
129
|
+
if (existingAlarmAccessory) {
|
|
130
|
+
this.log.debug('Restoring existing alarm mode switch from cache');
|
|
131
|
+
new AlarmModeSwitch(ezvizAPI, this, existingAlarmAccessory);
|
|
132
|
+
}
|
|
133
|
+
else {
|
|
134
|
+
this.log.info('Adding new alarm mode switch');
|
|
135
|
+
const alarmAccessory = new this.api.platformAccessory('Alarm Mode', alarmUuid);
|
|
136
|
+
this.api.registerPlatformAccessories(PLUGIN_NAME, PLATFORM_NAME, [alarmAccessory]);
|
|
137
|
+
new AlarmModeSwitch(ezvizAPI, this, alarmAccessory);
|
|
138
|
+
}
|
|
139
|
+
this.discoveredCacheUUIDs.push(alarmUuid);
|
|
125
140
|
// Remove accessories that are no longer available
|
|
126
141
|
for (const [uuid, accessory] of this.accessories) {
|
|
127
142
|
if (!this.discoveredCacheUUIDs.includes(uuid)) {
|
|
@@ -145,7 +160,7 @@ export class EZVIZPlatform {
|
|
|
145
160
|
if (deviceType === DeviceTypes.Socket) {
|
|
146
161
|
new SmartPlug(ezvizAPI, this, accessory);
|
|
147
162
|
}
|
|
148
|
-
else if (
|
|
163
|
+
else if (CAMERA_DEVICE_TYPES.has(deviceType)) {
|
|
149
164
|
new IPCamera(ezvizAPI, this, accessory);
|
|
150
165
|
}
|
|
151
166
|
else {
|
|
@@ -174,7 +189,7 @@ export class EZVIZPlatform {
|
|
|
174
189
|
if (deviceType === DeviceTypes.Socket) {
|
|
175
190
|
deviceConfig = this.config.plugs?.find((plug) => plug.serial === device.deviceSerial);
|
|
176
191
|
}
|
|
177
|
-
else if (
|
|
192
|
+
else if (CAMERA_DEVICE_TYPES.has(deviceType)) {
|
|
178
193
|
deviceConfig = this.config.cameras?.find((camera) => camera.serial === device.deviceSerial);
|
|
179
194
|
if (!deviceConfig) {
|
|
180
195
|
this.log.info(`Camera ${device.name} (${device.deviceSerial}) is not configured and will be skipped`);
|
|
@@ -187,7 +202,7 @@ export class EZVIZPlatform {
|
|
|
187
202
|
}
|
|
188
203
|
}
|
|
189
204
|
// Check if this is a dual camera
|
|
190
|
-
const isDualCamera = deviceType === DeviceTypes.IPC && deviceConfig
|
|
205
|
+
const isDualCamera = deviceType === DeviceTypes.IPC && !!deviceConfig?.dualCamera;
|
|
191
206
|
if (isDualCamera) {
|
|
192
207
|
// Create two separate camera accessories for dual camera devices
|
|
193
208
|
const cameraChannels = [
|
|
@@ -206,6 +221,7 @@ export class EZVIZPlatform {
|
|
|
206
221
|
Name: deviceName,
|
|
207
222
|
Type: deviceType,
|
|
208
223
|
Connection: devicesResponse.CONNECTION[device.deviceSerial],
|
|
224
|
+
Wifi: devicesResponse.WIFI?.[device.deviceSerial],
|
|
209
225
|
Status: devicesResponse.STATUS[device.deviceSerial],
|
|
210
226
|
Switches: devicesResponse.SWITCH[device.deviceSerial],
|
|
211
227
|
P2P: devicesResponse.P2P[device.deviceSerial],
|
|
@@ -223,6 +239,7 @@ export class EZVIZPlatform {
|
|
|
223
239
|
Name: device.name,
|
|
224
240
|
Type: deviceType,
|
|
225
241
|
Connection: devicesResponse.CONNECTION[device.deviceSerial],
|
|
242
|
+
Wifi: devicesResponse.WIFI?.[device.deviceSerial],
|
|
226
243
|
Status: devicesResponse.STATUS[device.deviceSerial],
|
|
227
244
|
Switches: devicesResponse.SWITCH[device.deviceSerial],
|
|
228
245
|
P2P: devicesResponse.P2P[device.deviceSerial],
|
package/dist/platform.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"platform.js","sourceRoot":"","sources":["../src/platform.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AACxD,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC3D,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAG9C,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"platform.js","sourceRoot":"","sources":["../src/platform.ts"],"names":[],"mappings":"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"}
|
package/dist/types/data.d.ts
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import { DeviceConfig } from './config.js';
|
|
2
|
-
import { ConnectionInfo, DeviceStatus, SwitchItem, P2PItem, ResourceInfo, DeviceInfo } from './devices.js';
|
|
2
|
+
import { ConnectionInfo, WifiInfo, DeviceStatus, SwitchItem, P2PItem, ResourceInfo, DeviceInfo } from './devices.js';
|
|
3
3
|
export interface DeviceData {
|
|
4
4
|
UUID: string;
|
|
5
5
|
Serial: string;
|
|
6
6
|
Name: string;
|
|
7
7
|
Type: string;
|
|
8
8
|
Connection: ConnectionInfo;
|
|
9
|
+
Wifi?: WifiInfo;
|
|
9
10
|
Status: DeviceStatus;
|
|
10
11
|
Switches: SwitchItem[];
|
|
11
12
|
P2P: P2PItem[];
|
package/dist/types/devices.d.ts
CHANGED
|
@@ -13,6 +13,11 @@ export interface ConnectionInfo {
|
|
|
13
13
|
wanIp: string;
|
|
14
14
|
upnp: boolean;
|
|
15
15
|
}
|
|
16
|
+
export interface WifiInfo {
|
|
17
|
+
address: string;
|
|
18
|
+
ssid?: string;
|
|
19
|
+
netType?: string;
|
|
20
|
+
}
|
|
16
21
|
interface Connection {
|
|
17
22
|
[deviceSerial: string]: ConnectionInfo;
|
|
18
23
|
}
|
|
@@ -107,8 +112,12 @@ export interface DeviceInfo {
|
|
|
107
112
|
classify: number;
|
|
108
113
|
tags: null | string[];
|
|
109
114
|
}
|
|
115
|
+
interface Wifi {
|
|
116
|
+
[deviceSerial: string]: WifiInfo;
|
|
117
|
+
}
|
|
110
118
|
export interface ListDevicesResponse {
|
|
111
119
|
CONNECTION: Connection;
|
|
120
|
+
WIFI: Wifi;
|
|
112
121
|
STATUS: Status;
|
|
113
122
|
meta: Meta;
|
|
114
123
|
NODISTURB: Record<string, unknown>;
|
package/dist/utils/enums.d.ts
CHANGED
|
@@ -1,10 +1,19 @@
|
|
|
1
1
|
export declare enum DeviceTypes {
|
|
2
2
|
IPC = "Camera",
|
|
3
|
+
BatteryCamera = "Battery Camera",
|
|
4
|
+
BDoorBell = "Doorbell",
|
|
3
5
|
Socket = "Plug",
|
|
4
6
|
CatEye = "Peephole"
|
|
5
7
|
}
|
|
8
|
+
export declare const CAMERA_DEVICE_TYPES: Set<DeviceTypes>;
|
|
6
9
|
export declare enum SwitchTypes {
|
|
7
10
|
On = 14,
|
|
8
11
|
Sleep = 21,
|
|
9
12
|
Audio = 22
|
|
10
13
|
}
|
|
14
|
+
export declare enum DefenceMode {
|
|
15
|
+
UNSET_MODE = 0,
|
|
16
|
+
HOME_MODE = 1,
|
|
17
|
+
AWAY_MODE = 2,
|
|
18
|
+
SLEEP_MODE = 3
|
|
19
|
+
}
|
package/dist/utils/enums.js
CHANGED
|
@@ -1,13 +1,28 @@
|
|
|
1
1
|
export var DeviceTypes;
|
|
2
2
|
(function (DeviceTypes) {
|
|
3
3
|
DeviceTypes["IPC"] = "Camera";
|
|
4
|
+
DeviceTypes["BatteryCamera"] = "Battery Camera";
|
|
5
|
+
DeviceTypes["BDoorBell"] = "Doorbell";
|
|
4
6
|
DeviceTypes["Socket"] = "Plug";
|
|
5
7
|
DeviceTypes["CatEye"] = "Peephole";
|
|
6
8
|
})(DeviceTypes || (DeviceTypes = {}));
|
|
9
|
+
export const CAMERA_DEVICE_TYPES = new Set([
|
|
10
|
+
DeviceTypes.IPC,
|
|
11
|
+
DeviceTypes.BatteryCamera,
|
|
12
|
+
DeviceTypes.BDoorBell,
|
|
13
|
+
DeviceTypes.CatEye,
|
|
14
|
+
]);
|
|
7
15
|
export var SwitchTypes;
|
|
8
16
|
(function (SwitchTypes) {
|
|
9
17
|
SwitchTypes[SwitchTypes["On"] = 14] = "On";
|
|
10
18
|
SwitchTypes[SwitchTypes["Sleep"] = 21] = "Sleep";
|
|
11
19
|
SwitchTypes[SwitchTypes["Audio"] = 22] = "Audio";
|
|
12
20
|
})(SwitchTypes || (SwitchTypes = {}));
|
|
21
|
+
export var DefenceMode;
|
|
22
|
+
(function (DefenceMode) {
|
|
23
|
+
DefenceMode[DefenceMode["UNSET_MODE"] = 0] = "UNSET_MODE";
|
|
24
|
+
DefenceMode[DefenceMode["HOME_MODE"] = 1] = "HOME_MODE";
|
|
25
|
+
DefenceMode[DefenceMode["AWAY_MODE"] = 2] = "AWAY_MODE";
|
|
26
|
+
DefenceMode[DefenceMode["SLEEP_MODE"] = 3] = "SLEEP_MODE";
|
|
27
|
+
})(DefenceMode || (DefenceMode = {}));
|
|
13
28
|
//# sourceMappingURL=enums.js.map
|
package/dist/utils/enums.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"enums.js","sourceRoot":"","sources":["../../src/utils/enums.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,
|
|
1
|
+
{"version":3,"file":"enums.js","sourceRoot":"","sources":["../../src/utils/enums.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,WAMX;AAND,WAAY,WAAW;IACrB,6BAAc,CAAA;IACd,+CAAgC,CAAA;IAChC,qCAAsB,CAAA;IACtB,8BAAe,CAAA;IACf,kCAAmB,CAAA;AACrB,CAAC,EANW,WAAW,KAAX,WAAW,QAMtB;AAED,MAAM,CAAC,MAAM,mBAAmB,GAAG,IAAI,GAAG,CAAC;IACzC,WAAW,CAAC,GAAG;IACf,WAAW,CAAC,aAAa;IACzB,WAAW,CAAC,SAAS;IACrB,WAAW,CAAC,MAAM;CACnB,CAAC,CAAC;AAEH,MAAM,CAAN,IAAY,WAIX;AAJD,WAAY,WAAW;IACrB,0CAAO,CAAA;IACP,gDAAU,CAAA;IACV,gDAAU,CAAA;AACZ,CAAC,EAJW,WAAW,KAAX,WAAW,QAItB;AAED,MAAM,CAAN,IAAY,WAKX;AALD,WAAY,WAAW;IACrB,yDAAc,CAAA;IACd,uDAAa,CAAA;IACb,uDAAa,CAAA;IACb,yDAAc,CAAA;AAChB,CAAC,EALW,WAAW,KAAX,WAAW,QAKtB"}
|
|
@@ -13,6 +13,7 @@ export declare class StreamingDelegate implements CameraStreamingDelegate {
|
|
|
13
13
|
private ongoingSessions;
|
|
14
14
|
constructor(hap: HAP, deviceData: DeviceData, log: Logging);
|
|
15
15
|
private getOfflineImage;
|
|
16
|
+
private getRtspUrl;
|
|
16
17
|
handleSnapshotRequest(request: SnapshotRequest, callback: SnapshotRequestCallback): void;
|
|
17
18
|
prepareStream(request: PrepareStreamRequest, callback: PrepareStreamCallback): Promise<void>;
|
|
18
19
|
private getCommand;
|
|
@@ -51,15 +51,21 @@ export class StreamingDelegate {
|
|
|
51
51
|
}
|
|
52
52
|
});
|
|
53
53
|
}
|
|
54
|
+
getRtspUrl() {
|
|
55
|
+
const ip = this.deviceData.Wifi?.address && this.deviceData.Wifi.address !== '0.0.0.0'
|
|
56
|
+
? this.deviceData.Wifi.address
|
|
57
|
+
: this.deviceData.Connection.localIp;
|
|
58
|
+
const port = this.deviceData.Connection.localRtspPort || 554;
|
|
59
|
+
const channel = this.deviceData.DeviceInfo.channelNumber || 1;
|
|
60
|
+
return `rtsp://${this.cameraConfig.username}:${this.cameraConfig.code}@${ip}:${port}/Streaming/Channels/${channel}/`;
|
|
61
|
+
}
|
|
54
62
|
handleSnapshotRequest(request, callback) {
|
|
55
63
|
const sleepSwitch = this.deviceData.Switches?.find((x) => x.type === SwitchTypes.Sleep);
|
|
56
64
|
if (sleepSwitch?.enable) {
|
|
57
65
|
this.getOfflineImage(callback);
|
|
58
66
|
}
|
|
59
67
|
else {
|
|
60
|
-
const url =
|
|
61
|
-
`${this.deviceData.Connection.localIp}/Streaming/Channels/` +
|
|
62
|
-
`${this.deviceData.DeviceInfo.channelNumber}/`;
|
|
68
|
+
const url = this.getRtspUrl();
|
|
63
69
|
getSnapshot(url)
|
|
64
70
|
.then((snapshot) => {
|
|
65
71
|
callback(undefined, snapshot);
|
|
@@ -130,8 +136,6 @@ export class StreamingDelegate {
|
|
|
130
136
|
const videoSsrc = sessionInfo.videoSSRC;
|
|
131
137
|
const videoSRTP = sessionInfo.videoSRTP.toString('base64');
|
|
132
138
|
const address = sessionInfo.address;
|
|
133
|
-
// Multiply the bitrate because homekit requests extremely low bitrates
|
|
134
|
-
const bitrate = videoInfo.max_bit_rate * 4;
|
|
135
139
|
const videoPayloadType = videoInfo.pt;
|
|
136
140
|
const mtu = videoInfo.mtu; // maximum transmission unit
|
|
137
141
|
const audioPort = sessionInfo.audioPort;
|
|
@@ -142,33 +146,18 @@ export class StreamingDelegate {
|
|
|
142
146
|
const audioMaxBitrate = audioInfo.max_bit_rate;
|
|
143
147
|
const sampleRate = audioInfo.sample_rate;
|
|
144
148
|
let command = [
|
|
145
|
-
'-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
'-
|
|
150
|
-
'
|
|
151
|
-
'-c:v',
|
|
152
|
-
'copy',
|
|
153
|
-
'-b:v',
|
|
154
|
-
`${bitrate}k`,
|
|
155
|
-
'-bufsize',
|
|
156
|
-
`${bitrate}k`,
|
|
157
|
-
'-maxrate',
|
|
158
|
-
`${2 * bitrate}k`,
|
|
159
|
-
'-pix_fmt',
|
|
160
|
-
'yuv420p',
|
|
149
|
+
'-rtsp_transport', 'tcp',
|
|
150
|
+
'-use_wallclock_as_timestamps', '1',
|
|
151
|
+
'-i', this.getRtspUrl(),
|
|
152
|
+
'-map', '0:0',
|
|
153
|
+
'-c:v', 'copy',
|
|
154
|
+
'-pix_fmt', 'yuv420p',
|
|
161
155
|
'-an',
|
|
162
|
-
'-payload_type',
|
|
163
|
-
|
|
164
|
-
'-
|
|
165
|
-
|
|
166
|
-
'-
|
|
167
|
-
'rtp',
|
|
168
|
-
'-srtp_out_suite',
|
|
169
|
-
'AES_CM_128_HMAC_SHA1_80',
|
|
170
|
-
'-srtp_out_params',
|
|
171
|
-
videoSRTP,
|
|
156
|
+
'-payload_type', videoPayloadType.toString(),
|
|
157
|
+
'-ssrc', videoSsrc.toString(),
|
|
158
|
+
'-f', 'rtp',
|
|
159
|
+
'-srtp_out_suite', 'AES_CM_128_HMAC_SHA1_80',
|
|
160
|
+
'-srtp_out_params', videoSRTP,
|
|
172
161
|
`srtp://${address}:${videoPort}?rtcpport=${videoPort}&localrtcpport=${returnVideoPort}&pkt_size=${mtu}`,
|
|
173
162
|
];
|
|
174
163
|
if (this.ffmpegSupportsLibfdk_acc) {
|
|
@@ -184,6 +173,8 @@ export class StreamingDelegate {
|
|
|
184
173
|
'-ac',
|
|
185
174
|
'1',
|
|
186
175
|
'-vn',
|
|
176
|
+
'-af',
|
|
177
|
+
'aresample=async=1:min_hard_comp=0.100000:first_pts=0',
|
|
187
178
|
'-ar',
|
|
188
179
|
`${sampleRate}k`,
|
|
189
180
|
'-b:a',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"streaming-delegate.js","sourceRoot":"","sources":["../../src/utils/streaming-delegate.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC7F,OAAO,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAC;AAC9B,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,YAAY,MAAM,uBAAuB,CAAC;AAsBjD,MAAM,OAAO,iBAAiB;IACX,GAAG,CAAM;IACT,GAAG,CAAU;IACtB,cAAc,CAAS;IACvB,eAAe,GAAG,IAAI,CAAC;IACvB,wBAAwB,GAAG,IAAI,CAAC;IAChC,UAAU,CAAa;IACvB,YAAY,CAAe;IACnC,UAAU,CAAoB;IAE9B,yBAAyB;IACjB,eAAe,GAAgC,EAAE,CAAC;IAClD,eAAe,GAA8C,EAAE,CAAC;IAExE,YAAY,GAAQ,EAAE,UAAsB,EAAE,GAAY;QACxD,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,YAAY,GAAG,UAAU,CAAC,QAAwB,CAAC;QACxD,IAAI,CAAC,cAAc,GAAG,YAAiC,IAAI,QAAQ,CAAC;QAEpE,+BAA+B;QAC/B,iBAAiB,CAAC,IAAI,CAAC,cAAc,CAAC;aACnC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE;YAClB,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC;QACnC,CAAC,CAAC;aACD,KAAK,CAAC,GAAG,EAAE;YACV,OAAO;QACT,CAAC,CAAC,CAAC;QAEL,8BAA8B;QAC9B,eAAe,CAAC,IAAI,CAAC,cAAc,CAAC;aACjC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;YACf,IAAI,CAAC,wBAAwB,GAAG,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;QAChE,CAAC,CAAC;aACD,KAAK,CAAC,GAAG,EAAE;YACV,OAAO;QACT,CAAC,CAAC,CAAC;IACP,CAAC;IAEO,eAAe,CAAC,QAAiC;QACvD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;QACrB,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,uBAAuB,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE;YAC/D,IAAI,GAAG,EAAE,CAAC;gBACR,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBACvB,QAAQ,CAAC,GAAG,CAAC,CAAC;YAChB,CAAC;iBAAM,CAAC;gBACN,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;YAC5B,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;
|
|
1
|
+
{"version":3,"file":"streaming-delegate.js","sourceRoot":"","sources":["../../src/utils/streaming-delegate.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "@viguza/homebridge-ezviz",
|
|
3
3
|
"displayName": "EZVIZ Homebridge Plugin",
|
|
4
4
|
"type": "module",
|
|
5
|
-
"version": "1.
|
|
5
|
+
"version": "1.6.0",
|
|
6
6
|
"private": false,
|
|
7
7
|
"description": "A short description about what your plugin does.",
|
|
8
8
|
"author": "Victor Guzman",
|
|
@@ -36,7 +36,7 @@
|
|
|
36
36
|
"build": "rimraf ./dist && tsc",
|
|
37
37
|
"start": "homebridge -D",
|
|
38
38
|
"lint": "eslint . --max-warnings=0",
|
|
39
|
-
"prepublishOnly": "npm run lint && npm run build",
|
|
39
|
+
"prepublishOnly": "npm run lint && npm run build && npm test",
|
|
40
40
|
"watch": "npm run build && npm link && nodemon",
|
|
41
41
|
"test": "jest"
|
|
42
42
|
},
|