homebridge-virtual-accessories 3.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/LICENSE +7 -0
- package/README.md +1091 -0
- package/VirtualAccessories.jpg +0 -0
- package/VirtualAccessories.png +0 -0
- package/assets/changeorder.png +0 -0
- package/assets/creative-ideas/HowToAddAFakeThermostat.png +0 -0
- package/assets/keepaccessories.png +0 -0
- package/assets/mentions/youtube-EdgarsHomeTech.png +0 -0
- package/assets/mentions/youtube-MakeSmartMatter.png +0 -0
- package/assets/wiki/automation-shortcut-1.png +0 -0
- package/assets/wiki/automation-shortcut-2.png +0 -0
- package/assets/wiki/cron-schedule-config.png +0 -0
- package/assets/wiki/enable-sensor-webhooks.png +0 -0
- package/assets/wiki/humidifier-dehumidifier-config.png +0 -0
- package/assets/wiki/new-automation.png +0 -0
- package/assets/wiki/timer-duration-new.png +0 -0
- package/assets/wiki/timer-duration-old.png +0 -0
- package/assets/wiki/valve-timer-duration-new.png +0 -0
- package/assets/wiki/valve-timer-duration-old.png +0 -0
- package/config.schema.json +1570 -0
- package/dist/accessories/audioAccessory.d.ts +29 -0
- package/dist/accessories/audioAccessory.js +119 -0
- package/dist/accessories/audioAccessory.js.map +1 -0
- package/dist/accessories/externalAccessory.d.ts +10 -0
- package/dist/accessories/externalAccessory.js +13 -0
- package/dist/accessories/externalAccessory.js.map +1 -0
- package/dist/accessories/openingAccessory.d.ts +35 -0
- package/dist/accessories/openingAccessory.js +166 -0
- package/dist/accessories/openingAccessory.js.map +1 -0
- package/dist/accessories/triggerableEventAccessory.d.ts +7 -0
- package/dist/accessories/triggerableEventAccessory.js +2 -0
- package/dist/accessories/triggerableEventAccessory.js.map +1 -0
- package/dist/accessories/virtualAccessory.d.ts +29 -0
- package/dist/accessories/virtualAccessory.js +86 -0
- package/dist/accessories/virtualAccessory.js.map +1 -0
- package/dist/accessories/virtualAccessoryDoor.d.ts +14 -0
- package/dist/accessories/virtualAccessoryDoor.js +20 -0
- package/dist/accessories/virtualAccessoryDoor.js.map +1 -0
- package/dist/accessories/virtualAccessoryDoorbell.d.ts +29 -0
- package/dist/accessories/virtualAccessoryDoorbell.js +111 -0
- package/dist/accessories/virtualAccessoryDoorbell.js.map +1 -0
- package/dist/accessories/virtualAccessoryFan.d.ts +27 -0
- package/dist/accessories/virtualAccessoryFan.js +122 -0
- package/dist/accessories/virtualAccessoryFan.js.map +1 -0
- package/dist/accessories/virtualAccessoryFilterMaintenance.d.ts +26 -0
- package/dist/accessories/virtualAccessoryFilterMaintenance.js +122 -0
- package/dist/accessories/virtualAccessoryFilterMaintenance.js.map +1 -0
- package/dist/accessories/virtualAccessoryGarageDoor.d.ts +28 -0
- package/dist/accessories/virtualAccessoryGarageDoor.js +162 -0
- package/dist/accessories/virtualAccessoryGarageDoor.js.map +1 -0
- package/dist/accessories/virtualAccessoryHeaterCooler.d.ts +62 -0
- package/dist/accessories/virtualAccessoryHeaterCooler.js +441 -0
- package/dist/accessories/virtualAccessoryHeaterCooler.js.map +1 -0
- package/dist/accessories/virtualAccessoryHumidifierDehumidifier.d.ts +53 -0
- package/dist/accessories/virtualAccessoryHumidifierDehumidifier.js +365 -0
- package/dist/accessories/virtualAccessoryHumidifierDehumidifier.js.map +1 -0
- package/dist/accessories/virtualAccessoryInputSource.d.ts +38 -0
- package/dist/accessories/virtualAccessoryInputSource.js +196 -0
- package/dist/accessories/virtualAccessoryInputSource.js.map +1 -0
- package/dist/accessories/virtualAccessoryLightbulb.d.ts +37 -0
- package/dist/accessories/virtualAccessoryLightbulb.js +222 -0
- package/dist/accessories/virtualAccessoryLightbulb.js.map +1 -0
- package/dist/accessories/virtualAccessoryLock.d.ts +34 -0
- package/dist/accessories/virtualAccessoryLock.js +198 -0
- package/dist/accessories/virtualAccessoryLock.js.map +1 -0
- package/dist/accessories/virtualAccessorySecuritySystem.d.ts +30 -0
- package/dist/accessories/virtualAccessorySecuritySystem.js +214 -0
- package/dist/accessories/virtualAccessorySecuritySystem.js.map +1 -0
- package/dist/accessories/virtualAccessorySpeaker.d.ts +14 -0
- package/dist/accessories/virtualAccessorySpeaker.js +20 -0
- package/dist/accessories/virtualAccessorySpeaker.js.map +1 -0
- package/dist/accessories/virtualAccessorySwitch.d.ts +34 -0
- package/dist/accessories/virtualAccessorySwitch.js +191 -0
- package/dist/accessories/virtualAccessorySwitch.js.map +1 -0
- package/dist/accessories/virtualAccessoryTelevision.d.ts +44 -0
- package/dist/accessories/virtualAccessoryTelevision.js +230 -0
- package/dist/accessories/virtualAccessoryTelevision.js.map +1 -0
- package/dist/accessories/virtualAccessoryValve.d.ts +34 -0
- package/dist/accessories/virtualAccessoryValve.js +215 -0
- package/dist/accessories/virtualAccessoryValve.js.map +1 -0
- package/dist/accessories/virtualAccessoryWindow.d.ts +14 -0
- package/dist/accessories/virtualAccessoryWindow.js +20 -0
- package/dist/accessories/virtualAccessoryWindow.js.map +1 -0
- package/dist/accessories/virtualAccessoryWindowCovering.d.ts +14 -0
- package/dist/accessories/virtualAccessoryWindowCovering.js +20 -0
- package/dist/accessories/virtualAccessoryWindowCovering.js.map +1 -0
- package/dist/accessoryFactory.d.ts +15 -0
- package/dist/accessoryFactory.js +147 -0
- package/dist/accessoryFactory.js.map +1 -0
- package/dist/colors.d.ts +22 -0
- package/dist/colors.js +146 -0
- package/dist/colors.js.map +1 -0
- package/dist/companions/companionLightbulb.d.ts +10 -0
- package/dist/companions/companionLightbulb.js +12 -0
- package/dist/companions/companionLightbulb.js.map +1 -0
- package/dist/companions/companionSensors.d.ts +9 -0
- package/dist/companions/companionSensors.js +117 -0
- package/dist/companions/companionSensors.js.map +1 -0
- package/dist/companions/companionSwitch.d.ts +15 -0
- package/dist/companions/companionSwitch.js +46 -0
- package/dist/companions/companionSwitch.js.map +1 -0
- package/dist/configuration/accessories/configurationDoor.d.ts +9 -0
- package/dist/configuration/accessories/configurationDoor.js +31 -0
- package/dist/configuration/accessories/configurationDoor.js.map +1 -0
- package/dist/configuration/accessories/configurationDoorbell.d.ts +10 -0
- package/dist/configuration/accessories/configurationDoorbell.js +23 -0
- package/dist/configuration/accessories/configurationDoorbell.js.map +1 -0
- package/dist/configuration/accessories/configurationFan.d.ts +12 -0
- package/dist/configuration/accessories/configurationFan.js +36 -0
- package/dist/configuration/accessories/configurationFan.js.map +1 -0
- package/dist/configuration/accessories/configurationFilterMaintenance.d.ts +12 -0
- package/dist/configuration/accessories/configurationFilterMaintenance.js +48 -0
- package/dist/configuration/accessories/configurationFilterMaintenance.js.map +1 -0
- package/dist/configuration/accessories/configurationGarageDoor.d.ts +9 -0
- package/dist/configuration/accessories/configurationGarageDoor.js +31 -0
- package/dist/configuration/accessories/configurationGarageDoor.js.map +1 -0
- package/dist/configuration/accessories/configurationHeaterCooler.d.ts +20 -0
- package/dist/configuration/accessories/configurationHeaterCooler.js +116 -0
- package/dist/configuration/accessories/configurationHeaterCooler.js.map +1 -0
- package/dist/configuration/accessories/configurationHumidifierDehumidifier.d.ts +12 -0
- package/dist/configuration/accessories/configurationHumidifierDehumidifier.js +44 -0
- package/dist/configuration/accessories/configurationHumidifierDehumidifier.js.map +1 -0
- package/dist/configuration/accessories/configurationInputSource.d.ts +12 -0
- package/dist/configuration/accessories/configurationInputSource.js +33 -0
- package/dist/configuration/accessories/configurationInputSource.js.map +1 -0
- package/dist/configuration/accessories/configurationLightbulb.d.ts +14 -0
- package/dist/configuration/accessories/configurationLightbulb.js +55 -0
- package/dist/configuration/accessories/configurationLightbulb.js.map +1 -0
- package/dist/configuration/accessories/configurationLock.d.ts +11 -0
- package/dist/configuration/accessories/configurationLock.js +30 -0
- package/dist/configuration/accessories/configurationLock.js.map +1 -0
- package/dist/configuration/accessories/configurationSecuritySystem.d.ts +18 -0
- package/dist/configuration/accessories/configurationSecuritySystem.js +48 -0
- package/dist/configuration/accessories/configurationSecuritySystem.js.map +1 -0
- package/dist/configuration/accessories/configurationSpeaker.d.ts +9 -0
- package/dist/configuration/accessories/configurationSpeaker.js +24 -0
- package/dist/configuration/accessories/configurationSpeaker.js.map +1 -0
- package/dist/configuration/accessories/configurationSwitch.d.ts +13 -0
- package/dist/configuration/accessories/configurationSwitch.js +27 -0
- package/dist/configuration/accessories/configurationSwitch.js.map +1 -0
- package/dist/configuration/accessories/configurationTelevision.d.ts +12 -0
- package/dist/configuration/accessories/configurationTelevision.js +47 -0
- package/dist/configuration/accessories/configurationTelevision.js.map +1 -0
- package/dist/configuration/accessories/configurationValve.d.ts +25 -0
- package/dist/configuration/accessories/configurationValve.js +88 -0
- package/dist/configuration/accessories/configurationValve.js.map +1 -0
- package/dist/configuration/accessories/configurationWindow.d.ts +9 -0
- package/dist/configuration/accessories/configurationWindow.js +31 -0
- package/dist/configuration/accessories/configurationWindow.js.map +1 -0
- package/dist/configuration/accessories/configurationWindowCovering.d.ts +9 -0
- package/dist/configuration/accessories/configurationWindowCovering.js +31 -0
- package/dist/configuration/accessories/configurationWindowCovering.js.map +1 -0
- package/dist/configuration/configuration.d.ts +13 -0
- package/dist/configuration/configuration.js +41 -0
- package/dist/configuration/configuration.js.map +1 -0
- package/dist/configuration/configurationAccessory.d.ts +6 -0
- package/dist/configuration/configurationAccessory.js +6 -0
- package/dist/configuration/configurationAccessory.js.map +1 -0
- package/dist/configuration/configurationAudioAccessoryConfiguration.d.ts +9 -0
- package/dist/configuration/configurationAudioAccessoryConfiguration.js +9 -0
- package/dist/configuration/configurationAudioAccessoryConfiguration.js.map +1 -0
- package/dist/configuration/configurationCompanionSensor.d.ts +11 -0
- package/dist/configuration/configurationCompanionSensor.js +26 -0
- package/dist/configuration/configurationCompanionSensor.js.map +1 -0
- package/dist/configuration/configurationDuration.d.ts +19 -0
- package/dist/configuration/configurationDuration.js +55 -0
- package/dist/configuration/configurationDuration.js.map +1 -0
- package/dist/configuration/configurationOpenableAccesory.d.ts +9 -0
- package/dist/configuration/configurationOpenableAccesory.js +9 -0
- package/dist/configuration/configurationOpenableAccesory.js.map +1 -0
- package/dist/configuration/configurationPlatform.d.ts +76 -0
- package/dist/configuration/configurationPlatform.js +381 -0
- package/dist/configuration/configurationPlatform.js.map +1 -0
- package/dist/configuration/configurationSchema.d.ts +178 -0
- package/dist/configuration/configurationSchema.js +198 -0
- package/dist/configuration/configurationSchema.js.map +1 -0
- package/dist/configuration/configurationSensor.d.ts +11 -0
- package/dist/configuration/configurationSensor.js +30 -0
- package/dist/configuration/configurationSensor.js.map +1 -0
- package/dist/configuration/configurationSensorServer.d.ts +11 -0
- package/dist/configuration/configurationSensorServer.js +26 -0
- package/dist/configuration/configurationSensorServer.js.map +1 -0
- package/dist/configuration/configurationTimer.d.ts +15 -0
- package/dist/configuration/configurationTimer.js +101 -0
- package/dist/configuration/configurationTimer.js.map +1 -0
- package/dist/configuration/triggers/configurationCronTrigger.d.ts +18 -0
- package/dist/configuration/triggers/configurationCronTrigger.js +65 -0
- package/dist/configuration/triggers/configurationCronTrigger.js.map +1 -0
- package/dist/configuration/triggers/configurationPingTrigger.d.ts +11 -0
- package/dist/configuration/triggers/configurationPingTrigger.js +26 -0
- package/dist/configuration/triggers/configurationPingTrigger.js.map +1 -0
- package/dist/configuration/triggers/configurationSunEventsTrigger.d.ts +18 -0
- package/dist/configuration/triggers/configurationSunEventsTrigger.js +52 -0
- package/dist/configuration/triggers/configurationSunEventsTrigger.js.map +1 -0
- package/dist/configuration/triggers/configurationWebhookTriggerConfiguration.d.ts +9 -0
- package/dist/configuration/triggers/configurationWebhookTriggerConfiguration.js +17 -0
- package/dist/configuration/triggers/configurationWebhookTriggerConfiguration.js.map +1 -0
- package/dist/errors.d.ts +27 -0
- package/dist/errors.js +52 -0
- package/dist/errors.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.js +9 -0
- package/dist/index.js.map +1 -0
- package/dist/platform.d.ts +28 -0
- package/dist/platform.js +221 -0
- package/dist/platform.js.map +1 -0
- package/dist/sensorServer.d.ts +27 -0
- package/dist/sensorServer.js +227 -0
- package/dist/sensorServer.js.map +1 -0
- package/dist/sensors/virtualSensor.d.ts +37 -0
- package/dist/sensors/virtualSensor.js +87 -0
- package/dist/sensors/virtualSensor.js.map +1 -0
- package/dist/sensors/virtualSensorCarbonDioxide.d.ts +20 -0
- package/dist/sensors/virtualSensorCarbonDioxide.js +45 -0
- package/dist/sensors/virtualSensorCarbonDioxide.js.map +1 -0
- package/dist/sensors/virtualSensorCarbonMonoxide.d.ts +20 -0
- package/dist/sensors/virtualSensorCarbonMonoxide.js +45 -0
- package/dist/sensors/virtualSensorCarbonMonoxide.js.map +1 -0
- package/dist/sensors/virtualSensorContact.d.ts +20 -0
- package/dist/sensors/virtualSensorContact.js +45 -0
- package/dist/sensors/virtualSensorContact.js.map +1 -0
- package/dist/sensors/virtualSensorLeak.d.ts +20 -0
- package/dist/sensors/virtualSensorLeak.js +45 -0
- package/dist/sensors/virtualSensorLeak.js.map +1 -0
- package/dist/sensors/virtualSensorMotion.d.ts +20 -0
- package/dist/sensors/virtualSensorMotion.js +45 -0
- package/dist/sensors/virtualSensorMotion.js.map +1 -0
- package/dist/sensors/virtualSensorOccupancy.d.ts +20 -0
- package/dist/sensors/virtualSensorOccupancy.js +45 -0
- package/dist/sensors/virtualSensorOccupancy.js.map +1 -0
- package/dist/sensors/virtualSensorSmoke.d.ts +20 -0
- package/dist/sensors/virtualSensorSmoke.js +45 -0
- package/dist/sensors/virtualSensorSmoke.js.map +1 -0
- package/dist/settings.d.ts +8 -0
- package/dist/settings.js +9 -0
- package/dist/settings.js.map +1 -0
- package/dist/timer.d.ts +58 -0
- package/dist/timer.js +110 -0
- package/dist/timer.js.map +1 -0
- package/dist/triggerableSensor.d.ts +6 -0
- package/dist/triggerableSensor.js +2 -0
- package/dist/triggerableSensor.js.map +1 -0
- package/dist/triggers/trigger.d.ts +13 -0
- package/dist/triggers/trigger.js +16 -0
- package/dist/triggers/trigger.js.map +1 -0
- package/dist/triggers/triggerCron.d.ts +19 -0
- package/dist/triggers/triggerCron.js +102 -0
- package/dist/triggers/triggerCron.js.map +1 -0
- package/dist/triggers/triggerPing.d.ts +19 -0
- package/dist/triggers/triggerPing.js +110 -0
- package/dist/triggers/triggerPing.js.map +1 -0
- package/dist/triggers/triggerSunEvents.d.ts +20 -0
- package/dist/triggers/triggerSunEvents.js +200 -0
- package/dist/triggers/triggerSunEvents.js.map +1 -0
- package/dist/triggers/triggerWebhook.d.ts +10 -0
- package/dist/triggers/triggerWebhook.js +26 -0
- package/dist/triggers/triggerWebhook.js.map +1 -0
- package/dist/updatableObstruction.d.ts +6 -0
- package/dist/updatableObstruction.js +2 -0
- package/dist/updatableObstruction.js.map +1 -0
- package/dist/updatableSensor.d.ts +6 -0
- package/dist/updatableSensor.js +2 -0
- package/dist/updatableSensor.js.map +1 -0
- package/dist/utils.d.ts +28 -0
- package/dist/utils.js +120 -0
- package/dist/utils.js.map +1 -0
- package/dist/virtualLogger.d.ts +15 -0
- package/dist/virtualLogger.js +38 -0
- package/dist/virtualLogger.js.map +1 -0
- package/package.json +120 -0
@@ -0,0 +1,230 @@
|
|
1
|
+
import { ExternalAccessory } from './externalAccessory.js';
|
2
|
+
import { InputSource } from './virtualAccessoryInputSource.js';
|
3
|
+
/**
|
4
|
+
* Television - Accessory implementation
|
5
|
+
*/
|
6
|
+
export class Television extends ExternalAccessory {
|
7
|
+
static ACCESSORY_TYPE_NAME = 'Television';
|
8
|
+
static INACTIVE = 0; // Characteristic.Active.INACTIVE
|
9
|
+
static ACTIVE = 1; // Characteristic.Active.ACTIVE
|
10
|
+
static NOT_DISCOVERABLE = 0; // Characteristic.SleepDiscoveryMode.NOT_DISCOVERABLE
|
11
|
+
static ALWAYS_DISCOVERABLE = 1; // Characteristic.SleepDiscoveryMode.ALWAYS_DISCOVERABLE
|
12
|
+
static REWIND = 0; // Characteristic.RemoteKey.REWIND
|
13
|
+
static FAST_FORWARD = 1; // Characteristic.RemoteKey.FAST_FORWARD
|
14
|
+
static NEXT_TRACK = 2; // Characteristic.RemoteKey.NEXT_TRACK
|
15
|
+
static PREVIOUS_TRACK = 3; // Characteristic.RemoteKey.PREVIOUS_TRACK
|
16
|
+
static ARROW_UP = 4; // Characteristic.RemoteKey.ARROW_UP
|
17
|
+
static ARROW_DOWN = 5; // Characteristic.RemoteKey.ARROW_DOWN
|
18
|
+
static ARROW_LEFT = 6; // Characteristic.RemoteKey.ARROW_LEFT
|
19
|
+
static ARROW_RIGHT = 7; // Characteristic.RemoteKey.ARROW_RIGHT
|
20
|
+
static SELECT = 8; // Characteristic.RemoteKey.SELECT
|
21
|
+
static BACK = 9; // Characteristic.RemoteKey.BACK
|
22
|
+
static EXIT = 10; // Characteristic.RemoteKey.EXIT
|
23
|
+
static PLAY_PAUSE = 11; // Characteristic.RemoteKey.PLAY_PAUSE
|
24
|
+
static INFORMATION = 15; // Characteristic.RemoteKey.INFORMATION
|
25
|
+
stateStorageKey = 'TelevisionState';
|
26
|
+
inputActiveIdStorageKey = 'TelevisionInputActiveId';
|
27
|
+
configuredNameStorageKey = 'TelevisionConfiguredName';
|
28
|
+
inputSources = [];
|
29
|
+
states = {
|
30
|
+
TelevisionState: Television.INACTIVE,
|
31
|
+
TelevisionInputActiveId: 0,
|
32
|
+
TelevisionConfiguredName: '',
|
33
|
+
TelevisionSleepDiscoveryMode: Television.ALWAYS_DISCOVERABLE,
|
34
|
+
};
|
35
|
+
constructor(platform, accessory) {
|
36
|
+
super(platform, accessory);
|
37
|
+
this.states.TelevisionConfiguredName = this.accessoryConfiguration.accessoryName;
|
38
|
+
// If the accessory is stateful retrieve stored state
|
39
|
+
if (this.accessoryConfiguration.accessoryIsStateful) {
|
40
|
+
const accessoryState = this.loadAccessoryState(this.storagePath);
|
41
|
+
const cachedState = accessoryState[this.stateStorageKey];
|
42
|
+
const cachedInputActiveId = accessoryState[this.inputActiveIdStorageKey];
|
43
|
+
const cachedConfiguredName = accessoryState[this.configuredNameStorageKey];
|
44
|
+
if (cachedState !== undefined) {
|
45
|
+
this.states.TelevisionState = cachedState;
|
46
|
+
}
|
47
|
+
if (cachedInputActiveId !== undefined) {
|
48
|
+
this.states.TelevisionInputActiveId = cachedInputActiveId;
|
49
|
+
}
|
50
|
+
if (cachedConfiguredName !== undefined) {
|
51
|
+
this.states.TelevisionConfiguredName = cachedConfiguredName;
|
52
|
+
}
|
53
|
+
}
|
54
|
+
// set accessory information
|
55
|
+
this.service = this.accessory.getService(this.platform.Service.Television) || this.accessory.addService(this.platform.Service.Television);
|
56
|
+
this.service.setCharacteristic(this.platform.Characteristic.Name, this.accessoryConfiguration.accessoryName);
|
57
|
+
// register handlers
|
58
|
+
this.service.getCharacteristic(this.platform.Characteristic.Active)
|
59
|
+
.onSet(this.setActive.bind(this))
|
60
|
+
.onGet(this.getActive.bind(this));
|
61
|
+
this.service.getCharacteristic(this.platform.Characteristic.ActiveIdentifier)
|
62
|
+
.onSet(this.setActiveIdentifier.bind(this))
|
63
|
+
.onGet(this.getActiveIdentifier.bind(this));
|
64
|
+
this.service.getCharacteristic(this.platform.Characteristic.ConfiguredName)
|
65
|
+
.onSet(this.setConfiguredName.bind(this))
|
66
|
+
.onGet(this.getConfiguredName.bind(this));
|
67
|
+
this.service.getCharacteristic(this.platform.Characteristic.RemoteKey)
|
68
|
+
.onSet(this.setRemoteKey.bind(this));
|
69
|
+
this.service.getCharacteristic(this.platform.Characteristic.SleepDiscoveryMode)
|
70
|
+
.onGet(this.getSleepDiscoveryMode.bind(this));
|
71
|
+
/**
|
72
|
+
* Creating multiple services of the same type.
|
73
|
+
*
|
74
|
+
* To avoid "Cannot add a Service with the same UUID another Service without also defining a unique 'subtype' property." error,
|
75
|
+
* when creating multiple services of the same type, you need to use the following syntax to specify a name and subtype id:
|
76
|
+
* this.accessory.getService('NAME') || this.accessory.addService(this.platform.Service.Lightbulb, 'NAME', 'USER_DEFINED_SUBTYPE_ID');
|
77
|
+
*
|
78
|
+
* The USER_DEFINED_SUBTYPE must be unique to the platform accessory (if you platform exposes multiple accessories, each accessory
|
79
|
+
* can use the same subtype id.)
|
80
|
+
*/
|
81
|
+
this.accessoryConfiguration.television.getInputSources().forEach(inputSourceConfig => {
|
82
|
+
// Enrich configuration with "inputSource" settings
|
83
|
+
const tempHolder = this.accessoryConfiguration.inputSource;
|
84
|
+
this.accessoryConfiguration.inputSource = inputSourceConfig;
|
85
|
+
const inputSource = new InputSource(this.platform, this.accessory);
|
86
|
+
this.accessory.getService(this.platform.Service.Television).addLinkedService(inputSource.service);
|
87
|
+
// Remove configuration enrichments
|
88
|
+
this.accessoryConfiguration.inputSource = tempHolder;
|
89
|
+
this.inputSources.push(inputSource);
|
90
|
+
});
|
91
|
+
}
|
92
|
+
// Handlers
|
93
|
+
async setActive(value) {
|
94
|
+
this.states.TelevisionState = value;
|
95
|
+
this.storeState();
|
96
|
+
this.log.info(`[${this.accessoryConfiguration.accessoryName}] Setting State: ${Television.getStateName(this.states.TelevisionState)}`);
|
97
|
+
}
|
98
|
+
async getActive() {
|
99
|
+
const televisionState = this.states.TelevisionState;
|
100
|
+
this.log.debug(`[${this.accessoryConfiguration.accessoryName}] Getting State: ${Television.getStateName(televisionState)}`);
|
101
|
+
return televisionState;
|
102
|
+
}
|
103
|
+
async setActiveIdentifier(value) {
|
104
|
+
this.states.TelevisionInputActiveId = value;
|
105
|
+
this.log.info(`[${this.accessoryConfiguration.accessoryName}] Setting Input Active Identifier: ${this.states.TelevisionInputActiveId}`);
|
106
|
+
}
|
107
|
+
async getActiveIdentifier() {
|
108
|
+
const inputActiveId = this.states.TelevisionInputActiveId;
|
109
|
+
this.log.debug(`[${this.accessoryConfiguration.accessoryName}] Getting Input Active Identifier: ${inputActiveId}`);
|
110
|
+
return inputActiveId;
|
111
|
+
}
|
112
|
+
async setConfiguredName(value) {
|
113
|
+
this.states.TelevisionConfiguredName = value;
|
114
|
+
this.storeState();
|
115
|
+
this.log.info(`[${this.accessoryConfiguration.accessoryName}] Setting Configured Name: ${this.states.TelevisionConfiguredName}`);
|
116
|
+
}
|
117
|
+
async getConfiguredName() {
|
118
|
+
const televisionConfiguredName = this.states.TelevisionConfiguredName;
|
119
|
+
this.log.debug(`[${this.accessoryConfiguration.accessoryName}] Getting Configured Name: ${televisionConfiguredName}`);
|
120
|
+
return televisionConfiguredName;
|
121
|
+
}
|
122
|
+
async setRemoteKey(value) {
|
123
|
+
const remoteKey = value;
|
124
|
+
this.log.debug(`[${this.accessoryConfiguration.accessoryName}] Setting Remote Key: ${Television.getKeyName(remoteKey)}`);
|
125
|
+
}
|
126
|
+
async getSleepDiscoveryMode() {
|
127
|
+
const sleepDiscoveryMode = this.states.TelevisionSleepDiscoveryMode;
|
128
|
+
this.log.debug(`[${this.accessoryConfiguration.accessoryName}] Getting Sleep Discovery Mode: ${sleepDiscoveryMode}`);
|
129
|
+
return sleepDiscoveryMode;
|
130
|
+
}
|
131
|
+
getJsonState() {
|
132
|
+
const jsonState = {
|
133
|
+
[this.stateStorageKey]: this.states.TelevisionState,
|
134
|
+
[this.inputActiveIdStorageKey]: this.states.TelevisionInputActiveId,
|
135
|
+
[this.configuredNameStorageKey]: this.states.TelevisionConfiguredName,
|
136
|
+
};
|
137
|
+
const json = JSON.stringify(jsonState);
|
138
|
+
return json;
|
139
|
+
}
|
140
|
+
getAccessoryTypeName() {
|
141
|
+
return Television.ACCESSORY_TYPE_NAME;
|
142
|
+
}
|
143
|
+
static getStateName(state) {
|
144
|
+
let stateName;
|
145
|
+
switch (state) {
|
146
|
+
case undefined: {
|
147
|
+
stateName = 'undefined';
|
148
|
+
break;
|
149
|
+
}
|
150
|
+
case Television.INACTIVE: {
|
151
|
+
stateName = 'INACTIVE';
|
152
|
+
break;
|
153
|
+
}
|
154
|
+
case Television.ACTIVE: {
|
155
|
+
stateName = 'ACTIVE';
|
156
|
+
break;
|
157
|
+
}
|
158
|
+
default: {
|
159
|
+
stateName = state.toString();
|
160
|
+
}
|
161
|
+
}
|
162
|
+
return stateName;
|
163
|
+
}
|
164
|
+
static getKeyName(state) {
|
165
|
+
let stateName;
|
166
|
+
switch (state) {
|
167
|
+
case undefined: {
|
168
|
+
stateName = 'undefined';
|
169
|
+
break;
|
170
|
+
}
|
171
|
+
case Television.REWIND: {
|
172
|
+
stateName = 'REWIND';
|
173
|
+
break;
|
174
|
+
}
|
175
|
+
case Television.FAST_FORWARD: {
|
176
|
+
stateName = 'FAST FORWARD';
|
177
|
+
break;
|
178
|
+
}
|
179
|
+
case Television.NEXT_TRACK: {
|
180
|
+
stateName = 'NEXT TRACK';
|
181
|
+
break;
|
182
|
+
}
|
183
|
+
case Television.PREVIOUS_TRACK: {
|
184
|
+
stateName = 'PREVIOUS TRACK';
|
185
|
+
break;
|
186
|
+
}
|
187
|
+
case Television.ARROW_UP: {
|
188
|
+
stateName = 'ARROW UP';
|
189
|
+
break;
|
190
|
+
}
|
191
|
+
case Television.ARROW_DOWN: {
|
192
|
+
stateName = 'ARROW DOWN';
|
193
|
+
break;
|
194
|
+
}
|
195
|
+
case Television.ARROW_LEFT: {
|
196
|
+
stateName = 'ARROW LEFT';
|
197
|
+
break;
|
198
|
+
}
|
199
|
+
case Television.ARROW_RIGHT: {
|
200
|
+
stateName = 'ARROW RIGHT';
|
201
|
+
break;
|
202
|
+
}
|
203
|
+
case Television.SELECT: {
|
204
|
+
stateName = 'SELECT';
|
205
|
+
break;
|
206
|
+
}
|
207
|
+
case Television.BACK: {
|
208
|
+
stateName = 'BACK';
|
209
|
+
break;
|
210
|
+
}
|
211
|
+
case Television.EXIT: {
|
212
|
+
stateName = 'EXIT';
|
213
|
+
break;
|
214
|
+
}
|
215
|
+
case Television.PLAY_PAUSE: {
|
216
|
+
stateName = 'PLAY PAUSE';
|
217
|
+
break;
|
218
|
+
}
|
219
|
+
case Television.INFORMATION: {
|
220
|
+
stateName = 'INFORMATION';
|
221
|
+
break;
|
222
|
+
}
|
223
|
+
default: {
|
224
|
+
stateName = state.toString();
|
225
|
+
}
|
226
|
+
}
|
227
|
+
return stateName;
|
228
|
+
}
|
229
|
+
}
|
230
|
+
//# sourceMappingURL=virtualAccessoryTelevision.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"virtualAccessoryTelevision.js","sourceRoot":"","sources":["../../src/accessories/virtualAccessoryTelevision.ts"],"names":[],"mappings":"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"}
|
@@ -0,0 +1,34 @@
|
|
1
|
+
import type { CharacteristicValue, PlatformAccessory } from 'homebridge';
|
2
|
+
import { VirtualAccessoriesPlatform } from '../platform.js';
|
3
|
+
import { Accessory } from './virtualAccessory.js';
|
4
|
+
/**
|
5
|
+
* Valve - Accessory implementation
|
6
|
+
*/
|
7
|
+
export declare class Valve extends Accessory {
|
8
|
+
static readonly ACCESSORY_TYPE_NAME: string;
|
9
|
+
static readonly GENERIC_VALVE: number;
|
10
|
+
static readonly IRRIGATION: number;
|
11
|
+
static readonly SHOWER_HEAD: number;
|
12
|
+
static readonly WATER_FAUCET: number;
|
13
|
+
static readonly INACTIVE: number;
|
14
|
+
static readonly ACTIVE: number;
|
15
|
+
static readonly NOT_IN_USE: number;
|
16
|
+
static readonly IN_USE: number;
|
17
|
+
private valveType;
|
18
|
+
private durationTimer;
|
19
|
+
private readonly stateStorageKey;
|
20
|
+
private states;
|
21
|
+
constructor(platform: VirtualAccessoriesPlatform, accessory: PlatformAccessory);
|
22
|
+
getValveType(): Promise<CharacteristicValue>;
|
23
|
+
setActive(value: CharacteristicValue): Promise<void>;
|
24
|
+
getActive(): Promise<CharacteristicValue>;
|
25
|
+
getInUse(): Promise<CharacteristicValue>;
|
26
|
+
setSetDuration(value: CharacteristicValue): Promise<void>;
|
27
|
+
getSetDuration(): Promise<CharacteristicValue>;
|
28
|
+
getRemainingDuration(): Promise<CharacteristicValue>;
|
29
|
+
protected getJsonState(): string;
|
30
|
+
protected getAccessoryTypeName(): string;
|
31
|
+
static getValveTypeName(event: number): string;
|
32
|
+
static getActiveName(event: number): string;
|
33
|
+
static getInUseName(event: number): string;
|
34
|
+
}
|
@@ -0,0 +1,215 @@
|
|
1
|
+
import { Accessory } from './virtualAccessory.js';
|
2
|
+
import { Timer } from '../timer.js';
|
3
|
+
/**
|
4
|
+
* Valve - Accessory implementation
|
5
|
+
*/
|
6
|
+
export class Valve extends Accessory {
|
7
|
+
static ACCESSORY_TYPE_NAME = 'Valve';
|
8
|
+
static GENERIC_VALVE = 0; // Characteristic.ValveType.GENERIC_VALVE
|
9
|
+
static IRRIGATION = 1; // Characteristic.ValveType.IRRIGATION
|
10
|
+
static SHOWER_HEAD = 2; // Characteristic.ValveType.SHOWER_HEAD
|
11
|
+
static WATER_FAUCET = 3; // Characteristic.ValveType.WATER_FAUCET
|
12
|
+
static INACTIVE = 0; // Characteristic.Active.INACTIVE
|
13
|
+
static ACTIVE = 1; // Characteristic.Active.ACTIVE
|
14
|
+
static NOT_IN_USE = 0; // Characteristic.InUse.NOT_IN_USE
|
15
|
+
static IN_USE = 1; // Characteristic.InUse.IN_USE
|
16
|
+
valveType;
|
17
|
+
durationTimer;
|
18
|
+
stateStorageKey = 'ValveActive';
|
19
|
+
// private readonly timerStartTimeStorageKey: string = 'TimerStartTime';
|
20
|
+
// private readonly timerDurationStorageKey: string = 'TimerDuration';
|
21
|
+
// private readonly timerIsRunningStorageKey: string = 'TimerIsRunning';
|
22
|
+
states = {
|
23
|
+
ValveActive: Valve.INACTIVE,
|
24
|
+
ValveInUse: Valve.NOT_IN_USE,
|
25
|
+
};
|
26
|
+
constructor(platform, accessory) {
|
27
|
+
super(platform, accessory);
|
28
|
+
switch (this.accessoryConfiguration.valve.type) {
|
29
|
+
case 'generic':
|
30
|
+
this.valveType = Valve.GENERIC_VALVE;
|
31
|
+
break;
|
32
|
+
case 'irrigation':
|
33
|
+
this.valveType = Valve.IRRIGATION;
|
34
|
+
break;
|
35
|
+
case 'showerhead':
|
36
|
+
this.valveType = Valve.SHOWER_HEAD;
|
37
|
+
break;
|
38
|
+
case 'waterfaucet':
|
39
|
+
this.valveType = Valve.WATER_FAUCET;
|
40
|
+
break;
|
41
|
+
// Should never drop down to here, but being defensive
|
42
|
+
default:
|
43
|
+
this.valveType = Valve.GENERIC_VALVE;
|
44
|
+
break;
|
45
|
+
}
|
46
|
+
// First configure the device based on the accessory details
|
47
|
+
this.states.ValveActive = Valve.INACTIVE;
|
48
|
+
this.states.ValveInUse = Valve.NOT_IN_USE;
|
49
|
+
// If the accessory is stateful retrieve stored state
|
50
|
+
if (this.accessoryConfiguration.accessoryIsStateful) {
|
51
|
+
const accessoryState = this.loadAccessoryState(this.storagePath);
|
52
|
+
const cachedState = accessoryState[this.stateStorageKey];
|
53
|
+
if (cachedState !== undefined) {
|
54
|
+
this.states.ValveActive = cachedState;
|
55
|
+
this.states.ValveInUse = (this.states.ValveActive === Valve.ACTIVE) ? Valve.IN_USE : Valve.NOT_IN_USE;
|
56
|
+
}
|
57
|
+
}
|
58
|
+
// Timer is not resettable
|
59
|
+
const timerIsResettable = false;
|
60
|
+
this.durationTimer = new Timer(this.accessoryConfiguration.accessoryName, this.log, timerIsResettable, this.accessoryConfiguration.valve.duration.toSeconds());
|
61
|
+
this.service = this.accessory.getService(this.platform.Service.Valve) || this.accessory.addService(this.platform.Service.Valve);
|
62
|
+
this.service.setCharacteristic(this.platform.Characteristic.Name, this.accessoryConfiguration.accessoryName);
|
63
|
+
// Update the initial state of the accessory
|
64
|
+
this.log.debug(`[${this.accessoryConfiguration.accessoryName}] Setting Valve Current State: ${Valve.getActiveName(this.states.ValveActive)}`);
|
65
|
+
this.service.updateCharacteristic(this.platform.Characteristic.Active, (this.states.ValveActive));
|
66
|
+
this.service.updateCharacteristic(this.platform.Characteristic.InUse, (this.states.ValveInUse));
|
67
|
+
this.service.updateCharacteristic(this.platform.Characteristic.SetDuration, (this.accessoryConfiguration.valve.duration.toSeconds()));
|
68
|
+
// register handlers
|
69
|
+
this.service.getCharacteristic(this.platform.Characteristic.ValveType)
|
70
|
+
.onGet(this.getValveType.bind(this));
|
71
|
+
this.service.getCharacteristic(this.platform.Characteristic.Active)
|
72
|
+
.onSet(this.setActive.bind(this))
|
73
|
+
.onGet(this.getActive.bind(this));
|
74
|
+
this.service.getCharacteristic(this.platform.Characteristic.InUse)
|
75
|
+
.onGet(this.getInUse.bind(this));
|
76
|
+
this.service.getCharacteristic(this.platform.Characteristic.SetDuration)
|
77
|
+
.onSet(this.setSetDuration.bind(this))
|
78
|
+
.onGet(this.getSetDuration.bind(this));
|
79
|
+
this.service.getCharacteristic(this.platform.Characteristic.RemainingDuration)
|
80
|
+
.onGet(this.getRemainingDuration.bind(this));
|
81
|
+
}
|
82
|
+
// Handlers
|
83
|
+
async getValveType() {
|
84
|
+
const valveType = this.valveType;
|
85
|
+
this.log.debug(`[${this.accessoryConfiguration.accessoryName}] Getting Valve Type: ${Valve.getValveTypeName(valveType)}`);
|
86
|
+
return valveType;
|
87
|
+
}
|
88
|
+
async setActive(value) {
|
89
|
+
this.states.ValveActive = value;
|
90
|
+
this.log.info(`[${this.accessoryConfiguration.accessoryName}] Setting Active: ${Valve.getActiveName(this.states.ValveActive)}`);
|
91
|
+
this.states.ValveInUse = (this.states.ValveActive === Valve.ACTIVE) ? Valve.IN_USE : Valve.NOT_IN_USE;
|
92
|
+
this.service.setCharacteristic(this.platform.Characteristic.InUse, (this.states.ValveInUse));
|
93
|
+
this.storeState();
|
94
|
+
this.log.info(`[${this.accessoryConfiguration.accessoryName}] Setting In Use: ${Valve.getInUseName(this.states.ValveInUse)}`);
|
95
|
+
// Valve was turned off: turn off timer
|
96
|
+
if (this.states.ValveActive === Valve.INACTIVE) {
|
97
|
+
this.durationTimer.stop();
|
98
|
+
}
|
99
|
+
// Valve was turned on: try to start timer
|
100
|
+
if (this.states.ValveActive === Valve.ACTIVE) {
|
101
|
+
this.durationTimer.start(() => {
|
102
|
+
this.service.setCharacteristic(this.platform.Characteristic.Active, Valve.INACTIVE);
|
103
|
+
});
|
104
|
+
}
|
105
|
+
}
|
106
|
+
async getActive() {
|
107
|
+
const valveActive = this.states.ValveActive;
|
108
|
+
this.log.debug(`[${this.accessoryConfiguration.accessoryName}] Getting Active: ${Valve.getActiveName(valveActive)}`);
|
109
|
+
return valveActive;
|
110
|
+
}
|
111
|
+
async getInUse() {
|
112
|
+
const valveInUse = this.states.ValveInUse;
|
113
|
+
this.log.debug(`[${this.accessoryConfiguration.accessoryName}] Getting In Use: ${Valve.getInUseName(valveInUse)}`);
|
114
|
+
return valveInUse;
|
115
|
+
}
|
116
|
+
async setSetDuration(value) {
|
117
|
+
const duration = value;
|
118
|
+
this.durationTimer.setDefaultDuration(duration);
|
119
|
+
this.log.info(`[${this.accessoryConfiguration.accessoryName}] Setting Set Duration: ${duration} seconds`);
|
120
|
+
}
|
121
|
+
async getSetDuration() {
|
122
|
+
const duration = this.durationTimer.getDefaultDuration();
|
123
|
+
this.log.debug(`[${this.accessoryConfiguration.accessoryName}] Getting Set Duration: ${duration} seconds`);
|
124
|
+
return duration;
|
125
|
+
}
|
126
|
+
async getRemainingDuration() {
|
127
|
+
const remainingDuration = this.durationTimer.getRemainingDuration();
|
128
|
+
this.log.debug(`[${this.accessoryConfiguration.accessoryName}] Getting Remaining Duration: ${remainingDuration} seconds`);
|
129
|
+
return remainingDuration;
|
130
|
+
}
|
131
|
+
getJsonState() {
|
132
|
+
const json = JSON.stringify({
|
133
|
+
[this.stateStorageKey]: this.states.ValveActive,
|
134
|
+
// [this.timerStartTimeStorageKey]: this.durationTimer.getStartTime().toString(),
|
135
|
+
// [this.timerDurationStorageKey]: this.durationTimer.getDuration(),
|
136
|
+
// [this.timerIsRunningStorageKey]: this.durationTimer.isTimerRunning(),
|
137
|
+
});
|
138
|
+
return json;
|
139
|
+
}
|
140
|
+
getAccessoryTypeName() {
|
141
|
+
return Valve.ACCESSORY_TYPE_NAME;
|
142
|
+
}
|
143
|
+
static getValveTypeName(event) {
|
144
|
+
let eventName;
|
145
|
+
switch (event) {
|
146
|
+
case undefined: {
|
147
|
+
eventName = 'undefined';
|
148
|
+
break;
|
149
|
+
}
|
150
|
+
case Valve.GENERIC_VALVE: {
|
151
|
+
eventName = 'GENERIC VALVE';
|
152
|
+
break;
|
153
|
+
}
|
154
|
+
case Valve.IRRIGATION: {
|
155
|
+
eventName = 'IRRIGATION';
|
156
|
+
break;
|
157
|
+
}
|
158
|
+
case Valve.SHOWER_HEAD: {
|
159
|
+
eventName = 'SHOWER HEAD';
|
160
|
+
break;
|
161
|
+
}
|
162
|
+
case Valve.WATER_FAUCET: {
|
163
|
+
eventName = 'WATER FAUCET';
|
164
|
+
break;
|
165
|
+
}
|
166
|
+
default: {
|
167
|
+
eventName = event.toString();
|
168
|
+
}
|
169
|
+
}
|
170
|
+
return eventName;
|
171
|
+
}
|
172
|
+
static getActiveName(event) {
|
173
|
+
let eventName;
|
174
|
+
switch (event) {
|
175
|
+
case undefined: {
|
176
|
+
eventName = 'undefined';
|
177
|
+
break;
|
178
|
+
}
|
179
|
+
case Valve.INACTIVE: {
|
180
|
+
eventName = 'INACTIVE';
|
181
|
+
break;
|
182
|
+
}
|
183
|
+
case Valve.ACTIVE: {
|
184
|
+
eventName = 'ACTIVE';
|
185
|
+
break;
|
186
|
+
}
|
187
|
+
default: {
|
188
|
+
eventName = event.toString();
|
189
|
+
}
|
190
|
+
}
|
191
|
+
return eventName;
|
192
|
+
}
|
193
|
+
static getInUseName(event) {
|
194
|
+
let eventName;
|
195
|
+
switch (event) {
|
196
|
+
case undefined: {
|
197
|
+
eventName = 'undefined';
|
198
|
+
break;
|
199
|
+
}
|
200
|
+
case Valve.NOT_IN_USE: {
|
201
|
+
eventName = 'NOT IN USE';
|
202
|
+
break;
|
203
|
+
}
|
204
|
+
case Valve.IN_USE: {
|
205
|
+
eventName = 'IN USE';
|
206
|
+
break;
|
207
|
+
}
|
208
|
+
default: {
|
209
|
+
eventName = event.toString();
|
210
|
+
}
|
211
|
+
}
|
212
|
+
return eventName;
|
213
|
+
}
|
214
|
+
}
|
215
|
+
//# sourceMappingURL=virtualAccessoryValve.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"virtualAccessoryValve.js","sourceRoot":"","sources":["../../src/accessories/virtualAccessoryValve.ts"],"names":[],"mappings":"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"}
|
@@ -0,0 +1,14 @@
|
|
1
|
+
import type { PlatformAccessory, Service, WithUUID } from 'homebridge';
|
2
|
+
import { VirtualAccessoriesPlatform } from '../platform.js';
|
3
|
+
import { OpeningAccessory } from './openingAccessory.js';
|
4
|
+
import { OpenableAccessoryConfiguration } from '../configuration/configurationOpenableAccesory.js';
|
5
|
+
/**
|
6
|
+
* Window - Accessory implementation
|
7
|
+
*/
|
8
|
+
export declare class Window extends OpeningAccessory {
|
9
|
+
static readonly ACCESSORY_TYPE_NAME: string;
|
10
|
+
constructor(platform: VirtualAccessoriesPlatform, accessory: PlatformAccessory);
|
11
|
+
protected getOpeningAccessoryConfiguration(): OpenableAccessoryConfiguration;
|
12
|
+
protected getOpeningAccessoryService(): WithUUID<typeof Service>;
|
13
|
+
protected getAccessoryTypeName(): string;
|
14
|
+
}
|
@@ -0,0 +1,20 @@
|
|
1
|
+
import { OpeningAccessory } from './openingAccessory.js';
|
2
|
+
/**
|
3
|
+
* Window - Accessory implementation
|
4
|
+
*/
|
5
|
+
export class Window extends OpeningAccessory {
|
6
|
+
static ACCESSORY_TYPE_NAME = 'Window';
|
7
|
+
constructor(platform, accessory) {
|
8
|
+
super(platform, accessory);
|
9
|
+
}
|
10
|
+
getOpeningAccessoryConfiguration() {
|
11
|
+
return this.accessoryConfiguration.window;
|
12
|
+
}
|
13
|
+
getOpeningAccessoryService() {
|
14
|
+
return this.platform.Service.Window;
|
15
|
+
}
|
16
|
+
getAccessoryTypeName() {
|
17
|
+
return Window.ACCESSORY_TYPE_NAME;
|
18
|
+
}
|
19
|
+
}
|
20
|
+
//# sourceMappingURL=virtualAccessoryWindow.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"virtualAccessoryWindow.js","sourceRoot":"","sources":["../../src/accessories/virtualAccessoryWindow.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAGzD;;GAEG;AACH,MAAM,OAAO,MAAO,SAAQ,gBAAgB;IAE1C,MAAM,CAAU,mBAAmB,GAAW,QAAQ,CAAC;IAEvD,YACE,QAAoC,EACpC,SAA4B;QAE5B,KAAK,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IAC7B,CAAC;IAES,gCAAgC;QACxC,OAAO,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC;IAC5C,CAAC;IAES,0BAA0B;QAClC,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC;IACtC,CAAC;IAES,oBAAoB;QAC5B,OAAO,MAAM,CAAC,mBAAmB,CAAC;IACpC,CAAC"}
|
@@ -0,0 +1,14 @@
|
|
1
|
+
import type { PlatformAccessory, Service, WithUUID } from 'homebridge';
|
2
|
+
import { VirtualAccessoriesPlatform } from '../platform.js';
|
3
|
+
import { OpeningAccessory } from './openingAccessory.js';
|
4
|
+
import { OpenableAccessoryConfiguration } from '../configuration/configurationOpenableAccesory.js';
|
5
|
+
/**
|
6
|
+
* WindowCovering - Accessory implementation
|
7
|
+
*/
|
8
|
+
export declare class WindowCovering extends OpeningAccessory {
|
9
|
+
static readonly ACCESSORY_TYPE_NAME: string;
|
10
|
+
constructor(platform: VirtualAccessoriesPlatform, accessory: PlatformAccessory);
|
11
|
+
protected getOpeningAccessoryConfiguration(): OpenableAccessoryConfiguration;
|
12
|
+
protected getOpeningAccessoryService(): WithUUID<typeof Service>;
|
13
|
+
protected getAccessoryTypeName(): string;
|
14
|
+
}
|
@@ -0,0 +1,20 @@
|
|
1
|
+
import { OpeningAccessory } from './openingAccessory.js';
|
2
|
+
/**
|
3
|
+
* WindowCovering - Accessory implementation
|
4
|
+
*/
|
5
|
+
export class WindowCovering extends OpeningAccessory {
|
6
|
+
static ACCESSORY_TYPE_NAME = 'Window Covering';
|
7
|
+
constructor(platform, accessory) {
|
8
|
+
super(platform, accessory);
|
9
|
+
}
|
10
|
+
getOpeningAccessoryConfiguration() {
|
11
|
+
return this.accessoryConfiguration.windowCovering;
|
12
|
+
}
|
13
|
+
getOpeningAccessoryService() {
|
14
|
+
return this.platform.Service.WindowCovering;
|
15
|
+
}
|
16
|
+
getAccessoryTypeName() {
|
17
|
+
return WindowCovering.ACCESSORY_TYPE_NAME;
|
18
|
+
}
|
19
|
+
}
|
20
|
+
//# sourceMappingURL=virtualAccessoryWindowCovering.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"virtualAccessoryWindowCovering.js","sourceRoot":"","sources":["../../src/accessories/virtualAccessoryWindowCovering.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAGzD;;GAEG;AACH,MAAM,OAAO,cAAe,SAAQ,gBAAgB;IAElD,MAAM,CAAU,mBAAmB,GAAW,iBAAiB,CAAC;IAEhE,YACE,QAAoC,EACpC,SAA4B;QAE5B,KAAK,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IAC7B,CAAC;IAES,gCAAgC;QACxC,OAAO,IAAI,CAAC,sBAAsB,CAAC,cAAc,CAAC;IACpD,CAAC;IAES,0BAA0B;QAClC,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,cAAc,CAAC;IAC9C,CAAC;IAES,oBAAoB;QAC5B,OAAO,cAAc,CAAC,mBAAmB,CAAC;IAC5C,CAAC"}
|
@@ -0,0 +1,15 @@
|
|
1
|
+
import type { PlatformAccessory } from 'homebridge';
|
2
|
+
import { VirtualAccessoriesPlatform } from './platform.js';
|
3
|
+
import { Accessory } from './accessories/virtualAccessory.js';
|
4
|
+
import { Sensor } from './sensors/virtualSensor.js';
|
5
|
+
import { Trigger } from './triggers/trigger.js';
|
6
|
+
/**
|
7
|
+
* Virtual Accessory Factory
|
8
|
+
* Factory class to create virtual accessories
|
9
|
+
*/
|
10
|
+
export declare abstract class AccessoryFactory {
|
11
|
+
constructor();
|
12
|
+
static createVirtualAccessory(platform: VirtualAccessoriesPlatform, accessory: PlatformAccessory, accessoryType: string): Accessory | undefined;
|
13
|
+
static createVirtualSensor(platform: VirtualAccessoriesPlatform, accessory: PlatformAccessory, sensorType: string): Sensor | undefined;
|
14
|
+
static createTrigger(sensor: Sensor, triggerType: string, name: string): Trigger | undefined;
|
15
|
+
}
|