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,147 @@
|
|
1
|
+
import { Door } from './accessories/virtualAccessoryDoor.js';
|
2
|
+
import { Doorbell } from './accessories/virtualAccessoryDoorbell.js';
|
3
|
+
import { Fan } from './accessories/virtualAccessoryFan.js';
|
4
|
+
import { FilterMaintenance } from './accessories/virtualAccessoryFilterMaintenance.js';
|
5
|
+
import { GarageDoor } from './accessories/virtualAccessoryGarageDoor.js';
|
6
|
+
import { HeaterCooler } from './accessories/virtualAccessoryHeaterCooler.js';
|
7
|
+
import { HumidifierDehumidifier } from './accessories/virtualAccessoryHumidifierDehumidifier.js';
|
8
|
+
import { Lightbulb } from './accessories/virtualAccessoryLightbulb.js';
|
9
|
+
import { Lock } from './accessories/virtualAccessoryLock.js';
|
10
|
+
import { SecuritySystem } from './accessories/virtualAccessorySecuritySystem.js';
|
11
|
+
import { Speaker } from './accessories/virtualAccessorySpeaker.js';
|
12
|
+
import { Switch } from './accessories/virtualAccessorySwitch.js';
|
13
|
+
import { Television } from './accessories/virtualAccessoryTelevision.js';
|
14
|
+
import { Valve } from './accessories/virtualAccessoryValve.js';
|
15
|
+
import { Window } from './accessories/virtualAccessoryWindow.js';
|
16
|
+
import { WindowCovering } from './accessories/virtualAccessoryWindowCovering.js';
|
17
|
+
import { ContactSensor } from './sensors/virtualSensorContact.js';
|
18
|
+
import { LeakSensor } from './sensors/virtualSensorLeak.js';
|
19
|
+
import { MotionSensor } from './sensors/virtualSensorMotion.js';
|
20
|
+
import { OccupancySensor } from './sensors/virtualSensorOccupancy.js';
|
21
|
+
import { SmokeSensor } from './sensors/virtualSensorSmoke.js';
|
22
|
+
import { CarbonDioxideSensor } from './sensors/virtualSensorCarbonDioxide.js';
|
23
|
+
import { CarbonMonoxideSensor } from './sensors/virtualSensorCarbonMonoxide.js';
|
24
|
+
import { CronTrigger } from './triggers/triggerCron.js';
|
25
|
+
import { PingTrigger } from './triggers/triggerPing.js';
|
26
|
+
import { SunEventsTrigger } from './triggers/triggerSunEvents.js';
|
27
|
+
import { WebhookTrigger } from './triggers/triggerWebhook.js';
|
28
|
+
import { AccessoryType, SensorType, TriggerType } from './configuration/configurationSchema.js';
|
29
|
+
/**
|
30
|
+
* Virtual Accessory Factory
|
31
|
+
* Factory class to create virtual accessories
|
32
|
+
*/
|
33
|
+
export class AccessoryFactory {
|
34
|
+
constructor() {
|
35
|
+
//
|
36
|
+
}
|
37
|
+
static createVirtualAccessory(platform, accessory, accessoryType) {
|
38
|
+
let virtualAccessory;
|
39
|
+
const accessoryConfiguration = accessory.context.deviceConfiguration;
|
40
|
+
switch (accessoryType) {
|
41
|
+
case AccessoryType.Door:
|
42
|
+
virtualAccessory = new Door(platform, accessory);
|
43
|
+
break;
|
44
|
+
case AccessoryType.Doorbell:
|
45
|
+
virtualAccessory = new Doorbell(platform, accessory);
|
46
|
+
break;
|
47
|
+
case AccessoryType.Fan:
|
48
|
+
virtualAccessory = new Fan(platform, accessory);
|
49
|
+
break;
|
50
|
+
case AccessoryType.FilterMaintenance:
|
51
|
+
virtualAccessory = new FilterMaintenance(platform, accessory);
|
52
|
+
break;
|
53
|
+
case AccessoryType.GarageDoor:
|
54
|
+
virtualAccessory = new GarageDoor(platform, accessory);
|
55
|
+
break;
|
56
|
+
case AccessoryType.HeaterCooler:
|
57
|
+
virtualAccessory = new HeaterCooler(platform, accessory);
|
58
|
+
break;
|
59
|
+
case AccessoryType.HumidifierDehumidifier:
|
60
|
+
virtualAccessory = new HumidifierDehumidifier(platform, accessory);
|
61
|
+
break;
|
62
|
+
case AccessoryType.Lightbulb:
|
63
|
+
virtualAccessory = new Lightbulb(platform, accessory);
|
64
|
+
break;
|
65
|
+
case AccessoryType.Lock:
|
66
|
+
virtualAccessory = new Lock(platform, accessory);
|
67
|
+
break;
|
68
|
+
case AccessoryType.SecuritySystem:
|
69
|
+
virtualAccessory = new SecuritySystem(platform, accessory);
|
70
|
+
break;
|
71
|
+
case AccessoryType.Speaker:
|
72
|
+
virtualAccessory = new Speaker(platform, accessory);
|
73
|
+
break;
|
74
|
+
case AccessoryType.Switch:
|
75
|
+
virtualAccessory = new Switch(platform, accessory);
|
76
|
+
break;
|
77
|
+
case AccessoryType.Television:
|
78
|
+
virtualAccessory = new Television(platform, accessory);
|
79
|
+
break;
|
80
|
+
case AccessoryType.Valve:
|
81
|
+
virtualAccessory = new Valve(platform, accessory);
|
82
|
+
break;
|
83
|
+
case AccessoryType.Window:
|
84
|
+
virtualAccessory = new Window(platform, accessory);
|
85
|
+
break;
|
86
|
+
case AccessoryType.WindowCovering:
|
87
|
+
virtualAccessory = new WindowCovering(platform, accessory);
|
88
|
+
break;
|
89
|
+
case AccessoryType.Sensor:
|
90
|
+
virtualAccessory = AccessoryFactory.createVirtualSensor(platform, accessory, accessoryConfiguration.sensor.type);
|
91
|
+
break;
|
92
|
+
default:
|
93
|
+
platform.log.error(`Error creating accessory. Invalid accessory type: ${accessoryType}`);
|
94
|
+
}
|
95
|
+
return virtualAccessory;
|
96
|
+
}
|
97
|
+
static createVirtualSensor(platform, accessory, sensorType) {
|
98
|
+
let virtualSensor;
|
99
|
+
switch (sensorType) {
|
100
|
+
case SensorType.CarbonDioxide:
|
101
|
+
virtualSensor = new CarbonDioxideSensor(platform, accessory);
|
102
|
+
break;
|
103
|
+
case SensorType.CarbonMonoxide:
|
104
|
+
virtualSensor = new CarbonMonoxideSensor(platform, accessory);
|
105
|
+
break;
|
106
|
+
case SensorType.Contact:
|
107
|
+
virtualSensor = new ContactSensor(platform, accessory);
|
108
|
+
break;
|
109
|
+
case SensorType.Leak:
|
110
|
+
virtualSensor = new LeakSensor(platform, accessory);
|
111
|
+
break;
|
112
|
+
case SensorType.Motion:
|
113
|
+
virtualSensor = new MotionSensor(platform, accessory);
|
114
|
+
break;
|
115
|
+
case SensorType.Occupancy:
|
116
|
+
virtualSensor = new OccupancySensor(platform, accessory);
|
117
|
+
break;
|
118
|
+
case SensorType.Smoke:
|
119
|
+
virtualSensor = new SmokeSensor(platform, accessory);
|
120
|
+
break;
|
121
|
+
default:
|
122
|
+
platform.log.error(`Error creating sensor. Invalid sensor type: ${sensorType}`);
|
123
|
+
}
|
124
|
+
return virtualSensor;
|
125
|
+
}
|
126
|
+
static createTrigger(sensor, triggerType, name) {
|
127
|
+
let trigger;
|
128
|
+
switch (triggerType) {
|
129
|
+
case TriggerType.Ping:
|
130
|
+
trigger = new PingTrigger(sensor, name);
|
131
|
+
break;
|
132
|
+
case TriggerType.Cron:
|
133
|
+
trigger = new CronTrigger(sensor, name);
|
134
|
+
break;
|
135
|
+
case TriggerType.SunEvents:
|
136
|
+
trigger = new SunEventsTrigger(sensor, name);
|
137
|
+
break;
|
138
|
+
case TriggerType.Webhook:
|
139
|
+
trigger = new WebhookTrigger(sensor, name);
|
140
|
+
break;
|
141
|
+
default:
|
142
|
+
sensor.log.error('Error creating trigger. Invalid trigger type:', [triggerType]);
|
143
|
+
}
|
144
|
+
return trigger;
|
145
|
+
}
|
146
|
+
}
|
147
|
+
//# sourceMappingURL=accessoryFactory.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"accessoryFactory.js","sourceRoot":"","sources":["../src/accessoryFactory.ts"],"names":[],"mappings":"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"}
|
package/dist/colors.d.ts
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
export declare class ColorHSL {
|
2
|
+
hue: number;
|
3
|
+
saturation: number;
|
4
|
+
luminance: number;
|
5
|
+
constructor(hue: number, saturation: number, luminance: number);
|
6
|
+
}
|
7
|
+
export declare class ColorRGB {
|
8
|
+
red: number;
|
9
|
+
green: number;
|
10
|
+
blue: number;
|
11
|
+
constructor(red: number, green: number, blue: number);
|
12
|
+
}
|
13
|
+
/**
|
14
|
+
* Colors
|
15
|
+
*/
|
16
|
+
export declare class Colors {
|
17
|
+
static isValidHex(value: string): boolean;
|
18
|
+
static HSLToHex(hsl: ColorHSL): string;
|
19
|
+
static HexToHSL(hex: string): ColorHSL | undefined;
|
20
|
+
static HSLToRGB(hsl: ColorHSL): ColorRGB;
|
21
|
+
static RGBToHSL(rgb: ColorRGB): ColorHSL;
|
22
|
+
}
|
package/dist/colors.js
ADDED
@@ -0,0 +1,146 @@
|
|
1
|
+
export class ColorHSL {
|
2
|
+
hue;
|
3
|
+
saturation;
|
4
|
+
luminance;
|
5
|
+
constructor(hue, saturation, luminance) {
|
6
|
+
this.hue = hue;
|
7
|
+
this.saturation = saturation;
|
8
|
+
this.luminance = luminance;
|
9
|
+
}
|
10
|
+
}
|
11
|
+
export class ColorRGB {
|
12
|
+
red;
|
13
|
+
green;
|
14
|
+
blue;
|
15
|
+
constructor(red, green, blue) {
|
16
|
+
this.red = red;
|
17
|
+
this.green = green;
|
18
|
+
this.blue = blue;
|
19
|
+
}
|
20
|
+
}
|
21
|
+
/**
|
22
|
+
* Colors
|
23
|
+
*/
|
24
|
+
export class Colors {
|
25
|
+
static isValidHex(value) {
|
26
|
+
const result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(value);
|
27
|
+
return (result !== undefined);
|
28
|
+
}
|
29
|
+
static HSLToHex(hsl) {
|
30
|
+
const hue = hsl.hue;
|
31
|
+
const saturation = hsl.saturation;
|
32
|
+
const luminance = hsl.luminance;
|
33
|
+
const hueDecimal = luminance / 100;
|
34
|
+
const a = (saturation * Math.min(hueDecimal, 1 - hueDecimal)) / 100;
|
35
|
+
const hexFunc = (n) => {
|
36
|
+
const k = (n + hue / 30) % 12;
|
37
|
+
const color = hueDecimal - a * Math.max(Math.min(k - 3, 9 - k, 1), -1);
|
38
|
+
// Convert to Hex and prefix with "0" if required
|
39
|
+
return Math.round(255 * color)
|
40
|
+
.toString(16)
|
41
|
+
.padStart(2, '0');
|
42
|
+
};
|
43
|
+
return `#${hexFunc(0)}${hexFunc(8)}${hexFunc(4)}`;
|
44
|
+
}
|
45
|
+
static HexToHSL(hex) {
|
46
|
+
const result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex);
|
47
|
+
if (!result) {
|
48
|
+
return undefined;
|
49
|
+
}
|
50
|
+
const red = parseInt(result[1], 16) / 255;
|
51
|
+
const green = parseInt(result[2], 16) / 255;
|
52
|
+
const blue = parseInt(result[3], 16) / 255;
|
53
|
+
const max = Math.max(red, green, blue);
|
54
|
+
const min = Math.min(red, green, blue);
|
55
|
+
let hue = (max + min) / 2;
|
56
|
+
let saturation = hue;
|
57
|
+
let luminance = hue;
|
58
|
+
if (max === min) {
|
59
|
+
// Achromatic
|
60
|
+
return new ColorHSL(0, 0, luminance);
|
61
|
+
}
|
62
|
+
const d = max - min;
|
63
|
+
saturation = luminance > 0.5 ? d / (2 - max - min) : d / (max + min);
|
64
|
+
switch (max) {
|
65
|
+
case red:
|
66
|
+
hue = (green - blue) / d + (green < blue ? 6 : 0);
|
67
|
+
break;
|
68
|
+
case green:
|
69
|
+
hue = (blue - red) / d + 2;
|
70
|
+
break;
|
71
|
+
case blue:
|
72
|
+
hue = (red - green) / d + 4;
|
73
|
+
break;
|
74
|
+
}
|
75
|
+
hue /= 6;
|
76
|
+
saturation = saturation * 100;
|
77
|
+
saturation = Math.round(saturation);
|
78
|
+
luminance = luminance * 100;
|
79
|
+
luminance = Math.round(luminance);
|
80
|
+
hue = Math.round(360 * hue);
|
81
|
+
return new ColorHSL(hue, saturation, luminance);
|
82
|
+
}
|
83
|
+
static HSLToRGB(hsl) {
|
84
|
+
const hue = hsl.hue / 100;
|
85
|
+
const saturation = hsl.saturation / 100;
|
86
|
+
const luminance = hsl.luminance / 100;
|
87
|
+
if (saturation === 0) {
|
88
|
+
return new ColorRGB(luminance, luminance, luminance);
|
89
|
+
}
|
90
|
+
const HueToRGB = (p, q, t) => {
|
91
|
+
if (t < 0) {
|
92
|
+
t += 1;
|
93
|
+
}
|
94
|
+
if (t > 1) {
|
95
|
+
t -= 1;
|
96
|
+
}
|
97
|
+
if (t < 1 / 6) {
|
98
|
+
return p + (q - p) * 6 * t;
|
99
|
+
}
|
100
|
+
if (t < 1 / 2) {
|
101
|
+
return q;
|
102
|
+
}
|
103
|
+
if (t < 2 / 3) {
|
104
|
+
return p + (q - p) * (2 / 3 - t) * 6;
|
105
|
+
}
|
106
|
+
return p;
|
107
|
+
};
|
108
|
+
const q = luminance < 0.5 ?
|
109
|
+
luminance * (1 + saturation) :
|
110
|
+
luminance + saturation - luminance * saturation;
|
111
|
+
const p = 2 * luminance - q;
|
112
|
+
const red = HueToRGB(p, q, hue + 1 / 3);
|
113
|
+
const green = HueToRGB(p, q, hue);
|
114
|
+
const blue = HueToRGB(p, q, hue - 1 / 3);
|
115
|
+
return new ColorRGB(red * 255, green * 255, blue * 255);
|
116
|
+
}
|
117
|
+
static RGBToHSL(rgb) {
|
118
|
+
const red = rgb.red / 255;
|
119
|
+
const green = rgb.green / 255;
|
120
|
+
const blue = rgb.blue / 255;
|
121
|
+
const max = Math.max(red, green, blue);
|
122
|
+
const min = Math.min(red, green, blue);
|
123
|
+
let hue = (max + min) / 2;
|
124
|
+
let saturation = hue;
|
125
|
+
const luminance = hue;
|
126
|
+
if (max === min) {
|
127
|
+
// Achromatic
|
128
|
+
return new ColorHSL(0, 0, luminance);
|
129
|
+
}
|
130
|
+
const d = max - min;
|
131
|
+
saturation = luminance >= 0.5 ? d / (2 - (max + min)) : d / (max + min);
|
132
|
+
switch (max) {
|
133
|
+
case red:
|
134
|
+
hue = ((green - blue) / d + 0) * 60;
|
135
|
+
break;
|
136
|
+
case green:
|
137
|
+
hue = ((blue - red) / d + 2) * 60;
|
138
|
+
break;
|
139
|
+
case blue:
|
140
|
+
hue = ((red - green) / d + 4) * 60;
|
141
|
+
break;
|
142
|
+
}
|
143
|
+
return new ColorHSL(Math.round(hue), Math.round(saturation * 100), Math.round(luminance * 100));
|
144
|
+
}
|
145
|
+
}
|
146
|
+
//# sourceMappingURL=colors.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"colors.js","sourceRoot":"","sources":["../src/colors.ts"],"names":[],"mappings":"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"}
|
@@ -0,0 +1,10 @@
|
|
1
|
+
import { VirtualAccessoriesPlatform } from '../platform.js';
|
2
|
+
import { PlatformAccessory } from 'homebridge';
|
3
|
+
import { Lightbulb } from '../accessories/virtualAccessoryLightbulb.js';
|
4
|
+
/**
|
5
|
+
* CompanionLightbulb - Companion accessory
|
6
|
+
*/
|
7
|
+
export declare class CompanionLightbulb extends Lightbulb {
|
8
|
+
private companionName;
|
9
|
+
constructor(platform: VirtualAccessoriesPlatform, accessory: PlatformAccessory, companionName: string);
|
10
|
+
}
|
@@ -0,0 +1,12 @@
|
|
1
|
+
import { Lightbulb } from '../accessories/virtualAccessoryLightbulb.js';
|
2
|
+
/**
|
3
|
+
* CompanionLightbulb - Companion accessory
|
4
|
+
*/
|
5
|
+
export class CompanionLightbulb extends Lightbulb {
|
6
|
+
companionName;
|
7
|
+
constructor(platform, accessory, companionName) {
|
8
|
+
super(platform, accessory);
|
9
|
+
this.companionName = companionName;
|
10
|
+
}
|
11
|
+
}
|
12
|
+
//# sourceMappingURL=companionLightbulb.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"companionLightbulb.js","sourceRoot":"","sources":["../../src/companions/companionLightbulb.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAE,MAAM,6CAA6C,CAAC;AAExE;;GAEG;AACH,MAAM,OAAO,kBAAmB,SAAQ,SAAS;IAEvC,aAAa,CAAS;IAE9B,YACE,QAAoC,EACpC,SAA4B,EAC5B,aAAqB;QAErB,KAAK,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;QAE3B,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;IACrC,CAAC;CACF"}
|
@@ -0,0 +1,9 @@
|
|
1
|
+
import { PlatformAccessory } from 'homebridge';
|
2
|
+
import { VirtualAccessoriesPlatform } from '../platform.js';
|
3
|
+
import { Accessory } from '../accessories/virtualAccessory.js';
|
4
|
+
export interface TriggerableCompanionSensor {
|
5
|
+
triggerCompanionSensorState(sensorState: number, accessory: Accessory, isLoggingDisabled: boolean): void;
|
6
|
+
}
|
7
|
+
export declare class CompanionSensor {
|
8
|
+
static getTriggerableCompanionSensor(platform: VirtualAccessoriesPlatform, accessory: PlatformAccessory, sensorType: string, companionSensorName: string): TriggerableCompanionSensor | undefined;
|
9
|
+
}
|
@@ -0,0 +1,117 @@
|
|
1
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
2
|
+
import { Sensor } from '../sensors/virtualSensor.js';
|
3
|
+
import { SensorType } from '../configuration/configurationSchema.js';
|
4
|
+
import { AccessoryNotAllowedError } from '../errors.js';
|
5
|
+
import { MotionSensor } from '../sensors/virtualSensorMotion.js';
|
6
|
+
import { CarbonDioxideSensor } from '../sensors/virtualSensorCarbonDioxide.js';
|
7
|
+
import { CarbonMonoxideSensor } from '../sensors/virtualSensorCarbonMonoxide.js';
|
8
|
+
import { ContactSensor } from '../sensors/virtualSensorContact.js';
|
9
|
+
import { LeakSensor } from '../sensors/virtualSensorLeak.js';
|
10
|
+
import { OccupancySensor } from '../sensors/virtualSensorOccupancy.js';
|
11
|
+
import { SmokeSensor } from '../sensors/virtualSensorSmoke.js';
|
12
|
+
export class CompanionSensor {
|
13
|
+
static getTriggerableCompanionSensor(platform, accessory, sensorType, companionSensorName) {
|
14
|
+
let virtualSensor;
|
15
|
+
switch (sensorType) {
|
16
|
+
case SensorType.CarbonDioxide:
|
17
|
+
virtualSensor = new CompanionCarbonDioxideSensor(platform, accessory, companionSensorName);
|
18
|
+
break;
|
19
|
+
case SensorType.CarbonMonoxide:
|
20
|
+
virtualSensor = new CompanionCarbonMonoxideSensor(platform, accessory, companionSensorName);
|
21
|
+
break;
|
22
|
+
case SensorType.Contact:
|
23
|
+
virtualSensor = new CompanionContactSensor(platform, accessory, companionSensorName);
|
24
|
+
break;
|
25
|
+
case SensorType.Leak:
|
26
|
+
virtualSensor = new CompanionLeakSensor(platform, accessory, companionSensorName);
|
27
|
+
break;
|
28
|
+
case SensorType.Motion:
|
29
|
+
virtualSensor = new CompanionMotionSensor(platform, accessory, companionSensorName);
|
30
|
+
break;
|
31
|
+
case SensorType.Occupancy:
|
32
|
+
virtualSensor = new CompanionOccupancySensor(platform, accessory, companionSensorName);
|
33
|
+
break;
|
34
|
+
case SensorType.Smoke:
|
35
|
+
virtualSensor = new CompanionSmokeSensor(platform, accessory, companionSensorName);
|
36
|
+
break;
|
37
|
+
default:
|
38
|
+
platform.log.error(`Error creating sensor. Invalid sensor type: ${sensorType}`);
|
39
|
+
}
|
40
|
+
return virtualSensor;
|
41
|
+
}
|
42
|
+
}
|
43
|
+
// Mixin
|
44
|
+
function Companion(SensorInstance) {
|
45
|
+
class CompanionSensor extends SensorInstance {
|
46
|
+
uuidPostfix = '-sensor';
|
47
|
+
companionConstructor(companionSensorName) {
|
48
|
+
// Replace the Sensor Service
|
49
|
+
const sensorService = this.getService();
|
50
|
+
const service = this.accessory.getService(sensorService);
|
51
|
+
if (service !== undefined) {
|
52
|
+
this.accessory.removeService(service);
|
53
|
+
}
|
54
|
+
this.service = this.accessory.getService(companionSensorName) ||
|
55
|
+
this.accessory.addService(sensorService, companionSensorName, this.accessory.UUID + this.uuidPostfix);
|
56
|
+
this.service.setCharacteristic(this.platform.Characteristic.Name, companionSensorName);
|
57
|
+
this.trigger = undefined;
|
58
|
+
}
|
59
|
+
/**
|
60
|
+
* This method is called by the accessory that has this sensor as a companion
|
61
|
+
*/
|
62
|
+
async triggerCompanionSensorState(sensorState, accessory, isLoggingDisabled = false) {
|
63
|
+
if (accessory.accessory.UUID !== this.accessory.UUID) {
|
64
|
+
throw new AccessoryNotAllowedError(`Switch ${accessory.accessoryConfiguration.accessoryName} is not allowed to trigger this sensor`);
|
65
|
+
}
|
66
|
+
this.states.SensorState = sensorState;
|
67
|
+
this.service.updateCharacteristic(this.eventDetected, (this.states.SensorState));
|
68
|
+
// eslint-disable-next-line max-len
|
69
|
+
this.log.info(`[${this.accessoryConfiguration.accessoryName}] Setting Sensor Current State: ${Sensor.getStateName(this.states.SensorState)}`, isLoggingDisabled);
|
70
|
+
}
|
71
|
+
}
|
72
|
+
;
|
73
|
+
return CompanionSensor;
|
74
|
+
}
|
75
|
+
class CompanionCarbonDioxideSensor extends Companion(CarbonDioxideSensor) {
|
76
|
+
constructor(platform, accessory, companionSensorName) {
|
77
|
+
super(platform, accessory);
|
78
|
+
this.companionConstructor(companionSensorName);
|
79
|
+
}
|
80
|
+
}
|
81
|
+
class CompanionCarbonMonoxideSensor extends Companion(CarbonMonoxideSensor) {
|
82
|
+
constructor(platform, accessory, companionSensorName) {
|
83
|
+
super(platform, accessory);
|
84
|
+
this.companionConstructor(companionSensorName);
|
85
|
+
}
|
86
|
+
}
|
87
|
+
class CompanionContactSensor extends Companion(ContactSensor) {
|
88
|
+
constructor(platform, accessory, companionSensorName) {
|
89
|
+
super(platform, accessory);
|
90
|
+
this.companionConstructor(companionSensorName);
|
91
|
+
}
|
92
|
+
}
|
93
|
+
class CompanionLeakSensor extends Companion(LeakSensor) {
|
94
|
+
constructor(platform, accessory, companionSensorName) {
|
95
|
+
super(platform, accessory);
|
96
|
+
this.companionConstructor(companionSensorName);
|
97
|
+
}
|
98
|
+
}
|
99
|
+
class CompanionMotionSensor extends Companion(MotionSensor) {
|
100
|
+
constructor(platform, accessory, companionSensorName) {
|
101
|
+
super(platform, accessory);
|
102
|
+
this.companionConstructor(companionSensorName);
|
103
|
+
}
|
104
|
+
}
|
105
|
+
class CompanionOccupancySensor extends Companion(OccupancySensor) {
|
106
|
+
constructor(platform, accessory, companionSensorName) {
|
107
|
+
super(platform, accessory);
|
108
|
+
this.companionConstructor(companionSensorName);
|
109
|
+
}
|
110
|
+
}
|
111
|
+
class CompanionSmokeSensor extends Companion(SmokeSensor) {
|
112
|
+
constructor(platform, accessory, companionSensorName) {
|
113
|
+
super(platform, accessory);
|
114
|
+
this.companionConstructor(companionSensorName);
|
115
|
+
}
|
116
|
+
}
|
117
|
+
//# sourceMappingURL=companionSensors.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"companionSensors.js","sourceRoot":"","sources":["../../src/companions/companionSensors.ts"],"names":[],"mappings":"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"}
|
@@ -0,0 +1,15 @@
|
|
1
|
+
import { CharacteristicValue, PlatformAccessory } from 'homebridge';
|
2
|
+
import { VirtualAccessoriesPlatform } from '../platform.js';
|
3
|
+
import { Switch } from '../accessories/virtualAccessorySwitch.js';
|
4
|
+
import { TriggerableEventAccessory } from '../accessories/triggerableEventAccessory.js';
|
5
|
+
/**
|
6
|
+
* CompanionSwitch - Companion accessory
|
7
|
+
*/
|
8
|
+
export declare class CompanionSwitch extends Switch {
|
9
|
+
private readonly postfix;
|
10
|
+
private companionName;
|
11
|
+
private partnerAccessory;
|
12
|
+
constructor(platform: VirtualAccessoriesPlatform, accessory: PlatformAccessory, companionName: string, partnerAccessory: TriggerableEventAccessory);
|
13
|
+
setOn(value: CharacteristicValue): Promise<void>;
|
14
|
+
getOn(): Promise<CharacteristicValue>;
|
15
|
+
}
|
@@ -0,0 +1,46 @@
|
|
1
|
+
import { Switch } from '../accessories/virtualAccessorySwitch.js';
|
2
|
+
/**
|
3
|
+
* CompanionSwitch - Companion accessory
|
4
|
+
*/
|
5
|
+
export class CompanionSwitch extends Switch {
|
6
|
+
postfix = '-switch';
|
7
|
+
companionName;
|
8
|
+
partnerAccessory;
|
9
|
+
constructor(platform, accessory, companionName, partnerAccessory) {
|
10
|
+
super(platform, accessory);
|
11
|
+
this.companionName = companionName;
|
12
|
+
this.partnerAccessory = partnerAccessory;
|
13
|
+
// Override Switch settings
|
14
|
+
this.defaultState = Switch.OFF;
|
15
|
+
this.companionSensor = undefined;
|
16
|
+
this.muteLogging = false;
|
17
|
+
// Replace the Switch Service
|
18
|
+
const switchService = this.accessory.getService(this.platform.Service.Switch);
|
19
|
+
if (switchService !== undefined) {
|
20
|
+
this.accessory.removeService(switchService);
|
21
|
+
}
|
22
|
+
this.service = this.accessory.getService(this.companionName) ||
|
23
|
+
this.accessory.addService(this.platform.Service.Switch, this.companionName, accessory.UUID + this.postfix);
|
24
|
+
// Replace the Name Characteristic
|
25
|
+
this.service.setCharacteristic(this.platform.Characteristic.Name, this.companionName);
|
26
|
+
// Update the initial state of the accessory
|
27
|
+
this.log.debug(`[${this.accessoryConfiguration.accessoryName}] Setting Companion Switch Current State: ${Switch.getStateName(this.states.SwitchState)}`);
|
28
|
+
this.service.updateCharacteristic(this.platform.Characteristic.On, (this.states.SwitchState));
|
29
|
+
// register handlers
|
30
|
+
this.service.getCharacteristic(this.platform.Characteristic.On)
|
31
|
+
.onSet(this.setOn.bind(this))
|
32
|
+
.onGet(this.getOn.bind(this));
|
33
|
+
}
|
34
|
+
async setOn(value) {
|
35
|
+
this.log.info(`[${this.accessoryConfiguration.accessoryName}] Calling super.On()`, this.muteLogging);
|
36
|
+
super.setOn(value);
|
37
|
+
this.log.info(`[${this.accessoryConfiguration.accessoryName}] Calling super.On()`, this.muteLogging);
|
38
|
+
if (this.states.SwitchState === CompanionSwitch.ON) {
|
39
|
+
this.partnerAccessory.triggerEvent(this);
|
40
|
+
}
|
41
|
+
}
|
42
|
+
async getOn() {
|
43
|
+
return super.getOn();
|
44
|
+
}
|
45
|
+
}
|
46
|
+
//# sourceMappingURL=companionSwitch.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"companionSwitch.js","sourceRoot":"","sources":["../../src/companions/companionSwitch.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,EAAE,MAAM,0CAA0C,CAAC;AAGlE;;GAEG;AACH,MAAM,OAAO,eAAgB,SAAQ,MAAM;IAExB,OAAO,GAAW,SAAS,CAAC;IAErC,aAAa,CAAS;IACtB,gBAAgB,CAA4B;IAEpD,YACE,QAAoC,EACpC,SAA4B,EAC5B,aAAqB,EACrB,gBAA2C;QAE3C,KAAK,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;QAE3B,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,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;QACzJ,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC;QAE9F,oBAAoB;QAEpB,IAAI,CAAC,OAAQ,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;aAC7D,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aAC5B,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAClC,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,KAA0B;QACpC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,sBAAsB,CAAC,aAAa,sBAAsB,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QACrG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACnB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,sBAAsB,CAAC,aAAa,sBAAsB,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QAErG,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,KAAK,eAAe,CAAC,EAAE,EAAE,CAAC;YACnD,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC;IAED,KAAK,CAAC,KAAK;QACT,OAAO,KAAK,CAAC,KAAK,EAAE,CAAC;IACvB,CAAC;CACF"}
|
@@ -0,0 +1,9 @@
|
|
1
|
+
import { OpenableAccessoryConfiguration } from '../configurationOpenableAccesory.js';
|
2
|
+
/**
|
3
|
+
*
|
4
|
+
*/
|
5
|
+
export declare class DoorConfiguration extends OpenableAccessoryConfiguration {
|
6
|
+
private errorFields;
|
7
|
+
readonly fieldNames: { [P in keyof this]?: P | undefined; };
|
8
|
+
isValid(prefix: string): [boolean, string[]];
|
9
|
+
}
|
@@ -0,0 +1,31 @@
|
|
1
|
+
/* eslint-disable curly */
|
2
|
+
import { OpenableAccessoryConfiguration } from '../configurationOpenableAccesory.js';
|
3
|
+
import { OpenableState } from '../configurationSchema.js';
|
4
|
+
import { Utils } from '../../utils.js';
|
5
|
+
/**
|
6
|
+
*
|
7
|
+
*/
|
8
|
+
export class DoorConfiguration extends OpenableAccessoryConfiguration {
|
9
|
+
// defaultState: string;
|
10
|
+
// transitionDuration: number;
|
11
|
+
errorFields = [];
|
12
|
+
fieldNames = Utils.proxiedPropertiesOf(this);
|
13
|
+
isValid(prefix) {
|
14
|
+
const isValidDefaultState = (Utils.required(this.defaultState) &&
|
15
|
+
OpenableState.States.includes(this.defaultState));
|
16
|
+
const isValidTransitionDuration = (this.transitionDuration !== undefined ?
|
17
|
+
Utils.isValidTransition(this.transitionDuration) :
|
18
|
+
true);
|
19
|
+
// Store fields failing validation
|
20
|
+
if (!isValidDefaultState)
|
21
|
+
this.errorFields.push(prefix + '.' + this.fieldNames.defaultState);
|
22
|
+
if (!isValidTransitionDuration)
|
23
|
+
this.errorFields.push(prefix + '.' + this.fieldNames.transitionDuration);
|
24
|
+
return [
|
25
|
+
(isValidDefaultState &&
|
26
|
+
isValidTransitionDuration),
|
27
|
+
this.errorFields,
|
28
|
+
];
|
29
|
+
}
|
30
|
+
}
|
31
|
+
//# sourceMappingURL=configurationDoor.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"configurationDoor.js","sourceRoot":"","sources":["../../../src/configuration/accessories/configurationDoor.ts"],"names":[],"mappings":"AAAA,0BAA0B;AAE1B,OAAO,EAAE,8BAA8B,EAAE,MAAM,qCAAqC,CAAC;AACrF,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAE1D,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAEvC;;GAEG;AACH,MAAM,OAAO,iBAAkB,SAAQ,8BAA8B;IACnE,wBAAwB;IACxB,8BAA8B;IAEtB,WAAW,GAAa,EAAE,CAAC;IAE1B,UAAU,GAAG,KAAK,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;IAEtD,OAAO,CAAC,MAAc;QACpB,MAAM,mBAAmB,GAAY,CACnC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC;YACjC,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,CACjD,CAAC;QAEF,MAAM,yBAAyB,GAAY,CACzC,IAAI,CAAC,kBAAkB,KAAK,SAAS,CAAC,CAAC;YACrC,KAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC;YAClD,IAAI,CACP,CAAC;QAEF,kCAAkC;QAClC,IAAI,CAAC,mBAAmB;YAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;QAC7F,IAAI,CAAC,yBAAyB;YAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAC;QAEzG,OAAO;YACL,CAAC,mBAAmB;gBAClB,yBAAyB,CAAC;YAC5B,IAAI,CAAC,WAAW;SACjB,CAAC;IACJ,CAAC;CACF"}
|
@@ -0,0 +1,10 @@
|
|
1
|
+
import { AccessoryConfiguration } from '../configurationAccessory.js';
|
2
|
+
/**
|
3
|
+
*
|
4
|
+
*/
|
5
|
+
export declare class DoorbellConfiguration extends AccessoryConfiguration {
|
6
|
+
volume: number;
|
7
|
+
private errorFields;
|
8
|
+
readonly fieldNames: { [P in keyof this]?: P | undefined; };
|
9
|
+
isValid(prefix: string): [boolean, string[]];
|
10
|
+
}
|