iobroker.iot 4.0.3 → 4.1.2

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 (251) hide show
  1. package/README.md +5 -517
  2. package/admin/assets/index-6Itc0U48.js +681 -0
  3. package/admin/index_m.html +1 -1
  4. package/admin/rules/assets/{hostInit-hos3Txsy.js → hostInit-Dxp6BaAc.js} +2 -2
  5. package/admin/rules/assets/index-208Qrr3S.js +1152 -0
  6. package/admin/rules/assets/{index-CbxmbJvB.js → index-Bvn52imU.js} +1 -1
  7. package/admin/rules/assets/preload-helper-BDBacUwf.js +1 -0
  8. package/admin/rules/assets/{virtualExposes-BNZJTatg.js → virtualExposes-O8-92o9I.js} +1 -1
  9. package/admin/rules/customRuleBlocks.js +2 -2
  10. package/admin/rules/i18n/de.json +8 -8
  11. package/admin/rules/i18n/es.json +8 -8
  12. package/admin/rules/i18n/fr.json +8 -8
  13. package/admin/rules/i18n/it.json +8 -8
  14. package/admin/rules/i18n/nl.json +8 -8
  15. package/admin/rules/i18n/pl.json +8 -8
  16. package/admin/rules/i18n/pt.json +8 -8
  17. package/admin/rules/i18n/ru.json +8 -8
  18. package/admin/rules/i18n/uk.json +8 -8
  19. package/admin/rules/i18n/zh-cn.json +8 -8
  20. package/{build-backend → build}/lib/AlexaSmartHomeV3/Alexa/AlexaResponse.js +6 -0
  21. package/build/lib/AlexaSmartHomeV3/Alexa/AlexaResponse.js.map +1 -0
  22. package/{build-backend → build}/lib/AlexaSmartHomeV3/Alexa/Capabilities/Base.js +2 -7
  23. package/build/lib/AlexaSmartHomeV3/Alexa/Capabilities/Base.js.map +1 -0
  24. package/{build-backend → build}/lib/AlexaSmartHomeV3/Alexa/Capabilities/BrightnessController.js +6 -5
  25. package/build/lib/AlexaSmartHomeV3/Alexa/Capabilities/BrightnessController.js.map +1 -0
  26. package/{build-backend → build}/lib/AlexaSmartHomeV3/Alexa/Capabilities/ColorController.js +3 -2
  27. package/build/lib/AlexaSmartHomeV3/Alexa/Capabilities/ColorController.js.map +1 -0
  28. package/{build-backend → build}/lib/AlexaSmartHomeV3/Alexa/Capabilities/ColorTemperatureController.js +4 -3
  29. package/build/lib/AlexaSmartHomeV3/Alexa/Capabilities/ColorTemperatureController.js.map +1 -0
  30. package/{build-backend → build}/lib/AlexaSmartHomeV3/Alexa/Capabilities/ContactSensor.js +3 -2
  31. package/build/lib/AlexaSmartHomeV3/Alexa/Capabilities/ContactSensor.js.map +1 -0
  32. package/{build-backend → build}/lib/AlexaSmartHomeV3/Alexa/Capabilities/LockController.js +3 -2
  33. package/build/lib/AlexaSmartHomeV3/Alexa/Capabilities/LockController.js.map +1 -0
  34. package/{build-backend → build}/lib/AlexaSmartHomeV3/Alexa/Capabilities/ModeController.js +4 -3
  35. package/build/lib/AlexaSmartHomeV3/Alexa/Capabilities/ModeController.js.map +1 -0
  36. package/{build-backend → build}/lib/AlexaSmartHomeV3/Alexa/Capabilities/MotionSensor.js +3 -2
  37. package/build/lib/AlexaSmartHomeV3/Alexa/Capabilities/MotionSensor.js.map +1 -0
  38. package/{build-backend → build}/lib/AlexaSmartHomeV3/Alexa/Capabilities/PercentageController.js +3 -2
  39. package/build/lib/AlexaSmartHomeV3/Alexa/Capabilities/PercentageController.js.map +1 -0
  40. package/{build-backend → build}/lib/AlexaSmartHomeV3/Alexa/Capabilities/PowerController.js +6 -5
  41. package/build/lib/AlexaSmartHomeV3/Alexa/Capabilities/PowerController.js.map +1 -0
  42. package/{build-backend → build}/lib/AlexaSmartHomeV3/Alexa/Capabilities/Speaker.js +5 -4
  43. package/build/lib/AlexaSmartHomeV3/Alexa/Capabilities/Speaker.js.map +1 -0
  44. package/{build-backend → build}/lib/AlexaSmartHomeV3/Alexa/Capabilities/TemperatureSensor.js +3 -2
  45. package/build/lib/AlexaSmartHomeV3/Alexa/Capabilities/TemperatureSensor.js.map +1 -0
  46. package/{build-backend → build}/lib/AlexaSmartHomeV3/Alexa/Capabilities/ThermostatController.js +5 -4
  47. package/build/lib/AlexaSmartHomeV3/Alexa/Capabilities/ThermostatController.js.map +1 -0
  48. package/{build-backend → build}/lib/AlexaSmartHomeV3/Alexa/ModeValues/Open.js +1 -1
  49. package/{build-backend → build}/lib/AlexaSmartHomeV3/Alexa/ModeValues/Open.js.map +1 -1
  50. package/{build-backend → build}/lib/AlexaSmartHomeV3/Alexa/Properties/Base.js +20 -18
  51. package/build/lib/AlexaSmartHomeV3/Alexa/Properties/Base.js.map +1 -0
  52. package/{build-backend → build}/lib/AlexaSmartHomeV3/Alexa/Properties/Color.js +2 -7
  53. package/build/lib/AlexaSmartHomeV3/Alexa/Properties/Color.js.map +1 -0
  54. package/{build-backend → build}/lib/AlexaSmartHomeV3/Alexa/Properties/DetectionState.js +9 -0
  55. package/build/lib/AlexaSmartHomeV3/Alexa/Properties/DetectionState.js.map +1 -0
  56. package/{build-backend → build}/lib/AlexaSmartHomeV3/Alexa/Properties/LockState.js +20 -0
  57. package/build/lib/AlexaSmartHomeV3/Alexa/Properties/LockState.js.map +1 -0
  58. package/{build-backend → build}/lib/AlexaSmartHomeV3/Alexa/Properties/Mode.js +17 -3
  59. package/build/lib/AlexaSmartHomeV3/Alexa/Properties/Mode.js.map +1 -0
  60. package/{build-backend → build}/lib/AlexaSmartHomeV3/Alexa/Properties/PowerState.js +6 -0
  61. package/build/lib/AlexaSmartHomeV3/Alexa/Properties/PowerState.js.map +1 -0
  62. package/{build-backend → build}/lib/AlexaSmartHomeV3/Alexa/Properties/ThermostatMode.js +3 -3
  63. package/build/lib/AlexaSmartHomeV3/Alexa/Properties/ThermostatMode.js.map +1 -0
  64. package/{build-backend → build}/lib/AlexaSmartHomeV3/Controls/AdjustableControl.js +0 -3
  65. package/build/lib/AlexaSmartHomeV3/Controls/AdjustableControl.js.map +1 -0
  66. package/{build-backend → build}/lib/AlexaSmartHomeV3/Controls/AdjustablePercentageControl.js +5 -7
  67. package/build/lib/AlexaSmartHomeV3/Controls/AdjustablePercentageControl.js.map +1 -0
  68. package/{build-backend → build}/lib/AlexaSmartHomeV3/Controls/AirCondition.js +65 -71
  69. package/build/lib/AlexaSmartHomeV3/Controls/AirCondition.js.map +1 -0
  70. package/{build-backend → build}/lib/AlexaSmartHomeV3/Controls/ContactSensor.js +5 -1
  71. package/build/lib/AlexaSmartHomeV3/Controls/ContactSensor.js.map +1 -0
  72. package/{build-backend → build}/lib/AlexaSmartHomeV3/Controls/Control.js +13 -29
  73. package/build/lib/AlexaSmartHomeV3/Controls/Control.js.map +1 -0
  74. package/{build-backend → build}/lib/AlexaSmartHomeV3/Controls/Ct.js +66 -73
  75. package/build/lib/AlexaSmartHomeV3/Controls/Ct.js.map +1 -0
  76. package/{build-backend → build}/lib/AlexaSmartHomeV3/Controls/Dimmer.js +32 -39
  77. package/build/lib/AlexaSmartHomeV3/Controls/Dimmer.js.map +1 -0
  78. package/{build-backend → build}/lib/AlexaSmartHomeV3/Controls/Gate.js +5 -7
  79. package/build/lib/AlexaSmartHomeV3/Controls/Gate.js.map +1 -0
  80. package/{build-backend → build}/lib/AlexaSmartHomeV3/Controls/Hue.js +91 -89
  81. package/build/lib/AlexaSmartHomeV3/Controls/Hue.js.map +1 -0
  82. package/{build-backend → build}/lib/AlexaSmartHomeV3/Controls/Light.js +10 -14
  83. package/build/lib/AlexaSmartHomeV3/Controls/Light.js.map +1 -0
  84. package/{build-backend → build}/lib/AlexaSmartHomeV3/Controls/Lock.js +6 -8
  85. package/build/lib/AlexaSmartHomeV3/Controls/Lock.js.map +1 -0
  86. package/{build-backend → build}/lib/AlexaSmartHomeV3/Controls/Motion.js +5 -1
  87. package/build/lib/AlexaSmartHomeV3/Controls/Motion.js.map +1 -0
  88. package/{build-backend → build}/lib/AlexaSmartHomeV3/Controls/ReadOnlyDetector.js +0 -10
  89. package/build/lib/AlexaSmartHomeV3/Controls/ReadOnlyDetector.js.map +1 -0
  90. package/{build-backend → build}/lib/AlexaSmartHomeV3/Controls/Socket.js +5 -7
  91. package/build/lib/AlexaSmartHomeV3/Controls/Socket.js.map +1 -0
  92. package/{build-backend → build}/lib/AlexaSmartHomeV3/Controls/Temperature.js +5 -7
  93. package/build/lib/AlexaSmartHomeV3/Controls/Temperature.js.map +1 -0
  94. package/build/lib/AlexaSmartHomeV3/Controls/Thermostat.js +82 -0
  95. package/build/lib/AlexaSmartHomeV3/Controls/Thermostat.js.map +1 -0
  96. package/{build-backend → build}/lib/AlexaSmartHomeV3/Controls/VacuumCleaner.js +5 -7
  97. package/build/lib/AlexaSmartHomeV3/Controls/VacuumCleaner.js.map +1 -0
  98. package/{build-backend → build}/lib/AlexaSmartHomeV3/Controls/Volume.js +29 -36
  99. package/build/lib/AlexaSmartHomeV3/Controls/Volume.js.map +1 -0
  100. package/{build-backend → build}/lib/AlexaSmartHomeV3/Controls/index.js +6 -6
  101. package/build/lib/AlexaSmartHomeV3/Controls/index.js.map +1 -0
  102. package/{build-backend → build}/lib/AlexaSmartHomeV3/DeviceManager.js +16 -10
  103. package/build/lib/AlexaSmartHomeV3/DeviceManager.js.map +1 -0
  104. package/{build-backend → build}/lib/AlexaSmartHomeV3/Helpers/AdapterProvider.js +4 -1
  105. package/build/lib/AlexaSmartHomeV3/Helpers/AdapterProvider.js.map +1 -0
  106. package/{build-backend → build}/lib/AlexaSmartHomeV3/Helpers/FileHelper.js +1 -3
  107. package/build/lib/AlexaSmartHomeV3/Helpers/FileHelper.js.map +1 -0
  108. package/{build-backend → build}/lib/AlexaSmartHomeV3/Helpers/RateLimiter.js +23 -16
  109. package/build/lib/AlexaSmartHomeV3/Helpers/RateLimiter.js.map +1 -0
  110. package/{build-backend → build}/lib/AlexaSmartHomeV3/Helpers/Utils.js +0 -1
  111. package/build/lib/AlexaSmartHomeV3/Helpers/Utils.js.map +1 -0
  112. package/{build-backend → build}/lib/alexaSmartHomeV3.js +3 -3
  113. package/build/lib/alexaSmartHomeV3.js.map +1 -0
  114. package/{build-backend → build}/main.js +29 -9
  115. package/build/main.js.map +1 -0
  116. package/io-package.json +30 -29
  117. package/package.json +13 -13
  118. package/admin/assets/index-BjEWVyqN.js +0 -681
  119. package/admin/rules/assets/index-_Y2FN5EZ.js +0 -1152
  120. package/admin/rules/assets/preload-helper-Dp1pzeXC.js +0 -1
  121. package/build-backend/lib/AlexaSmartHomeV3/Alexa/AlexaResponse.js.map +0 -1
  122. package/build-backend/lib/AlexaSmartHomeV3/Alexa/Capabilities/Base.js.map +0 -1
  123. package/build-backend/lib/AlexaSmartHomeV3/Alexa/Capabilities/BrightnessController.js.map +0 -1
  124. package/build-backend/lib/AlexaSmartHomeV3/Alexa/Capabilities/ColorController.js.map +0 -1
  125. package/build-backend/lib/AlexaSmartHomeV3/Alexa/Capabilities/ColorTemperatureController.js.map +0 -1
  126. package/build-backend/lib/AlexaSmartHomeV3/Alexa/Capabilities/ContactSensor.js.map +0 -1
  127. package/build-backend/lib/AlexaSmartHomeV3/Alexa/Capabilities/LockController.js.map +0 -1
  128. package/build-backend/lib/AlexaSmartHomeV3/Alexa/Capabilities/ModeController.js.map +0 -1
  129. package/build-backend/lib/AlexaSmartHomeV3/Alexa/Capabilities/MotionSensor.js.map +0 -1
  130. package/build-backend/lib/AlexaSmartHomeV3/Alexa/Capabilities/PercentageController.js.map +0 -1
  131. package/build-backend/lib/AlexaSmartHomeV3/Alexa/Capabilities/PowerController.js.map +0 -1
  132. package/build-backend/lib/AlexaSmartHomeV3/Alexa/Capabilities/Speaker.js.map +0 -1
  133. package/build-backend/lib/AlexaSmartHomeV3/Alexa/Capabilities/TemperatureSensor.js.map +0 -1
  134. package/build-backend/lib/AlexaSmartHomeV3/Alexa/Capabilities/ThermostatController.js.map +0 -1
  135. package/build-backend/lib/AlexaSmartHomeV3/Alexa/Properties/Base.js.map +0 -1
  136. package/build-backend/lib/AlexaSmartHomeV3/Alexa/Properties/Color.js.map +0 -1
  137. package/build-backend/lib/AlexaSmartHomeV3/Alexa/Properties/DetectionState.js.map +0 -1
  138. package/build-backend/lib/AlexaSmartHomeV3/Alexa/Properties/LockState.js.map +0 -1
  139. package/build-backend/lib/AlexaSmartHomeV3/Alexa/Properties/Mode.js.map +0 -1
  140. package/build-backend/lib/AlexaSmartHomeV3/Alexa/Properties/PowerState.js.map +0 -1
  141. package/build-backend/lib/AlexaSmartHomeV3/Alexa/Properties/ThermostatMode.js.map +0 -1
  142. package/build-backend/lib/AlexaSmartHomeV3/Controls/AdjustableControl.js.map +0 -1
  143. package/build-backend/lib/AlexaSmartHomeV3/Controls/AdjustablePercentageControl.js.map +0 -1
  144. package/build-backend/lib/AlexaSmartHomeV3/Controls/AirCondition.js.map +0 -1
  145. package/build-backend/lib/AlexaSmartHomeV3/Controls/ContactSensor.js.map +0 -1
  146. package/build-backend/lib/AlexaSmartHomeV3/Controls/Control.js.map +0 -1
  147. package/build-backend/lib/AlexaSmartHomeV3/Controls/Ct.js.map +0 -1
  148. package/build-backend/lib/AlexaSmartHomeV3/Controls/Dimmer.js.map +0 -1
  149. package/build-backend/lib/AlexaSmartHomeV3/Controls/Gate.js.map +0 -1
  150. package/build-backend/lib/AlexaSmartHomeV3/Controls/Hue.js.map +0 -1
  151. package/build-backend/lib/AlexaSmartHomeV3/Controls/Light.js.map +0 -1
  152. package/build-backend/lib/AlexaSmartHomeV3/Controls/Lock.js.map +0 -1
  153. package/build-backend/lib/AlexaSmartHomeV3/Controls/Motion.js.map +0 -1
  154. package/build-backend/lib/AlexaSmartHomeV3/Controls/ReadOnlyDetector.js.map +0 -1
  155. package/build-backend/lib/AlexaSmartHomeV3/Controls/Socket.js.map +0 -1
  156. package/build-backend/lib/AlexaSmartHomeV3/Controls/Temperature.js.map +0 -1
  157. package/build-backend/lib/AlexaSmartHomeV3/Controls/Thermostat.js +0 -85
  158. package/build-backend/lib/AlexaSmartHomeV3/Controls/Thermostat.js.map +0 -1
  159. package/build-backend/lib/AlexaSmartHomeV3/Controls/VacuumCleaner.js.map +0 -1
  160. package/build-backend/lib/AlexaSmartHomeV3/Controls/Volume.js.map +0 -1
  161. package/build-backend/lib/AlexaSmartHomeV3/Controls/index.js.map +0 -1
  162. package/build-backend/lib/AlexaSmartHomeV3/DeviceManager.js.map +0 -1
  163. package/build-backend/lib/AlexaSmartHomeV3/Helpers/AdapterProvider.js.map +0 -1
  164. package/build-backend/lib/AlexaSmartHomeV3/Helpers/FileHelper.js.map +0 -1
  165. package/build-backend/lib/AlexaSmartHomeV3/Helpers/RateLimiter.js.map +0 -1
  166. package/build-backend/lib/AlexaSmartHomeV3/Helpers/Utils.js.map +0 -1
  167. package/build-backend/lib/alexaSmartHomeV3.js.map +0 -1
  168. package/build-backend/main.js.map +0 -1
  169. /package/{build-backend → build}/lib/AlexaSmartHomeV3/Alexa/Capabilities/index.js +0 -0
  170. /package/{build-backend → build}/lib/AlexaSmartHomeV3/Alexa/Capabilities/index.js.map +0 -0
  171. /package/{build-backend → build}/lib/AlexaSmartHomeV3/Alexa/Directives/Base.js +0 -0
  172. /package/{build-backend → build}/lib/AlexaSmartHomeV3/Alexa/Directives/Base.js.map +0 -0
  173. /package/{build-backend → build}/lib/AlexaSmartHomeV3/Alexa/Directives/ChangeReport.js +0 -0
  174. /package/{build-backend → build}/lib/AlexaSmartHomeV3/Alexa/Directives/ChangeReport.js.map +0 -0
  175. /package/{build-backend → build}/lib/AlexaSmartHomeV3/Alexa/Directives/Discovery.js +0 -0
  176. /package/{build-backend → build}/lib/AlexaSmartHomeV3/Alexa/Directives/Discovery.js.map +0 -0
  177. /package/{build-backend → build}/lib/AlexaSmartHomeV3/Alexa/Directives/ReportState.js +0 -0
  178. /package/{build-backend → build}/lib/AlexaSmartHomeV3/Alexa/Directives/ReportState.js.map +0 -0
  179. /package/{build-backend → build}/lib/AlexaSmartHomeV3/Alexa/Directives/index.js +0 -0
  180. /package/{build-backend → build}/lib/AlexaSmartHomeV3/Alexa/Directives/index.js.map +0 -0
  181. /package/{build-backend → build}/lib/AlexaSmartHomeV3/Alexa/ModeValues/Base.js +0 -0
  182. /package/{build-backend → build}/lib/AlexaSmartHomeV3/Alexa/ModeValues/Base.js.map +0 -0
  183. /package/{build-backend → build}/lib/AlexaSmartHomeV3/Alexa/ModeValues/Closed.js +0 -0
  184. /package/{build-backend → build}/lib/AlexaSmartHomeV3/Alexa/ModeValues/Closed.js.map +0 -0
  185. /package/{build-backend → build}/lib/AlexaSmartHomeV3/Alexa/ModeValues/index.js +0 -0
  186. /package/{build-backend → build}/lib/AlexaSmartHomeV3/Alexa/ModeValues/index.js.map +0 -0
  187. /package/{build-backend → build}/lib/AlexaSmartHomeV3/Alexa/Properties/AdjustableProperty.js +0 -0
  188. /package/{build-backend → build}/lib/AlexaSmartHomeV3/Alexa/Properties/AdjustableProperty.js.map +0 -0
  189. /package/{build-backend → build}/lib/AlexaSmartHomeV3/Alexa/Properties/Brightness.js +0 -0
  190. /package/{build-backend → build}/lib/AlexaSmartHomeV3/Alexa/Properties/Brightness.js.map +0 -0
  191. /package/{build-backend → build}/lib/AlexaSmartHomeV3/Alexa/Properties/ColorTemperatureInKelvin.js +0 -0
  192. /package/{build-backend → build}/lib/AlexaSmartHomeV3/Alexa/Properties/ColorTemperatureInKelvin.js.map +0 -0
  193. /package/{build-backend → build}/lib/AlexaSmartHomeV3/Alexa/Properties/Muted.js +0 -0
  194. /package/{build-backend → build}/lib/AlexaSmartHomeV3/Alexa/Properties/Muted.js.map +0 -0
  195. /package/{build-backend → build}/lib/AlexaSmartHomeV3/Alexa/Properties/Percentage.js +0 -0
  196. /package/{build-backend → build}/lib/AlexaSmartHomeV3/Alexa/Properties/Percentage.js.map +0 -0
  197. /package/{build-backend → build}/lib/AlexaSmartHomeV3/Alexa/Properties/TargetSetpoint.js +0 -0
  198. /package/{build-backend → build}/lib/AlexaSmartHomeV3/Alexa/Properties/TargetSetpoint.js.map +0 -0
  199. /package/{build-backend → build}/lib/AlexaSmartHomeV3/Alexa/Properties/Temperature.js +0 -0
  200. /package/{build-backend → build}/lib/AlexaSmartHomeV3/Alexa/Properties/Temperature.js.map +0 -0
  201. /package/{build-backend → build}/lib/AlexaSmartHomeV3/Alexa/Properties/Volume.js +0 -0
  202. /package/{build-backend → build}/lib/AlexaSmartHomeV3/Alexa/Properties/Volume.js.map +0 -0
  203. /package/{build-backend → build}/lib/AlexaSmartHomeV3/Alexa/Properties/index.js +0 -0
  204. /package/{build-backend → build}/lib/AlexaSmartHomeV3/Alexa/Properties/index.js.map +0 -0
  205. /package/{build-backend → build}/lib/AlexaSmartHomeV3/Controls/Blind.js +0 -0
  206. /package/{build-backend → build}/lib/AlexaSmartHomeV3/Controls/Blind.js.map +0 -0
  207. /package/{build-backend → build}/lib/AlexaSmartHomeV3/Controls/Door.js +0 -0
  208. /package/{build-backend → build}/lib/AlexaSmartHomeV3/Controls/Door.js.map +0 -0
  209. /package/{build-backend → build}/lib/AlexaSmartHomeV3/Controls/Slider.js +0 -0
  210. /package/{build-backend → build}/lib/AlexaSmartHomeV3/Controls/Slider.js.map +0 -0
  211. /package/{build-backend → build}/lib/AlexaSmartHomeV3/Controls/VolumeGroup.js +0 -0
  212. /package/{build-backend → build}/lib/AlexaSmartHomeV3/Controls/VolumeGroup.js.map +0 -0
  213. /package/{build-backend → build}/lib/AlexaSmartHomeV3/Controls/Window.js +0 -0
  214. /package/{build-backend → build}/lib/AlexaSmartHomeV3/Controls/Window.js.map +0 -0
  215. /package/{build-backend → build}/lib/AlexaSmartHomeV3/Device.js +0 -0
  216. /package/{build-backend → build}/lib/AlexaSmartHomeV3/Device.js.map +0 -0
  217. /package/{build-backend → build}/lib/AlexaSmartHomeV3/Exceptions/AlexaV3Exception.js +0 -0
  218. /package/{build-backend → build}/lib/AlexaSmartHomeV3/Exceptions/AlexaV3Exception.js.map +0 -0
  219. /package/{build-backend → build}/lib/AlexaSmartHomeV3/Exceptions/HourlyDeviceRateLimitExceeded.js +0 -0
  220. /package/{build-backend → build}/lib/AlexaSmartHomeV3/Exceptions/HourlyDeviceRateLimitExceeded.js.map +0 -0
  221. /package/{build-backend → build}/lib/AlexaSmartHomeV3/Exceptions/OverallDailyRateLimitExceeded.js +0 -0
  222. /package/{build-backend → build}/lib/AlexaSmartHomeV3/Exceptions/OverallDailyRateLimitExceeded.js.map +0 -0
  223. /package/{build-backend → build}/lib/AlexaSmartHomeV3/Helpers/IotProxy.js +0 -0
  224. /package/{build-backend → build}/lib/AlexaSmartHomeV3/Helpers/IotProxy.js.map +0 -0
  225. /package/{build-backend → build}/lib/AlexaSmartHomeV3/Helpers/Logger.js +0 -0
  226. /package/{build-backend → build}/lib/AlexaSmartHomeV3/Helpers/Logger.js.map +0 -0
  227. /package/{build-backend → build}/lib/Utils.js +0 -0
  228. /package/{build-backend → build}/lib/Utils.js.map +0 -0
  229. /package/{build-backend → build}/lib/adminCommonSocket.js +0 -0
  230. /package/{build-backend → build}/lib/adminCommonSocket.js.map +0 -0
  231. /package/{build-backend → build}/lib/alexaCustom.js +0 -0
  232. /package/{build-backend → build}/lib/alexaCustom.js.map +0 -0
  233. /package/{build-backend → build}/lib/alexaSmartHomeV2.js +0 -0
  234. /package/{build-backend → build}/lib/alisa.js +0 -0
  235. /package/{build-backend → build}/lib/devices.js +0 -0
  236. /package/{build-backend → build}/lib/devices.js.map +0 -0
  237. /package/{build-backend → build}/lib/functions.js +0 -0
  238. /package/{build-backend → build}/lib/functions.js.map +0 -0
  239. /package/{build-backend → build}/lib/googleHome.js +0 -0
  240. /package/{build-backend → build}/lib/notifications.js +0 -0
  241. /package/{build-backend → build}/lib/notifications.js.map +0 -0
  242. /package/{build-backend → build}/lib/remote.js +0 -0
  243. /package/{build-backend → build}/lib/remote.js.map +0 -0
  244. /package/{build-backend → build}/lib/rooms.js +0 -0
  245. /package/{build-backend → build}/lib/rooms.js.map +0 -0
  246. /package/{build-backend → build}/lib/texts.js +0 -0
  247. /package/{build-backend → build}/lib/texts.js.map +0 -0
  248. /package/{build-backend → build}/lib/translate.js +0 -0
  249. /package/{build-backend → build}/lib/translate.js.map +0 -0
  250. /package/{build-backend → build}/lib/visuApp.js +0 -0
  251. /package/{build-backend → build}/lib/visuApp.js.map +0 -0
@@ -8,13 +8,14 @@ const TargetSetpoint_1 = __importDefault(require("../Properties/TargetSetpoint")
8
8
  const Base_1 = __importDefault(require("./Base"));
9
9
  class ThermostatController extends Base_1.default {
10
10
  _thermostatMode;
11
+ constructor(modeOpts, setPointOpts) {
12
+ super();
13
+ this._thermostatMode = new ThermostatMode_1.default(modeOpts);
14
+ this._properties = [new TargetSetpoint_1.default(setPointOpts), this._thermostatMode];
15
+ }
11
16
  get version() {
12
17
  return '3.2';
13
18
  }
14
- initProperties() {
15
- this._thermostatMode = new ThermostatMode_1.default();
16
- return [new TargetSetpoint_1.default(), this._thermostatMode];
17
- }
18
19
  get thermostatMode() {
19
20
  return this._thermostatMode;
20
21
  }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ThermostatController.js","sourceRoot":"","sources":["../../../../../src/lib/AlexaSmartHomeV3/Alexa/Capabilities/ThermostatController.ts"],"names":[],"mappings":";;;;;AAAA,kFAA0D;AAC1D,kFAA0D;AAC1D,kDAA0B;AAI1B,MAAqB,oBAAqB,SAAQ,cAAI;IACjC,eAAe,CAAiB;IAEjD,YAAY,QAAgC,EAAE,YAAoC;QAC9E,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,eAAe,GAAG,IAAI,wBAAc,CAAC,QAAQ,CAAC,CAAC;QACpD,IAAI,CAAC,WAAW,GAAG,CAAC,IAAI,wBAAc,CAAC,YAAY,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;IAChF,CAAC;IAED,IAAI,OAAO;QACP,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,IAAI,cAAc;QACd,OAAO,IAAI,CAAC,eAAe,CAAC;IAChC,CAAC;IAED,IAAI,aAAa;QAsBb,OAAO;YACH,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,UAAU,EAAE,IAAI,CAAC,sBAAsB;YACvC,aAAa,EAAE,IAAI,CAAC,aAAa;SACpC,CAAC;IACN,CAAC;IAED,IAAI,aAAa;QAKb,OAAO;YACH,OAAO,EAAE,KAAK;YACd,cAAc,EAAE,IAAI,CAAC,eAAe,CAAC,cAAc;SACtD,CAAC;IACN,CAAC;CACJ;AAzDD,uCAyDC","sourcesContent":["import ThermostatMode from '../Properties/ThermostatMode';\nimport TargetSetpoint from '../Properties/TargetSetpoint';\nimport Base from './Base';\nimport type { AlexaV3ActionMapping, AlexaV3FriendlyName, AlexaV3Namespace, AlexaV3StateMapping } from '../../types';\nimport type { ControlStateInitObject } from '../Properties/Base';\n\nexport default class ThermostatController extends Base {\n private readonly _thermostatMode: ThermostatMode;\n\n constructor(modeOpts: ControlStateInitObject, setPointOpts: ControlStateInitObject) {\n super();\n this._thermostatMode = new ThermostatMode(modeOpts);\n this._properties = [new TargetSetpoint(setPointOpts), this._thermostatMode];\n }\n\n get version(): string {\n return '3.2';\n }\n\n get thermostatMode(): ThermostatMode {\n return this._thermostatMode;\n }\n\n get alexaResponse(): {\n interface: AlexaV3Namespace;\n version: string;\n instance?: string;\n properties: {\n supported: { name: string }[];\n proactivelyReported: boolean;\n retrievable: boolean;\n };\n configuration?: {\n ordered: boolean;\n supportedModes: any[];\n supportsScheduling?: boolean;\n };\n semantics?: {\n actionMappings: AlexaV3ActionMapping[];\n stateMappings: AlexaV3StateMapping[];\n };\n capabilityResources?: {\n friendlyNames: AlexaV3FriendlyName[];\n };\n } {\n return {\n interface: this.namespace,\n version: this.version,\n properties: this.discoverableProperties,\n configuration: this.configuration,\n };\n }\n\n get configuration(): {\n ordered: boolean;\n supportedModes: string[];\n supportsScheduling?: boolean;\n } {\n return {\n ordered: false,\n supportedModes: this._thermostatMode.supportedModes,\n };\n }\n}\n"]}
@@ -47,7 +47,7 @@ class Open extends Base_1.default {
47
47
  return [
48
48
  {
49
49
  '@type': 'StatesToValue',
50
- states: ['Alexa.States.Open'],
50
+ states: ['Alexa.States.Opened'],
51
51
  value: this.value,
52
52
  },
53
53
  ];
@@ -1 +1 @@
1
- {"version":3,"file":"Open.js","sourceRoot":"","sources":["../../../../../src/lib/AlexaSmartHomeV3/Alexa/ModeValues/Open.ts"],"names":[],"mappings":";;;;;AAAA,kDAA0B;AAG1B,MAAqB,IAAK,SAAQ,cAAI;IAClC,IAAI,aAAa;QACb,OAAO;YACH;gBACI,OAAO,EAAE,OAAO;gBAChB,KAAK,EAAE;oBACH,OAAO,EAAE,kBAAkB;iBAC9B;aACJ;YACD;gBACI,OAAO,EAAE,MAAM;gBACf,KAAK,EAAE;oBACH,IAAI,EAAE,QAAQ;oBACd,MAAM,EAAE,OAAO;iBAClB;aACJ;YACD;gBACI,OAAO,EAAE,MAAM;gBACf,KAAK,EAAE;oBACH,IAAI,EAAE,UAAU;oBAChB,MAAM,EAAE,OAAO;iBAClB;aACJ;SACJ,CAAC;IACN,CAAC;IAED,IAAI,cAAc;QACd,OAAO;YACH;gBACI,OAAO,EAAE,oBAAoB;gBAC7B,OAAO,EAAE,CAAC,oBAAoB,CAAC;gBAC/B,SAAS,EAAE;oBACP,IAAI,EAAE,SAAS;oBACf,OAAO,EAAE;wBACL,IAAI,EAAE,IAAI,CAAC,KAAK;qBACnB;iBACJ;aACJ;SACJ,CAAC;IACN,CAAC;IAED,IAAI,aAAa;QACb,OAAO;YACH;gBACI,OAAO,EAAE,eAAe;gBACxB,MAAM,EAAE,CAAC,mBAAmB,CAAC;gBAC7B,KAAK,EAAE,IAAI,CAAC,KAAK;aACpB;SACJ,CAAC;IACN,CAAC;CACJ;AAlDD,uBAkDC","sourcesContent":["import Base from './Base';\nimport type { AlexaV3ActionMapping, AlexaV3FriendlyName, AlexaV3StateMapping } from '../../types';\n\nexport default class Open extends Base {\n get friendlyNames(): AlexaV3FriendlyName[] {\n return [\n {\n '@type': 'asset',\n value: {\n assetId: 'Alexa.Value.Open',\n },\n },\n {\n '@type': 'text',\n value: {\n text: 'Opened',\n locale: 'en-US',\n },\n },\n {\n '@type': 'text',\n value: {\n text: 'Geöffnet',\n locale: 'de-DE',\n },\n },\n ];\n }\n\n get actionMappings(): AlexaV3ActionMapping[] {\n return [\n {\n '@type': 'ActionsToDirective',\n actions: ['Alexa.Actions.Open'],\n directive: {\n name: 'SetMode',\n payload: {\n mode: this.value,\n },\n },\n },\n ];\n }\n\n get stateMappings(): AlexaV3StateMapping[] {\n return [\n {\n '@type': 'StatesToValue',\n states: ['Alexa.States.Open'],\n value: this.value,\n },\n ];\n }\n}\n"]}
1
+ {"version":3,"file":"Open.js","sourceRoot":"","sources":["../../../../../src/lib/AlexaSmartHomeV3/Alexa/ModeValues/Open.ts"],"names":[],"mappings":";;;;;AAAA,kDAA0B;AAG1B,MAAqB,IAAK,SAAQ,cAAI;IAClC,IAAI,aAAa;QACb,OAAO;YACH;gBACI,OAAO,EAAE,OAAO;gBAChB,KAAK,EAAE;oBACH,OAAO,EAAE,kBAAkB;iBAC9B;aACJ;YACD;gBACI,OAAO,EAAE,MAAM;gBACf,KAAK,EAAE;oBACH,IAAI,EAAE,QAAQ;oBACd,MAAM,EAAE,OAAO;iBAClB;aACJ;YACD;gBACI,OAAO,EAAE,MAAM;gBACf,KAAK,EAAE;oBACH,IAAI,EAAE,UAAU;oBAChB,MAAM,EAAE,OAAO;iBAClB;aACJ;SACJ,CAAC;IACN,CAAC;IAED,IAAI,cAAc;QACd,OAAO;YACH;gBACI,OAAO,EAAE,oBAAoB;gBAC7B,OAAO,EAAE,CAAC,oBAAoB,CAAC;gBAC/B,SAAS,EAAE;oBACP,IAAI,EAAE,SAAS;oBACf,OAAO,EAAE;wBACL,IAAI,EAAE,IAAI,CAAC,KAAK;qBACnB;iBACJ;aACJ;SACJ,CAAC;IACN,CAAC;IAED,IAAI,aAAa;QACb,OAAO;YACH;gBACI,OAAO,EAAE,eAAe;gBACxB,MAAM,EAAE,CAAC,qBAAqB,CAAC;gBAC/B,KAAK,EAAE,IAAI,CAAC,KAAK;aACpB;SACJ,CAAC;IACN,CAAC;CACJ;AAlDD,uBAkDC","sourcesContent":["import Base from './Base';\nimport type { AlexaV3ActionMapping, AlexaV3FriendlyName, AlexaV3StateMapping } from '../../types';\n\nexport default class Open extends Base {\n get friendlyNames(): AlexaV3FriendlyName[] {\n return [\n {\n '@type': 'asset',\n value: {\n assetId: 'Alexa.Value.Open',\n },\n },\n {\n '@type': 'text',\n value: {\n text: 'Opened',\n locale: 'en-US',\n },\n },\n {\n '@type': 'text',\n value: {\n text: 'Geöffnet',\n locale: 'de-DE',\n },\n },\n ];\n }\n\n get actionMappings(): AlexaV3ActionMapping[] {\n return [\n {\n '@type': 'ActionsToDirective',\n actions: ['Alexa.Actions.Open'],\n directive: {\n name: 'SetMode',\n payload: {\n mode: this.value,\n },\n },\n },\n ];\n }\n\n get stateMappings(): AlexaV3StateMapping[] {\n return [\n {\n '@type': 'StatesToValue',\n states: ['Alexa.States.Opened'],\n value: this.value,\n },\n ];\n }\n}\n"]}
@@ -3,15 +3,14 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Base = void 0;
4
4
  const Utils_1 = require("../../Helpers/Utils");
5
5
  class Base {
6
- _properties = [];
7
- _setState = null;
6
+ #setState = null;
8
7
  _setId = '';
9
8
  _getId = '';
10
- _valuesRange = { min: 0, max: 100 };
11
- _currentValue;
9
+ #valuesRange = { min: 0, max: 100 };
10
+ #currentValue;
12
11
  _alexaSetter;
13
12
  _alexaGetter;
14
- _instance;
13
+ #instance;
15
14
  _supportedModesAsEnum = {};
16
15
  /**
17
16
  * @param opts The object to initialize the corresponding ioBroker state.
@@ -19,16 +18,19 @@ class Base {
19
18
  * @param opts.getState The iobroker state to read values from.
20
19
  * @param opts.alexaSetter The function to apply to an Alexa value to transform it to the iobroker's one
21
20
  * @param opts.alexaGetter The function to apply to an iobroker value to transform it to the Alexa's one
21
+ * @param ignoreStandard If the standard checks should be ignored (used for Color control)
22
22
  */
23
- init(opts) {
24
- if (!opts.setState) {
25
- throw new Error(`missing setState in ${this.constructor.name}`);
23
+ constructor(opts, ignoreStandard) {
24
+ if (!ignoreStandard) {
25
+ if (!opts.setState) {
26
+ throw new Error(`missing setState in ${this.constructor.name}`);
27
+ }
28
+ this.#setState = opts.setState;
29
+ this._setId = opts.setState.id;
30
+ this._getId = opts.getState?.id || this._setId;
31
+ this.#valuesRange = (0, Utils_1.configuredRangeOrDefault)(this.#setState);
32
+ this.#instance = opts.instance;
26
33
  }
27
- this._setState = opts.setState;
28
- this._setId = opts.setState.id;
29
- this._getId = opts.getState?.id || this._setId;
30
- this._valuesRange = (0, Utils_1.configuredRangeOrDefault)(this._setState);
31
- this._instance = opts.instance;
32
34
  if (opts.alexaSetter) {
33
35
  this._alexaSetter = opts.alexaSetter;
34
36
  }
@@ -37,7 +39,7 @@ class Base {
37
39
  }
38
40
  }
39
41
  get instance() {
40
- return this._instance;
42
+ return this.#instance;
41
43
  }
42
44
  get propertyName() {
43
45
  return (0, Utils_1.firstLower)(`${this.constructor.name}`);
@@ -46,10 +48,10 @@ class Base {
46
48
  return (0, Utils_1.firstLower)((0, Utils_1.className)(this.toString()));
47
49
  }
48
50
  get valuesRangeMin() {
49
- return this._valuesRange.min;
51
+ return this.#valuesRange.min;
50
52
  }
51
53
  get valuesRangeMax() {
52
- return this._valuesRange.max;
54
+ return this.#valuesRange.max;
53
55
  }
54
56
  get setId() {
55
57
  return this._setId;
@@ -61,10 +63,10 @@ class Base {
61
63
  * returns last known iobroker value
62
64
  */
63
65
  get currentValue() {
64
- return this._currentValue;
66
+ return this.#currentValue;
65
67
  }
66
68
  set currentValue(value) {
67
- this._currentValue = value;
69
+ this.#currentValue = value;
68
70
  }
69
71
  value(alexaValue) {
70
72
  return this._alexaSetter && typeof alexaValue === 'number'
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Base.js","sourceRoot":"","sources":["../../../../../src/lib/AlexaSmartHomeV3/Alexa/Properties/Base.ts"],"names":[],"mappings":"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","sourcesContent":["import { configuredRangeOrDefault, firstLower, className } from '../../Helpers/Utils';\nimport type {\n AlexaV3DirectiveName,\n AlexaV3DirectiveValue,\n AlexaV3Request,\n IotExternalDetectorState,\n} from '../../types';\n\nexport type ControlStateInitObject = {\n setState?: IotExternalDetectorState;\n getState?: IotExternalDetectorState;\n alexaSetter?: (alexaValue: AlexaV3DirectiveValue) => ioBroker.StateValue | undefined;\n alexaGetter?: (value: ioBroker.StateValue | undefined) => AlexaV3DirectiveValue;\n\n // Extra for Color control\n hal?: {\n hue: string;\n saturation?: string;\n brightness?: string;\n };\n\n // Extra for Mode control\n supportedModes?: any[];\n instance?: string;\n};\n\nexport class Base {\n #setState: IotExternalDetectorState | null = null;\n protected _setId: string = '';\n protected _getId: string = '';\n #valuesRange: { min: number | boolean; max: number | boolean } = { min: 0, max: 100 };\n #currentValue: ioBroker.StateValue | undefined;\n protected _alexaSetter?: (value: AlexaV3DirectiveValue) => ioBroker.StateValue | undefined;\n protected _alexaGetter?: (value: ioBroker.StateValue | undefined) => AlexaV3DirectiveValue;\n #instance?: string;\n protected _supportedModesAsEnum: Record<string, number | string> = {};\n\n /**\n * @param opts The object to initialize the corresponding ioBroker state.\n * @param opts.setState The iobroker state to write values to.\n * @param opts.getState The iobroker state to read values from.\n * @param opts.alexaSetter The function to apply to an Alexa value to transform it to the iobroker's one\n * @param opts.alexaGetter The function to apply to an iobroker value to transform it to the Alexa's one\n * @param ignoreStandard If the standard checks should be ignored (used for Color control)\n */\n constructor(opts: ControlStateInitObject, ignoreStandard?: boolean) {\n if (!ignoreStandard) {\n if (!opts.setState) {\n throw new Error(`missing setState in ${this.constructor.name}`);\n }\n this.#setState = opts.setState;\n this._setId = opts.setState.id;\n this._getId = opts.getState?.id || this._setId;\n this.#valuesRange = configuredRangeOrDefault(this.#setState);\n this.#instance = opts.instance;\n }\n\n if (opts.alexaSetter) {\n this._alexaSetter = opts.alexaSetter;\n }\n if (opts.alexaGetter) {\n this._alexaGetter = opts.alexaGetter;\n }\n }\n\n get instance(): string | undefined {\n return this.#instance;\n }\n\n get propertyName(): string {\n return firstLower(`${this.constructor.name}`);\n }\n\n static get propertyName(): string {\n return firstLower(className(this.toString()));\n }\n\n get valuesRangeMin(): number | boolean {\n return this.#valuesRange.min;\n }\n\n get valuesRangeMax(): number | boolean {\n return this.#valuesRange.max;\n }\n\n get setId(): string {\n return this._setId;\n }\n\n get getId(): string {\n return this._getId;\n }\n /**\n * returns last known iobroker value\n */\n get currentValue(): ioBroker.StateValue | undefined {\n return this.#currentValue;\n }\n\n set currentValue(value: ioBroker.StateValue | undefined) {\n this.#currentValue = value;\n }\n\n value(alexaValue: AlexaV3DirectiveValue): ioBroker.StateValue | undefined {\n return this._alexaSetter && typeof alexaValue === 'number'\n ? this._alexaSetter(alexaValue)\n : (alexaValue as ioBroker.StateValue | undefined);\n }\n\n alexaValue(value: ioBroker.StateValue | undefined): AlexaV3DirectiveValue {\n return this._alexaGetter && typeof value === 'number'\n ? this._alexaGetter(value)\n : (value as AlexaV3DirectiveValue);\n }\n\n static directive(_event: AlexaV3Request): AlexaV3DirectiveName {\n return Base.SET;\n }\n\n /**\n * Checks whether a directive refers to the property\n *\n * @param event Contains the Alexa event.\n */\n static matches(event: AlexaV3Request): boolean {\n return event?.directive?.header?.namespace === `Alexa.${className(this.toString())}Controller`;\n }\n\n matches(event: AlexaV3Request): boolean {\n return event?.directive?.header?.name === this.propertyName;\n }\n\n /**\n * Extracts value to be set on the smart device sent in an Alexa directive\n */\n alexaDirectiveValue(event: AlexaV3Request): AlexaV3DirectiveValue {\n if (this.propertyName === 'color') {\n return event.directive.payload.color;\n }\n if (this.propertyName === 'colorTemperatureInKelvin') {\n return event.directive.payload.colorTemperatureInKelvin;\n }\n if (this.propertyName === 'brightness') {\n return event.directive.payload.brightness;\n }\n // @ts-expect-error fix later\n return event.directive.payload[this.propertyName];\n }\n\n reportValue(value: AlexaV3DirectiveValue): any {\n return value;\n }\n\n static get ADJUST(): AlexaV3DirectiveName {\n return 'ADJUST';\n }\n\n static get SET(): AlexaV3DirectiveName {\n return 'SET';\n }\n\n static get CELSIUS_SCALE(): AlexaV3DirectiveName {\n return 'CELSIUS';\n }\n\n get supportedModesAsEnum(): Record<string, number | string> {\n return this._supportedModesAsEnum;\n }\n}\n\nexport default Base;\n"]}
@@ -10,19 +10,14 @@ class Color extends Base_1.default {
10
10
  saturation: '',
11
11
  brightness: '',
12
12
  };
13
- init(opts) {
13
+ constructor(opts) {
14
+ super(opts, true);
14
15
  if (!opts.hal) {
15
16
  throw new Error('Color control requires hal object with hue, saturation, and brightness properties');
16
17
  }
17
18
  this.hal = opts.hal;
18
19
  this._setId = opts.hal.hue;
19
20
  this._getId = opts.hal.hue;
20
- if (opts.alexaSetter) {
21
- this._alexaSetter = opts.alexaSetter;
22
- }
23
- if (opts.alexaGetter) {
24
- this._alexaGetter = opts.alexaGetter;
25
- }
26
21
  }
27
22
  matches(event) {
28
23
  return Color.matches(event) && event?.directive?.header?.name === 'SetColor';
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Color.js","sourceRoot":"","sources":["../../../../../src/lib/AlexaSmartHomeV3/Alexa/Properties/Color.ts"],"names":[],"mappings":";;;;;AAAA,kDAA2D;AAG3D,MAAqB,KAAM,SAAQ,cAAI;IAC3B,IAAI,GAIR;QACA,GAAG,EAAE,EAAE;QACP,UAAU,EAAE,EAAE;QACd,UAAU,EAAE,EAAE;KACjB,CAAC;IAEF,YAAY,IAA4B;QACpC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAClB,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,mFAAmF,CAAC,CAAC;QACzG,CAAC;QACD,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;QACpB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;QAC3B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;IAC/B,CAAC;IAED,OAAO,CAAC,KAAqB;QACzB,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,KAAK,UAAU,CAAC;IACjF,CAAC;IAED,IAAI,GAAG,CAAC,KAAgE;QACpE,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;IACtB,CAAC;IAED,IAAI,GAAG;QAKH,OAAO,IAAI,CAAC,IAAI,CAAC;IACrB,CAAC;CACJ;AApCD,wBAoCC","sourcesContent":["import Base, { type ControlStateInitObject } from './Base';\nimport type { AlexaV3Request } from '../../types';\n\nexport default class Color extends Base {\n private _hal: {\n hue: string;\n saturation?: string;\n brightness?: string;\n } = {\n hue: '',\n saturation: '',\n brightness: '',\n };\n\n constructor(opts: ControlStateInitObject) {\n super(opts, true);\n if (!opts.hal) {\n throw new Error('Color control requires hal object with hue, saturation, and brightness properties');\n }\n this.hal = opts.hal;\n this._setId = opts.hal.hue;\n this._getId = opts.hal.hue;\n }\n\n matches(event: AlexaV3Request): boolean {\n return Color.matches(event) && event?.directive?.header?.name === 'SetColor';\n }\n\n set hal(value: { hue: string; saturation?: string; brightness?: string }) {\n this._hal = value;\n }\n\n get hal(): {\n hue: string;\n saturation?: string;\n brightness?: string;\n } {\n return this._hal;\n }\n}\n"]}
@@ -5,6 +5,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  const Base_1 = __importDefault(require("./Base"));
7
7
  class DetectionState extends Base_1.default {
8
+ constructor(opts) {
9
+ super(opts);
10
+ }
8
11
  static matches(event) {
9
12
  return (event?.directive?.header?.namespace === 'Alexa.MotionSensor' ||
10
13
  event?.directive?.header?.namespace === 'Alexa.ContactSensor');
@@ -18,6 +21,12 @@ class DetectionState extends Base_1.default {
18
21
  static get NOT_DETECTED() {
19
22
  return 'NOT_DETECTED';
20
23
  }
24
+ alexaValue(value) {
25
+ return value ? DetectionState.DETECTED : DetectionState.NOT_DETECTED;
26
+ }
27
+ value(alexaValue) {
28
+ return alexaValue === DetectionState.DETECTED;
29
+ }
21
30
  }
22
31
  exports.default = DetectionState;
23
32
  //# sourceMappingURL=DetectionState.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DetectionState.js","sourceRoot":"","sources":["../../../../../src/lib/AlexaSmartHomeV3/Alexa/Properties/DetectionState.ts"],"names":[],"mappings":";;;;;AAAA,kDAA2D;AAG3D,MAAqB,cAAe,SAAQ,cAAI;IAC5C,YAAY,IAA4B;QACpC,KAAK,CAAC,IAAI,CAAC,CAAC;IAChB,CAAC;IAED,MAAM,CAAC,OAAO,CAAC,KAAqB;QAChC,OAAO,CACH,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,KAAK,oBAAoB;YAC5D,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,KAAK,qBAAqB,CAChE,CAAC;IACN,CAAC;IAED,OAAO,CAAC,KAAqB;QACzB,OAAO,cAAc,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACzC,CAAC;IAED,MAAM,KAAK,QAAQ;QACf,OAAO,UAAU,CAAC;IACtB,CAAC;IAED,MAAM,KAAK,YAAY;QACnB,OAAO,cAAc,CAAC;IAC1B,CAAC;IAED,UAAU,CAAC,KAAsC;QAC7C,OAAO,KAAK,CAAC,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,YAAY,CAAC;IACzE,CAAC;IAED,KAAK,CAAC,UAAiC;QACnC,OAAO,UAAU,KAAK,cAAc,CAAC,QAAQ,CAAC;IAClD,CAAC;CACJ;AA/BD,iCA+BC","sourcesContent":["import Base, { type ControlStateInitObject } from './Base';\nimport type { AlexaV3DirectiveName, AlexaV3DirectiveValue, AlexaV3Request } from '../../types';\n\nexport default class DetectionState extends Base {\n constructor(opts: ControlStateInitObject) {\n super(opts);\n }\n\n static matches(event: AlexaV3Request): boolean {\n return (\n event?.directive?.header?.namespace === 'Alexa.MotionSensor' ||\n event?.directive?.header?.namespace === 'Alexa.ContactSensor'\n );\n }\n\n matches(event: AlexaV3Request): boolean {\n return DetectionState.matches(event);\n }\n\n static get DETECTED(): AlexaV3DirectiveName {\n return 'DETECTED';\n }\n\n static get NOT_DETECTED(): AlexaV3DirectiveName {\n return 'NOT_DETECTED';\n }\n\n alexaValue(value: ioBroker.StateValue | undefined): AlexaV3DirectiveValue {\n return value ? DetectionState.DETECTED : DetectionState.NOT_DETECTED;\n }\n\n value(alexaValue: AlexaV3DirectiveValue): ioBroker.StateValue | undefined {\n return alexaValue === DetectionState.DETECTED;\n }\n}\n"]}
@@ -32,6 +32,26 @@ class LockState extends Base_1.default {
32
32
  static get JAMMED() {
33
33
  return 'JAMMED';
34
34
  }
35
+ alexaValue(value) {
36
+ // Lock could be true (locked) or false (unlocked)
37
+ // ot 1 (locked) or 0 (unlocked)
38
+ if (value === true || value === 1) {
39
+ return LockState.LOCKED;
40
+ }
41
+ if (value === false || value === 0) {
42
+ return LockState.UNLOCKED;
43
+ }
44
+ return LockState.JAMMED;
45
+ }
46
+ value(alexaValue) {
47
+ if (alexaValue === LockState.LOCKED || alexaValue === LockState.LOCK) {
48
+ return true;
49
+ }
50
+ if (alexaValue === LockState.UNLOCKED || alexaValue === LockState.UNLOCK) {
51
+ return false;
52
+ }
53
+ return undefined;
54
+ }
35
55
  }
36
56
  exports.default = LockState;
37
57
  //# sourceMappingURL=LockState.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LockState.js","sourceRoot":"","sources":["../../../../../src/lib/AlexaSmartHomeV3/Alexa/Properties/LockState.ts"],"names":[],"mappings":";;;;;AAAA,kDAA0B;AAG1B,MAAqB,SAAU,SAAQ,cAAI;IACvC,MAAM,CAAC,OAAO,CAAC,KAAqB;QAChC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,KAAK,sBAAsB,CAAC;IAC1E,CAAC;IAED,OAAO,CAAC,KAAqB;QACzB,OAAO,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC;IAED,mBAAmB,CAAC,KAAqB;QACrC,OAAO,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,IAAyB,CAAC;IAC5D,CAAC;IAED,MAAM,KAAK,IAAI;QACX,OAAO,MAAM,CAAC;IAClB,CAAC;IAED,MAAM,KAAK,MAAM;QACb,OAAO,QAAQ,CAAC;IACpB,CAAC;IAED,MAAM,KAAK,MAAM;QACb,OAAO,QAAQ,CAAC;IACpB,CAAC;IAED,MAAM,KAAK,QAAQ;QACf,OAAO,UAAU,CAAC;IACtB,CAAC;IAED;;OAEG;IACH,MAAM,KAAK,MAAM;QACb,OAAO,QAAQ,CAAC;IACpB,CAAC;IAED,UAAU,CAAC,KAAsC;QAC7C,kDAAkD;QAClD,gCAAgC;QAChC,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;YAChC,OAAO,SAAS,CAAC,MAAM,CAAC;QAC5B,CAAC;QACD,IAAI,KAAK,KAAK,KAAK,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;YACjC,OAAO,SAAS,CAAC,QAAQ,CAAC;QAC9B,CAAC;QACD,OAAO,SAAS,CAAC,MAAM,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,UAAiC;QACnC,IAAI,UAAU,KAAK,SAAS,CAAC,MAAM,IAAI,UAAU,KAAK,SAAS,CAAC,IAAI,EAAE,CAAC;YACnE,OAAO,IAAI,CAAC;QAChB,CAAC;QACD,IAAI,UAAU,KAAK,SAAS,CAAC,QAAQ,IAAI,UAAU,KAAK,SAAS,CAAC,MAAM,EAAE,CAAC;YACvE,OAAO,KAAK,CAAC;QACjB,CAAC;QACD,OAAO,SAAS,CAAC;IACrB,CAAC;CACJ;AAzDD,4BAyDC","sourcesContent":["import Base from './Base';\nimport type { AlexaV3DirectiveName, AlexaV3DirectiveValue, AlexaV3Request } from '../../types';\n\nexport default class LockState extends Base {\n static matches(event: AlexaV3Request): boolean {\n return event?.directive?.header?.namespace === 'Alexa.LockController';\n }\n\n matches(event: AlexaV3Request): boolean {\n return LockState.matches(event);\n }\n\n alexaDirectiveValue(event: AlexaV3Request): AlexaV3DirectiveValue {\n return event.directive.header.name as 'Lock' | 'Unlock';\n }\n\n static get LOCK(): string {\n return 'Lock';\n }\n\n static get LOCKED(): AlexaV3DirectiveName {\n return 'LOCKED';\n }\n\n static get UNLOCK(): string {\n return 'Unlock';\n }\n\n static get UNLOCKED(): AlexaV3DirectiveName {\n return 'UNLOCKED';\n }\n\n /**\n * The lock can't transition to `locked` or `unlocked` because the locking mechanism is jammed.\n */\n static get JAMMED(): AlexaV3DirectiveName {\n return 'JAMMED';\n }\n\n alexaValue(value: ioBroker.StateValue | undefined): AlexaV3DirectiveValue {\n // Lock could be true (locked) or false (unlocked)\n // ot 1 (locked) or 0 (unlocked)\n if (value === true || value === 1) {\n return LockState.LOCKED;\n }\n if (value === false || value === 0) {\n return LockState.UNLOCKED;\n }\n return LockState.JAMMED;\n }\n\n value(alexaValue: AlexaV3DirectiveValue): ioBroker.StateValue | undefined {\n if (alexaValue === LockState.LOCKED || alexaValue === LockState.LOCK) {\n return true;\n }\n if (alexaValue === LockState.UNLOCKED || alexaValue === LockState.UNLOCK) {\n return false;\n }\n return undefined;\n }\n}\n"]}
@@ -5,9 +5,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  const Base_1 = __importDefault(require("./Base"));
7
7
  class Mode extends Base_1.default {
8
- _supportedModes = [];
9
- init(opts) {
10
- super.init(opts);
8
+ _supportedModes;
9
+ constructor(opts) {
10
+ super(opts);
11
11
  if (!opts.supportedModes || !Array.isArray(opts.supportedModes) || opts.supportedModes.length === 0) {
12
12
  throw new Error('Mode control requires supportedModes array with at least one mode');
13
13
  }
@@ -26,6 +26,20 @@ class Mode extends Base_1.default {
26
26
  alexaDirectiveValue(event) {
27
27
  return event.directive.payload.mode;
28
28
  }
29
+ alexaValue(value) {
30
+ if ((typeof value === 'string' || typeof value === 'number') &&
31
+ this.supportedModes[parseInt(value, 10)]) {
32
+ return this.supportedModes[parseInt(value, 10)].value;
33
+ }
34
+ return this.supportedModes[0].value;
35
+ }
36
+ value(alexaValue) {
37
+ const pos = this.supportedModes.findIndex(mode => mode.value === alexaValue);
38
+ if (pos !== -1) {
39
+ return pos;
40
+ }
41
+ return undefined;
42
+ }
29
43
  get supportedModes() {
30
44
  return this._supportedModes;
31
45
  }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Mode.js","sourceRoot":"","sources":["../../../../../src/lib/AlexaSmartHomeV3/Alexa/Properties/Mode.ts"],"names":[],"mappings":";;;;;AAAA,kDAA2D;AAS3D,MAAqB,IAAK,SAAQ,cAAI;IACjB,eAAe,CAK5B;IAEJ,YAAY,IAA4B;QACpC,KAAK,CAAC,IAAI,CAAC,CAAC;QACZ,IAAI,CAAC,IAAI,CAAC,cAAc,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAClG,MAAM,IAAI,KAAK,CAAC,mEAAmE,CAAC,CAAC;QACzF,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,OAAO,IAAI,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;YACtD,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;QACrE,CAAC;QACD,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,cAAc,CAAC;IAC/C,CAAC;IAED,OAAO,CAAC,KAAqB;QACzB,OAAO,CACH,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;YACnB,iCAAiC;YACjC,SAAS,KAAK,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI;YAC5C,IAAI,CAAC,QAAQ,KAAK,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ;YACpD,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC,CAC9F,CAAC;IACN,CAAC;IAED,mBAAmB,CAAC,KAAqB;QACrC,OAAO,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC;IACxC,CAAC;IAED,UAAU,CAAC,KAAsC;QAC7C,IACI,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC;YACxD,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,KAAe,EAAE,EAAE,CAAC,CAAC,EACpD,CAAC;YACC,OAAO,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,KAAe,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;QACpE,CAAC;QACD,OAAO,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IACxC,CAAC;IAED,KAAK,CAAC,UAAiC;QACnC,MAAM,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,KAAK,UAAU,CAAC,CAAC;QAC7E,IAAI,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC;YACb,OAAO,GAAG,CAAC;QACf,CAAC;QACD,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,IAAI,cAAc;QAMd,OAAO,IAAI,CAAC,eAAe,CAAC;IAChC,CAAC;CACJ;AA3DD,uBA2DC","sourcesContent":["import Base, { type ControlStateInitObject } from './Base';\nimport type {\n AlexaV3ActionMapping,\n AlexaV3DirectiveValue,\n AlexaV3DiscoveryResponse,\n AlexaV3Request,\n AlexaV3StateMapping,\n} from '../../types';\n\nexport default class Mode extends Base {\n private readonly _supportedModes: {\n value: string;\n actionMappings: AlexaV3ActionMapping[];\n discoveryResponse: AlexaV3DiscoveryResponse[];\n stateMappings: AlexaV3StateMapping[];\n }[];\n\n constructor(opts: ControlStateInitObject) {\n super(opts);\n if (!opts.supportedModes || !Array.isArray(opts.supportedModes) || opts.supportedModes.length === 0) {\n throw new Error('Mode control requires supportedModes array with at least one mode');\n }\n if (!opts.instance || typeof opts.instance !== 'string') {\n throw new Error('Mode control requires a valid instance string');\n }\n this._supportedModes = opts.supportedModes;\n }\n\n matches(event: AlexaV3Request): boolean {\n return (\n Mode.matches(event) &&\n // non-adjustable mode controller\n 'SetMode' === event?.directive?.header?.name &&\n this.instance === event?.directive?.header?.instance &&\n this.supportedModes.map(mode => mode.value).includes(event?.directive?.payload?.mode || '')\n );\n }\n\n alexaDirectiveValue(event: AlexaV3Request): AlexaV3DirectiveValue {\n return event.directive.payload.mode;\n }\n\n alexaValue(value: ioBroker.StateValue | undefined): AlexaV3DirectiveValue {\n if (\n (typeof value === 'string' || typeof value === 'number') &&\n this.supportedModes[parseInt(value as string, 10)]\n ) {\n return this.supportedModes[parseInt(value as string, 10)].value;\n }\n return this.supportedModes[0].value;\n }\n\n value(alexaValue: AlexaV3DirectiveValue): ioBroker.StateValue | undefined {\n const pos = this.supportedModes.findIndex(mode => mode.value === alexaValue);\n if (pos !== -1) {\n return pos;\n }\n return undefined;\n }\n\n get supportedModes(): {\n value: string;\n actionMappings: AlexaV3ActionMapping[];\n discoveryResponse: AlexaV3DiscoveryResponse[];\n stateMappings: AlexaV3StateMapping[];\n }[] {\n return this._supportedModes;\n }\n}\n"]}
@@ -20,6 +20,12 @@ class PowerState extends Base_1.default {
20
20
  alexaDirectiveValue(event) {
21
21
  return event.directive.header.name === 'TurnOn' ? PowerState.ON : PowerState.OFF;
22
22
  }
23
+ alexaValue(value) {
24
+ return value === true ? PowerState.ON : value === false ? PowerState.OFF : undefined;
25
+ }
26
+ value(alexaValue) {
27
+ return alexaValue === PowerState.ON ? true : alexaValue === PowerState.OFF ? false : undefined;
28
+ }
23
29
  }
24
30
  exports.default = PowerState;
25
31
  //# sourceMappingURL=PowerState.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PowerState.js","sourceRoot":"","sources":["../../../../../src/lib/AlexaSmartHomeV3/Alexa/Properties/PowerState.ts"],"names":[],"mappings":";;;;;AAAA,kDAA0B;AAG1B,MAAqB,UAAW,SAAQ,cAAI;IACxC,MAAM,CAAC,OAAO,CAAC,KAAqB;QAChC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,KAAK,uBAAuB,CAAC;IAC3E,CAAC;IAED,OAAO,CAAC,KAAqB;QACzB,OAAO,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACrC,CAAC;IAED,MAAM,KAAK,EAAE;QACT,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,MAAM,KAAK,GAAG;QACV,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,mBAAmB,CAAC,KAAqB;QACrC,OAAO,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC;IACrF,CAAC;IAED,UAAU,CAAC,KAAsC;QAC7C,OAAO,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;IACzF,CAAC;IAED,KAAK,CAAC,UAAiC;QACnC,OAAO,UAAU,KAAK,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,KAAK,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;IACnG,CAAC;CACJ;AA5BD,6BA4BC","sourcesContent":["import Base from './Base';\nimport type { AlexaV3DirectiveName, AlexaV3DirectiveValue, AlexaV3Request } from '../../types';\n\nexport default class PowerState extends Base {\n static matches(event: AlexaV3Request): boolean {\n return event?.directive?.header?.namespace === 'Alexa.PowerController';\n }\n\n matches(event: AlexaV3Request): boolean {\n return PowerState.matches(event);\n }\n\n static get ON(): AlexaV3DirectiveName {\n return 'ON';\n }\n\n static get OFF(): AlexaV3DirectiveName {\n return 'OFF';\n }\n\n alexaDirectiveValue(event: AlexaV3Request): AlexaV3DirectiveValue {\n return event.directive.header.name === 'TurnOn' ? PowerState.ON : PowerState.OFF;\n }\n\n alexaValue(value: ioBroker.StateValue | undefined): AlexaV3DirectiveValue {\n return value === true ? PowerState.ON : value === false ? PowerState.OFF : undefined;\n }\n\n value(alexaValue: AlexaV3DirectiveValue): ioBroker.StateValue | undefined {\n return alexaValue === PowerState.ON ? true : alexaValue === PowerState.OFF ? false : undefined;\n }\n}\n"]}
@@ -6,9 +6,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  const Utils_1 = require("../../Helpers/Utils");
7
7
  const Base_1 = __importDefault(require("./Base"));
8
8
  class ThermostatMode extends Base_1.default {
9
- _supportedModes = [];
10
- init(opts) {
11
- super.init(opts);
9
+ _supportedModes;
10
+ constructor(opts) {
11
+ super(opts);
12
12
  if (!opts.supportedModes || !Array.isArray(opts.supportedModes) || opts.supportedModes.length === 0) {
13
13
  throw new Error('ThermostatMode control requires supportedModes array with at least one mode');
14
14
  }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ThermostatMode.js","sourceRoot":"","sources":["../../../../../src/lib/AlexaSmartHomeV3/Alexa/Properties/ThermostatMode.ts"],"names":[],"mappings":";;;;;AAEA,+CAA6C;AAC7C,kDAA2D;AAE3D,MAAqB,cAAe,SAAQ,cAAI;IAC3B,eAAe,CAAW;IAE3C,YAAY,IAA4B;QACpC,KAAK,CAAC,IAAI,CAAC,CAAC;QACZ,IAAI,CAAC,IAAI,CAAC,cAAc,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAClG,MAAM,IAAI,KAAK,CAAC,6EAA6E,CAAC,CAAC;QACnG,CAAC;QACD,0DAA0D;QAC1D,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC;QACjE,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,cAA0B,CAAC;QACvD,IAAI,CAAC,qBAAqB,GAAG,IAAA,cAAM,EAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IAC9D,CAAC;IAED,MAAM,CAAC,OAAO,CAAC,KAAqB;QAChC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,KAAK,mBAAmB,CAAC;IAClE,CAAC;IAED,OAAO,CAAC,KAAqB;QACzB,OAAO,cAAc,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACzC,CAAC;IAED,mBAAmB,CAAC,KAAqB;QACrC,OAAO,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,cAAc,EAAE,KAAK,CAAC;IACzD,CAAC;IAED,IAAI,cAAc;QACd,OAAO,IAAI,CAAC,eAAe,CAAC;IAChC,CAAC;IAED,MAAM,KAAK,IAAI;QACX,OAAO,MAAM,CAAC;IAClB,CAAC;IACD,MAAM,KAAK,IAAI;QACX,OAAO,MAAM,CAAC;IAClB,CAAC;IACD,MAAM,KAAK,GAAG;QACV,OAAO,KAAK,CAAC;IACjB,CAAC;IACD,MAAM,KAAK,IAAI;QACX,OAAO,MAAM,CAAC;IAClB,CAAC;IACD,MAAM,KAAK,GAAG;QACV,OAAO,KAAK,CAAC;IACjB,CAAC;CACJ;AA7CD,iCA6CC","sourcesContent":["import type { AlexaV3DirectiveValue, AlexaV3Request } from '../../types';\n\nimport { asEnum } from '../../Helpers/Utils';\nimport Base, { type ControlStateInitObject } from './Base';\n\nexport default class ThermostatMode extends Base {\n private readonly _supportedModes: string[];\n\n constructor(opts: ControlStateInitObject) {\n super(opts);\n if (!opts.supportedModes || !Array.isArray(opts.supportedModes) || opts.supportedModes.length === 0) {\n throw new Error('ThermostatMode control requires supportedModes array with at least one mode');\n }\n // set mode to be AUTO for thermostats without mode at all\n this.currentValue = this.setId ? undefined : ThermostatMode.AUTO;\n this._supportedModes = opts.supportedModes as string[];\n this._supportedModesAsEnum = asEnum(this._supportedModes);\n }\n\n static matches(event: AlexaV3Request): boolean {\n return event?.directive?.header?.name === 'SetThermostatMode';\n }\n\n matches(event: AlexaV3Request): boolean {\n return ThermostatMode.matches(event);\n }\n\n alexaDirectiveValue(event: AlexaV3Request): AlexaV3DirectiveValue {\n return event.directive.payload.thermostatMode?.value;\n }\n\n get supportedModes(): any[] {\n return this._supportedModes;\n }\n\n static get AUTO(): string {\n return 'AUTO';\n }\n static get COOL(): string {\n return 'COOL';\n }\n static get ECO(): string {\n return 'ECO';\n }\n static get HEAT(): string {\n return 'HEAT';\n }\n static get OFF(): string {\n return 'OFF';\n }\n}\n"]}
@@ -6,9 +6,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  const Control_1 = __importDefault(require("./Control"));
7
7
  const Base_1 = require("../Alexa/Properties/Base");
8
8
  class AdjustableControl extends Control_1.default {
9
- adjustableProperties() {
10
- return [];
11
- }
12
9
  isAdjustDirective(event) {
13
10
  return this.adjustableProperties().some(property => property.matches(event) && property.directive(event) === Base_1.Base.ADJUST);
14
11
  }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AdjustableControl.js","sourceRoot":"","sources":["../../../../src/lib/AlexaSmartHomeV3/Controls/AdjustableControl.ts"],"names":[],"mappings":";;;;;AAAA,wDAAgC;AAChC,mDAAkE;AAGlE,MAA8B,iBAAkB,SAAQ,iBAAO;IAG3D,iBAAiB,CAAC,KAAqB;QACnC,OAAO,IAAI,CAAC,oBAAoB,EAAE,CAAC,IAAI,CACnC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,WAAc,CAAC,MAAM,CAC7F,CAAC;IACN,CAAC;IAED,WAAW,CACP,KAAqB;QAErB,OAAO,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;IAClG,CAAC;CACJ;AAdD,oCAcC","sourcesContent":["import Control from './Control';\nimport { Base as PropertiesBase } from '../Alexa/Properties/Base';\nimport type { AlexaV3DirectiveValue, AlexaV3Request } from '../types';\n\nexport default abstract class AdjustableControl extends Control {\n abstract adjustableProperties(): (typeof PropertiesBase)[];\n\n isAdjustDirective(event: AlexaV3Request): boolean {\n return this.adjustableProperties().some(\n property => property.matches(event) && property.directive(event) === PropertiesBase.ADJUST,\n );\n }\n\n valueSetter(\n event: AlexaV3Request,\n ): (event: AlexaV3Request, property: PropertiesBase) => Promise<AlexaV3DirectiveValue> {\n return this.isAdjustDirective(event) ? this.adjustValue.bind(this) : super.valueSetter(event);\n }\n}\n"]}
@@ -7,16 +7,14 @@ const Capabilities_1 = __importDefault(require("../Alexa/Capabilities"));
7
7
  const AdjustableControl_1 = __importDefault(require("./AdjustableControl"));
8
8
  const Percentage_1 = __importDefault(require("../Alexa/Properties/Percentage"));
9
9
  class AdjustablePercentageControl extends AdjustableControl_1.default {
10
+ constructor(detectedControl) {
11
+ super(detectedControl);
12
+ const percentageController = new Capabilities_1.default.PercentageController(this.percentageInitObject());
13
+ this._supported = [percentageController];
14
+ }
10
15
  adjustableProperties() {
11
16
  return [Percentage_1.default];
12
17
  }
13
- initCapabilities() {
14
- const result = [new Capabilities_1.default.PercentageController()];
15
- for (const property of result.flatMap(item => item.properties)) {
16
- property.init(this.percentageInitObject());
17
- }
18
- return result;
19
- }
20
18
  async setState(property, value) {
21
19
  // todo: byON
22
20
  return super.setState(property, value);
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AdjustablePercentageControl.js","sourceRoot":"","sources":["../../../../src/lib/AlexaSmartHomeV3/Controls/AdjustablePercentageControl.ts"],"names":[],"mappings":";;;;;AAAA,yEAAiD;AACjD,4EAAoD;AACpD,gFAAwD;AAIxD,MAAqB,2BAA4B,SAAQ,2BAAiB;IACtE,YAAY,eAA0C;QAClD,KAAK,CAAC,eAAe,CAAC,CAAC;QACvB,MAAM,oBAAoB,GAAG,IAAI,sBAAY,CAAC,oBAAoB,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC,CAAC;QAChG,IAAI,CAAC,UAAU,GAAG,CAAC,oBAAoB,CAAC,CAAC;IAC7C,CAAC;IAED,oBAAoB;QAChB,OAAO,CAAC,oBAAU,CAAC,CAAC;IACxB,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,QAAwB,EAAE,KAA0B;QAC/D,aAAa;QACb,OAAO,KAAK,CAAC,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IAC3C,CAAC;CACJ;AAfD,8CAeC","sourcesContent":["import Capabilities from '../Alexa/Capabilities';\nimport AdjustableControl from './AdjustableControl';\nimport Percentage from '../Alexa/Properties/Percentage';\nimport type { Base as PropertiesBase } from '../Alexa/Properties/Base';\nimport { type IotExternalPatternControl } from '../types';\n\nexport default class AdjustablePercentageControl extends AdjustableControl {\n constructor(detectedControl: IotExternalPatternControl) {\n super(detectedControl);\n const percentageController = new Capabilities.PercentageController(this.percentageInitObject());\n this._supported = [percentageController];\n }\n\n adjustableProperties(): (typeof PropertiesBase)[] {\n return [Percentage];\n }\n\n async setState(property: PropertiesBase, value: ioBroker.StateValue): Promise<void> {\n // todo: byON\n return super.setState(property, value);\n }\n}\n"]}
@@ -7,7 +7,6 @@ const ThermostatController_1 = __importDefault(require("../Alexa/Capabilities/Th
7
7
  const ThermostatMode_1 = __importDefault(require("../Alexa/Properties/ThermostatMode"));
8
8
  const PowerController_1 = __importDefault(require("../Alexa/Capabilities/PowerController"));
9
9
  const TemperatureSensor_1 = __importDefault(require("../Alexa/Capabilities/TemperatureSensor"));
10
- const Temperature_1 = __importDefault(require("../Alexa/Properties/Temperature"));
11
10
  const PowerState_1 = __importDefault(require("../Alexa/Properties/PowerState"));
12
11
  const AdjustableControl_1 = __importDefault(require("./AdjustableControl"));
13
12
  const Utils_1 = require("../Helpers/Utils");
@@ -19,6 +18,18 @@ class AirCondition extends AdjustableControl_1.default {
19
18
  _powerController;
20
19
  _powerState;
21
20
  _lastKnownMode;
21
+ constructor(detectedControl) {
22
+ super(detectedControl);
23
+ this._thermostatController = new ThermostatController_1.default(this.composeInitObjectThermostatMode(), this.composeInitObjectTargetSetpoint());
24
+ this._thermostatMode = this._thermostatController.thermostatMode;
25
+ this._powerController = new PowerController_1.default(this.composeInitObjectPowerState());
26
+ this._powerState = this._powerController.powerState;
27
+ this._supported = [
28
+ new TemperatureSensor_1.default(this.composeInitObjectTemperature()),
29
+ this._thermostatController,
30
+ this._powerController,
31
+ ];
32
+ }
22
33
  get categories() {
23
34
  return ['AIR_CONDITIONER'];
24
35
  }
@@ -28,23 +39,6 @@ class AirCondition extends AdjustableControl_1.default {
28
39
  get dedicatedOnOff() {
29
40
  return this.states[this.statesMap.power] !== undefined;
30
41
  }
31
- initCapabilities() {
32
- this._thermostatController = new ThermostatController_1.default();
33
- this._thermostatMode = this._thermostatController.thermostatMode;
34
- this._powerController = new PowerController_1.default();
35
- this._powerState = this._powerController.powerState;
36
- const result = [new TemperatureSensor_1.default(), this._thermostatController, this._powerController];
37
- for (const property of result.flatMap(item => item.properties)) {
38
- const initObject = this.composeInitObject(property);
39
- if (initObject) {
40
- property.init(initObject);
41
- }
42
- else {
43
- throw new Error(`Unable to initialize property ${property.propertyName}`);
44
- }
45
- }
46
- return result;
47
- }
48
42
  async setState(property, value) {
49
43
  // if we set power ON/OFF via thermostat mode
50
44
  if (property.propertyName === PowerState_1.default.propertyName && !this.dedicatedOnOff) {
@@ -70,8 +64,7 @@ class AirCondition extends AdjustableControl_1.default {
70
64
  if (property.propertyName === ThermostatMode_1.default.propertyName) {
71
65
  this._lastKnownMode = value;
72
66
  if (!this.dedicatedOnOff) {
73
- this._powerState.currentValue =
74
- value !== this._thermostatMode.supportedModesAsEnum[ThermostatMode_1.default.OFF];
67
+ this._powerState.currentValue = value !== ThermostatMode_1.default.OFF;
75
68
  }
76
69
  }
77
70
  }
@@ -90,58 +83,59 @@ class AirCondition extends AdjustableControl_1.default {
90
83
  }
91
84
  return property.currentValue;
92
85
  }
93
- composeInitObject(property) {
86
+ composeInitObjectPowerState() {
94
87
  const map = this.statesMap;
95
- if (property.propertyName === PowerState_1.default.propertyName) {
96
- return {
97
- setState: this.states[map.power] || this.states[map.mode],
98
- getState: this.states[map.power] || this.states[map.mode],
99
- alexaSetter: function (alexaValue) {
100
- return alexaValue === PowerState_1.default.ON;
101
- },
102
- alexaGetter: function (value) {
103
- return value ? PowerState_1.default.ON : PowerState_1.default.OFF;
104
- },
105
- };
106
- }
107
- if (property.propertyName === Temperature_1.default.propertyName) {
108
- return {
109
- setState: this.states[map.set],
110
- getState: this.states[map.actual] || this.states[map.set],
111
- };
112
- }
113
- if (property.propertyName === TargetSetpoint_1.default.propertyName) {
114
- // const range = Utils.configuredRangeOrDefault(this.states[map.set]);
115
- return {
116
- setState: this.states[map.set],
117
- getState: this.states[map.actual] || this.states[map.set],
118
- alexaSetter: function (alexaValue) {
119
- return (0, Utils_1.ensureValueInRange)(alexaValue, this.valuesRangeMin, this.valuesRangeMax);
120
- },
121
- alexaGetter: function (value) {
122
- return value || 0;
123
- },
124
- };
125
- }
126
- if (property.propertyName === ThermostatMode_1.default.propertyName) {
127
- return {
128
- setState: this.states[map.mode],
129
- getState: this.states[map.mode],
130
- alexaSetter: function (alexaValue) {
131
- return this.supportedModesAsEnum[alexaValue];
132
- },
133
- alexaGetter: function (value) {
134
- return this.supportedModesAsEnum[value];
135
- },
136
- supportedModes: [
137
- ThermostatMode_1.default.AUTO,
138
- ThermostatMode_1.default.COOL,
139
- ThermostatMode_1.default.ECO,
140
- ThermostatMode_1.default.HEAT,
141
- ThermostatMode_1.default.OFF,
142
- ],
143
- };
144
- }
88
+ return {
89
+ setState: this.states[map.power] || this.states[map.mode],
90
+ getState: this.states[map.power] || this.states[map.mode],
91
+ alexaSetter: function (alexaValue) {
92
+ return alexaValue === PowerState_1.default.ON;
93
+ },
94
+ alexaGetter: function (value) {
95
+ return value ? PowerState_1.default.ON : PowerState_1.default.OFF;
96
+ },
97
+ };
98
+ }
99
+ composeInitObjectThermostatMode() {
100
+ const map = this.statesMap;
101
+ return {
102
+ setState: this.states[map.mode],
103
+ getState: this.states[map.mode],
104
+ alexaSetter: function (alexaValue) {
105
+ return this.supportedModesAsEnum[alexaValue];
106
+ },
107
+ alexaGetter: function (value) {
108
+ return this.supportedModesAsEnum[value];
109
+ },
110
+ supportedModes: [
111
+ ThermostatMode_1.default.AUTO,
112
+ ThermostatMode_1.default.COOL,
113
+ ThermostatMode_1.default.ECO,
114
+ ThermostatMode_1.default.HEAT,
115
+ ThermostatMode_1.default.OFF,
116
+ ],
117
+ };
118
+ }
119
+ composeInitObjectTargetSetpoint() {
120
+ const map = this.statesMap;
121
+ // const range = Utils.configuredRangeOrDefault(this.states[map.set]);
122
+ return {
123
+ setState: this.states[map.set],
124
+ getState: this.states[map.actual] || this.states[map.set],
125
+ alexaSetter: function (alexaValue) {
126
+ return (0, Utils_1.ensureValueInRange)(alexaValue, this.valuesRangeMin, this.valuesRangeMax);
127
+ },
128
+ alexaGetter: function (value) {
129
+ return value || 0;
130
+ },
131
+ };
132
+ }
133
+ composeInitObjectTemperature() {
134
+ const map = this.statesMap;
135
+ return {
136
+ setState: this.states[map.set],
137
+ getState: this.states[map.actual] || this.states[map.set],
138
+ };
145
139
  }
146
140
  }
147
141
  exports.default = AirCondition;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AirCondition.js","sourceRoot":"","sources":["../../../../src/lib/AlexaSmartHomeV3/Controls/AirCondition.ts"],"names":[],"mappings":"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","sourcesContent":["import ThermostatController from '../Alexa/Capabilities/ThermostatController';\nimport ThermostatMode from '../Alexa/Properties/ThermostatMode';\nimport PowerController from '../Alexa/Capabilities/PowerController';\nimport TemperatureSensor from '../Alexa/Capabilities/TemperatureSensor';\nimport PowerState from '../Alexa/Properties/PowerState';\nimport AdjustableControl from './AdjustableControl';\nimport { ensureValueInRange } from '../Helpers/Utils';\nimport TargetSetpoint from '../Alexa/Properties/TargetSetpoint';\nimport type { Base as PropertiesBase } from '../Alexa/Properties/Base';\nimport AdapterProvider from '../Helpers/AdapterProvider';\nimport type {\n AlexaV3Category,\n AlexaV3DirectiveValue,\n IotExternalDetectorState,\n IotExternalPatternControl,\n} from '../types';\n\nexport default class AirCondition extends AdjustableControl {\n private readonly _thermostatController: ThermostatController;\n private readonly _thermostatMode: ThermostatMode;\n private readonly _powerController: PowerController;\n private readonly _powerState: PowerState;\n private _lastKnownMode: number | string | undefined;\n\n constructor(detectedControl: IotExternalPatternControl) {\n super(detectedControl);\n\n this._thermostatController = new ThermostatController(\n this.composeInitObjectThermostatMode(),\n this.composeInitObjectTargetSetpoint(),\n );\n this._thermostatMode = this._thermostatController.thermostatMode;\n this._powerController = new PowerController(this.composeInitObjectPowerState());\n this._powerState = this._powerController.powerState;\n\n this._supported = [\n new TemperatureSensor(this.composeInitObjectTemperature()),\n this._thermostatController,\n this._powerController,\n ];\n }\n\n get categories(): AlexaV3Category[] {\n return ['AIR_CONDITIONER'];\n }\n\n adjustableProperties(): (typeof PropertiesBase)[] {\n return [TargetSetpoint];\n }\n\n get dedicatedOnOff(): boolean {\n return this.states[this.statesMap.power] !== undefined;\n }\n\n async setState(property: PropertiesBase, value: ioBroker.StateValue | undefined): Promise<void> {\n // if we set power ON/OFF via thermostat mode\n if (property.propertyName === PowerState.propertyName && !this.dedicatedOnOff) {\n // set the mode to the last known value or AUTO by switching power ON\n if (value) {\n this._lastKnownMode ||= this._thermostatMode.supportedModesAsEnum[ThermostatMode.AUTO];\n await AdapterProvider.setState(this._thermostatMode.setId, this._lastKnownMode);\n this._thermostatMode.currentValue = this._lastKnownMode;\n this._powerState.currentValue = true;\n } else {\n // set mode to OFF\n const modeOffValue = this._thermostatMode.supportedModesAsEnum[ThermostatMode.OFF];\n await AdapterProvider.setState(this._thermostatMode.setId, modeOffValue);\n this._thermostatMode.currentValue = this._lastKnownMode;\n this._powerState.currentValue = false;\n }\n } else {\n // just set the property\n await AdapterProvider.setState(property.setId, value!);\n property.currentValue = value;\n\n if (property.propertyName === ThermostatMode.propertyName) {\n this._lastKnownMode = value as string;\n if (!this.dedicatedOnOff) {\n this._powerState.currentValue = value !== ThermostatMode.OFF;\n }\n }\n }\n }\n\n async getOrRetrieveCurrentValue(property: PropertiesBase): Promise<ioBroker.StateValue> {\n if (property.currentValue === undefined) {\n property.currentValue = await AdapterProvider.getState(property.getId);\n\n // convert mode != OFF to power = true\n if (property.propertyName === this._powerState.propertyName && !this.dedicatedOnOff) {\n property.currentValue =\n property.currentValue !== this._thermostatMode.supportedModesAsEnum[ThermostatMode.OFF];\n }\n }\n\n if (property.currentValue === undefined) {\n throw new Error(`unable to retrieve ${property.getId}`);\n }\n\n return property.currentValue;\n }\n\n private composeInitObjectPowerState(): {\n setState: IotExternalDetectorState;\n getState: IotExternalDetectorState;\n alexaSetter?: (alexaValue: AlexaV3DirectiveValue) => ioBroker.StateValue | undefined;\n alexaGetter?: (value: ioBroker.StateValue | undefined) => AlexaV3DirectiveValue;\n } {\n const map = this.statesMap;\n return {\n setState: this.states[map.power] || this.states[map.mode]!,\n getState: this.states[map.power] || this.states[map.mode]!,\n alexaSetter: function (alexaValue: AlexaV3DirectiveValue): boolean {\n return alexaValue === PowerState.ON;\n },\n alexaGetter: function (value: ioBroker.StateValue | undefined): AlexaV3DirectiveValue {\n return value ? PowerState.ON : PowerState.OFF;\n },\n };\n }\n\n private composeInitObjectThermostatMode(): {\n setState: IotExternalDetectorState;\n getState: IotExternalDetectorState;\n alexaSetter?: (alexaValue: AlexaV3DirectiveValue) => ioBroker.StateValue | undefined;\n alexaGetter?: (value: ioBroker.StateValue | undefined) => AlexaV3DirectiveValue;\n supportedModes?: string[];\n } {\n const map = this.statesMap;\n return {\n setState: this.states[map.mode]!,\n getState: this.states[map.mode]!,\n alexaSetter: function (\n this: PropertiesBase,\n alexaValue: AlexaV3DirectiveValue,\n ): ioBroker.StateValue | undefined {\n return this.supportedModesAsEnum[alexaValue as string];\n },\n alexaGetter: function (\n this: PropertiesBase,\n value: ioBroker.StateValue | undefined,\n ): AlexaV3DirectiveValue {\n return this.supportedModesAsEnum[value as string];\n },\n supportedModes: [\n ThermostatMode.AUTO,\n ThermostatMode.COOL,\n ThermostatMode.ECO,\n ThermostatMode.HEAT,\n ThermostatMode.OFF,\n ],\n };\n }\n\n private composeInitObjectTargetSetpoint(): {\n setState: IotExternalDetectorState;\n getState: IotExternalDetectorState;\n alexaSetter?: (alexaValue: AlexaV3DirectiveValue) => ioBroker.StateValue | undefined;\n alexaGetter?: (value: ioBroker.StateValue | undefined) => AlexaV3DirectiveValue;\n } {\n const map = this.statesMap;\n // const range = Utils.configuredRangeOrDefault(this.states[map.set]);\n return {\n setState: this.states[map.set]!,\n getState: this.states[map.actual] || this.states[map.set]!,\n alexaSetter: function (this: PropertiesBase, alexaValue: AlexaV3DirectiveValue): ioBroker.StateValue {\n return ensureValueInRange(\n alexaValue as number,\n this.valuesRangeMin as number,\n this.valuesRangeMax as number,\n );\n },\n alexaGetter: function (value: ioBroker.StateValue | undefined): AlexaV3DirectiveValue {\n return value || 0;\n },\n };\n }\n\n private composeInitObjectTemperature(): {\n setState: IotExternalDetectorState;\n getState: IotExternalDetectorState;\n } {\n const map = this.statesMap;\n return {\n setState: this.states[map.set]!,\n getState: this.states[map.actual] || this.states[map.set]!,\n };\n }\n}\n"]}
@@ -6,8 +6,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  const ContactSensor_1 = require("../Alexa/Capabilities/ContactSensor");
7
7
  const ReadOnlyDetector_1 = __importDefault(require("./ReadOnlyDetector"));
8
8
  class ContactSensor extends ReadOnlyDetector_1.default {
9
+ constructor(detectedControl) {
10
+ super(detectedControl);
11
+ this._supported = [this.capability];
12
+ }
9
13
  get capability() {
10
- return new ContactSensor_1.ContactSensor();
14
+ return new ContactSensor_1.ContactSensor(this.detectedStateInitObject());
11
15
  }
12
16
  get categories() {
13
17
  return ['CONTACT_SENSOR'];
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ContactSensor.js","sourceRoot":"","sources":["../../../../src/lib/AlexaSmartHomeV3/Controls/ContactSensor.ts"],"names":[],"mappings":";;;;;AAAA,uEAAiG;AAEjG,0EAAkD;AAGlD,MAAqB,aAAc,SAAQ,0BAAgB;IACvD,YAAY,eAA0C;QAClD,KAAK,CAAC,eAAe,CAAC,CAAC;QACvB,IAAI,CAAC,UAAU,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACxC,CAAC;IAED,IAAI,UAAU;QACV,OAAO,IAAI,6BAAyB,CAAC,IAAI,CAAC,uBAAuB,EAAE,CAAC,CAAC;IACzE,CAAC;IAED,IAAI,UAAU;QACV,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAC9B,CAAC;CACJ;AAbD,gCAaC","sourcesContent":["import { ContactSensor as ContactSensorCapabilities } from '../Alexa/Capabilities/ContactSensor';\nimport type { Base as CapabilitiesBase } from '../Alexa/Capabilities/Base';\nimport ReadOnlyDetector from './ReadOnlyDetector';\nimport type { AlexaV3Category, IotExternalPatternControl } from '../types';\n\nexport default class ContactSensor extends ReadOnlyDetector {\n constructor(detectedControl: IotExternalPatternControl) {\n super(detectedControl);\n this._supported = [this.capability];\n }\n\n get capability(): CapabilitiesBase {\n return new ContactSensorCapabilities(this.detectedStateInitObject());\n }\n\n get categories(): AlexaV3Category[] {\n return ['CONTACT_SENSOR'];\n }\n}\n"]}