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.
Files changed (270) hide show
  1. package/LICENSE +7 -0
  2. package/README.md +1091 -0
  3. package/VirtualAccessories.jpg +0 -0
  4. package/VirtualAccessories.png +0 -0
  5. package/assets/changeorder.png +0 -0
  6. package/assets/creative-ideas/HowToAddAFakeThermostat.png +0 -0
  7. package/assets/keepaccessories.png +0 -0
  8. package/assets/mentions/youtube-EdgarsHomeTech.png +0 -0
  9. package/assets/mentions/youtube-MakeSmartMatter.png +0 -0
  10. package/assets/wiki/automation-shortcut-1.png +0 -0
  11. package/assets/wiki/automation-shortcut-2.png +0 -0
  12. package/assets/wiki/cron-schedule-config.png +0 -0
  13. package/assets/wiki/enable-sensor-webhooks.png +0 -0
  14. package/assets/wiki/humidifier-dehumidifier-config.png +0 -0
  15. package/assets/wiki/new-automation.png +0 -0
  16. package/assets/wiki/timer-duration-new.png +0 -0
  17. package/assets/wiki/timer-duration-old.png +0 -0
  18. package/assets/wiki/valve-timer-duration-new.png +0 -0
  19. package/assets/wiki/valve-timer-duration-old.png +0 -0
  20. package/config.schema.json +1570 -0
  21. package/dist/accessories/audioAccessory.d.ts +29 -0
  22. package/dist/accessories/audioAccessory.js +119 -0
  23. package/dist/accessories/audioAccessory.js.map +1 -0
  24. package/dist/accessories/externalAccessory.d.ts +10 -0
  25. package/dist/accessories/externalAccessory.js +13 -0
  26. package/dist/accessories/externalAccessory.js.map +1 -0
  27. package/dist/accessories/openingAccessory.d.ts +35 -0
  28. package/dist/accessories/openingAccessory.js +166 -0
  29. package/dist/accessories/openingAccessory.js.map +1 -0
  30. package/dist/accessories/triggerableEventAccessory.d.ts +7 -0
  31. package/dist/accessories/triggerableEventAccessory.js +2 -0
  32. package/dist/accessories/triggerableEventAccessory.js.map +1 -0
  33. package/dist/accessories/virtualAccessory.d.ts +29 -0
  34. package/dist/accessories/virtualAccessory.js +86 -0
  35. package/dist/accessories/virtualAccessory.js.map +1 -0
  36. package/dist/accessories/virtualAccessoryDoor.d.ts +14 -0
  37. package/dist/accessories/virtualAccessoryDoor.js +20 -0
  38. package/dist/accessories/virtualAccessoryDoor.js.map +1 -0
  39. package/dist/accessories/virtualAccessoryDoorbell.d.ts +29 -0
  40. package/dist/accessories/virtualAccessoryDoorbell.js +111 -0
  41. package/dist/accessories/virtualAccessoryDoorbell.js.map +1 -0
  42. package/dist/accessories/virtualAccessoryFan.d.ts +27 -0
  43. package/dist/accessories/virtualAccessoryFan.js +122 -0
  44. package/dist/accessories/virtualAccessoryFan.js.map +1 -0
  45. package/dist/accessories/virtualAccessoryFilterMaintenance.d.ts +26 -0
  46. package/dist/accessories/virtualAccessoryFilterMaintenance.js +122 -0
  47. package/dist/accessories/virtualAccessoryFilterMaintenance.js.map +1 -0
  48. package/dist/accessories/virtualAccessoryGarageDoor.d.ts +28 -0
  49. package/dist/accessories/virtualAccessoryGarageDoor.js +162 -0
  50. package/dist/accessories/virtualAccessoryGarageDoor.js.map +1 -0
  51. package/dist/accessories/virtualAccessoryHeaterCooler.d.ts +62 -0
  52. package/dist/accessories/virtualAccessoryHeaterCooler.js +441 -0
  53. package/dist/accessories/virtualAccessoryHeaterCooler.js.map +1 -0
  54. package/dist/accessories/virtualAccessoryHumidifierDehumidifier.d.ts +53 -0
  55. package/dist/accessories/virtualAccessoryHumidifierDehumidifier.js +365 -0
  56. package/dist/accessories/virtualAccessoryHumidifierDehumidifier.js.map +1 -0
  57. package/dist/accessories/virtualAccessoryInputSource.d.ts +38 -0
  58. package/dist/accessories/virtualAccessoryInputSource.js +196 -0
  59. package/dist/accessories/virtualAccessoryInputSource.js.map +1 -0
  60. package/dist/accessories/virtualAccessoryLightbulb.d.ts +37 -0
  61. package/dist/accessories/virtualAccessoryLightbulb.js +222 -0
  62. package/dist/accessories/virtualAccessoryLightbulb.js.map +1 -0
  63. package/dist/accessories/virtualAccessoryLock.d.ts +34 -0
  64. package/dist/accessories/virtualAccessoryLock.js +198 -0
  65. package/dist/accessories/virtualAccessoryLock.js.map +1 -0
  66. package/dist/accessories/virtualAccessorySecuritySystem.d.ts +30 -0
  67. package/dist/accessories/virtualAccessorySecuritySystem.js +214 -0
  68. package/dist/accessories/virtualAccessorySecuritySystem.js.map +1 -0
  69. package/dist/accessories/virtualAccessorySpeaker.d.ts +14 -0
  70. package/dist/accessories/virtualAccessorySpeaker.js +20 -0
  71. package/dist/accessories/virtualAccessorySpeaker.js.map +1 -0
  72. package/dist/accessories/virtualAccessorySwitch.d.ts +34 -0
  73. package/dist/accessories/virtualAccessorySwitch.js +191 -0
  74. package/dist/accessories/virtualAccessorySwitch.js.map +1 -0
  75. package/dist/accessories/virtualAccessoryTelevision.d.ts +44 -0
  76. package/dist/accessories/virtualAccessoryTelevision.js +230 -0
  77. package/dist/accessories/virtualAccessoryTelevision.js.map +1 -0
  78. package/dist/accessories/virtualAccessoryValve.d.ts +34 -0
  79. package/dist/accessories/virtualAccessoryValve.js +215 -0
  80. package/dist/accessories/virtualAccessoryValve.js.map +1 -0
  81. package/dist/accessories/virtualAccessoryWindow.d.ts +14 -0
  82. package/dist/accessories/virtualAccessoryWindow.js +20 -0
  83. package/dist/accessories/virtualAccessoryWindow.js.map +1 -0
  84. package/dist/accessories/virtualAccessoryWindowCovering.d.ts +14 -0
  85. package/dist/accessories/virtualAccessoryWindowCovering.js +20 -0
  86. package/dist/accessories/virtualAccessoryWindowCovering.js.map +1 -0
  87. package/dist/accessoryFactory.d.ts +15 -0
  88. package/dist/accessoryFactory.js +147 -0
  89. package/dist/accessoryFactory.js.map +1 -0
  90. package/dist/colors.d.ts +22 -0
  91. package/dist/colors.js +146 -0
  92. package/dist/colors.js.map +1 -0
  93. package/dist/companions/companionLightbulb.d.ts +10 -0
  94. package/dist/companions/companionLightbulb.js +12 -0
  95. package/dist/companions/companionLightbulb.js.map +1 -0
  96. package/dist/companions/companionSensors.d.ts +9 -0
  97. package/dist/companions/companionSensors.js +117 -0
  98. package/dist/companions/companionSensors.js.map +1 -0
  99. package/dist/companions/companionSwitch.d.ts +15 -0
  100. package/dist/companions/companionSwitch.js +46 -0
  101. package/dist/companions/companionSwitch.js.map +1 -0
  102. package/dist/configuration/accessories/configurationDoor.d.ts +9 -0
  103. package/dist/configuration/accessories/configurationDoor.js +31 -0
  104. package/dist/configuration/accessories/configurationDoor.js.map +1 -0
  105. package/dist/configuration/accessories/configurationDoorbell.d.ts +10 -0
  106. package/dist/configuration/accessories/configurationDoorbell.js +23 -0
  107. package/dist/configuration/accessories/configurationDoorbell.js.map +1 -0
  108. package/dist/configuration/accessories/configurationFan.d.ts +12 -0
  109. package/dist/configuration/accessories/configurationFan.js +36 -0
  110. package/dist/configuration/accessories/configurationFan.js.map +1 -0
  111. package/dist/configuration/accessories/configurationFilterMaintenance.d.ts +12 -0
  112. package/dist/configuration/accessories/configurationFilterMaintenance.js +48 -0
  113. package/dist/configuration/accessories/configurationFilterMaintenance.js.map +1 -0
  114. package/dist/configuration/accessories/configurationGarageDoor.d.ts +9 -0
  115. package/dist/configuration/accessories/configurationGarageDoor.js +31 -0
  116. package/dist/configuration/accessories/configurationGarageDoor.js.map +1 -0
  117. package/dist/configuration/accessories/configurationHeaterCooler.d.ts +20 -0
  118. package/dist/configuration/accessories/configurationHeaterCooler.js +116 -0
  119. package/dist/configuration/accessories/configurationHeaterCooler.js.map +1 -0
  120. package/dist/configuration/accessories/configurationHumidifierDehumidifier.d.ts +12 -0
  121. package/dist/configuration/accessories/configurationHumidifierDehumidifier.js +44 -0
  122. package/dist/configuration/accessories/configurationHumidifierDehumidifier.js.map +1 -0
  123. package/dist/configuration/accessories/configurationInputSource.d.ts +12 -0
  124. package/dist/configuration/accessories/configurationInputSource.js +33 -0
  125. package/dist/configuration/accessories/configurationInputSource.js.map +1 -0
  126. package/dist/configuration/accessories/configurationLightbulb.d.ts +14 -0
  127. package/dist/configuration/accessories/configurationLightbulb.js +55 -0
  128. package/dist/configuration/accessories/configurationLightbulb.js.map +1 -0
  129. package/dist/configuration/accessories/configurationLock.d.ts +11 -0
  130. package/dist/configuration/accessories/configurationLock.js +30 -0
  131. package/dist/configuration/accessories/configurationLock.js.map +1 -0
  132. package/dist/configuration/accessories/configurationSecuritySystem.d.ts +18 -0
  133. package/dist/configuration/accessories/configurationSecuritySystem.js +48 -0
  134. package/dist/configuration/accessories/configurationSecuritySystem.js.map +1 -0
  135. package/dist/configuration/accessories/configurationSpeaker.d.ts +9 -0
  136. package/dist/configuration/accessories/configurationSpeaker.js +24 -0
  137. package/dist/configuration/accessories/configurationSpeaker.js.map +1 -0
  138. package/dist/configuration/accessories/configurationSwitch.d.ts +13 -0
  139. package/dist/configuration/accessories/configurationSwitch.js +27 -0
  140. package/dist/configuration/accessories/configurationSwitch.js.map +1 -0
  141. package/dist/configuration/accessories/configurationTelevision.d.ts +12 -0
  142. package/dist/configuration/accessories/configurationTelevision.js +47 -0
  143. package/dist/configuration/accessories/configurationTelevision.js.map +1 -0
  144. package/dist/configuration/accessories/configurationValve.d.ts +25 -0
  145. package/dist/configuration/accessories/configurationValve.js +88 -0
  146. package/dist/configuration/accessories/configurationValve.js.map +1 -0
  147. package/dist/configuration/accessories/configurationWindow.d.ts +9 -0
  148. package/dist/configuration/accessories/configurationWindow.js +31 -0
  149. package/dist/configuration/accessories/configurationWindow.js.map +1 -0
  150. package/dist/configuration/accessories/configurationWindowCovering.d.ts +9 -0
  151. package/dist/configuration/accessories/configurationWindowCovering.js +31 -0
  152. package/dist/configuration/accessories/configurationWindowCovering.js.map +1 -0
  153. package/dist/configuration/configuration.d.ts +13 -0
  154. package/dist/configuration/configuration.js +41 -0
  155. package/dist/configuration/configuration.js.map +1 -0
  156. package/dist/configuration/configurationAccessory.d.ts +6 -0
  157. package/dist/configuration/configurationAccessory.js +6 -0
  158. package/dist/configuration/configurationAccessory.js.map +1 -0
  159. package/dist/configuration/configurationAudioAccessoryConfiguration.d.ts +9 -0
  160. package/dist/configuration/configurationAudioAccessoryConfiguration.js +9 -0
  161. package/dist/configuration/configurationAudioAccessoryConfiguration.js.map +1 -0
  162. package/dist/configuration/configurationCompanionSensor.d.ts +11 -0
  163. package/dist/configuration/configurationCompanionSensor.js +26 -0
  164. package/dist/configuration/configurationCompanionSensor.js.map +1 -0
  165. package/dist/configuration/configurationDuration.d.ts +19 -0
  166. package/dist/configuration/configurationDuration.js +55 -0
  167. package/dist/configuration/configurationDuration.js.map +1 -0
  168. package/dist/configuration/configurationOpenableAccesory.d.ts +9 -0
  169. package/dist/configuration/configurationOpenableAccesory.js +9 -0
  170. package/dist/configuration/configurationOpenableAccesory.js.map +1 -0
  171. package/dist/configuration/configurationPlatform.d.ts +76 -0
  172. package/dist/configuration/configurationPlatform.js +381 -0
  173. package/dist/configuration/configurationPlatform.js.map +1 -0
  174. package/dist/configuration/configurationSchema.d.ts +178 -0
  175. package/dist/configuration/configurationSchema.js +198 -0
  176. package/dist/configuration/configurationSchema.js.map +1 -0
  177. package/dist/configuration/configurationSensor.d.ts +11 -0
  178. package/dist/configuration/configurationSensor.js +30 -0
  179. package/dist/configuration/configurationSensor.js.map +1 -0
  180. package/dist/configuration/configurationSensorServer.d.ts +11 -0
  181. package/dist/configuration/configurationSensorServer.js +26 -0
  182. package/dist/configuration/configurationSensorServer.js.map +1 -0
  183. package/dist/configuration/configurationTimer.d.ts +15 -0
  184. package/dist/configuration/configurationTimer.js +101 -0
  185. package/dist/configuration/configurationTimer.js.map +1 -0
  186. package/dist/configuration/triggers/configurationCronTrigger.d.ts +18 -0
  187. package/dist/configuration/triggers/configurationCronTrigger.js +65 -0
  188. package/dist/configuration/triggers/configurationCronTrigger.js.map +1 -0
  189. package/dist/configuration/triggers/configurationPingTrigger.d.ts +11 -0
  190. package/dist/configuration/triggers/configurationPingTrigger.js +26 -0
  191. package/dist/configuration/triggers/configurationPingTrigger.js.map +1 -0
  192. package/dist/configuration/triggers/configurationSunEventsTrigger.d.ts +18 -0
  193. package/dist/configuration/triggers/configurationSunEventsTrigger.js +52 -0
  194. package/dist/configuration/triggers/configurationSunEventsTrigger.js.map +1 -0
  195. package/dist/configuration/triggers/configurationWebhookTriggerConfiguration.d.ts +9 -0
  196. package/dist/configuration/triggers/configurationWebhookTriggerConfiguration.js +17 -0
  197. package/dist/configuration/triggers/configurationWebhookTriggerConfiguration.js.map +1 -0
  198. package/dist/errors.d.ts +27 -0
  199. package/dist/errors.js +52 -0
  200. package/dist/errors.js.map +1 -0
  201. package/dist/index.d.ts +6 -0
  202. package/dist/index.js +9 -0
  203. package/dist/index.js.map +1 -0
  204. package/dist/platform.d.ts +28 -0
  205. package/dist/platform.js +221 -0
  206. package/dist/platform.js.map +1 -0
  207. package/dist/sensorServer.d.ts +27 -0
  208. package/dist/sensorServer.js +227 -0
  209. package/dist/sensorServer.js.map +1 -0
  210. package/dist/sensors/virtualSensor.d.ts +37 -0
  211. package/dist/sensors/virtualSensor.js +87 -0
  212. package/dist/sensors/virtualSensor.js.map +1 -0
  213. package/dist/sensors/virtualSensorCarbonDioxide.d.ts +20 -0
  214. package/dist/sensors/virtualSensorCarbonDioxide.js +45 -0
  215. package/dist/sensors/virtualSensorCarbonDioxide.js.map +1 -0
  216. package/dist/sensors/virtualSensorCarbonMonoxide.d.ts +20 -0
  217. package/dist/sensors/virtualSensorCarbonMonoxide.js +45 -0
  218. package/dist/sensors/virtualSensorCarbonMonoxide.js.map +1 -0
  219. package/dist/sensors/virtualSensorContact.d.ts +20 -0
  220. package/dist/sensors/virtualSensorContact.js +45 -0
  221. package/dist/sensors/virtualSensorContact.js.map +1 -0
  222. package/dist/sensors/virtualSensorLeak.d.ts +20 -0
  223. package/dist/sensors/virtualSensorLeak.js +45 -0
  224. package/dist/sensors/virtualSensorLeak.js.map +1 -0
  225. package/dist/sensors/virtualSensorMotion.d.ts +20 -0
  226. package/dist/sensors/virtualSensorMotion.js +45 -0
  227. package/dist/sensors/virtualSensorMotion.js.map +1 -0
  228. package/dist/sensors/virtualSensorOccupancy.d.ts +20 -0
  229. package/dist/sensors/virtualSensorOccupancy.js +45 -0
  230. package/dist/sensors/virtualSensorOccupancy.js.map +1 -0
  231. package/dist/sensors/virtualSensorSmoke.d.ts +20 -0
  232. package/dist/sensors/virtualSensorSmoke.js +45 -0
  233. package/dist/sensors/virtualSensorSmoke.js.map +1 -0
  234. package/dist/settings.d.ts +8 -0
  235. package/dist/settings.js +9 -0
  236. package/dist/settings.js.map +1 -0
  237. package/dist/timer.d.ts +58 -0
  238. package/dist/timer.js +110 -0
  239. package/dist/timer.js.map +1 -0
  240. package/dist/triggerableSensor.d.ts +6 -0
  241. package/dist/triggerableSensor.js +2 -0
  242. package/dist/triggerableSensor.js.map +1 -0
  243. package/dist/triggers/trigger.d.ts +13 -0
  244. package/dist/triggers/trigger.js +16 -0
  245. package/dist/triggers/trigger.js.map +1 -0
  246. package/dist/triggers/triggerCron.d.ts +19 -0
  247. package/dist/triggers/triggerCron.js +102 -0
  248. package/dist/triggers/triggerCron.js.map +1 -0
  249. package/dist/triggers/triggerPing.d.ts +19 -0
  250. package/dist/triggers/triggerPing.js +110 -0
  251. package/dist/triggers/triggerPing.js.map +1 -0
  252. package/dist/triggers/triggerSunEvents.d.ts +20 -0
  253. package/dist/triggers/triggerSunEvents.js +200 -0
  254. package/dist/triggers/triggerSunEvents.js.map +1 -0
  255. package/dist/triggers/triggerWebhook.d.ts +10 -0
  256. package/dist/triggers/triggerWebhook.js +26 -0
  257. package/dist/triggers/triggerWebhook.js.map +1 -0
  258. package/dist/updatableObstruction.d.ts +6 -0
  259. package/dist/updatableObstruction.js +2 -0
  260. package/dist/updatableObstruction.js.map +1 -0
  261. package/dist/updatableSensor.d.ts +6 -0
  262. package/dist/updatableSensor.js +2 -0
  263. package/dist/updatableSensor.js.map +1 -0
  264. package/dist/utils.d.ts +28 -0
  265. package/dist/utils.js +120 -0
  266. package/dist/utils.js.map +1 -0
  267. package/dist/virtualLogger.d.ts +15 -0
  268. package/dist/virtualLogger.js +38 -0
  269. package/dist/virtualLogger.js.map +1 -0
  270. 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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"}
@@ -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
+ }