iobroker.iot 3.6.0 → 4.0.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 (254) hide show
  1. package/README.md +8 -4
  2. package/admin/assets/index-5zouxn2w.js +680 -0
  3. package/admin/index_m.html +1 -1
  4. package/admin/rules/assets/{index-BRdNnGcA.js → index-DwYdaT5M.js} +80 -81
  5. package/admin/rules/customRuleBlocks.js +2 -2
  6. package/{lib → build-backend/lib}/AlexaSmartHomeV3/Alexa/AlexaResponse.js +101 -95
  7. package/build-backend/lib/AlexaSmartHomeV3/Alexa/AlexaResponse.js.map +1 -0
  8. package/{lib → build-backend/lib}/AlexaSmartHomeV3/Alexa/Capabilities/Base.js +22 -36
  9. package/build-backend/lib/AlexaSmartHomeV3/Alexa/Capabilities/Base.js.map +1 -0
  10. package/build-backend/lib/AlexaSmartHomeV3/Alexa/Capabilities/BrightnessController.js +19 -0
  11. package/build-backend/lib/AlexaSmartHomeV3/Alexa/Capabilities/BrightnessController.js.map +1 -0
  12. package/build-backend/lib/AlexaSmartHomeV3/Alexa/Capabilities/ColorController.js +14 -0
  13. package/build-backend/lib/AlexaSmartHomeV3/Alexa/Capabilities/ColorController.js.map +1 -0
  14. package/build-backend/lib/AlexaSmartHomeV3/Alexa/Capabilities/ColorTemperatureController.js +19 -0
  15. package/build-backend/lib/AlexaSmartHomeV3/Alexa/Capabilities/ColorTemperatureController.js.map +1 -0
  16. package/build-backend/lib/AlexaSmartHomeV3/Alexa/Capabilities/ContactSensor.js +16 -0
  17. package/build-backend/lib/AlexaSmartHomeV3/Alexa/Capabilities/ContactSensor.js.map +1 -0
  18. package/build-backend/lib/AlexaSmartHomeV3/Alexa/Capabilities/LockController.js +14 -0
  19. package/build-backend/lib/AlexaSmartHomeV3/Alexa/Capabilities/LockController.js.map +1 -0
  20. package/{lib → build-backend/lib}/AlexaSmartHomeV3/Alexa/Capabilities/ModeController.js +27 -28
  21. package/build-backend/lib/AlexaSmartHomeV3/Alexa/Capabilities/ModeController.js.map +1 -0
  22. package/build-backend/lib/AlexaSmartHomeV3/Alexa/Capabilities/MotionSensor.js +14 -0
  23. package/build-backend/lib/AlexaSmartHomeV3/Alexa/Capabilities/MotionSensor.js.map +1 -0
  24. package/build-backend/lib/AlexaSmartHomeV3/Alexa/Capabilities/PercentageController.js +14 -0
  25. package/build-backend/lib/AlexaSmartHomeV3/Alexa/Capabilities/PercentageController.js.map +1 -0
  26. package/build-backend/lib/AlexaSmartHomeV3/Alexa/Capabilities/PowerController.js +19 -0
  27. package/build-backend/lib/AlexaSmartHomeV3/Alexa/Capabilities/PowerController.js.map +1 -0
  28. package/build-backend/lib/AlexaSmartHomeV3/Alexa/Capabilities/Speaker.js +25 -0
  29. package/build-backend/lib/AlexaSmartHomeV3/Alexa/Capabilities/Speaker.js.map +1 -0
  30. package/build-backend/lib/AlexaSmartHomeV3/Alexa/Capabilities/TemperatureSensor.js +14 -0
  31. package/build-backend/lib/AlexaSmartHomeV3/Alexa/Capabilities/TemperatureSensor.js.map +1 -0
  32. package/build-backend/lib/AlexaSmartHomeV3/Alexa/Capabilities/ThermostatController.js +37 -0
  33. package/build-backend/lib/AlexaSmartHomeV3/Alexa/Capabilities/ThermostatController.js.map +1 -0
  34. package/build-backend/lib/AlexaSmartHomeV3/Alexa/Capabilities/index.js +32 -0
  35. package/build-backend/lib/AlexaSmartHomeV3/Alexa/Capabilities/index.js.map +1 -0
  36. package/build-backend/lib/AlexaSmartHomeV3/Alexa/Directives/Base.js +29 -0
  37. package/build-backend/lib/AlexaSmartHomeV3/Alexa/Directives/Base.js.map +1 -0
  38. package/{lib → build-backend/lib}/AlexaSmartHomeV3/Alexa/Directives/ChangeReport.js +34 -27
  39. package/build-backend/lib/AlexaSmartHomeV3/Alexa/Directives/ChangeReport.js.map +1 -0
  40. package/build-backend/lib/AlexaSmartHomeV3/Alexa/Directives/Discovery.js +39 -0
  41. package/build-backend/lib/AlexaSmartHomeV3/Alexa/Directives/Discovery.js.map +1 -0
  42. package/{lib → build-backend/lib}/AlexaSmartHomeV3/Alexa/Directives/ReportState.js +19 -22
  43. package/build-backend/lib/AlexaSmartHomeV3/Alexa/Directives/ReportState.js.map +1 -0
  44. package/build-backend/lib/AlexaSmartHomeV3/Alexa/Directives/index.js +14 -0
  45. package/build-backend/lib/AlexaSmartHomeV3/Alexa/Directives/index.js.map +1 -0
  46. package/build-backend/lib/AlexaSmartHomeV3/Alexa/ModeValues/Base.js +36 -0
  47. package/build-backend/lib/AlexaSmartHomeV3/Alexa/ModeValues/Base.js.map +1 -0
  48. package/build-backend/lib/AlexaSmartHomeV3/Alexa/ModeValues/Closed.js +57 -0
  49. package/build-backend/lib/AlexaSmartHomeV3/Alexa/ModeValues/Closed.js.map +1 -0
  50. package/build-backend/lib/AlexaSmartHomeV3/Alexa/ModeValues/Open.js +57 -0
  51. package/build-backend/lib/AlexaSmartHomeV3/Alexa/ModeValues/Open.js.map +1 -0
  52. package/build-backend/lib/AlexaSmartHomeV3/Alexa/ModeValues/index.js +12 -0
  53. package/build-backend/lib/AlexaSmartHomeV3/Alexa/ModeValues/index.js.map +1 -0
  54. package/build-backend/lib/AlexaSmartHomeV3/Alexa/Properties/AdjustableProperty.js +16 -0
  55. package/build-backend/lib/AlexaSmartHomeV3/Alexa/Properties/AdjustableProperty.js.map +1 -0
  56. package/build-backend/lib/AlexaSmartHomeV3/Alexa/Properties/Base.js +127 -0
  57. package/build-backend/lib/AlexaSmartHomeV3/Alexa/Properties/Base.js.map +1 -0
  58. package/build-backend/lib/AlexaSmartHomeV3/Alexa/Properties/Brightness.js +18 -0
  59. package/build-backend/lib/AlexaSmartHomeV3/Alexa/Properties/Brightness.js.map +1 -0
  60. package/build-backend/lib/AlexaSmartHomeV3/Alexa/Properties/Color.js +38 -0
  61. package/build-backend/lib/AlexaSmartHomeV3/Alexa/Properties/Color.js.map +1 -0
  62. package/{lib → build-backend/lib}/AlexaSmartHomeV3/Alexa/Properties/ColorTemperatureInKelvin.js +20 -29
  63. package/build-backend/lib/AlexaSmartHomeV3/Alexa/Properties/ColorTemperatureInKelvin.js.map +1 -0
  64. package/build-backend/lib/AlexaSmartHomeV3/Alexa/Properties/DetectionState.js +23 -0
  65. package/build-backend/lib/AlexaSmartHomeV3/Alexa/Properties/DetectionState.js.map +1 -0
  66. package/{lib → build-backend/lib}/AlexaSmartHomeV3/Alexa/Properties/LockState.js +9 -12
  67. package/build-backend/lib/AlexaSmartHomeV3/Alexa/Properties/LockState.js.map +1 -0
  68. package/build-backend/lib/AlexaSmartHomeV3/Alexa/Properties/Mode.js +34 -0
  69. package/build-backend/lib/AlexaSmartHomeV3/Alexa/Properties/Mode.js.map +1 -0
  70. package/build-backend/lib/AlexaSmartHomeV3/Alexa/Properties/Muted.js +19 -0
  71. package/build-backend/lib/AlexaSmartHomeV3/Alexa/Properties/Muted.js.map +1 -0
  72. package/build-backend/lib/AlexaSmartHomeV3/Alexa/Properties/Percentage.js +18 -0
  73. package/build-backend/lib/AlexaSmartHomeV3/Alexa/Properties/Percentage.js.map +1 -0
  74. package/{lib → build-backend/lib}/AlexaSmartHomeV3/Alexa/Properties/PowerState.js +9 -9
  75. package/build-backend/lib/AlexaSmartHomeV3/Alexa/Properties/PowerState.js.map +1 -0
  76. package/build-backend/lib/AlexaSmartHomeV3/Alexa/Properties/TargetSetpoint.js +31 -0
  77. package/build-backend/lib/AlexaSmartHomeV3/Alexa/Properties/TargetSetpoint.js.map +1 -0
  78. package/build-backend/lib/AlexaSmartHomeV3/Alexa/Properties/Temperature.js +22 -0
  79. package/build-backend/lib/AlexaSmartHomeV3/Alexa/Properties/Temperature.js.map +1 -0
  80. package/build-backend/lib/AlexaSmartHomeV3/Alexa/Properties/ThermostatMode.js +49 -0
  81. package/build-backend/lib/AlexaSmartHomeV3/Alexa/Properties/ThermostatMode.js.map +1 -0
  82. package/build-backend/lib/AlexaSmartHomeV3/Alexa/Properties/Volume.js +21 -0
  83. package/build-backend/lib/AlexaSmartHomeV3/Alexa/Properties/Volume.js.map +1 -0
  84. package/build-backend/lib/AlexaSmartHomeV3/Alexa/Properties/index.js +38 -0
  85. package/build-backend/lib/AlexaSmartHomeV3/Alexa/Properties/index.js.map +1 -0
  86. package/build-backend/lib/AlexaSmartHomeV3/Controls/AdjustableControl.js +20 -0
  87. package/build-backend/lib/AlexaSmartHomeV3/Controls/AdjustableControl.js.map +1 -0
  88. package/build-backend/lib/AlexaSmartHomeV3/Controls/AdjustablePercentageControl.js +26 -0
  89. package/build-backend/lib/AlexaSmartHomeV3/Controls/AdjustablePercentageControl.js.map +1 -0
  90. package/build-backend/lib/AlexaSmartHomeV3/Controls/AirCondition.js +148 -0
  91. package/build-backend/lib/AlexaSmartHomeV3/Controls/AirCondition.js.map +1 -0
  92. package/build-backend/lib/AlexaSmartHomeV3/Controls/Blind.js +13 -0
  93. package/build-backend/lib/AlexaSmartHomeV3/Controls/Blind.js.map +1 -0
  94. package/build-backend/lib/AlexaSmartHomeV3/Controls/ContactSensor.js +17 -0
  95. package/build-backend/lib/AlexaSmartHomeV3/Controls/ContactSensor.js.map +1 -0
  96. package/{lib → build-backend/lib}/AlexaSmartHomeV3/Controls/Control.js +73 -104
  97. package/build-backend/lib/AlexaSmartHomeV3/Controls/Control.js.map +1 -0
  98. package/build-backend/lib/AlexaSmartHomeV3/Controls/Ct.js +182 -0
  99. package/build-backend/lib/AlexaSmartHomeV3/Controls/Ct.js.map +1 -0
  100. package/build-backend/lib/AlexaSmartHomeV3/Controls/Dimmer.js +127 -0
  101. package/build-backend/lib/AlexaSmartHomeV3/Controls/Dimmer.js.map +1 -0
  102. package/build-backend/lib/AlexaSmartHomeV3/Controls/Door.js +10 -0
  103. package/build-backend/lib/AlexaSmartHomeV3/Controls/Door.js.map +1 -0
  104. package/build-backend/lib/AlexaSmartHomeV3/Controls/Gate.js +38 -0
  105. package/build-backend/lib/AlexaSmartHomeV3/Controls/Gate.js.map +1 -0
  106. package/build-backend/lib/AlexaSmartHomeV3/Controls/Hue.js +208 -0
  107. package/build-backend/lib/AlexaSmartHomeV3/Controls/Hue.js.map +1 -0
  108. package/{lib → build-backend/lib}/AlexaSmartHomeV3/Controls/Light.js +15 -22
  109. package/build-backend/lib/AlexaSmartHomeV3/Controls/Light.js.map +1 -0
  110. package/build-backend/lib/AlexaSmartHomeV3/Controls/Lock.js +35 -0
  111. package/build-backend/lib/AlexaSmartHomeV3/Controls/Lock.js.map +1 -0
  112. package/build-backend/lib/AlexaSmartHomeV3/Controls/Motion.js +17 -0
  113. package/build-backend/lib/AlexaSmartHomeV3/Controls/Motion.js.map +1 -0
  114. package/build-backend/lib/AlexaSmartHomeV3/Controls/ReadOnlyDetector.js +26 -0
  115. package/build-backend/lib/AlexaSmartHomeV3/Controls/ReadOnlyDetector.js.map +1 -0
  116. package/build-backend/lib/AlexaSmartHomeV3/Controls/Slider.js +10 -0
  117. package/build-backend/lib/AlexaSmartHomeV3/Controls/Slider.js.map +1 -0
  118. package/build-backend/lib/AlexaSmartHomeV3/Controls/Socket.js +21 -0
  119. package/build-backend/lib/AlexaSmartHomeV3/Controls/Socket.js.map +1 -0
  120. package/build-backend/lib/AlexaSmartHomeV3/Controls/Temperature.js +21 -0
  121. package/build-backend/lib/AlexaSmartHomeV3/Controls/Temperature.js.map +1 -0
  122. package/build-backend/lib/AlexaSmartHomeV3/Controls/Thermostat.js +85 -0
  123. package/build-backend/lib/AlexaSmartHomeV3/Controls/Thermostat.js.map +1 -0
  124. package/build-backend/lib/AlexaSmartHomeV3/Controls/VacuumCleaner.js +27 -0
  125. package/build-backend/lib/AlexaSmartHomeV3/Controls/VacuumCleaner.js.map +1 -0
  126. package/build-backend/lib/AlexaSmartHomeV3/Controls/Volume.js +116 -0
  127. package/build-backend/lib/AlexaSmartHomeV3/Controls/Volume.js.map +1 -0
  128. package/build-backend/lib/AlexaSmartHomeV3/Controls/VolumeGroup.js +10 -0
  129. package/build-backend/lib/AlexaSmartHomeV3/Controls/VolumeGroup.js.map +1 -0
  130. package/build-backend/lib/AlexaSmartHomeV3/Controls/Window.js +10 -0
  131. package/build-backend/lib/AlexaSmartHomeV3/Controls/Window.js.map +1 -0
  132. package/build-backend/lib/AlexaSmartHomeV3/Controls/index.js +121 -0
  133. package/build-backend/lib/AlexaSmartHomeV3/Controls/index.js.map +1 -0
  134. package/{lib → build-backend/lib}/AlexaSmartHomeV3/Device.js +29 -30
  135. package/build-backend/lib/AlexaSmartHomeV3/Device.js.map +1 -0
  136. package/build-backend/lib/AlexaSmartHomeV3/DeviceManager.js +392 -0
  137. package/build-backend/lib/AlexaSmartHomeV3/DeviceManager.js.map +1 -0
  138. package/build-backend/lib/AlexaSmartHomeV3/Exceptions/AlexaV3Exception.js +10 -0
  139. package/build-backend/lib/AlexaSmartHomeV3/Exceptions/AlexaV3Exception.js.map +1 -0
  140. package/build-backend/lib/AlexaSmartHomeV3/Exceptions/HourlyDeviceRateLimitExceeded.js +10 -0
  141. package/build-backend/lib/AlexaSmartHomeV3/Exceptions/HourlyDeviceRateLimitExceeded.js.map +1 -0
  142. package/build-backend/lib/AlexaSmartHomeV3/Exceptions/OverallDailyRateLimitExceeded.js +10 -0
  143. package/build-backend/lib/AlexaSmartHomeV3/Exceptions/OverallDailyRateLimitExceeded.js.map +1 -0
  144. package/{lib → build-backend/lib}/AlexaSmartHomeV3/Helpers/AdapterProvider.js +12 -21
  145. package/build-backend/lib/AlexaSmartHomeV3/Helpers/AdapterProvider.js.map +1 -0
  146. package/build-backend/lib/AlexaSmartHomeV3/Helpers/FileHelper.js +53 -0
  147. package/build-backend/lib/AlexaSmartHomeV3/Helpers/FileHelper.js.map +1 -0
  148. package/{lib → build-backend/lib}/AlexaSmartHomeV3/Helpers/IotProxy.js +9 -26
  149. package/build-backend/lib/AlexaSmartHomeV3/Helpers/IotProxy.js.map +1 -0
  150. package/build-backend/lib/AlexaSmartHomeV3/Helpers/Logger.js +93 -0
  151. package/build-backend/lib/AlexaSmartHomeV3/Helpers/Logger.js.map +1 -0
  152. package/build-backend/lib/AlexaSmartHomeV3/Helpers/RateLimiter.js +112 -0
  153. package/build-backend/lib/AlexaSmartHomeV3/Helpers/RateLimiter.js.map +1 -0
  154. package/build-backend/lib/AlexaSmartHomeV3/Helpers/Utils.js +625 -0
  155. package/build-backend/lib/AlexaSmartHomeV3/Helpers/Utils.js.map +1 -0
  156. package/build-backend/lib/Utils.js +96 -0
  157. package/build-backend/lib/Utils.js.map +1 -0
  158. package/build-backend/lib/adminCommonSocket.js +715 -0
  159. package/build-backend/lib/adminCommonSocket.js.map +1 -0
  160. package/build-backend/lib/alexaCustom.js +542 -0
  161. package/build-backend/lib/alexaCustom.js.map +1 -0
  162. package/{lib → build-backend/lib}/alexaSmartHomeV2.js +4 -8
  163. package/{lib → build-backend/lib}/alexaSmartHomeV3.js +25 -45
  164. package/build-backend/lib/alexaSmartHomeV3.js.map +1 -0
  165. package/{lib → build-backend/lib}/alisa.js +41 -44
  166. package/{lib → build-backend/lib}/devices.js +11 -8
  167. package/build-backend/lib/devices.js.map +1 -0
  168. package/{lib → build-backend/lib}/functions.js +11 -8
  169. package/build-backend/lib/functions.js.map +1 -0
  170. package/{lib → build-backend/lib}/googleHome.js +25 -26
  171. package/{lib → build-backend/lib}/notifications.js +15 -22
  172. package/build-backend/lib/notifications.js.map +1 -0
  173. package/{lib → build-backend/lib}/remote.js +615 -636
  174. package/build-backend/lib/remote.js.map +1 -0
  175. package/{lib → build-backend/lib}/rooms.js +11 -8
  176. package/build-backend/lib/rooms.js.map +1 -0
  177. package/{lib → build-backend/lib}/texts.js +6 -4
  178. package/build-backend/lib/texts.js.map +1 -0
  179. package/build-backend/lib/translate.js +21 -0
  180. package/build-backend/lib/translate.js.map +1 -0
  181. package/{lib → build-backend/lib}/visuApp.js +45 -65
  182. package/build-backend/lib/visuApp.js.map +1 -0
  183. package/build-backend/main.js +1361 -0
  184. package/build-backend/main.js.map +1 -0
  185. package/io-package.json +14 -14
  186. package/package.json +18 -15
  187. package/admin/assets/index-DCbOB3g_.js +0 -681
  188. package/lib/AlexaSmartHomeV3/Alexa/Capabilities/BrightnessController.js +0 -15
  189. package/lib/AlexaSmartHomeV3/Alexa/Capabilities/ColorController.js +0 -10
  190. package/lib/AlexaSmartHomeV3/Alexa/Capabilities/ColorTemperatureController.js +0 -15
  191. package/lib/AlexaSmartHomeV3/Alexa/Capabilities/ContactSensor.js +0 -10
  192. package/lib/AlexaSmartHomeV3/Alexa/Capabilities/LockController.js +0 -10
  193. package/lib/AlexaSmartHomeV3/Alexa/Capabilities/MotionSensor.js +0 -10
  194. package/lib/AlexaSmartHomeV3/Alexa/Capabilities/PercentageController.js +0 -10
  195. package/lib/AlexaSmartHomeV3/Alexa/Capabilities/PowerController.js +0 -15
  196. package/lib/AlexaSmartHomeV3/Alexa/Capabilities/Speaker.js +0 -20
  197. package/lib/AlexaSmartHomeV3/Alexa/Capabilities/TemperatureSensor.js +0 -10
  198. package/lib/AlexaSmartHomeV3/Alexa/Capabilities/ThermostatController.js +0 -34
  199. package/lib/AlexaSmartHomeV3/Alexa/Capabilities/index.js +0 -14
  200. package/lib/AlexaSmartHomeV3/Alexa/Directives/Base.js +0 -27
  201. package/lib/AlexaSmartHomeV3/Alexa/Directives/Discovery.js +0 -39
  202. package/lib/AlexaSmartHomeV3/Alexa/Directives/index.js +0 -13
  203. package/lib/AlexaSmartHomeV3/Alexa/ModeValues/Base.js +0 -38
  204. package/lib/AlexaSmartHomeV3/Alexa/ModeValues/Closed.js +0 -55
  205. package/lib/AlexaSmartHomeV3/Alexa/ModeValues/Open.js +0 -56
  206. package/lib/AlexaSmartHomeV3/Alexa/ModeValues/index.js +0 -14
  207. package/lib/AlexaSmartHomeV3/Alexa/Properties/AdjustableProperty.js +0 -11
  208. package/lib/AlexaSmartHomeV3/Alexa/Properties/Base.js +0 -108
  209. package/lib/AlexaSmartHomeV3/Alexa/Properties/Brightness.js +0 -14
  210. package/lib/AlexaSmartHomeV3/Alexa/Properties/Color.js +0 -40
  211. package/lib/AlexaSmartHomeV3/Alexa/Properties/DetectionState.js +0 -22
  212. package/lib/AlexaSmartHomeV3/Alexa/Properties/Mode.js +0 -32
  213. package/lib/AlexaSmartHomeV3/Alexa/Properties/Muted.js +0 -17
  214. package/lib/AlexaSmartHomeV3/Alexa/Properties/Percentage.js +0 -14
  215. package/lib/AlexaSmartHomeV3/Alexa/Properties/TargetSetpoint.js +0 -28
  216. package/lib/AlexaSmartHomeV3/Alexa/Properties/Temperature.js +0 -20
  217. package/lib/AlexaSmartHomeV3/Alexa/Properties/ThermostatMode.js +0 -52
  218. package/lib/AlexaSmartHomeV3/Alexa/Properties/Volume.js +0 -19
  219. package/lib/AlexaSmartHomeV3/Alexa/Properties/index.js +0 -14
  220. package/lib/AlexaSmartHomeV3/Controls/AdjustableControl.js +0 -22
  221. package/lib/AlexaSmartHomeV3/Controls/AdjustablePercentageControl.js +0 -28
  222. package/lib/AlexaSmartHomeV3/Controls/AirCondition.js +0 -144
  223. package/lib/AlexaSmartHomeV3/Controls/Blind.js +0 -12
  224. package/lib/AlexaSmartHomeV3/Controls/ContactSensor.js +0 -17
  225. package/lib/AlexaSmartHomeV3/Controls/Ct.js +0 -172
  226. package/lib/AlexaSmartHomeV3/Controls/Dimmer.js +0 -124
  227. package/lib/AlexaSmartHomeV3/Controls/Door.js +0 -9
  228. package/lib/AlexaSmartHomeV3/Controls/Gate.js +0 -42
  229. package/lib/AlexaSmartHomeV3/Controls/Hue.js +0 -207
  230. package/lib/AlexaSmartHomeV3/Controls/Lock.js +0 -36
  231. package/lib/AlexaSmartHomeV3/Controls/Motion.js +0 -17
  232. package/lib/AlexaSmartHomeV3/Controls/ReadOnlyDetector.js +0 -25
  233. package/lib/AlexaSmartHomeV3/Controls/Slider.js +0 -10
  234. package/lib/AlexaSmartHomeV3/Controls/Socket.js +0 -21
  235. package/lib/AlexaSmartHomeV3/Controls/Temperature.js +0 -22
  236. package/lib/AlexaSmartHomeV3/Controls/Thermostat.js +0 -86
  237. package/lib/AlexaSmartHomeV3/Controls/VacuumCleaner.js +0 -28
  238. package/lib/AlexaSmartHomeV3/Controls/Volume.js +0 -109
  239. package/lib/AlexaSmartHomeV3/Controls/VolumeGroup.js +0 -9
  240. package/lib/AlexaSmartHomeV3/Controls/Window.js +0 -9
  241. package/lib/AlexaSmartHomeV3/Controls/index.js +0 -14
  242. package/lib/AlexaSmartHomeV3/DeviceManager.js +0 -415
  243. package/lib/AlexaSmartHomeV3/Exceptions/AlexaV3Exception.js +0 -8
  244. package/lib/AlexaSmartHomeV3/Exceptions/HourlyDeviceRateLimitExceeded.js +0 -5
  245. package/lib/AlexaSmartHomeV3/Exceptions/OverallDailyRateLimitExceeded.js +0 -5
  246. package/lib/AlexaSmartHomeV3/Helpers/FileHelper.js +0 -70
  247. package/lib/AlexaSmartHomeV3/Helpers/Logger.js +0 -95
  248. package/lib/AlexaSmartHomeV3/Helpers/RateLimiter.js +0 -82
  249. package/lib/AlexaSmartHomeV3/Helpers/Utils.js +0 -583
  250. package/lib/Utils.js +0 -608
  251. package/lib/adminCommonSocket.js +0 -781
  252. package/lib/alexaCustom.js +0 -622
  253. package/lib/translate.js +0 -19
  254. package/main.js +0 -1454
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const Base_1 = __importDefault(require("./Base"));
7
+ class Mode extends Base_1.default {
8
+ _supportedModes = [];
9
+ init(opts) {
10
+ super.init(opts);
11
+ if (!opts.supportedModes || !Array.isArray(opts.supportedModes) || opts.supportedModes.length === 0) {
12
+ throw new Error('Mode control requires supportedModes array with at least one mode');
13
+ }
14
+ if (!opts.instance || typeof opts.instance !== 'string') {
15
+ throw new Error('Mode control requires a valid instance string');
16
+ }
17
+ this._supportedModes = opts.supportedModes;
18
+ }
19
+ matches(event) {
20
+ return (Mode.matches(event) &&
21
+ // non-adjustable mode controller
22
+ 'SetMode' === event?.directive?.header?.name &&
23
+ this.instance === event?.directive?.header?.instance &&
24
+ this.supportedModes.map(mode => mode.value).includes(event?.directive?.payload?.mode || ''));
25
+ }
26
+ alexaDirectiveValue(event) {
27
+ return event.directive.payload.mode;
28
+ }
29
+ get supportedModes() {
30
+ return this._supportedModes;
31
+ }
32
+ }
33
+ exports.default = Mode;
34
+ //# sourceMappingURL=Mode.js.map
@@ -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;IAC1B,eAAe,GAKjB,EAAE,CAAC;IAET,IAAI,CAAC,IAA4B;QAC7B,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjB,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,IAAI,cAAc;QAMd,OAAO,IAAI,CAAC,eAAe,CAAC;IAChC,CAAC;CACJ;AAzCD,uBAyCC","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 _supportedModes: {\n value: string;\n actionMappings: AlexaV3ActionMapping[];\n discoveryResponse: AlexaV3DiscoveryResponse[];\n stateMappings: AlexaV3StateMapping[];\n }[] = [];\n\n init(opts: ControlStateInitObject): void {\n super.init(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 get supportedModes(): {\n value: string;\n actionMappings: AlexaV3ActionMapping[];\n discoveryResponse: AlexaV3DiscoveryResponse[];\n stateMappings: AlexaV3StateMapping[];\n }[] {\n return this._supportedModes;\n }\n}\n"]}
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const Base_1 = __importDefault(require("./Base"));
7
+ class Muted extends Base_1.default {
8
+ static matches(event) {
9
+ return event?.directive?.header?.namespace === 'Alexa.Speaker';
10
+ }
11
+ matches(event) {
12
+ return Muted.matches(event) && event?.directive?.header?.name === 'SetMute';
13
+ }
14
+ alexaDirectiveValue(event) {
15
+ return !!event.directive.payload.mute;
16
+ }
17
+ }
18
+ exports.default = Muted;
19
+ //# sourceMappingURL=Muted.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Muted.js","sourceRoot":"","sources":["../../../../../src/lib/AlexaSmartHomeV3/Alexa/Properties/Muted.ts"],"names":[],"mappings":";;;;;AAAA,kDAA0B;AAG1B,MAAqB,KAAM,SAAQ,cAAI;IACnC,MAAM,CAAC,OAAO,CAAC,KAAqB;QAChC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,KAAK,eAAe,CAAC;IACnE,CAAC;IAED,OAAO,CAAC,KAAqB;QACzB,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,KAAK,SAAS,CAAC;IAChF,CAAC;IAED,mBAAmB,CAAC,KAAqB;QACrC,OAAO,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC;IAC1C,CAAC;CACJ;AAZD,wBAYC","sourcesContent":["import Base from './Base';\nimport type { AlexaV3DirectiveValue, AlexaV3Request } from '../../types';\n\nexport default class Muted extends Base {\n static matches(event: AlexaV3Request): boolean {\n return event?.directive?.header?.namespace === 'Alexa.Speaker';\n }\n\n matches(event: AlexaV3Request): boolean {\n return Muted.matches(event) && event?.directive?.header?.name === 'SetMute';\n }\n\n alexaDirectiveValue(event: AlexaV3Request): AlexaV3DirectiveValue {\n return !!event.directive.payload.mute;\n }\n}\n"]}
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const AdjustableProperty_1 = __importDefault(require("./AdjustableProperty"));
7
+ class Percentage extends AdjustableProperty_1.default {
8
+ matches(event) {
9
+ return Percentage.matches(event);
10
+ }
11
+ alexaDirectiveValue(event) {
12
+ return Percentage.directive(event) === Percentage.SET
13
+ ? super.alexaDirectiveValue(event)
14
+ : event.directive.payload.percentageDelta;
15
+ }
16
+ }
17
+ exports.default = Percentage;
18
+ //# sourceMappingURL=Percentage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Percentage.js","sourceRoot":"","sources":["../../../../../src/lib/AlexaSmartHomeV3/Alexa/Properties/Percentage.ts"],"names":[],"mappings":";;;;;AACA,8EAAsD;AAEtD,MAAqB,UAAW,SAAQ,4BAAkB;IACtD,OAAO,CAAC,KAAqB;QACzB,OAAO,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACrC,CAAC;IAED,mBAAmB,CAAC,KAAqB;QACrC,OAAO,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,UAAU,CAAC,GAAG;YACjD,CAAC,CAAC,KAAK,CAAC,mBAAmB,CAAC,KAAK,CAAC;YAClC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,eAAe,CAAC;IAClD,CAAC;CACJ;AAVD,6BAUC","sourcesContent":["import type { AlexaV3DirectiveValue, AlexaV3Request } from '../../types';\nimport AdjustableProperty from './AdjustableProperty';\n\nexport default class Percentage extends AdjustableProperty {\n matches(event: AlexaV3Request): boolean {\n return Percentage.matches(event);\n }\n\n alexaDirectiveValue(event: AlexaV3Request): AlexaV3DirectiveValue {\n return Percentage.directive(event) === Percentage.SET\n ? super.alexaDirectiveValue(event)\n : event.directive.payload.percentageDelta;\n }\n}\n"]}
@@ -1,25 +1,25 @@
1
- const Base = require('./Base');
2
-
3
- class PowerState extends Base {
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const Base_1 = __importDefault(require("./Base"));
7
+ class PowerState extends Base_1.default {
4
8
  static matches(event) {
5
9
  return event?.directive?.header?.namespace === 'Alexa.PowerController';
6
10
  }
7
-
8
11
  matches(event) {
9
12
  return PowerState.matches(event);
10
13
  }
11
-
12
14
  static get ON() {
13
15
  return 'ON';
14
16
  }
15
-
16
17
  static get OFF() {
17
18
  return 'OFF';
18
19
  }
19
-
20
20
  alexaDirectiveValue(event) {
21
21
  return event.directive.header.name === 'TurnOn' ? PowerState.ON : PowerState.OFF;
22
22
  }
23
23
  }
24
-
25
- module.exports = PowerState;
24
+ exports.default = PowerState;
25
+ //# 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;CACJ;AApBD,6BAoBC","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"]}
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const Base_1 = __importDefault(require("./Base"));
7
+ class TargetSetpoint extends Base_1.default {
8
+ static matches(event) {
9
+ return (event?.directive?.header?.name === 'SetTargetTemperature' ||
10
+ event?.directive?.header?.name === 'AdjustTargetTemperature');
11
+ }
12
+ matches(event) {
13
+ return TargetSetpoint.matches(event);
14
+ }
15
+ static directive(event) {
16
+ return event.directive.header.name === 'AdjustTargetTemperature' ? TargetSetpoint.ADJUST : TargetSetpoint.SET;
17
+ }
18
+ alexaDirectiveValue(event) {
19
+ return TargetSetpoint.directive(event) === TargetSetpoint.SET
20
+ ? event.directive.payload.targetSetpoint.value
21
+ : event.directive.payload.targetSetpointDelta.value;
22
+ }
23
+ reportValue(value) {
24
+ return {
25
+ value,
26
+ scale: TargetSetpoint.CELSIUS_SCALE,
27
+ };
28
+ }
29
+ }
30
+ exports.default = TargetSetpoint;
31
+ //# sourceMappingURL=TargetSetpoint.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TargetSetpoint.js","sourceRoot":"","sources":["../../../../../src/lib/AlexaSmartHomeV3/Alexa/Properties/TargetSetpoint.ts"],"names":[],"mappings":";;;;;AAAA,kDAA0B;AAG1B,MAAqB,cAAe,SAAQ,cAAI;IAC5C,MAAM,CAAC,OAAO,CAAC,KAAqB;QAChC,OAAO,CACH,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,KAAK,sBAAsB;YACzD,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,KAAK,yBAAyB,CAC/D,CAAC;IACN,CAAC;IAED,OAAO,CAAC,KAAqB;QACzB,OAAO,cAAc,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACzC,CAAC;IAED,MAAM,CAAC,SAAS,CAAC,KAAqB;QAClC,OAAO,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,KAAK,yBAAyB,CAAC,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC;IAClH,CAAC;IAED,mBAAmB,CAAC,KAAqB;QACrC,OAAO,cAAc,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,cAAc,CAAC,GAAG;YACzD,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,cAAe,CAAC,KAAK;YAC/C,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,mBAAoB,CAAC,KAAK,CAAC;IAC7D,CAAC;IAED,WAAW,CAAC,KAAa;QACrB,OAAO;YACH,KAAK;YACL,KAAK,EAAE,cAAc,CAAC,aAAa;SACtC,CAAC;IACN,CAAC;CACJ;AA5BD,iCA4BC","sourcesContent":["import Base from './Base';\nimport type { AlexaV3DirectiveName, AlexaV3DirectiveValue, AlexaV3Request } from '../../types';\n\nexport default class TargetSetpoint extends Base {\n static matches(event: AlexaV3Request): boolean {\n return (\n event?.directive?.header?.name === 'SetTargetTemperature' ||\n event?.directive?.header?.name === 'AdjustTargetTemperature'\n );\n }\n\n matches(event: AlexaV3Request): boolean {\n return TargetSetpoint.matches(event);\n }\n\n static directive(event: AlexaV3Request): AlexaV3DirectiveName {\n return event.directive.header.name === 'AdjustTargetTemperature' ? TargetSetpoint.ADJUST : TargetSetpoint.SET;\n }\n\n alexaDirectiveValue(event: AlexaV3Request): AlexaV3DirectiveValue {\n return TargetSetpoint.directive(event) === TargetSetpoint.SET\n ? event.directive.payload.targetSetpoint!.value\n : event.directive.payload.targetSetpointDelta!.value;\n }\n\n reportValue(value: number): any {\n return {\n value,\n scale: TargetSetpoint.CELSIUS_SCALE,\n };\n }\n}\n"]}
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const Base_1 = __importDefault(require("./Base"));
7
+ class Temperature extends Base_1.default {
8
+ static matches(event) {
9
+ return event?.directive?.header?.namespace === 'Alexa.TemperatureSensor';
10
+ }
11
+ matches(event) {
12
+ return Temperature.matches(event);
13
+ }
14
+ reportValue(value) {
15
+ return {
16
+ value,
17
+ scale: Temperature.CELSIUS_SCALE,
18
+ };
19
+ }
20
+ }
21
+ exports.default = Temperature;
22
+ //# sourceMappingURL=Temperature.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Temperature.js","sourceRoot":"","sources":["../../../../../src/lib/AlexaSmartHomeV3/Alexa/Properties/Temperature.ts"],"names":[],"mappings":";;;;;AAAA,kDAA0B;AAG1B,MAAqB,WAAY,SAAQ,cAAI;IACzC,MAAM,CAAC,OAAO,CAAC,KAAqB;QAChC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,KAAK,yBAAyB,CAAC;IAC7E,CAAC;IAED,OAAO,CAAC,KAAqB;QACzB,OAAO,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACtC,CAAC;IAED,WAAW,CAAC,KAAa;QACrB,OAAO;YACH,KAAK;YACL,KAAK,EAAE,WAAW,CAAC,aAAa;SACnC,CAAC;IACN,CAAC;CACJ;AAfD,8BAeC","sourcesContent":["import Base from './Base';\nimport type { AlexaV3Request } from '../../types';\n\nexport default class Temperature extends Base {\n static matches(event: AlexaV3Request): boolean {\n return event?.directive?.header?.namespace === 'Alexa.TemperatureSensor';\n }\n\n matches(event: AlexaV3Request): boolean {\n return Temperature.matches(event);\n }\n\n reportValue(value: number): any {\n return {\n value,\n scale: Temperature.CELSIUS_SCALE,\n };\n }\n}\n"]}
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const Utils_1 = require("../../Helpers/Utils");
7
+ const Base_1 = __importDefault(require("./Base"));
8
+ class ThermostatMode extends Base_1.default {
9
+ _supportedModes = [];
10
+ init(opts) {
11
+ super.init(opts);
12
+ if (!opts.supportedModes || !Array.isArray(opts.supportedModes) || opts.supportedModes.length === 0) {
13
+ throw new Error('ThermostatMode control requires supportedModes array with at least one mode');
14
+ }
15
+ // set mode to be AUTO for thermostats without mode at all
16
+ this.currentValue = this.setId ? undefined : ThermostatMode.AUTO;
17
+ this._supportedModes = opts.supportedModes;
18
+ this._supportedModesAsEnum = (0, Utils_1.asEnum)(this._supportedModes);
19
+ }
20
+ static matches(event) {
21
+ return event?.directive?.header?.name === 'SetThermostatMode';
22
+ }
23
+ matches(event) {
24
+ return ThermostatMode.matches(event);
25
+ }
26
+ alexaDirectiveValue(event) {
27
+ return event.directive.payload.thermostatMode?.value;
28
+ }
29
+ get supportedModes() {
30
+ return this._supportedModes;
31
+ }
32
+ static get AUTO() {
33
+ return 'AUTO';
34
+ }
35
+ static get COOL() {
36
+ return 'COOL';
37
+ }
38
+ static get ECO() {
39
+ return 'ECO';
40
+ }
41
+ static get HEAT() {
42
+ return 'HEAT';
43
+ }
44
+ static get OFF() {
45
+ return 'OFF';
46
+ }
47
+ }
48
+ exports.default = ThermostatMode;
49
+ //# sourceMappingURL=ThermostatMode.js.map
@@ -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;IACpC,eAAe,GAAa,EAAE,CAAC;IAEvC,IAAI,CAAC,IAA4B;QAC7B,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjB,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 _supportedModes: string[] = [];\n\n init(opts: ControlStateInitObject): void {\n super.init(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"]}
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.Volume = void 0;
7
+ const AdjustableProperty_1 = __importDefault(require("./AdjustableProperty"));
8
+ class Volume extends AdjustableProperty_1.default {
9
+ static matches(event) {
10
+ return event?.directive?.header?.namespace === 'Alexa.Speaker';
11
+ }
12
+ matches(event) {
13
+ return Volume.matches(event) && ['AdjustVolume', 'SetVolume'].includes(event?.directive?.header?.name);
14
+ }
15
+ static directive(event) {
16
+ return event.directive.header.name === 'AdjustVolume' ? Volume.ADJUST : Volume.SET;
17
+ }
18
+ }
19
+ exports.Volume = Volume;
20
+ exports.default = Volume;
21
+ //# sourceMappingURL=Volume.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Volume.js","sourceRoot":"","sources":["../../../../../src/lib/AlexaSmartHomeV3/Alexa/Properties/Volume.ts"],"names":[],"mappings":";;;;;;AAEA,8EAAsD;AAEtD,MAAa,MAAO,SAAQ,4BAAkB;IAC1C,MAAM,CAAC,OAAO,CAAC,KAAqB;QAChC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,KAAK,eAAe,CAAC;IACnE,CAAC;IAED,OAAO,CAAC,KAAqB;QACzB,OAAO,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;IAC3G,CAAC;IAED,MAAM,CAAC,SAAS,CAAC,KAAqB;QAClC,OAAO,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,KAAK,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;IACvF,CAAC;CACJ;AAZD,wBAYC;AAED,kBAAe,MAAM,CAAC","sourcesContent":["import type { AlexaV3DirectiveName, AlexaV3Request } from '../../types';\n\nimport AdjustableProperty from './AdjustableProperty';\n\nexport class Volume extends AdjustableProperty {\n static matches(event: AlexaV3Request): boolean {\n return event?.directive?.header?.namespace === 'Alexa.Speaker';\n }\n\n matches(event: AlexaV3Request): boolean {\n return Volume.matches(event) && ['AdjustVolume', 'SetVolume'].includes(event?.directive?.header?.name);\n }\n\n static directive(event: AlexaV3Request): AlexaV3DirectiveName {\n return event.directive.header.name === 'AdjustVolume' ? Volume.ADJUST : Volume.SET;\n }\n}\n\nexport default Volume;\n"]}
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const Base_1 = __importDefault(require("./Base"));
7
+ const AdjustableProperty_1 = __importDefault(require("./AdjustableProperty"));
8
+ const Brightness_1 = __importDefault(require("./Brightness"));
9
+ const Color_1 = __importDefault(require("./Color"));
10
+ const ColorTemperatureInKelvin_1 = __importDefault(require("./ColorTemperatureInKelvin"));
11
+ const DetectionState_1 = __importDefault(require("./DetectionState"));
12
+ const LockState_1 = __importDefault(require("./LockState"));
13
+ const Mode_1 = __importDefault(require("./Mode"));
14
+ const Muted_1 = __importDefault(require("./Muted"));
15
+ const Percentage_1 = __importDefault(require("./Percentage"));
16
+ const PowerState_1 = __importDefault(require("./PowerState"));
17
+ const TargetSetpoint_1 = __importDefault(require("./TargetSetpoint"));
18
+ const Temperature_1 = __importDefault(require("./Temperature"));
19
+ const ThermostatMode_1 = __importDefault(require("./ThermostatMode"));
20
+ const Volume_1 = __importDefault(require("./Volume"));
21
+ exports.default = {
22
+ Base: Base_1.default,
23
+ AdjustableProperty: AdjustableProperty_1.default,
24
+ Brightness: Brightness_1.default,
25
+ Color: Color_1.default,
26
+ ColorTemperatureInKelvin: ColorTemperatureInKelvin_1.default,
27
+ DetectionState: DetectionState_1.default,
28
+ LockState: LockState_1.default,
29
+ Mode: Mode_1.default,
30
+ Muted: Muted_1.default,
31
+ Percentage: Percentage_1.default,
32
+ PowerState: PowerState_1.default,
33
+ TargetSetpoint: TargetSetpoint_1.default,
34
+ Temperature: Temperature_1.default,
35
+ ThermostatMode: ThermostatMode_1.default,
36
+ Volume: Volume_1.default,
37
+ };
38
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/lib/AlexaSmartHomeV3/Alexa/Properties/index.ts"],"names":[],"mappings":";;;;;AAAA,kDAA0B;AAC1B,8EAAsD;AACtD,8DAAsC;AACtC,oDAA4B;AAC5B,0FAAkE;AAClE,sEAA8C;AAC9C,4DAAoC;AACpC,kDAA0B;AAC1B,oDAA4B;AAC5B,8DAAsC;AACtC,8DAAsC;AACtC,sEAA8C;AAC9C,gEAAwC;AACxC,sEAA8C;AAC9C,sDAA8B;AAE9B,kBAAe;IACX,IAAI,EAAJ,cAAI;IACJ,kBAAkB,EAAlB,4BAAkB;IAClB,UAAU,EAAV,oBAAU;IACV,KAAK,EAAL,eAAK;IACL,wBAAwB,EAAxB,kCAAwB;IACxB,cAAc,EAAd,wBAAc;IACd,SAAS,EAAT,mBAAS;IACT,IAAI,EAAJ,cAAI;IACJ,KAAK,EAAL,eAAK;IACL,UAAU,EAAV,oBAAU;IACV,UAAU,EAAV,oBAAU;IACV,cAAc,EAAd,wBAAc;IACd,WAAW,EAAX,qBAAW;IACX,cAAc,EAAd,wBAAc;IACd,MAAM,EAAN,gBAAM;CACT,CAAC","sourcesContent":["import Base from './Base';\nimport AdjustableProperty from './AdjustableProperty';\nimport Brightness from './Brightness';\nimport Color from './Color';\nimport ColorTemperatureInKelvin from './ColorTemperatureInKelvin';\nimport DetectionState from './DetectionState';\nimport LockState from './LockState';\nimport Mode from './Mode';\nimport Muted from './Muted';\nimport Percentage from './Percentage';\nimport PowerState from './PowerState';\nimport TargetSetpoint from './TargetSetpoint';\nimport Temperature from './Temperature';\nimport ThermostatMode from './ThermostatMode';\nimport Volume from './Volume';\n\nexport default {\n Base,\n AdjustableProperty,\n Brightness,\n Color,\n ColorTemperatureInKelvin,\n DetectionState,\n LockState,\n Mode,\n Muted,\n Percentage,\n PowerState,\n TargetSetpoint,\n Temperature,\n ThermostatMode,\n Volume,\n};\n"]}
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const Control_1 = __importDefault(require("./Control"));
7
+ const Base_1 = require("../Alexa/Properties/Base");
8
+ class AdjustableControl extends Control_1.default {
9
+ adjustableProperties() {
10
+ return [];
11
+ }
12
+ isAdjustDirective(event) {
13
+ return this.adjustableProperties().some(property => property.matches(event) && property.directive(event) === Base_1.Base.ADJUST);
14
+ }
15
+ valueSetter(event) {
16
+ return this.isAdjustDirective(event) ? this.adjustValue.bind(this) : super.valueSetter(event);
17
+ }
18
+ }
19
+ exports.default = AdjustableControl;
20
+ //# sourceMappingURL=AdjustableControl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AdjustableControl.js","sourceRoot":"","sources":["../../../../src/lib/AlexaSmartHomeV3/Controls/AdjustableControl.ts"],"names":[],"mappings":";;;;;AAAA,wDAAgC;AAChC,mDAAkE;AAGlE,MAAqB,iBAAkB,SAAQ,iBAAO;IAClD,oBAAoB;QAChB,OAAO,EAAE,CAAC;IACd,CAAC;IAED,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;AAhBD,oCAgBC","sourcesContent":["import Control from './Control';\nimport { Base as PropertiesBase } from '../Alexa/Properties/Base';\nimport type { AlexaV3DirectiveValue, AlexaV3Request } from '../types';\n\nexport default class AdjustableControl extends Control {\n adjustableProperties(): (typeof PropertiesBase)[] {\n return [];\n }\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"]}
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const Capabilities_1 = __importDefault(require("../Alexa/Capabilities"));
7
+ const AdjustableControl_1 = __importDefault(require("./AdjustableControl"));
8
+ const Percentage_1 = __importDefault(require("../Alexa/Properties/Percentage"));
9
+ class AdjustablePercentageControl extends AdjustableControl_1.default {
10
+ adjustableProperties() {
11
+ return [Percentage_1.default];
12
+ }
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
+ async setState(property, value) {
21
+ // todo: byON
22
+ return super.setState(property, value);
23
+ }
24
+ }
25
+ exports.default = AdjustablePercentageControl;
26
+ //# sourceMappingURL=AdjustablePercentageControl.js.map
@@ -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,oBAAoB;QAChB,OAAO,CAAC,oBAAU,CAAC,CAAC;IACxB,CAAC;IAED,gBAAgB;QACZ,MAAM,MAAM,GAAuB,CAAC,IAAI,sBAAY,CAAC,oBAAoB,EAAE,CAAC,CAAC;QAC7E,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;YAC7D,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC,CAAC;QAC/C,CAAC;QACD,OAAO,MAAM,CAAC;IAClB,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;AAjBD,8CAiBC","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 { Base as CapabilitiesBase } from '../Alexa/Capabilities/Base';\n\nexport default class AdjustablePercentageControl extends AdjustableControl {\n adjustableProperties(): (typeof PropertiesBase)[] {\n return [Percentage];\n }\n\n initCapabilities(): CapabilitiesBase[] {\n const result: CapabilitiesBase[] = [new Capabilities.PercentageController()];\n for (const property of result.flatMap(item => item.properties)) {\n property.init(this.percentageInitObject());\n }\n return result;\n }\n\n async setState(property: PropertiesBase, value: ioBroker.StateValue): Promise<void> {\n // todo: byON\n return super.setState(property, value);\n }\n}\n"]}
@@ -0,0 +1,148 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const ThermostatController_1 = __importDefault(require("../Alexa/Capabilities/ThermostatController"));
7
+ const ThermostatMode_1 = __importDefault(require("../Alexa/Properties/ThermostatMode"));
8
+ const PowerController_1 = __importDefault(require("../Alexa/Capabilities/PowerController"));
9
+ const TemperatureSensor_1 = __importDefault(require("../Alexa/Capabilities/TemperatureSensor"));
10
+ const Temperature_1 = __importDefault(require("../Alexa/Properties/Temperature"));
11
+ const PowerState_1 = __importDefault(require("../Alexa/Properties/PowerState"));
12
+ const AdjustableControl_1 = __importDefault(require("./AdjustableControl"));
13
+ const Utils_1 = require("../Helpers/Utils");
14
+ const TargetSetpoint_1 = __importDefault(require("../Alexa/Properties/TargetSetpoint"));
15
+ const AdapterProvider_1 = __importDefault(require("../Helpers/AdapterProvider"));
16
+ class AirCondition extends AdjustableControl_1.default {
17
+ _thermostatController;
18
+ _thermostatMode;
19
+ _powerController;
20
+ _powerState;
21
+ _lastKnownMode;
22
+ get categories() {
23
+ return ['AIR_CONDITIONER'];
24
+ }
25
+ adjustableProperties() {
26
+ return [TargetSetpoint_1.default];
27
+ }
28
+ get dedicatedOnOff() {
29
+ return this.states[this.statesMap.power] !== undefined;
30
+ }
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
+ async setState(property, value) {
49
+ // if we set power ON/OFF via thermostat mode
50
+ if (property.propertyName === PowerState_1.default.propertyName && !this.dedicatedOnOff) {
51
+ // set the mode to the last known value or AUTO by switching power ON
52
+ if (value) {
53
+ this._lastKnownMode ||= this._thermostatMode.supportedModesAsEnum[ThermostatMode_1.default.AUTO];
54
+ await AdapterProvider_1.default.setState(this._thermostatMode.setId, this._lastKnownMode);
55
+ this._thermostatMode.currentValue = this._lastKnownMode;
56
+ this._powerState.currentValue = true;
57
+ }
58
+ else {
59
+ // set mode to OFF
60
+ const modeOffValue = this._thermostatMode.supportedModesAsEnum[ThermostatMode_1.default.OFF];
61
+ await AdapterProvider_1.default.setState(this._thermostatMode.setId, modeOffValue);
62
+ this._thermostatMode.currentValue = this._lastKnownMode;
63
+ this._powerState.currentValue = false;
64
+ }
65
+ }
66
+ else {
67
+ // just set the property
68
+ await AdapterProvider_1.default.setState(property.setId, value);
69
+ property.currentValue = value;
70
+ if (property.propertyName === ThermostatMode_1.default.propertyName) {
71
+ this._lastKnownMode = value;
72
+ if (!this.dedicatedOnOff) {
73
+ this._powerState.currentValue =
74
+ value !== this._thermostatMode.supportedModesAsEnum[ThermostatMode_1.default.OFF];
75
+ }
76
+ }
77
+ }
78
+ }
79
+ async getOrRetrieveCurrentValue(property) {
80
+ if (property.currentValue === undefined) {
81
+ property.currentValue = await AdapterProvider_1.default.getState(property.getId);
82
+ // convert mode != OFF to power = true
83
+ if (property.propertyName === this._powerState.propertyName && !this.dedicatedOnOff) {
84
+ property.currentValue =
85
+ property.currentValue !== this._thermostatMode.supportedModesAsEnum[ThermostatMode_1.default.OFF];
86
+ }
87
+ }
88
+ if (property.currentValue === undefined) {
89
+ throw new Error(`unable to retrieve ${property.getId}`);
90
+ }
91
+ return property.currentValue;
92
+ }
93
+ composeInitObject(property) {
94
+ 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
+ }
145
+ }
146
+ }
147
+ exports.default = AirCondition;
148
+ //# sourceMappingURL=AirCondition.js.map
@@ -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 type { Base as CapabilitiesBase } from '../Alexa/Capabilities/Base';\nimport TemperatureSensor from '../Alexa/Capabilities/TemperatureSensor';\nimport Temperature from '../Alexa/Properties/Temperature';\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 { AlexaV3Category, AlexaV3DirectiveValue, IotExternalDetectorState } from '../types';\n\nexport default class AirCondition extends AdjustableControl {\n private _thermostatController: ThermostatController | undefined;\n private _thermostatMode: ThermostatMode | undefined;\n private _powerController: PowerController | undefined;\n private _powerState: PowerState | undefined;\n private _lastKnownMode: number | string | undefined;\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 initCapabilities(): CapabilitiesBase[] {\n this._thermostatController = new ThermostatController();\n this._thermostatMode = this._thermostatController.thermostatMode;\n this._powerController = new PowerController();\n this._powerState = this._powerController.powerState;\n const result: CapabilitiesBase[] = [new TemperatureSensor(), this._thermostatController, this._powerController];\n for (const property of result.flatMap(item => item.properties)) {\n const initObject = this.composeInitObject(property);\n if (initObject) {\n property.init(initObject);\n } else {\n throw new Error(`Unable to initialize property ${property.propertyName}`);\n }\n }\n return result;\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 =\n value !== this._thermostatMode!.supportedModesAsEnum[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 composeInitObject(property: PropertiesBase):\n | {\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 | undefined {\n const map = this.statesMap;\n\n if (property.propertyName === PowerState.propertyName) {\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 if (property.propertyName === Temperature.propertyName) {\n return {\n setState: this.states[map.set]!,\n getState: this.states[map.actual] || this.states[map.set]!,\n };\n }\n\n if (property.propertyName === TargetSetpoint.propertyName) {\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 if (property.propertyName === ThermostatMode.propertyName) {\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}\n"]}
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const AdjustablePercentageControl_1 = __importDefault(require("./AdjustablePercentageControl"));
7
+ class Blind extends AdjustablePercentageControl_1.default {
8
+ get categories() {
9
+ return ['INTERIOR_BLIND'];
10
+ }
11
+ }
12
+ exports.default = Blind;
13
+ //# sourceMappingURL=Blind.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Blind.js","sourceRoot":"","sources":["../../../../src/lib/AlexaSmartHomeV3/Controls/Blind.ts"],"names":[],"mappings":";;;;;AAAA,gGAAwE;AAGxE,MAAqB,KAAM,SAAQ,qCAA2B;IAC1D,IAAI,UAAU;QACV,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAC9B,CAAC;CACJ;AAJD,wBAIC","sourcesContent":["import AdjustablePercentageControl from './AdjustablePercentageControl';\nimport type { AlexaV3Category } from '../types';\n\nexport default class Blind extends AdjustablePercentageControl {\n get categories(): AlexaV3Category[] {\n return ['INTERIOR_BLIND'];\n }\n}\n"]}
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const ContactSensor_1 = require("../Alexa/Capabilities/ContactSensor");
7
+ const ReadOnlyDetector_1 = __importDefault(require("./ReadOnlyDetector"));
8
+ class ContactSensor extends ReadOnlyDetector_1.default {
9
+ get capability() {
10
+ return new ContactSensor_1.ContactSensor();
11
+ }
12
+ get categories() {
13
+ return ['CONTACT_SENSOR'];
14
+ }
15
+ }
16
+ exports.default = ContactSensor;
17
+ //# sourceMappingURL=ContactSensor.js.map
@@ -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,IAAI,UAAU;QACV,OAAO,IAAI,6BAAyB,EAAE,CAAC;IAC3C,CAAC;IAED,IAAI,UAAU;QACV,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAC9B,CAAC;CACJ;AARD,gCAQC","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 } from '../types';\n\nexport default class ContactSensor extends ReadOnlyDetector {\n get capability(): CapabilitiesBase | undefined {\n return new ContactSensorCapabilities();\n }\n\n get categories(): AlexaV3Category[] {\n return ['CONTACT_SENSOR'];\n }\n}\n"]}