homebridge-eufy-security 2.3.4 → 2.3.5
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/dist/accessories/BaseAccessory.d.ts +10 -6
- package/dist/accessories/BaseAccessory.d.ts.map +1 -1
- package/dist/accessories/BaseAccessory.js +19 -16
- package/dist/accessories/BaseAccessory.js.map +1 -1
- package/dist/accessories/CameraAccessory.d.ts +47 -8
- package/dist/accessories/CameraAccessory.d.ts.map +1 -1
- package/dist/accessories/CameraAccessory.js +320 -118
- package/dist/accessories/CameraAccessory.js.map +1 -1
- package/dist/accessories/Device.d.ts +1 -1
- package/dist/accessories/Device.d.ts.map +1 -1
- package/dist/accessories/Device.js +4 -4
- package/dist/accessories/Device.js.map +1 -1
- package/dist/accessories/EntrySensorAccessory.d.ts +1 -1
- package/dist/accessories/EntrySensorAccessory.d.ts.map +1 -1
- package/dist/accessories/EntrySensorAccessory.js +3 -3
- package/dist/accessories/EntrySensorAccessory.js.map +1 -1
- package/dist/accessories/LockAccessory.d.ts +1 -1
- package/dist/accessories/LockAccessory.d.ts.map +1 -1
- package/dist/accessories/LockAccessory.js +1 -1
- package/dist/accessories/LockAccessory.js.map +1 -1
- package/dist/accessories/MotionSensorAccessory.d.ts +1 -1
- package/dist/accessories/MotionSensorAccessory.d.ts.map +1 -1
- package/dist/accessories/MotionSensorAccessory.js +3 -3
- package/dist/accessories/MotionSensorAccessory.js.map +1 -1
- package/dist/accessories/StationAccessory.d.ts +1 -1
- package/dist/accessories/StationAccessory.d.ts.map +1 -1
- package/dist/accessories/StationAccessory.js +30 -30
- package/dist/accessories/StationAccessory.js.map +1 -1
- package/dist/config.d.ts +3 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +1 -0
- package/dist/config.js.map +1 -1
- package/dist/controller/LiveStream.d.ts +21 -0
- package/dist/controller/LiveStream.d.ts.map +1 -0
- package/dist/controller/LiveStream.js +117 -0
- package/dist/controller/LiveStream.js.map +1 -0
- package/dist/controller/LocalLivestreamManager.d.ts +3 -1
- package/dist/controller/LocalLivestreamManager.d.ts.map +1 -1
- package/dist/controller/LocalLivestreamManager.js +41 -0
- package/dist/controller/LocalLivestreamManager.js.map +1 -1
- package/dist/controller/Talkback.d.ts +65 -0
- package/dist/controller/Talkback.d.ts.map +1 -0
- package/dist/controller/Talkback.js +119 -0
- package/dist/controller/Talkback.js.map +1 -0
- package/dist/interfaces.d.ts +1 -1
- package/dist/interfaces.d.ts.map +1 -1
- package/dist/platform.d.ts +9 -1
- package/dist/platform.d.ts.map +1 -1
- package/dist/platform.js +51 -2
- package/dist/platform.js.map +1 -1
- package/dist/settings.d.ts +10 -0
- package/dist/settings.d.ts.map +1 -1
- package/dist/settings.js +22 -1
- package/dist/settings.js.map +1 -1
- package/dist/utils/EufyClientInteractor.d.ts +1 -8
- package/dist/utils/EufyClientInteractor.d.ts.map +1 -1
- package/dist/utils/EufyClientInteractor.js +1 -110
- package/dist/utils/EufyClientInteractor.js.map +1 -1
- package/dist/utils/ffmpeg-codec.d.ts +20 -0
- package/dist/utils/ffmpeg-codec.d.ts.map +1 -0
- package/dist/utils/ffmpeg-codec.js +151 -0
- package/dist/utils/ffmpeg-codec.js.map +1 -0
- package/dist/utils/ffmpeg-new.d.ts +38 -0
- package/dist/utils/ffmpeg-new.d.ts.map +1 -0
- package/dist/utils/ffmpeg-new.js +234 -0
- package/dist/utils/ffmpeg-new.js.map +1 -0
- package/dist/utils/ffmpeg-options.d.ts +21 -0
- package/dist/utils/ffmpeg-options.d.ts.map +1 -0
- package/dist/utils/ffmpeg-options.js +522 -0
- package/dist/utils/ffmpeg-options.js.map +1 -0
- package/dist/utils/ffmpeg-record.d.ts +16 -0
- package/dist/utils/ffmpeg-record.d.ts.map +1 -0
- package/dist/utils/ffmpeg-record.js +222 -0
- package/dist/utils/ffmpeg-record.js.map +1 -0
- package/dist/utils/ffmpeg-stream.d.ts +19 -0
- package/dist/utils/ffmpeg-stream.d.ts.map +1 -0
- package/dist/utils/ffmpeg-stream.js +89 -0
- package/dist/utils/ffmpeg-stream.js.map +1 -0
- package/dist/utils/interfaces.d.ts +0 -5
- package/dist/utils/interfaces.d.ts.map +1 -1
- package/dist/utils/record.d.ts +33 -0
- package/dist/utils/record.d.ts.map +1 -0
- package/dist/utils/record.js +382 -0
- package/dist/utils/record.js.map +1 -0
- package/dist/utils/rtp.d.ts +26 -0
- package/dist/utils/rtp.d.ts.map +1 -0
- package/dist/utils/rtp.js +174 -0
- package/dist/utils/rtp.js.map +1 -0
- package/dist/utils/stream.d.ts +38 -0
- package/dist/utils/stream.d.ts.map +1 -0
- package/dist/utils/stream.js +704 -0
- package/dist/utils/stream.js.map +1 -0
- package/dist/utils/timeshift.d.ts +30 -0
- package/dist/utils/timeshift.d.ts.map +1 -0
- package/dist/utils/timeshift.js +175 -0
- package/dist/utils/timeshift.js.map +1 -0
- package/dist/utils/utils.d.ts +1 -1
- package/dist/utils/utils.d.ts.map +1 -1
- package/dist/utils/utils.js +1 -1
- package/dist/utils/utils.js.map +1 -1
- package/homebridge-ui/plugin/utils/EufyClientInteractor.d.ts +1 -8
- package/homebridge-ui/plugin/utils/EufyClientInteractor.d.ts.map +1 -1
- package/homebridge-ui/plugin/utils/EufyClientInteractor.js +1 -110
- package/homebridge-ui/plugin/utils/EufyClientInteractor.js.map +1 -1
- package/homebridge-ui/plugin/utils/interfaces.d.ts +0 -5
- package/homebridge-ui/plugin/utils/interfaces.d.ts.map +1 -1
- package/homebridge-ui/public/index.html +2 -2
- package/homebridge-ui/public/main.7f98b53586c6100c.js +1 -0
- package/homebridge-ui/public/polyfills.1ab36b8b9e023fa6.js +1 -0
- package/homebridge-ui/public/styles.a8f5287297d4e979.css +5 -0
- package/homebridge-ui/server.js +1 -7
- package/homebridge-ui/server.js.map +1 -1
- package/media/Snapshot-Unavailable.png +0 -0
- package/media/Snapshot-Unavailable.xcf +0 -0
- package/media/camera-offline.png +0 -0
- package/package.json +22 -20
- package/dist/controller/SnapshotManager.d.ts +0 -54
- package/dist/controller/SnapshotManager.d.ts.map +0 -1
- package/dist/controller/SnapshotManager.js +0 -386
- package/dist/controller/SnapshotManager.js.map +0 -1
- package/dist/controller/recordingDelegate.d.ts +0 -28
- package/dist/controller/recordingDelegate.d.ts.map +0 -1
- package/dist/controller/recordingDelegate.js +0 -186
- package/dist/controller/recordingDelegate.js.map +0 -1
- package/dist/controller/streamingDelegate.d.ts +0 -60
- package/dist/controller/streamingDelegate.d.ts.map +0 -1
- package/dist/controller/streamingDelegate.js +0 -303
- package/dist/controller/streamingDelegate.js.map +0 -1
- package/dist/utils/Talkback.d.ts +0 -24
- package/dist/utils/Talkback.d.ts.map +0 -1
- package/dist/utils/Talkback.js +0 -95
- package/dist/utils/Talkback.js.map +0 -1
- package/dist/utils/experimental.d.ts +0 -4
- package/dist/utils/experimental.d.ts.map +0 -1
- package/dist/utils/experimental.js +0 -49
- package/dist/utils/experimental.js.map +0 -1
- package/dist/utils/ffmpeg.d.ts +0 -118
- package/dist/utils/ffmpeg.d.ts.map +0 -1
- package/dist/utils/ffmpeg.js +0 -863
- package/dist/utils/ffmpeg.js.map +0 -1
- package/homebridge-ui/plugin/utils/experimental.d.ts +0 -4
- package/homebridge-ui/plugin/utils/experimental.d.ts.map +0 -1
- package/homebridge-ui/plugin/utils/experimental.js +0 -49
- package/homebridge-ui/plugin/utils/experimental.js.map +0 -1
- package/homebridge-ui/public/main.654a3c2dbcdbfb3f.js +0 -1
- package/homebridge-ui/public/polyfills.cdb21ff95fdea645.js +0 -1
- package/homebridge-ui/public/styles.68268876f5e65c91.css +0 -5
|
@@ -1,18 +1,22 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
|
-
import { PlatformAccessory, Characteristic, CharacteristicValue, Service, WithUUID } from 'homebridge';
|
|
2
|
+
import { PlatformAccessory, Characteristic, CharacteristicValue, Service, WithUUID, HAP } from 'homebridge';
|
|
3
3
|
import { EufySecurityPlatform } from '../platform';
|
|
4
|
-
import { DeviceEvents, PropertyValue, StationEvents } from 'eufy-security-client';
|
|
4
|
+
import { DeviceEvents, PropertyValue, StationEvents } from '@homebridge-eufy-security/eufy-security-client';
|
|
5
5
|
import { EventEmitter } from 'events';
|
|
6
|
+
import { Logger as TsLogger, ILogObj } from 'tslog';
|
|
6
7
|
export type CharacteristicType = WithUUID<{
|
|
7
8
|
new (): Characteristic;
|
|
8
9
|
}>;
|
|
9
10
|
export type ServiceType = WithUUID<typeof Service> | Service;
|
|
10
11
|
export declare abstract class BaseAccessory extends EventEmitter {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
12
|
+
readonly platform: EufySecurityPlatform;
|
|
13
|
+
readonly accessory: PlatformAccessory;
|
|
14
|
+
device: any;
|
|
14
15
|
protected servicesInUse: Service[];
|
|
15
|
-
|
|
16
|
+
readonly SN: string;
|
|
17
|
+
readonly name: string;
|
|
18
|
+
readonly log: TsLogger<ILogObj>;
|
|
19
|
+
readonly hap: HAP;
|
|
16
20
|
constructor(platform: EufySecurityPlatform, accessory: PlatformAccessory, device: any);
|
|
17
21
|
private logPropertyKeys;
|
|
18
22
|
protected handleRawPropertyChange(device: any, type: number, value: string): void;
|
|
@@ -1 +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,
|
|
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,EACR,GAAG,EACJ,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAc,YAAY,EAAE,aAAa,EAAmB,aAAa,EAAE,MAAM,gDAAgD,CAAC;AACzI,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAE,MAAM,IAAI,QAAQ,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAepD,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;aASpC,QAAQ,EAAE,oBAAoB;aAC9B,SAAS,EAAE,iBAAiB;IAErC,MAAM,EAAE,GAAG;IAVpB,SAAS,CAAC,aAAa,EAAE,OAAO,EAAE,CAAM;IACxC,SAAgB,EAAE,EAAE,MAAM,CAAC;IAC3B,SAAgB,IAAI,EAAE,MAAM,CAAC;IAC7B,SAAgB,GAAG,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAqB;IAC3D,SAAgB,GAAG,EAAE,GAAG,CAAyB;gBAG/B,QAAQ,EAAE,oBAAoB,EAC9B,SAAS,EAAE,iBAAiB,EAErC,MAAM,EAAE,GAAG;IAyDpB,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;;;;;;;OAOG;IACH,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;;;;;;;;OAQG;IACH,SAAS,CAAC,UAAU,CAClB,WAAW,EAAE,WAAW,EACxB,IAAI,SAAY,EAChB,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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.BaseAccessory = void 0;
|
|
4
|
-
const eufy_security_client_1 = require("eufy-security-client");
|
|
4
|
+
const eufy_security_client_1 = require("@homebridge-eufy-security/eufy-security-client");
|
|
5
5
|
const events_1 = require("events");
|
|
6
6
|
/**
|
|
7
7
|
* Determine if the serviceType is an instance of Service.
|
|
@@ -22,10 +22,13 @@ class BaseAccessory extends events_1.EventEmitter {
|
|
|
22
22
|
this.accessory = accessory;
|
|
23
23
|
this.device = device;
|
|
24
24
|
this.servicesInUse = [];
|
|
25
|
+
this.log = this.platform.log;
|
|
26
|
+
this.hap = this.platform.api.hap;
|
|
25
27
|
this.platform = platform;
|
|
26
28
|
this.accessory = accessory;
|
|
27
29
|
this.device = device;
|
|
28
30
|
this.SN = this.device.getSerial();
|
|
31
|
+
this.name = this.device.getName();
|
|
29
32
|
this.registerCharacteristic({
|
|
30
33
|
serviceType: this.platform.Service.AccessoryInformation,
|
|
31
34
|
characteristicType: this.platform.Characteristic.Manufacturer,
|
|
@@ -34,7 +37,7 @@ class BaseAccessory extends events_1.EventEmitter {
|
|
|
34
37
|
this.registerCharacteristic({
|
|
35
38
|
serviceType: this.platform.Service.AccessoryInformation,
|
|
36
39
|
characteristicType: this.platform.Characteristic.Name,
|
|
37
|
-
getValue: (data) => this.
|
|
40
|
+
getValue: (data) => this.name || 'Unknowm',
|
|
38
41
|
});
|
|
39
42
|
this.registerCharacteristic({
|
|
40
43
|
serviceType: this.platform.Service.AccessoryInformation,
|
|
@@ -68,15 +71,15 @@ class BaseAccessory extends events_1.EventEmitter {
|
|
|
68
71
|
logPropertyKeys() {
|
|
69
72
|
const properties = this.device.getProperties();
|
|
70
73
|
const keys = Object.keys(properties).join(', ');
|
|
71
|
-
this.
|
|
74
|
+
this.log.debug(`${this.name} Property Keys: ${keys}`);
|
|
72
75
|
}
|
|
73
76
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
74
77
|
handleRawPropertyChange(device, type, value) {
|
|
75
|
-
this.
|
|
78
|
+
this.log.debug(`${this.name} Raw Property Changes: ${type} ${value}`);
|
|
76
79
|
}
|
|
77
80
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
78
81
|
handlePropertyChange(device, name, value) {
|
|
79
|
-
this.
|
|
82
|
+
this.log.debug(`${this.name} Property Changes: ${name} ${value}`);
|
|
80
83
|
}
|
|
81
84
|
/**
|
|
82
85
|
* Register characteristics for a given Homebridge service.
|
|
@@ -88,15 +91,15 @@ class BaseAccessory extends events_1.EventEmitter {
|
|
|
88
91
|
*/
|
|
89
92
|
registerCharacteristic({ characteristicType, serviceType, getValue, setValue, onValue, onSimpleValue, onMultipleValue, name, serviceSubType, setValueDebounceTime = 0, }) {
|
|
90
93
|
// eslint-disable-next-line max-len
|
|
91
|
-
this.
|
|
94
|
+
this.log.debug(`${this.name} REGISTER CHARACTERISTIC '${serviceType.name} / ${characteristicType.name}`);
|
|
92
95
|
const service = this.getService(serviceType, name, serviceSubType);
|
|
93
96
|
const characteristic = service.getCharacteristic(characteristicType);
|
|
94
97
|
// eslint-disable-next-line max-len
|
|
95
|
-
this.
|
|
98
|
+
this.log.debug(`${this.name} REGISTER CHARACTERISTIC '(${service.UUID}) / (${characteristic.UUID})`);
|
|
96
99
|
if (getValue) {
|
|
97
100
|
characteristic.onGet(async (data) => {
|
|
98
101
|
const value = getValue(data, characteristic, service);
|
|
99
|
-
this.
|
|
102
|
+
this.log.debug(`${this.name} GET '${serviceType.name} / ${characteristicType.name}': ${value}`);
|
|
100
103
|
return value;
|
|
101
104
|
});
|
|
102
105
|
}
|
|
@@ -121,12 +124,12 @@ class BaseAccessory extends events_1.EventEmitter {
|
|
|
121
124
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
122
125
|
this.device.on(onSimpleValue, (device, value) => {
|
|
123
126
|
// eslint-disable-next-line max-len
|
|
124
|
-
this.
|
|
127
|
+
this.log.info(`${this.name} ON '${serviceType.name} / ${characteristicType.name} / ${onSimpleValue}': ${value}`);
|
|
125
128
|
characteristic.updateValue(value);
|
|
126
129
|
});
|
|
127
130
|
}
|
|
128
131
|
if (onValue) {
|
|
129
|
-
this.
|
|
132
|
+
this.log.debug(`${this.name} ON '${serviceType.name} / ${characteristicType.name}'`);
|
|
130
133
|
onValue(service, characteristic);
|
|
131
134
|
}
|
|
132
135
|
if (onMultipleValue) {
|
|
@@ -135,7 +138,7 @@ class BaseAccessory extends events_1.EventEmitter {
|
|
|
135
138
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
136
139
|
this.device.on(eventType, (device, value) => {
|
|
137
140
|
// eslint-disable-next-line max-len
|
|
138
|
-
this.
|
|
141
|
+
this.log.info(`${this.name} ON '${serviceType.name} / ${characteristicType.name} / ${eventType}': ${value}`);
|
|
139
142
|
characteristic.updateValue(value);
|
|
140
143
|
});
|
|
141
144
|
});
|
|
@@ -150,7 +153,7 @@ class BaseAccessory extends events_1.EventEmitter {
|
|
|
150
153
|
* @returns {Service} Returns the existing or newly created service.
|
|
151
154
|
* @throws Will throw an error if there are overlapping services.
|
|
152
155
|
*/
|
|
153
|
-
getService(serviceType, name = this.
|
|
156
|
+
getService(serviceType, name = this.name, subType) {
|
|
154
157
|
if (isServiceInstance(serviceType)) {
|
|
155
158
|
return serviceType;
|
|
156
159
|
}
|
|
@@ -160,7 +163,7 @@ class BaseAccessory extends events_1.EventEmitter {
|
|
|
160
163
|
if (existingService &&
|
|
161
164
|
existingService.displayName &&
|
|
162
165
|
name !== existingService.displayName) {
|
|
163
|
-
throw new Error(`Overlapping services for device ${this.
|
|
166
|
+
throw new Error(`Overlapping services for device ${this.name} - ${name} != ${existingService.displayName} - ${serviceType}`);
|
|
164
167
|
}
|
|
165
168
|
if (!this.servicesInUse.includes(service)) {
|
|
166
169
|
this.servicesInUse.push(service);
|
|
@@ -175,7 +178,7 @@ class BaseAccessory extends events_1.EventEmitter {
|
|
|
175
178
|
if (!this.servicesInUse.includes(service) &&
|
|
176
179
|
!safeServiceUUIDs.includes(service.UUID)) {
|
|
177
180
|
// eslint-disable-next-line max-len
|
|
178
|
-
this.
|
|
181
|
+
this.log.debug(`${this.name} Pruning unused service ${service.UUID} ${service.displayName || service.name}`);
|
|
179
182
|
this.accessory.removeService(service);
|
|
180
183
|
}
|
|
181
184
|
});
|
|
@@ -189,11 +192,11 @@ class BaseAccessory extends events_1.EventEmitter {
|
|
|
189
192
|
if (currentValue === undefined) {
|
|
190
193
|
throw new Error(`Invalid serviceName: ${serviceName}`);
|
|
191
194
|
}
|
|
192
|
-
this.
|
|
195
|
+
this.log.debug(`${this.name} IGNORE GET ${serviceName}: ${currentValue}`);
|
|
193
196
|
return Promise.resolve(currentValue);
|
|
194
197
|
}
|
|
195
198
|
handleDummyEventSet(serviceName, value) {
|
|
196
|
-
this.
|
|
199
|
+
this.log.debug(`${this.name} IGNORE SET ${serviceName}: ${value}`);
|
|
197
200
|
}
|
|
198
201
|
}
|
|
199
202
|
exports.BaseAccessory = BaseAccessory;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BaseAccessory.js","sourceRoot":"","sources":["../../src/plugin/accessories/BaseAccessory.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"BaseAccessory.js","sourceRoot":"","sources":["../../src/plugin/accessories/BaseAccessory.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,27 @@
|
|
|
1
|
-
import { PlatformAccessory, CharacteristicValue } from 'homebridge';
|
|
1
|
+
import { PlatformAccessory, CharacteristicValue, Resolution } from 'homebridge';
|
|
2
2
|
import { EufySecurityPlatform } from '../platform';
|
|
3
3
|
import { DeviceAccessory } from './Device';
|
|
4
|
-
import { Camera, PropertyName } from 'eufy-security-client';
|
|
5
|
-
import { StreamingDelegate } from '../
|
|
6
|
-
import { RecordingDelegate } from '../controller/recordingDelegate';
|
|
4
|
+
import { Camera, PropertyName } from '@homebridge-eufy-security/eufy-security-client';
|
|
5
|
+
import { StreamingDelegate } from '../utils/stream';
|
|
7
6
|
import { CameraConfig } from '../utils/configTypes';
|
|
7
|
+
export interface ProtectCameraChannelConfig {
|
|
8
|
+
bitrate: number;
|
|
9
|
+
enabled: boolean;
|
|
10
|
+
fps: number;
|
|
11
|
+
height: number;
|
|
12
|
+
id: number;
|
|
13
|
+
idrInterval: number;
|
|
14
|
+
isRtspEnabled: boolean;
|
|
15
|
+
name: string;
|
|
16
|
+
width: number;
|
|
17
|
+
}
|
|
18
|
+
export interface RtspEntry {
|
|
19
|
+
channel: ProtectCameraChannelConfig;
|
|
20
|
+
lens?: number;
|
|
21
|
+
name: string;
|
|
22
|
+
resolution: Resolution;
|
|
23
|
+
url: string;
|
|
24
|
+
}
|
|
8
25
|
/**
|
|
9
26
|
* Platform Accessory
|
|
10
27
|
* An instance of this class is created for each accessory your platform registers
|
|
@@ -17,13 +34,26 @@ export declare class CameraAccessory extends DeviceAccessory {
|
|
|
17
34
|
};
|
|
18
35
|
private notificationTimeout;
|
|
19
36
|
readonly cameraConfig: CameraConfig;
|
|
20
|
-
|
|
21
|
-
|
|
37
|
+
stream: StreamingDelegate;
|
|
38
|
+
hardwareTranscoding: boolean;
|
|
39
|
+
hardwareDecoding: boolean;
|
|
40
|
+
timeshift: boolean;
|
|
41
|
+
hksvRecording: boolean;
|
|
42
|
+
HksvErrors: number;
|
|
43
|
+
isOnline: boolean;
|
|
44
|
+
private rtspEntries;
|
|
45
|
+
private rtspQuality;
|
|
46
|
+
hasHksv: boolean;
|
|
47
|
+
private isVideoConfigured;
|
|
48
|
+
rtsp_url: string;
|
|
22
49
|
private eventTypesToHandle;
|
|
23
|
-
private resolutions;
|
|
24
50
|
constructor(platform: EufySecurityPlatform, accessory: PlatformAccessory, device: Camera);
|
|
25
51
|
private setupCamera;
|
|
26
|
-
|
|
52
|
+
/**
|
|
53
|
+
* Sets up RTSP and waits for the DeviceRTSPStreamUrl property to change.
|
|
54
|
+
* @returns {Promise<void>}
|
|
55
|
+
*/
|
|
56
|
+
private setupRTSP;
|
|
27
57
|
private setupButtonService;
|
|
28
58
|
protected setupSwitchService(serviceName: string, serviceType: 'switch' | 'lightbulb' | 'outlet', propertyName: PropertyName): void;
|
|
29
59
|
private setupEnableButton;
|
|
@@ -49,5 +79,14 @@ export declare class CameraAccessory extends DeviceAccessory {
|
|
|
49
79
|
* @param characteristic - The Characteristic to update for HomeKit.
|
|
50
80
|
*/
|
|
51
81
|
private onDeviceRingsPushNotification;
|
|
82
|
+
getBitrate(channelId: number): number;
|
|
83
|
+
setBitrate(channelId: number, value: number): Promise<boolean>;
|
|
84
|
+
private findRtspEntry;
|
|
85
|
+
findRtsp(width: number, height: number, rtspEntries?: RtspEntry[], constrainPixels?: number): RtspEntry | null;
|
|
86
|
+
private configureHksv;
|
|
87
|
+
findRecordingRtsp(width: number, height: number, rtspEntries?: RtspEntry[]): RtspEntry | null;
|
|
88
|
+
private configureVideoStream;
|
|
89
|
+
private sortByResolutions;
|
|
90
|
+
protected getResolution(resolution: Resolution): string;
|
|
52
91
|
}
|
|
53
92
|
//# sourceMappingURL=CameraAccessory.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CameraAccessory.d.ts","sourceRoot":"","sources":["../../src/plugin/accessories/CameraAccessory.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"CameraAccessory.d.ts","sourceRoot":"","sources":["../../src/plugin/accessories/CameraAccessory.ts"],"names":[],"mappings":"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"}
|