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,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
+ }