homebridge-virtual-accessories 3.14.22 → 3.15.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/dist/accessories/accessory.d.ts +11 -9
- package/dist/accessories/accessory.js +121 -16
- package/dist/accessories/accessory.js.map +1 -1
- package/dist/accessories/companions/companionSwitch.d.ts +2 -2
- package/dist/accessories/companions/companionSwitch.js +12 -12
- package/dist/accessories/companions/companionSwitch.js.map +1 -1
- package/dist/accessories/externalAccessory.d.ts +2 -2
- package/dist/accessories/externalAccessory.js +2 -2
- package/dist/accessories/externalAccessory.js.map +1 -1
- package/dist/accessories/positionAccessory.d.ts +30 -0
- package/dist/accessories/positionAccessory.js +170 -0
- package/dist/accessories/positionAccessory.js.map +1 -0
- package/dist/accessories/updatableChargingState.d.ts +2 -2
- package/dist/accessories/virtualAccessoryAirPurifier.d.ts +15 -18
- package/dist/accessories/virtualAccessoryAirPurifier.js +118 -112
- package/dist/accessories/virtualAccessoryAirPurifier.js.map +1 -1
- package/dist/accessories/virtualAccessoryBattery.d.ts +11 -14
- package/dist/accessories/virtualAccessoryBattery.js +95 -83
- package/dist/accessories/virtualAccessoryBattery.js.map +1 -1
- package/dist/accessories/virtualAccessoryDoor.d.ts +4 -7
- package/dist/accessories/virtualAccessoryDoor.js +5 -11
- package/dist/accessories/virtualAccessoryDoor.js.map +1 -1
- package/dist/accessories/virtualAccessoryDoorbell.d.ts +13 -16
- package/dist/accessories/virtualAccessoryDoorbell.js +116 -80
- package/dist/accessories/virtualAccessoryDoorbell.js.map +1 -1
- package/dist/accessories/virtualAccessoryFan.d.ts +12 -14
- package/dist/accessories/virtualAccessoryFan.js +99 -75
- package/dist/accessories/virtualAccessoryFan.js.map +1 -1
- package/dist/accessories/virtualAccessoryFilterMaintenance.d.ts +7 -11
- package/dist/accessories/virtualAccessoryFilterMaintenance.js +63 -55
- package/dist/accessories/virtualAccessoryFilterMaintenance.js.map +1 -1
- package/dist/accessories/virtualAccessoryGarageDoor.d.ts +13 -13
- package/dist/accessories/virtualAccessoryGarageDoor.js +142 -114
- package/dist/accessories/virtualAccessoryGarageDoor.js.map +1 -1
- package/dist/accessories/virtualAccessoryHeaterCooler.d.ts +32 -34
- package/dist/accessories/virtualAccessoryHeaterCooler.js +321 -284
- package/dist/accessories/virtualAccessoryHeaterCooler.js.map +1 -1
- package/dist/accessories/virtualAccessoryHumidifierDehumidifier.d.ts +24 -26
- package/dist/accessories/virtualAccessoryHumidifierDehumidifier.js +248 -217
- package/dist/accessories/virtualAccessoryHumidifierDehumidifier.js.map +1 -1
- package/dist/accessories/virtualAccessoryInputSource.d.ts +25 -27
- package/dist/accessories/virtualAccessoryInputSource.js +122 -105
- package/dist/accessories/virtualAccessoryInputSource.js.map +1 -1
- package/dist/accessories/virtualAccessoryLightbulb.d.ts +17 -18
- package/dist/accessories/virtualAccessoryLightbulb.js +187 -133
- package/dist/accessories/virtualAccessoryLightbulb.js.map +1 -1
- package/dist/accessories/virtualAccessoryLock.d.ts +17 -18
- package/dist/accessories/virtualAccessoryLock.js +192 -154
- package/dist/accessories/virtualAccessoryLock.js.map +1 -1
- package/dist/accessories/virtualAccessoryMicrophone.d.ts +7 -7
- package/dist/accessories/virtualAccessoryMicrophone.js +68 -37
- package/dist/accessories/virtualAccessoryMicrophone.js.map +1 -1
- package/dist/accessories/virtualAccessorySecuritySystem.d.ts +9 -12
- package/dist/accessories/virtualAccessorySecuritySystem.js +103 -104
- package/dist/accessories/virtualAccessorySecuritySystem.js.map +1 -1
- package/dist/accessories/virtualAccessorySmartSpeaker.d.ts +18 -20
- package/dist/accessories/virtualAccessorySmartSpeaker.js +130 -95
- package/dist/accessories/virtualAccessorySmartSpeaker.js.map +1 -1
- package/dist/accessories/virtualAccessorySpeaker.d.ts +12 -15
- package/dist/accessories/virtualAccessorySpeaker.js +95 -70
- package/dist/accessories/virtualAccessorySpeaker.js.map +1 -1
- package/dist/accessories/virtualAccessorySwitch.d.ts +6 -11
- package/dist/accessories/virtualAccessorySwitch.js +73 -71
- package/dist/accessories/virtualAccessorySwitch.js.map +1 -1
- package/dist/accessories/virtualAccessoryTelevision.d.ts +28 -30
- package/dist/accessories/virtualAccessoryTelevision.js +143 -108
- package/dist/accessories/virtualAccessoryTelevision.js.map +1 -1
- package/dist/accessories/virtualAccessoryValve.d.ts +15 -19
- package/dist/accessories/virtualAccessoryValve.js +116 -105
- package/dist/accessories/virtualAccessoryValve.js.map +1 -1
- package/dist/accessories/virtualAccessoryWindow.d.ts +4 -7
- package/dist/accessories/virtualAccessoryWindow.js +5 -11
- package/dist/accessories/virtualAccessoryWindow.js.map +1 -1
- package/dist/accessories/virtualAccessoryWindowCovering.d.ts +4 -7
- package/dist/accessories/virtualAccessoryWindowCovering.js +5 -11
- package/dist/accessories/virtualAccessoryWindowCovering.js.map +1 -1
- package/dist/characteristicsUtils.d.ts +173 -0
- package/dist/characteristicsUtils.js +618 -0
- package/dist/characteristicsUtils.js.map +1 -0
- package/dist/configuration/accessories/configurationFilterMaintenance.js +0 -1
- package/dist/configuration/accessories/configurationFilterMaintenance.js.map +1 -1
- package/dist/configuration/accessories/configurationHeaterCooler.js +0 -1
- package/dist/configuration/accessories/configurationHeaterCooler.js.map +1 -1
- package/dist/configuration/accessories/configurationValve.js +0 -1
- package/dist/configuration/accessories/configurationValve.js.map +1 -1
- package/dist/configuration/configurationOpenableAccesory.d.ts +1 -1
- package/dist/configuration/configurationOpenableAccesory.js +1 -1
- package/dist/configuration/configurationTimer.js +0 -1
- package/dist/configuration/configurationTimer.js.map +1 -1
- package/dist/configuration/utils.js.map +1 -1
- package/dist/platform.d.ts +2 -0
- package/dist/platform.js +6 -2
- package/dist/platform.js.map +1 -1
- package/dist/sensors/binarySensor.d.ts +8 -13
- package/dist/sensors/binarySensor.js +50 -48
- package/dist/sensors/binarySensor.js.map +1 -1
- package/dist/sensors/companions/companionSensors.js +4 -5
- package/dist/sensors/companions/companionSensors.js.map +1 -1
- package/dist/sensors/measurementSensor.d.ts +6 -10
- package/dist/sensors/measurementSensor.js +24 -23
- package/dist/sensors/measurementSensor.js.map +1 -1
- package/dist/sensors/triggers/triggerCron.js +0 -1
- package/dist/sensors/triggers/triggerCron.js.map +1 -1
- package/dist/sensors/triggers/triggerIkeaMatterStock.js +0 -1
- package/dist/sensors/triggers/triggerIkeaMatterStock.js.map +1 -1
- package/dist/sensors/triggers/triggerPing.js +2 -3
- package/dist/sensors/triggers/triggerPing.js.map +1 -1
- package/dist/sensors/triggers/triggerSunEvents.js.map +1 -1
- package/dist/sensors/triggers/triggerWebhook.js +0 -1
- package/dist/sensors/triggers/triggerWebhook.js.map +1 -1
- package/dist/sensors/virtualSensorCarbonDioxide.d.ts +3 -9
- package/dist/sensors/virtualSensorCarbonDioxide.js +8 -13
- package/dist/sensors/virtualSensorCarbonDioxide.js.map +1 -1
- package/dist/sensors/virtualSensorCarbonMonoxide.d.ts +3 -9
- package/dist/sensors/virtualSensorCarbonMonoxide.js +8 -13
- package/dist/sensors/virtualSensorCarbonMonoxide.js.map +1 -1
- package/dist/sensors/virtualSensorContact.d.ts +3 -9
- package/dist/sensors/virtualSensorContact.js +8 -13
- package/dist/sensors/virtualSensorContact.js.map +1 -1
- package/dist/sensors/virtualSensorHumidity.d.ts +1 -7
- package/dist/sensors/virtualSensorHumidity.js +8 -16
- package/dist/sensors/virtualSensorHumidity.js.map +1 -1
- package/dist/sensors/virtualSensorLeak.d.ts +3 -9
- package/dist/sensors/virtualSensorLeak.js +8 -13
- package/dist/sensors/virtualSensorLeak.js.map +1 -1
- package/dist/sensors/virtualSensorMotion.d.ts +3 -9
- package/dist/sensors/virtualSensorMotion.js +8 -13
- package/dist/sensors/virtualSensorMotion.js.map +1 -1
- package/dist/sensors/virtualSensorOccupancy.d.ts +3 -9
- package/dist/sensors/virtualSensorOccupancy.js +8 -13
- package/dist/sensors/virtualSensorOccupancy.js.map +1 -1
- package/dist/sensors/virtualSensorSmoke.d.ts +3 -9
- package/dist/sensors/virtualSensorSmoke.js +8 -13
- package/dist/sensors/virtualSensorSmoke.js.map +1 -1
- package/dist/sensors/virtualSensorTemperature.d.ts +1 -7
- package/dist/sensors/virtualSensorTemperature.js +10 -18
- package/dist/sensors/virtualSensorTemperature.js.map +1 -1
- package/dist/utils/timer.js +0 -1
- package/dist/utils/timer.js.map +1 -1
- package/dist/utils/tlv.js +1 -2
- package/dist/utils/tlv.js.map +1 -1
- package/dist/utils/utils.js.map +1 -1
- package/dist/utils/virtualLogger.js.map +1 -1
- package/dist/webhookServer.js +3 -3
- package/dist/webhookServer.js.map +1 -1
- package/package.json +2 -2
- package/dist/accessories/openingAccessory.d.ts +0 -36
- package/dist/accessories/openingAccessory.js +0 -165
- package/dist/accessories/openingAccessory.js.map +0 -1
|
@@ -1,29 +1,31 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { PlatformAccessory, Service, WithUUID } from 'homebridge';
|
|
2
2
|
import { VirtualAccessoriesPlatform } from '../platform.js';
|
|
3
3
|
import { AccessoryConfiguration } from '../configuration/configurationAccessory.js';
|
|
4
4
|
import { VirtualLogger } from '../utils/virtualLogger.js';
|
|
5
|
+
import { CharacteristicUtils } from '../characteristicsUtils.js';
|
|
5
6
|
/**
|
|
6
7
|
* Abstract Accessory
|
|
7
8
|
*/
|
|
8
|
-
export declare abstract class Accessory {
|
|
9
|
-
service?: Service;
|
|
9
|
+
export declare abstract class Accessory extends CharacteristicUtils {
|
|
10
10
|
readonly platform: VirtualAccessoriesPlatform;
|
|
11
11
|
readonly accessory: PlatformAccessory;
|
|
12
12
|
readonly accessoryConfiguration: AccessoryConfiguration;
|
|
13
13
|
readonly log: VirtualLogger;
|
|
14
|
+
protected serviceType: WithUUID<typeof Service>;
|
|
14
15
|
protected accessoryName: string;
|
|
15
|
-
protected defaultState:
|
|
16
|
+
protected defaultState: number | boolean;
|
|
16
17
|
protected storagePath: string;
|
|
17
18
|
protected accessoryInformationService?: Service;
|
|
18
|
-
constructor(platform: VirtualAccessoriesPlatform, accessory: PlatformAccessory, accessoryConfiguration: AccessoryConfiguration);
|
|
19
|
+
constructor(platform: VirtualAccessoriesPlatform, accessory: PlatformAccessory, accessoryConfiguration: AccessoryConfiguration, serviceType: WithUUID<typeof Service>, createService?: boolean);
|
|
19
20
|
isExternalAccessory(): boolean;
|
|
20
|
-
|
|
21
|
+
updateInformationServiceConfiguredName(): void;
|
|
21
22
|
private readonly EMPTY_ACCESSORY_STATE;
|
|
22
23
|
protected isEmptyAccessoryState(json: any): boolean;
|
|
23
24
|
protected loadAccessoryState(storagePath: string): any;
|
|
24
25
|
private saveAccessoryState;
|
|
25
|
-
protected
|
|
26
|
-
protected
|
|
27
|
-
|
|
26
|
+
protected deleteState(storagePath: string): void;
|
|
27
|
+
protected saveState(): void;
|
|
28
|
+
getServiceType(): WithUUID<typeof Service>;
|
|
29
|
+
getServiceTypeName(serviceType: WithUUID<typeof Service>): string;
|
|
28
30
|
protected abstract getJsonState(): string;
|
|
29
31
|
}
|
|
@@ -1,22 +1,26 @@
|
|
|
1
|
-
/* eslint-disable max-len */
|
|
2
1
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
|
+
import { CharacteristicType, ServiceType } from '../platform.js';
|
|
3
|
+
import { CharacteristicUtils } from '../characteristicsUtils.js';
|
|
3
4
|
import fs from 'fs';
|
|
4
5
|
/**
|
|
5
6
|
* Abstract Accessory
|
|
6
7
|
*/
|
|
7
|
-
export class Accessory {
|
|
8
|
-
service;
|
|
8
|
+
export class Accessory extends CharacteristicUtils {
|
|
9
|
+
//service!: Service;
|
|
9
10
|
platform;
|
|
10
11
|
accessory;
|
|
11
12
|
accessoryConfiguration;
|
|
12
13
|
log;
|
|
14
|
+
serviceType;
|
|
13
15
|
accessoryName = '';
|
|
14
16
|
defaultState;
|
|
15
17
|
storagePath;
|
|
16
18
|
accessoryInformationService;
|
|
17
|
-
constructor(platform, accessory, accessoryConfiguration) {
|
|
19
|
+
constructor(platform, accessory, accessoryConfiguration, serviceType, createService = true) {
|
|
20
|
+
super();
|
|
18
21
|
this.accessory = accessory;
|
|
19
22
|
this.platform = platform;
|
|
23
|
+
this.serviceType = serviceType;
|
|
20
24
|
// The accessory configuration is stored in the context in VirtualAccessoryPlatform.discoverDevices()
|
|
21
25
|
this.accessoryConfiguration = accessoryConfiguration;
|
|
22
26
|
this.accessoryName = this.accessoryConfiguration.accessoryName;
|
|
@@ -24,22 +28,27 @@ export class Accessory {
|
|
|
24
28
|
this.log.debug(`[${this.accessoryName}] Accessory context: ${JSON.stringify(accessory.context)}`);
|
|
25
29
|
this.storagePath = accessory.context.storagePath;
|
|
26
30
|
if (!this.accessoryConfiguration.accessoryIsStateful) {
|
|
27
|
-
this.
|
|
31
|
+
this.deleteState(this.storagePath);
|
|
28
32
|
}
|
|
29
|
-
//
|
|
30
|
-
this.accessoryInformationService = this.accessory.getService(
|
|
33
|
+
// Set accessory information
|
|
34
|
+
this.accessoryInformationService = this.accessory.getService(ServiceType.AccessoryInformation);
|
|
31
35
|
this.accessoryInformationService
|
|
32
|
-
.setCharacteristic(
|
|
33
|
-
.setCharacteristic(
|
|
34
|
-
.setCharacteristic(
|
|
35
|
-
.setCharacteristic(
|
|
36
|
-
.setCharacteristic(
|
|
36
|
+
.setCharacteristic(CharacteristicType.Manufacturer, 'Virtual Accessories for Homebridge')
|
|
37
|
+
.setCharacteristic(CharacteristicType.Model, `Virtual Accessory - ${this.getServiceTypeName(serviceType)}`)
|
|
38
|
+
.setCharacteristic(CharacteristicType.SerialNumber, this.accessory.UUID)
|
|
39
|
+
.setCharacteristic(CharacteristicType.Name, this.accessoryName)
|
|
40
|
+
.setCharacteristic(CharacteristicType.FirmwareRevision, this.accessory.context.firmwareVersion);
|
|
41
|
+
// Set accessory service info
|
|
42
|
+
if (createService) {
|
|
43
|
+
this.service = this.accessory.getService(serviceType) || this.accessory.addService(serviceType);
|
|
44
|
+
this.updateName(this.accessoryName);
|
|
45
|
+
}
|
|
37
46
|
}
|
|
38
47
|
isExternalAccessory() {
|
|
39
48
|
return [26 /* Categories.SPEAKER */, 31 /* Categories.TELEVISION */].includes(this.accessory.category);
|
|
40
49
|
}
|
|
41
|
-
|
|
42
|
-
const configuredName = this.accessoryInformationService.getCharacteristic(
|
|
50
|
+
updateInformationServiceConfiguredName() {
|
|
51
|
+
const configuredName = this.accessoryInformationService.getCharacteristic(CharacteristicType.ConfiguredName);
|
|
43
52
|
if (configuredName !== undefined) {
|
|
44
53
|
this.accessoryInformationService.removeCharacteristic(configuredName);
|
|
45
54
|
}
|
|
@@ -68,7 +77,7 @@ export class Accessory {
|
|
|
68
77
|
this.log.error(`[${this.accessoryName}] Error saving state: ${error}`);
|
|
69
78
|
}
|
|
70
79
|
}
|
|
71
|
-
|
|
80
|
+
deleteState(storagePath) {
|
|
72
81
|
this.log.debug(`[${this.accessoryName}] Deleting state file ${storagePath}`);
|
|
73
82
|
if (fs.existsSync(storagePath)) {
|
|
74
83
|
try {
|
|
@@ -80,10 +89,106 @@ export class Accessory {
|
|
|
80
89
|
}
|
|
81
90
|
}
|
|
82
91
|
// Store device state if stateful
|
|
83
|
-
|
|
92
|
+
saveState() {
|
|
84
93
|
if (this.accessoryConfiguration.accessoryIsStateful) {
|
|
85
94
|
this.saveAccessoryState(this.storagePath, this.getJsonState());
|
|
86
95
|
}
|
|
87
96
|
}
|
|
97
|
+
getServiceType() {
|
|
98
|
+
return this.serviceType;
|
|
99
|
+
}
|
|
100
|
+
getServiceTypeName(serviceType) {
|
|
101
|
+
let accessoryTypeName;
|
|
102
|
+
switch (serviceType) {
|
|
103
|
+
case ServiceType.AirPurifier: {
|
|
104
|
+
accessoryTypeName = 'AirPurifier';
|
|
105
|
+
break;
|
|
106
|
+
}
|
|
107
|
+
case ServiceType.Battery: {
|
|
108
|
+
accessoryTypeName = 'Battery';
|
|
109
|
+
break;
|
|
110
|
+
}
|
|
111
|
+
case ServiceType.Door: {
|
|
112
|
+
accessoryTypeName = 'Door';
|
|
113
|
+
break;
|
|
114
|
+
}
|
|
115
|
+
case ServiceType.Doorbell: {
|
|
116
|
+
accessoryTypeName = 'Doorbell';
|
|
117
|
+
break;
|
|
118
|
+
}
|
|
119
|
+
case ServiceType.Fan: {
|
|
120
|
+
accessoryTypeName = 'Fan';
|
|
121
|
+
break;
|
|
122
|
+
}
|
|
123
|
+
case ServiceType.FilterMaintenance: {
|
|
124
|
+
accessoryTypeName = 'Filter';
|
|
125
|
+
break;
|
|
126
|
+
}
|
|
127
|
+
case ServiceType.GarageDoorOpener: {
|
|
128
|
+
accessoryTypeName = 'GarageDoor';
|
|
129
|
+
break;
|
|
130
|
+
}
|
|
131
|
+
case ServiceType.HeaterCooler: {
|
|
132
|
+
accessoryTypeName = 'HeaterCooler';
|
|
133
|
+
break;
|
|
134
|
+
}
|
|
135
|
+
case ServiceType.HumidifierDehumidifier: {
|
|
136
|
+
accessoryTypeName = 'HumidifierDehumidifier';
|
|
137
|
+
break;
|
|
138
|
+
}
|
|
139
|
+
case ServiceType.InputSource: {
|
|
140
|
+
accessoryTypeName = 'InputSource';
|
|
141
|
+
break;
|
|
142
|
+
}
|
|
143
|
+
case ServiceType.Lightbulb: {
|
|
144
|
+
accessoryTypeName = 'Lightbulb';
|
|
145
|
+
break;
|
|
146
|
+
}
|
|
147
|
+
case ServiceType.LockMechanism: {
|
|
148
|
+
accessoryTypeName = 'Lock';
|
|
149
|
+
break;
|
|
150
|
+
}
|
|
151
|
+
case ServiceType.Microphone: {
|
|
152
|
+
accessoryTypeName = 'Microphone';
|
|
153
|
+
break;
|
|
154
|
+
}
|
|
155
|
+
case ServiceType.SecuritySystem: {
|
|
156
|
+
accessoryTypeName = 'SecuritySystem';
|
|
157
|
+
break;
|
|
158
|
+
}
|
|
159
|
+
case ServiceType.SmartSpeaker: {
|
|
160
|
+
accessoryTypeName = 'SmartSpeaker';
|
|
161
|
+
break;
|
|
162
|
+
}
|
|
163
|
+
case ServiceType.Speaker: {
|
|
164
|
+
accessoryTypeName = 'Speaker';
|
|
165
|
+
break;
|
|
166
|
+
}
|
|
167
|
+
case ServiceType.Switch: {
|
|
168
|
+
accessoryTypeName = 'Switch';
|
|
169
|
+
break;
|
|
170
|
+
}
|
|
171
|
+
case ServiceType.Television: {
|
|
172
|
+
accessoryTypeName = 'Television';
|
|
173
|
+
break;
|
|
174
|
+
}
|
|
175
|
+
case ServiceType.Valve: {
|
|
176
|
+
accessoryTypeName = 'Valve';
|
|
177
|
+
break;
|
|
178
|
+
}
|
|
179
|
+
case ServiceType.Window: {
|
|
180
|
+
accessoryTypeName = 'Window';
|
|
181
|
+
break;
|
|
182
|
+
}
|
|
183
|
+
case ServiceType.WindowCovering: {
|
|
184
|
+
accessoryTypeName = 'WindowCovering';
|
|
185
|
+
break;
|
|
186
|
+
}
|
|
187
|
+
default: {
|
|
188
|
+
accessoryTypeName = 'unknown';
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
return accessoryTypeName;
|
|
192
|
+
}
|
|
88
193
|
}
|
|
89
194
|
//# sourceMappingURL=accessory.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"accessory.js","sourceRoot":"","sources":["../../src/accessories/accessory.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"accessory.js","sourceRoot":"","sources":["../../src/accessories/accessory.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,6 +11,6 @@ export declare class CompanionSwitch extends Switch {
|
|
|
11
11
|
private companionName;
|
|
12
12
|
private partnerAccessory;
|
|
13
13
|
constructor(platform: VirtualAccessoriesPlatform, accessory: PlatformAccessory, accessoryConfiguration: AccessoryConfiguration, companionName: string, partnerAccessory: TriggerableEventAccessory);
|
|
14
|
-
|
|
15
|
-
|
|
14
|
+
getOnHandler(): Promise<CharacteristicValue>;
|
|
15
|
+
setOnHandler(value: CharacteristicValue): Promise<void>;
|
|
16
16
|
}
|
|
@@ -24,23 +24,23 @@ export class CompanionSwitch extends Switch {
|
|
|
24
24
|
// Replace the Name Characteristic
|
|
25
25
|
this.service.setCharacteristic(this.platform.Characteristic.Name, this.companionName);
|
|
26
26
|
// Update the initial state of the accessory
|
|
27
|
-
this.log.debug(`[${this.accessoryConfiguration.accessoryName}] Setting Companion Switch Current State: ${Switch.
|
|
28
|
-
this.
|
|
27
|
+
this.log.debug(`[${this.accessoryConfiguration.accessoryName}] Setting Companion Switch Current State: ${Switch.getOnName(this.getOn())}`);
|
|
28
|
+
this.updateOn(this.getOn());
|
|
29
29
|
// register handlers
|
|
30
30
|
this.service.getCharacteristic(this.platform.Characteristic.On)
|
|
31
|
-
.onSet(this.
|
|
32
|
-
.onGet(this.
|
|
31
|
+
.onSet(this.setOnHandler.bind(this))
|
|
32
|
+
.onGet(this.getOnHandler.bind(this));
|
|
33
33
|
}
|
|
34
|
-
async
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
34
|
+
async getOnHandler() {
|
|
35
|
+
return super.getOn();
|
|
36
|
+
}
|
|
37
|
+
async setOnHandler(value) {
|
|
38
|
+
this.log.info(`[${this.accessoryName}] Calling super.On()`, this.muteLogging);
|
|
39
|
+
super.setOnHandler(value);
|
|
40
|
+
this.log.info(`[${this.accessoryName}] Calling super.On()`, this.muteLogging);
|
|
41
|
+
if (this.getOn() === CompanionSwitch.ON) {
|
|
39
42
|
this.partnerAccessory.triggerEvent(this);
|
|
40
43
|
}
|
|
41
44
|
}
|
|
42
|
-
async getOn() {
|
|
43
|
-
return super.getOn();
|
|
44
|
-
}
|
|
45
45
|
}
|
|
46
46
|
//# sourceMappingURL=companionSwitch.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"companionSwitch.js","sourceRoot":"","sources":["../../../src/accessories/companions/companionSwitch.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,MAAM,EAAE,MAAM,8BAA8B,CAAC;AAGtD;;GAEG;AACH,MAAM,OAAO,eAAgB,SAAQ,MAAM;IAExB,OAAO,GAAW,SAAS,CAAC;IAErC,aAAa,CAAS;IACtB,gBAAgB,CAA4B;IAEpD,YACE,QAAoC,EACpC,SAA4B,EAC5B,sBAA8C,EAC9C,aAAqB,EACrB,gBAA2C;QAE3C,KAAK,CAAC,QAAQ,EAAE,SAAS,EAAE,sBAAsB,CAAC,CAAC;QAEnD,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;QAEzC,2BAA2B;QAC3B,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,GAAG,CAAC;QAC/B,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC;QACjC,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;QAEzB,6BAA6B;QAC7B,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC9E,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;YAChC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;QAC9C,CAAC;QAED,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC;YAC3C,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,aAAa,EAAE,SAAS,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;QAE5H,kCAAkC;QAClC,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,aAAc,CAAC,CAAC;QAEvF,4CAA4C;QAC5C,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,sBAAsB,CAAC,aAAa,6CAA6C,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"companionSwitch.js","sourceRoot":"","sources":["../../../src/accessories/companions/companionSwitch.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,MAAM,EAAE,MAAM,8BAA8B,CAAC;AAGtD;;GAEG;AACH,MAAM,OAAO,eAAgB,SAAQ,MAAM;IAExB,OAAO,GAAW,SAAS,CAAC;IAErC,aAAa,CAAS;IACtB,gBAAgB,CAA4B;IAEpD,YACE,QAAoC,EACpC,SAA4B,EAC5B,sBAA8C,EAC9C,aAAqB,EACrB,gBAA2C;QAE3C,KAAK,CAAC,QAAQ,EAAE,SAAS,EAAE,sBAAsB,CAAC,CAAC;QAEnD,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;QAEzC,2BAA2B;QAC3B,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,GAAG,CAAC;QAC/B,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC;QACjC,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;QAEzB,6BAA6B;QAC7B,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC9E,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;YAChC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;QAC9C,CAAC;QAED,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC;YAC3C,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,aAAa,EAAE,SAAS,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;QAE5H,kCAAkC;QAClC,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,aAAc,CAAC,CAAC;QAEvF,4CAA4C;QAC5C,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,sBAAsB,CAAC,aAAa,6CAA6C,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;QAC3I,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QAE5B,oBAAoB;QAEpB,IAAI,CAAC,OAAQ,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;aAC7D,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aACnC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACzC,CAAC;IAED,KAAK,CAAC,YAAY;QAChB,OAAO,KAAK,CAAC,KAAK,EAAE,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,KAA0B;QAC3C,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,aAAa,sBAAsB,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QAC9E,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QAC1B,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,aAAa,sBAAsB,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QAE9E,IAAI,IAAI,CAAC,KAAK,EAAE,KAAK,eAAe,CAAC,EAAE,EAAE,CAAC;YACxC,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC;CACF"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { PlatformAccessory } from 'homebridge';
|
|
1
|
+
import { PlatformAccessory, Service, WithUUID } from 'homebridge';
|
|
2
2
|
import { VirtualAccessoriesPlatform } from '../platform.js';
|
|
3
3
|
import { AccessoryConfiguration } from '../configuration/configurationAccessory.js';
|
|
4
4
|
import { Accessory } from './accessory.js';
|
|
@@ -6,6 +6,6 @@ import { Accessory } from './accessory.js';
|
|
|
6
6
|
* ExternalAccessory - Abstract accessory
|
|
7
7
|
*/
|
|
8
8
|
export declare abstract class ExternalAccessory extends Accessory {
|
|
9
|
-
constructor(platform: VirtualAccessoriesPlatform, accessory: PlatformAccessory, accessoryConfiguration: AccessoryConfiguration);
|
|
9
|
+
constructor(platform: VirtualAccessoriesPlatform, accessory: PlatformAccessory, accessoryConfiguration: AccessoryConfiguration, serviceType: WithUUID<typeof Service>);
|
|
10
10
|
getExternalAccessoryCategory(): number;
|
|
11
11
|
}
|
|
@@ -3,8 +3,8 @@ import { Accessory } from './accessory.js';
|
|
|
3
3
|
* ExternalAccessory - Abstract accessory
|
|
4
4
|
*/
|
|
5
5
|
export class ExternalAccessory extends Accessory {
|
|
6
|
-
constructor(platform, accessory, accessoryConfiguration) {
|
|
7
|
-
super(platform, accessory, accessoryConfiguration);
|
|
6
|
+
constructor(platform, accessory, accessoryConfiguration, serviceType) {
|
|
7
|
+
super(platform, accessory, accessoryConfiguration, serviceType);
|
|
8
8
|
}
|
|
9
9
|
getExternalAccessoryCategory() {
|
|
10
10
|
return this.accessory.category;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"externalAccessory.js","sourceRoot":"","sources":["../../src/accessories/externalAccessory.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C;;GAEG;AACH,MAAM,OAAgB,iBAAkB,SAAQ,SAAS;IAEvD,YACE,QAAoC,EACpC,SAA4B,EAC5B,sBAA8C;
|
|
1
|
+
{"version":3,"file":"externalAccessory.js","sourceRoot":"","sources":["../../src/accessories/externalAccessory.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C;;GAEG;AACH,MAAM,OAAgB,iBAAkB,SAAQ,SAAS;IAEvD,YACE,QAAoC,EACpC,SAA4B,EAC5B,sBAA8C,EAC9C,WAAqC;QAErC,KAAK,CAAC,QAAQ,EAAE,SAAS,EAAE,sBAAsB,EAAE,WAAW,CAAC,CAAC;IAClE,CAAC;IAED,4BAA4B;QAC1B,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;IACjC,CAAC;CACF"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { CharacteristicValue, PlatformAccessory, Service, WithUUID } from 'homebridge';
|
|
2
|
+
import { VirtualAccessoriesPlatform } from '../platform.js';
|
|
3
|
+
import { AccessoryConfiguration } from '../configuration/configurationAccessory.js';
|
|
4
|
+
import { Accessory } from './accessory.js';
|
|
5
|
+
import { OpenableAccessoryConfiguration } from '../configuration/configurationOpenableAccesory.js';
|
|
6
|
+
/**
|
|
7
|
+
* PositionAccessory - Abstract accessory
|
|
8
|
+
*/
|
|
9
|
+
export declare abstract class PositionAccessory extends Accessory {
|
|
10
|
+
private static readonly MIN_TIMEOUT_SECS;
|
|
11
|
+
private static readonly DEFAULT_TIMEOUT_SECS;
|
|
12
|
+
private readonly stateStorageKey;
|
|
13
|
+
private transitionTimer;
|
|
14
|
+
private transitionSteps;
|
|
15
|
+
private openableAccessoryConfiguration;
|
|
16
|
+
constructor(platform: VirtualAccessoriesPlatform, accessory: PlatformAccessory, accessoryConfiguration: AccessoryConfiguration, serviceType: WithUUID<typeof Service>);
|
|
17
|
+
getCurrentPositionHandler(): Promise<CharacteristicValue>;
|
|
18
|
+
getTargetPositionHandler(): Promise<CharacteristicValue>;
|
|
19
|
+
setTargetPositionHandler(value: CharacteristicValue): Promise<void>;
|
|
20
|
+
getPositionStateHandler(): Promise<CharacteristicValue>;
|
|
21
|
+
protected getJsonState(): string;
|
|
22
|
+
protected abstract getOpenableAccessoryConfiguration(): OpenableAccessoryConfiguration;
|
|
23
|
+
static get CLOSED(): number;
|
|
24
|
+
static get OPEN(): number;
|
|
25
|
+
static get DECREASING(): number;
|
|
26
|
+
static get INCREASING(): number;
|
|
27
|
+
static get STOPPED(): number;
|
|
28
|
+
static getPositionName(position: number): string;
|
|
29
|
+
static getPositionStateName(state: number): string;
|
|
30
|
+
}
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
import { CharacteristicType } from '../platform.js';
|
|
2
|
+
import { Accessory } from './accessory.js';
|
|
3
|
+
import { Timer } from '../utils/timer.js';
|
|
4
|
+
/**
|
|
5
|
+
* PositionAccessory - Abstract accessory
|
|
6
|
+
*/
|
|
7
|
+
export class PositionAccessory extends Accessory {
|
|
8
|
+
static MIN_TIMEOUT_SECS = 1;
|
|
9
|
+
static DEFAULT_TIMEOUT_SECS = 3;
|
|
10
|
+
stateStorageKey = 'Position';
|
|
11
|
+
transitionTimer;
|
|
12
|
+
transitionSteps = 0;
|
|
13
|
+
openableAccessoryConfiguration;
|
|
14
|
+
constructor(platform, accessory, accessoryConfiguration, serviceType) {
|
|
15
|
+
super(platform, accessory, accessoryConfiguration, serviceType);
|
|
16
|
+
// Default state
|
|
17
|
+
let CurrentPosition = PositionAccessory.CLOSED;
|
|
18
|
+
let TargetPosition = PositionAccessory.CLOSED;
|
|
19
|
+
const PositionState = PositionAccessory.STOPPED;
|
|
20
|
+
// First configure the device based on the accessory details
|
|
21
|
+
this.openableAccessoryConfiguration = this.getOpenableAccessoryConfiguration();
|
|
22
|
+
this.defaultState = this.openableAccessoryConfiguration.defaultState === 'open' ? PositionAccessory.OPEN : PositionAccessory.CLOSED;
|
|
23
|
+
CurrentPosition = this.defaultState;
|
|
24
|
+
// If the accessory is stateful retrieve stored state
|
|
25
|
+
if (this.accessoryConfiguration.accessoryIsStateful) {
|
|
26
|
+
const accessoryState = this.loadAccessoryState(this.storagePath);
|
|
27
|
+
const cachedState = accessoryState[this.stateStorageKey];
|
|
28
|
+
if (cachedState !== undefined) {
|
|
29
|
+
CurrentPosition = cachedState;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
TargetPosition = CurrentPosition;
|
|
33
|
+
const timerIsResettable = true;
|
|
34
|
+
this.transitionTimer = new Timer(this.accessoryConfiguration.accessoryName, this.log, timerIsResettable);
|
|
35
|
+
// Update the initial state of the accessory
|
|
36
|
+
this.setCurrentPosition(CurrentPosition);
|
|
37
|
+
this.setTargetPosition(TargetPosition);
|
|
38
|
+
this.setPositionState(PositionState);
|
|
39
|
+
// Last register handlers
|
|
40
|
+
this.service.getCharacteristic(CharacteristicType.CurrentPosition)
|
|
41
|
+
.onGet(this.getCurrentPositionHandler.bind(this));
|
|
42
|
+
this.service.getCharacteristic(CharacteristicType.TargetPosition)
|
|
43
|
+
.onSet(this.setTargetPositionHandler.bind(this))
|
|
44
|
+
.onGet(this.getTargetPositionHandler.bind(this));
|
|
45
|
+
this.service.getCharacteristic(CharacteristicType.PositionState)
|
|
46
|
+
.onGet(this.getPositionStateHandler.bind(this));
|
|
47
|
+
}
|
|
48
|
+
//
|
|
49
|
+
// ****************************** Handlers ******************************
|
|
50
|
+
//
|
|
51
|
+
// CurrentPosition
|
|
52
|
+
async getCurrentPositionHandler() {
|
|
53
|
+
// If timer is running, then blinds are moving, so calculate the interim position
|
|
54
|
+
if (this.transitionTimer.isTimerRunning()) {
|
|
55
|
+
const runtimeMillis = this.transitionTimer.getRuntime() * 1000;
|
|
56
|
+
const remainingSteps = Math.ceil(this.transitionTimer.getRemainingDurationMillis() / runtimeMillis * this.transitionSteps);
|
|
57
|
+
const TargetPosition = this.getTargetPosition();
|
|
58
|
+
this.updateCurrentPosition(TargetPosition - remainingSteps);
|
|
59
|
+
}
|
|
60
|
+
const currentPosition = this.getCurrentPosition();
|
|
61
|
+
this.log.debug(`[${this.accessoryName}] Getting Current Position: ${PositionAccessory.getPositionName(currentPosition)}`);
|
|
62
|
+
return currentPosition;
|
|
63
|
+
}
|
|
64
|
+
// TargetPosition
|
|
65
|
+
async getTargetPositionHandler() {
|
|
66
|
+
const targetPosition = this.getCharacteristicValue(CharacteristicType.TargetPosition);
|
|
67
|
+
this.log.debug(`[${this.accessoryName}] Getting Target Position: ${PositionAccessory.getPositionName(targetPosition)}`);
|
|
68
|
+
return targetPosition;
|
|
69
|
+
}
|
|
70
|
+
async setTargetPositionHandler(value) {
|
|
71
|
+
let TargetPosition = value;
|
|
72
|
+
TargetPosition = this.updateTargetPosition(TargetPosition);
|
|
73
|
+
this.log.info(`[${this.accessoryName}] Setting Target Position: ${PositionAccessory.getPositionName(TargetPosition)}`);
|
|
74
|
+
const CurrentPosition = this.getCurrentPosition();
|
|
75
|
+
let PositionState = (TargetPosition > CurrentPosition) ? PositionAccessory.INCREASING : PositionAccessory.DECREASING;
|
|
76
|
+
PositionState = this.updatePositionState(PositionState);
|
|
77
|
+
this.log.info(`[${this.accessoryName}] Setting Position State: ${PositionAccessory.getPositionStateName(PositionState)}`);
|
|
78
|
+
const transitionDuration = this.openableAccessoryConfiguration.transitionDuration;
|
|
79
|
+
const transitionDelay = (transitionDuration ? transitionDuration : PositionAccessory.DEFAULT_TIMEOUT_SECS);
|
|
80
|
+
this.transitionSteps = TargetPosition - CurrentPosition;
|
|
81
|
+
this.log.debug(`[${this.accessoryName}] Transition Steps: ${this.transitionSteps}`);
|
|
82
|
+
const proportionalTransitionDelay = Math.max(
|
|
83
|
+
// Round up to the nearest second
|
|
84
|
+
Math.ceil(transitionDelay / 100 * Math.abs(this.transitionSteps)), PositionAccessory.MIN_TIMEOUT_SECS);
|
|
85
|
+
this.log.debug(`[${this.accessoryName}] Proportional Delay: ${proportionalTransitionDelay}/(${transitionDelay})`);
|
|
86
|
+
const updateIntervalMillis = 100;
|
|
87
|
+
// Stop transition timer, if running
|
|
88
|
+
this.transitionTimer.stop();
|
|
89
|
+
this.transitionTimer.start(() => {
|
|
90
|
+
const PositionState = this.updatePositionState(PositionAccessory.STOPPED);
|
|
91
|
+
this.log.info(`[${this.accessoryName}] Setting Position State: ${PositionAccessory.getPositionStateName(PositionState)}`);
|
|
92
|
+
const CurrentPosition = this.updateCurrentPosition(this.getTargetPosition());
|
|
93
|
+
this.log.info(`[${this.accessoryName}] Setting Current Position: ${PositionAccessory.getPositionName(CurrentPosition)}`);
|
|
94
|
+
this.transitionSteps = 0;
|
|
95
|
+
this.saveState();
|
|
96
|
+
}, proportionalTransitionDelay, updateIntervalMillis);
|
|
97
|
+
}
|
|
98
|
+
// PositionState
|
|
99
|
+
async getPositionStateHandler() {
|
|
100
|
+
const positionState = this.getPositionState();
|
|
101
|
+
this.log.debug(`[${this.accessoryName}] Getting Position State: ${PositionAccessory.getPositionStateName(positionState)}`);
|
|
102
|
+
return positionState;
|
|
103
|
+
}
|
|
104
|
+
//
|
|
105
|
+
getJsonState() {
|
|
106
|
+
const json = JSON.stringify({
|
|
107
|
+
[this.stateStorageKey]: this.getCurrentPosition(),
|
|
108
|
+
});
|
|
109
|
+
return json;
|
|
110
|
+
}
|
|
111
|
+
//
|
|
112
|
+
// ****************************** Characteristics ******************************
|
|
113
|
+
//
|
|
114
|
+
// Lazy static getters
|
|
115
|
+
static get CLOSED() { return 0; } // 0%
|
|
116
|
+
static get OPEN() { return 100; } // 100%
|
|
117
|
+
static get DECREASING() { return CharacteristicType.PositionState.DECREASING; } // -> CLOSING
|
|
118
|
+
static get INCREASING() { return CharacteristicType.PositionState.INCREASING; } // -> OPENING
|
|
119
|
+
static get STOPPED() { return CharacteristicType.PositionState.STOPPED; } // -> OPEN or CLOSED
|
|
120
|
+
static getPositionName(position) {
|
|
121
|
+
let name;
|
|
122
|
+
switch (position) {
|
|
123
|
+
case undefined: {
|
|
124
|
+
name = 'undefined';
|
|
125
|
+
break;
|
|
126
|
+
}
|
|
127
|
+
case PositionAccessory.CLOSED: {
|
|
128
|
+
name = 'CLOSED';
|
|
129
|
+
break;
|
|
130
|
+
}
|
|
131
|
+
case PositionAccessory.OPEN: {
|
|
132
|
+
name = 'OPEN';
|
|
133
|
+
break;
|
|
134
|
+
}
|
|
135
|
+
default: {
|
|
136
|
+
name = `POSITION: ${position.toString()}%`;
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
if (position > PositionAccessory.OPEN) {
|
|
140
|
+
name = `INVALID ${name}%`;
|
|
141
|
+
}
|
|
142
|
+
return name;
|
|
143
|
+
}
|
|
144
|
+
static getPositionStateName(state) {
|
|
145
|
+
let name;
|
|
146
|
+
switch (state) {
|
|
147
|
+
case undefined: {
|
|
148
|
+
name = 'undefined';
|
|
149
|
+
break;
|
|
150
|
+
}
|
|
151
|
+
case PositionAccessory.DECREASING: {
|
|
152
|
+
name = 'DECREASING';
|
|
153
|
+
break;
|
|
154
|
+
}
|
|
155
|
+
case PositionAccessory.INCREASING: {
|
|
156
|
+
name = 'INCREASING';
|
|
157
|
+
break;
|
|
158
|
+
}
|
|
159
|
+
case PositionAccessory.STOPPED: {
|
|
160
|
+
name = 'STOPPED';
|
|
161
|
+
break;
|
|
162
|
+
}
|
|
163
|
+
default: {
|
|
164
|
+
name = state.toString();
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
return name;
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
//# sourceMappingURL=positionAccessory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"positionAccessory.js","sourceRoot":"","sources":["../../src/accessories/positionAccessory.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAA8B,MAAM,gBAAgB,CAAC;AAEhF,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAG3C,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAE1C;;GAEG;AACH,MAAM,OAAgB,iBAAkB,SAAQ,SAAS;IAE/C,MAAM,CAAU,gBAAgB,GAAW,CAAC,CAAC;IAC7C,MAAM,CAAU,oBAAoB,GAAW,CAAC,CAAC;IAExC,eAAe,GAAW,UAAU,CAAC;IAE9C,eAAe,CAAQ;IACvB,eAAe,GAAW,CAAC,CAAC;IAE5B,8BAA8B,CAAiC;IAEvE,YACE,QAAoC,EACpC,SAA4B,EAC5B,sBAA8C,EAC9C,WAAqC;QAErC,KAAK,CAAC,QAAQ,EAAE,SAAS,EAAE,sBAAsB,EAAE,WAAW,CAAC,CAAC;QAEhE,gBAAgB;QAChB,IAAI,eAAe,GAAW,iBAAiB,CAAC,MAAM,CAAC;QACvD,IAAI,cAAc,GAAW,iBAAiB,CAAC,MAAM,CAAC;QACtD,MAAM,aAAa,GAAW,iBAAiB,CAAC,OAAO,CAAC;QAExD,4DAA4D;QAC5D,IAAI,CAAC,8BAA8B,GAAG,IAAI,CAAC,iCAAiC,EAAE,CAAC;QAC/E,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,8BAA8B,CAAC,YAAY,KAAK,MAAM,CAAC,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,iBAAiB,CAAC,MAAM,CAAC;QAEpI,eAAe,GAAG,IAAI,CAAC,YAAY,CAAC;QAEpC,qDAAqD;QACrD,IAAI,IAAI,CAAC,sBAAsB,CAAC,mBAAmB,EAAE,CAAC;YACpD,MAAM,cAAc,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YACjE,MAAM,WAAW,GAAW,cAAc,CAAC,IAAI,CAAC,eAAe,CAAW,CAAC;YAE3E,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;gBAC9B,eAAe,GAAG,WAAW,CAAC;YAChC,CAAC;QACH,CAAC;QAED,cAAc,GAAG,eAAe,CAAC;QAEjC,MAAM,iBAAiB,GAAY,IAAI,CAAC;QACxC,IAAI,CAAC,eAAe,GAAG,IAAI,KAAK,CAC9B,IAAI,CAAC,sBAAsB,CAAC,aAAa,EACzC,IAAI,CAAC,GAAG,EACR,iBAAiB,CAElB,CAAC;QAEF,4CAA4C;QAE5C,IAAI,CAAC,kBAAkB,CAAC,eAAe,CAAC,CAAC;QACzC,IAAI,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC;QACvC,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC;QAErC,yBAAyB;QAEzB,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,eAAe,CAAC;aAC/D,KAAK,CAAC,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAEpD,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,cAAc,CAAC;aAC9D,KAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aAC/C,KAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAEnD,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,aAAa,CAAC;aAC7D,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACpD,CAAC;IAED,EAAE;IACF,yEAAyE;IACzE,EAAE;IAEF,kBAAkB;IAElB,KAAK,CAAC,yBAAyB;QAC7B,iFAAiF;QACjF,IAAI,IAAI,CAAC,eAAe,CAAC,cAAc,EAAE,EAAE,CAAC;YAC1C,MAAM,aAAa,GAAW,IAAI,CAAC,eAAe,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC;YACvE,MAAM,cAAc,GAAW,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,0BAA0B,EAAE,GAAG,aAAa,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC;YAEnI,MAAM,cAAc,GAAW,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACxD,IAAI,CAAC,qBAAqB,CAAC,cAAc,GAAG,cAAc,CAAC,CAAC;QAC9D,CAAC;QAED,MAAM,eAAe,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAClD,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,aAAa,+BAA+B,iBAAiB,CAAC,eAAe,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;QAE1H,OAAO,eAAe,CAAC;IACzB,CAAC;IAED,iBAAiB;IAEjB,KAAK,CAAC,wBAAwB;QAC5B,MAAM,cAAc,GAAW,IAAI,CAAC,sBAAsB,CAAC,kBAAkB,CAAC,cAAc,CAAW,CAAC;QACxG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,aAAa,8BAA8B,iBAAiB,CAAC,eAAe,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;QAExH,OAAO,cAAc,CAAC;IACxB,CAAC;IAED,KAAK,CAAC,wBAAwB,CAAC,KAA0B;QACvD,IAAI,cAAc,GAAW,KAAe,CAAC;QAC7C,cAAc,GAAG,IAAI,CAAC,oBAAoB,CAAC,cAAc,CAAC,CAAC;QAC3D,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,aAAa,8BAA8B,iBAAiB,CAAC,eAAe,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;QAEvH,MAAM,eAAe,GAAW,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC1D,IAAI,aAAa,GAAW,CAAC,cAAc,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC,CAAC,iBAAiB,CAAC,UAAU,CAAC;QAC7H,aAAa,GAAG,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,CAAC;QACxD,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,aAAa,6BAA6B,iBAAiB,CAAC,oBAAoB,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;QAE1H,MAAM,kBAAkB,GAAG,IAAI,CAAC,8BAA8B,CAAC,kBAAkB,CAAC;QAClF,MAAM,eAAe,GAAW,CAAC,kBAAkB,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,iBAAiB,CAAC,oBAAoB,CAAC,CAAC;QAEnH,IAAI,CAAC,eAAe,GAAG,cAAc,GAAG,eAAe,CAAC;QACxD,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,aAAa,uBAAuB,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC;QACpF,MAAM,2BAA2B,GAAW,IAAI,CAAC,GAAG;QAClD,iCAAiC;QACjC,IAAI,CAAC,IAAI,CAAC,eAAe,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,EACjE,iBAAiB,CAAC,gBAAgB,CAAC,CAAC;QACtC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,aAAa,yBAAyB,2BAA2B,KAAK,eAAe,GAAG,CAAC,CAAC;QAElH,MAAM,oBAAoB,GAAG,GAAG,CAAC;QAEjC,oCAAoC;QACpC,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC;QAE5B,IAAI,CAAC,eAAe,CAAC,KAAK,CACxB,GAAG,EAAE;YACH,MAAM,aAAa,GAAW,IAAI,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;YAClF,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,aAAa,6BAA6B,iBAAiB,CAAC,oBAAoB,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;YAE1H,MAAM,eAAe,GAAW,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC;YACrF,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,aAAa,+BAA+B,iBAAiB,CAAC,eAAe,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;YAEzH,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC;YAEzB,IAAI,CAAC,SAAS,EAAE,CAAC;QACnB,CAAC,EACD,2BAA2B,EAC3B,oBAAoB,CACrB,CAAC;IACJ,CAAC;IAED,gBAAgB;IAEhB,KAAK,CAAC,uBAAuB;QAC3B,MAAM,aAAa,GAAW,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACtD,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,aAAa,6BAA6B,iBAAiB,CAAC,oBAAoB,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;QAE3H,OAAO,aAAa,CAAC;IACvB,CAAC;IAED,EAAE;IAEQ,YAAY;QACpB,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC;YAC1B,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,IAAI,CAAC,kBAAkB,EAAE;SAClD,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IACd,CAAC;IAQD,EAAE;IACF,gFAAgF;IAChF,EAAE;IAEF,sBAAsB;IAEtB,MAAM,KAAK,MAAM,KAAiB,OAAO,CAAC,CAAC,CAAC,CAAC,CAAG,KAAK;IACrD,MAAM,KAAK,IAAI,KAAmB,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO;IAEvD,MAAM,KAAK,UAAU,KAAa,OAAO,kBAAkB,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC,CAAC,CAAE,aAAa;IACtG,MAAM,KAAK,UAAU,KAAa,OAAO,kBAAkB,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC,CAAC,CAAE,aAAa;IACtG,MAAM,KAAK,OAAO,KAAgB,OAAO,kBAAkB,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,CAAK,oBAAoB;IAE7G,MAAM,CAAC,eAAe,CAAC,QAAgB;QACrC,IAAI,IAAY,CAAC;QAEjB,QAAQ,QAAQ,EAAE,CAAC;YACnB,KAAK,SAAS,CAAC,CAAC,CAAC;gBAAC,IAAI,GAAG,WAAW,CAAC;gBAAC,MAAM;YAAC,CAAC;YAC9C,KAAK,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC;gBAAC,IAAI,GAAG,QAAQ,CAAC;gBAAC,MAAM;YAAC,CAAC;YAC1D,KAAK,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC;gBAAC,IAAI,GAAG,MAAM,CAAC;gBAAC,MAAM;YAAC,CAAC;YACtD,OAAO,CAAC,CAAC,CAAC;gBAAC,IAAI,GAAG,aAAa,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAC;YAAC,CAAC;QACxD,CAAC;QAED,IAAI,QAAQ,GAAG,iBAAiB,CAAC,IAAI,EAAE,CAAC;YACtC,IAAI,GAAG,WAAW,IAAI,GAAG,CAAC;QAC5B,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,CAAC,oBAAoB,CAAC,KAAa;QACvC,IAAI,IAAY,CAAC;QAEjB,QAAQ,KAAK,EAAE,CAAC;YAChB,KAAK,SAAS,CAAC,CAAC,CAAC;gBAAC,IAAI,GAAG,WAAW,CAAC;gBAAC,MAAM;YAAC,CAAC;YAC9C,KAAK,iBAAiB,CAAC,UAAU,CAAC,CAAC,CAAC;gBAAC,IAAI,GAAG,YAAY,CAAC;gBAAC,MAAM;YAAC,CAAC;YAClE,KAAK,iBAAiB,CAAC,UAAU,CAAC,CAAC,CAAC;gBAAC,IAAI,GAAG,YAAY,CAAC;gBAAC,MAAM;YAAC,CAAC;YAClE,KAAK,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC;gBAAC,IAAI,GAAG,SAAS,CAAC;gBAAC,MAAM;YAAC,CAAC;YAC5D,OAAO,CAAC,CAAC,CAAC;gBAAC,IAAI,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;YAAC,CAAC;QACrC,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
*
|
|
3
3
|
*/
|
|
4
|
-
export interface
|
|
5
|
-
|
|
4
|
+
export interface UpdatableChargingStatus {
|
|
5
|
+
updateChargingStatus(charging: boolean, charge: number, accessoryId: string): void;
|
|
6
6
|
}
|
|
@@ -6,29 +6,26 @@ import { Accessory } from './accessory.js';
|
|
|
6
6
|
* AirPurifier - Accessory implementation
|
|
7
7
|
*/
|
|
8
8
|
export declare class AirPurifier extends Accessory {
|
|
9
|
-
static readonly ACCESSORY_TYPE_NAME: string;
|
|
10
|
-
static readonly CURRENTLY_INACTIVE: number;
|
|
11
|
-
static readonly CURRENTLY_IDLE: number;
|
|
12
|
-
static readonly CURRENTLY_PURIFYING_AIR: number;
|
|
13
|
-
static readonly MANUAL: number;
|
|
14
|
-
static readonly AUTO: number;
|
|
15
|
-
static readonly INACTIVE: number;
|
|
16
|
-
static readonly ACTIVE: number;
|
|
17
9
|
private readonly stateStorageKey;
|
|
18
10
|
private readonly targetStateStorageKey;
|
|
19
11
|
private readonly rotatioSpeedStorageKey;
|
|
20
|
-
private states;
|
|
21
12
|
constructor(platform: VirtualAccessoriesPlatform, accessory: PlatformAccessory, accessoryConfiguration: AccessoryConfiguration);
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
13
|
+
getActiveHandler(): Promise<CharacteristicValue>;
|
|
14
|
+
setActiveHandler(value: CharacteristicValue): Promise<void>;
|
|
15
|
+
getCurrentAirPurifierStateHandler(): Promise<CharacteristicValue>;
|
|
16
|
+
getTargetAirPurifierStateHandler(): Promise<CharacteristicValue>;
|
|
17
|
+
setTargetAirPurifierStateHandler(value: CharacteristicValue): Promise<void>;
|
|
18
|
+
getRotationSpeedHandler(): Promise<CharacteristicValue>;
|
|
19
|
+
setRotationSpeedHandler(value: CharacteristicValue): Promise<void>;
|
|
29
20
|
protected getJsonState(): string;
|
|
30
|
-
|
|
31
|
-
|
|
21
|
+
private refreshDeviceOperationalCondition;
|
|
22
|
+
static get CURRENTLY_INACTIVE(): number;
|
|
23
|
+
static get CURRENTLY_IDLE(): number;
|
|
24
|
+
static get CURRENTLY_PURIFYING_AIR(): number;
|
|
25
|
+
static get MANUAL(): number;
|
|
26
|
+
static get AUTO(): number;
|
|
27
|
+
static get INACTIVE(): number;
|
|
28
|
+
static get ACTIVE(): number;
|
|
32
29
|
static getActiveName(status: number): string;
|
|
33
30
|
static getCurrentStateName(state: number): string;
|
|
34
31
|
static getTargetStateName(state: number): string;
|