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 @@
1
+ {"version":3,"file":"remote.js","sourceRoot":"","sources":["../../src/lib/remote.ts"],"names":[],"mappings":"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","sourcesContent":["import axios, { type AxiosError } from 'axios';\nimport { deflateSync } from 'node:zlib';\nimport AdminSocket from './adminCommonSocket';\nimport type { IotAdapterConfig } from './types';\nimport type { device as DeviceModule } from 'aws-iot-device-sdk';\nimport type { IotAdapter } from '../main';\n\ntype MESSAGE_TYPE = number;\nconst MESSAGE_TYPES: Record<string, MESSAGE_TYPE> = {\n MESSAGE: 0,\n PING: 1,\n PONG: 2,\n CALLBACK: 3,\n READY: 4,\n WAIT: 5,\n SENDING_DONE: 6,\n MISSING: 7,\n TIMEOUT: 8,\n HTML: 9,\n COMBINED_CALLBACK: 10,\n COMBINED_MESSAGE: 11,\n};\n\nconst MAX_IOT_MESSAGE_LENGTH = 127 * 1024;\nconst MAX_POST_MESSAGE_LENGTH = 127 * 1024;\nconst MAX_FILE_SIZE = 4 * 1024 * 1024;\n\nconst COLLECT_OBJS_MS = 400;\nconst COLLECT_STATES_MS = 400;\nconst COLLECT_LOGS_MS = 800;\n\nconst NONE = '___none___';\n\ntype SessionID = string;\ntype SubscribeType = 'stateChange' | 'objectChange' | 'log';\ntype Socket = {\n _subscribe: {\n stateChange: { pattern: string; regex: RegExp }[];\n objectChange: { pattern: string; regex: RegExp }[];\n log: { pattern: string; regex: RegExp }[];\n };\n ts: number;\n name?: string;\n};\n\ntype SOCKET_PAYLOAD = [\n type: MESSAGE_TYPE,\n id: number,\n functionName: string,\n args: any[] | string | { error: string },\n readUrlOrTotalMultiPackageLength?: string | number,\n numberOfPacketInMultiPackage?: number,\n];\nexport type SOCKET_MESSAGE = {\n sid: SessionID;\n d: SOCKET_PAYLOAD;\n wu?: string;\n ru?: string;\n};\nexport type SOCKET_CHANGE_MESSAGE = {\n name: SubscribeType;\n args: string | [ioBroker.LogMessage[]] | [string[], (ioBroker.Object | null | undefined)[]];\n sid: SessionID;\n multi?: boolean;\n};\n\nexport type SOCKET_TRUNK = {\n sid: string;\n i: number;\n l: number;\n d: SOCKET_PAYLOAD;\n};\n\nexport default class RemoteAccess {\n private readonly adapter: IotAdapter;\n private device: DeviceModule | null = null;\n private gcInterval: NodeJS.Timeout | null = null;\n private name = {};\n private objects = {};\n private readonly packets: {\n [id: string]: {\n ts: number;\n trunks: SOCKET_TRUNK[];\n };\n } = {};\n private readonly statesCache: { [stateId: string]: string } = {};\n private listOfLogs: ioBroker.LogMessage[] = [];\n private listOfStates: { ids: string[]; states: (ioBroker.State | null | undefined)[] } = { ids: [], states: [] };\n private listOfObjects: { ids: string[]; objs: (ioBroker.Object | null | undefined)[] } = { ids: [], objs: [] };\n private readonly clientId: string;\n private readonly config: IotAdapterConfig;\n private readonly collectStatesMs: number;\n private readonly collectObjectsMs: number;\n private readonly collectLogsMs: number;\n private readonly handlers: { [funcName: string]: { f: (...args: any[]) => Promise<any>; args: number } };\n private subscribes: {\n stateChange: { [pattern: string]: number };\n objectChange: { [pattern: string]: number };\n log: { [pattern: string]: number };\n } = { stateChange: {}, objectChange: {}, log: {} };\n private sockets: { [socketId: SessionID]: Socket } = {};\n private vendorPrefix = '';\n private localAdmin: string | null = null;\n private webObj: ioBroker.InstanceObject | null = null;\n private webUrl: string = '';\n private adminObj: ioBroker.InstanceObject | null = null;\n private adminUrl: string = '';\n private lang: ioBroker.Languages = 'en';\n private sendObjectsTimeout: NodeJS.Timeout | null = null;\n private sendLogsTimeout: NodeJS.Timeout | null = null;\n private sendStatesTimeout: NodeJS.Timeout | null = null;\n private infoTimeout: NodeJS.Timeout | null = null;\n private secret: string = '';\n\n constructor(adapter: IotAdapter, clientId: string) {\n this.adapter = adapter;\n this.config = adapter.config;\n this.clientId = clientId;\n this.collectStatesMs =\n this.config.collectStatesMs === undefined\n ? COLLECT_STATES_MS\n : parseInt(this.config.collectStatesMs as string, 10);\n this.collectObjectsMs =\n this.config.collectObjectsMs === undefined\n ? COLLECT_OBJS_MS\n : parseInt(this.config.collectObjectsMs as string, 10);\n this.collectLogsMs =\n this.config.collectLogsMs === undefined\n ? COLLECT_LOGS_MS\n : parseInt(this.config.collectLogsMs as string, 10);\n\n this.handlers = {\n getObject: { f: this.adapter.getForeignObjectAsync.bind(this.adapter), args: 1 },\n setObject: { f: this.adapter.setForeignObjectAsync.bind(this.adapter), args: 2 },\n getState: { f: this.adapter.getForeignStateAsync.bind(this.adapter), args: 1 },\n setState: { f: this.adapter.setForeignStateAsync.bind(this.adapter), args: 2 },\n delState: { f: this.adapter.delForeignStateAsync.bind(this.adapter), args: 2 },\n getObjectView: { f: this.adapter.getObjectViewAsync.bind(this.adapter), args: 4 },\n delObject: { f: this.adapter.delForeignObjectAsync.bind(this.adapter), args: 2 },\n delObjects: { f: this.adapter.delForeignObjectAsync.bind(this.adapter), args: 2 },\n extendObject: { f: this.adapter.extendForeignObjectAsync.bind(this.adapter), args: 2 },\n getForeignStates: { f: this.adapter.getForeignStatesAsync.bind(this.adapter), args: 1 },\n getForeignObjects: { f: this.adapter.getForeignObjectsAsync.bind(this.adapter), args: 2 },\n fileExists: { f: this.adapter.fileExistsAsync.bind(this.adapter), args: 2 },\n chownFile: { f: this.adapter.chownFileAsync.bind(this.adapter), args: 3 },\n chmodFile: { f: this.adapter.chmodFileAsync.bind(this.adapter), args: 3 },\n deleteFolder: { f: this.adapter.unlinkAsync.bind(this.adapter), args: 2 },\n deleteFile: { f: this.adapter.unlinkAsync.bind(this.adapter), args: 2 },\n mkdir: { f: this.adapter.mkdirAsync.bind(this.adapter), args: 2 },\n renameFile: { f: this.adapter.renameAsync.bind(this.adapter), args: 3 },\n readDir: { f: this.adapter.readDirAsync.bind(this.adapter), args: 2 },\n changePassword: { f: this.adapter.setPasswordAsync.bind(this.adapter), args: 2 },\n };\n\n if (!this.config.remote) {\n return;\n }\n\n if (this.config.remoteAdminInstance) {\n try {\n this.localAdmin = require\n .resolve('iobroker.admin')\n .replace(/\\\\/g, '/')\n .replace(/main\\.js$/, 'www-react');\n } catch {\n this.localAdmin = null;\n this.adapter.log.warn('[REMOTE] Cannot read admin files while iobroker.admin was not found');\n }\n void this.adapter.getForeignObjectAsync(`system.adapter.${this.config.remoteAdminInstance}`).then(obj => {\n this.adminObj = obj || null;\n if (obj?.native && !obj.native.auth) {\n this.adminUrl = `${obj.native.secure ? 'https:' : 'http:'}//localhost:${obj.native.port}`;\n }\n });\n }\n if (this.config.remoteWebInstance) {\n void this.adapter.getForeignObjectAsync(`system.adapter.${this.config.remoteWebInstance}`).then(obj => {\n this.webObj = obj || null;\n if (obj?.native && !obj.native.auth) {\n this.webUrl = `${obj.native.secure ? 'https:' : 'http:'}//localhost:${obj.native.port}`;\n }\n });\n }\n\n void this.adapter.getForeignObjectAsync('system.meta.uuid').then(obj => {\n if (obj?.native) {\n this.vendorPrefix = obj.native.uuid.length > 36 ? obj.native.uuid.substring(0, 2) : '';\n }\n });\n }\n\n setLanguage(_lang: ioBroker.Languages): void {\n this.lang = _lang || 'de';\n }\n\n registerDevice(device: DeviceModule): void {\n this.device = device;\n }\n\n async _sendCachedStates(): Promise<void> {\n const sids = Object.keys(this.sockets);\n\n const listOfStates = this.listOfStates;\n // clear cache\n this.listOfStates = { ids: [], states: [] };\n\n if (sids.length) {\n this.adapter.log.debug(\n `Send to ${sids.length} sockets: ${listOfStates.ids.map((id, i) => `${id}: ${listOfStates.states[i]?.val}`).join(', ')}`,\n );\n\n // pack the data\n const data = JSON.stringify([listOfStates.ids, listOfStates.states]);\n const args = deflateSync(data).toString('base64');\n\n for (let s = 0; s < sids.length; s++) {\n const error = await this._sendEvent({ name: 'stateChange', args, sid: sids[s], multi: true });\n if (error) {\n this.adapter.log.warn(`[REMOTE] cannot send \"stateChange\": ${JSON.stringify(error)}`);\n }\n }\n }\n }\n\n updateState(id: string, state: ioBroker.State | null | undefined): void {\n if (!this.config.remote) {\n return;\n }\n const cache = JSON.stringify(state);\n\n if (this.statesCache[id] && this.statesCache[id] !== cache) {\n if (this.config.debug) {\n this.adapter.log.debug(`[REMOTE] send stateChange \"${id}\": ${JSON.stringify(state)}`);\n }\n\n this.statesCache[id] = cache;\n\n this.listOfStates.ids.push(id);\n this.listOfStates.states.push(JSON.parse(JSON.stringify(state)));\n\n // do not wait if the list will be too long\n if (this.listOfStates.ids.length > 70) {\n if (this.sendObjectsTimeout) {\n clearTimeout(this.sendObjectsTimeout);\n this.sendObjectsTimeout = null;\n }\n this._sendCachedStates().catch(e => this.adapter.log.error(`[REMOTE] Cannot send cached states: ${e}`));\n } else {\n this.sendObjectsTimeout ||= setTimeout(() => {\n this.sendObjectsTimeout = null;\n this._sendCachedStates().catch(e =>\n this.adapter.log.error(`[REMOTE] Cannot send cached states: ${e}`),\n );\n }, this.collectStatesMs);\n }\n } else {\n // this.adapter.log.debug(`[REMOTE] ignore stateChange \"${id}\": ${JSON.stringify(state)}`);\n }\n }\n\n updateObject(id: string, obj: ioBroker.Object | null | undefined): void {\n if (!this.config.remote) {\n return;\n }\n this.listOfObjects.ids.push(id);\n this.listOfObjects.objs.push(JSON.parse(JSON.stringify(obj)));\n\n if (this.sendObjectsTimeout) {\n clearTimeout(this.sendObjectsTimeout);\n }\n\n this.sendObjectsTimeout = setTimeout(async () => {\n this.sendObjectsTimeout = null;\n const listOfObjects = this.listOfObjects;\n this.listOfObjects = { ids: [], objs: [] };\n const sids = Object.keys(this.sockets);\n\n for (let s = 0; s < sids.length; s++) {\n const error = await this._sendEvent({\n name: 'objectChange',\n args: [listOfObjects.ids, listOfObjects.objs],\n sid: sids[s],\n multi: true,\n });\n if (error) {\n this.adapter.log.warn(`[REMOTE] cannot send \"objectChange\": ${JSON.stringify(error)}`);\n }\n }\n }, COLLECT_OBJS_MS);\n }\n\n onLog(obj: ioBroker.LogMessage): void {\n if (!this.config.remote) {\n return;\n }\n this.listOfLogs.push(obj);\n\n if (this.sendLogsTimeout) {\n clearTimeout(this.sendLogsTimeout);\n }\n\n this.sendLogsTimeout = setTimeout(async () => {\n this.sendLogsTimeout = null;\n const listOfLogs = this.listOfLogs;\n this.listOfLogs = [];\n const sids = Object.keys(this.sockets);\n for (let s = 0; s < sids.length; s++) {\n const error = await this._sendEvent({\n name: 'log',\n args: [listOfLogs],\n sid: sids[s],\n multi: true,\n });\n if (error) {\n this.adapter.log.error(`[REMOTE] cannot send \"log\": ${JSON.stringify(error)}`);\n }\n }\n }, COLLECT_LOGS_MS);\n }\n\n destroy(): void {\n if (this.gcInterval) {\n clearInterval(this.gcInterval);\n this.gcInterval = null;\n }\n if (this.sendLogsTimeout) {\n clearTimeout(this.sendLogsTimeout);\n this.sendLogsTimeout = null;\n }\n if (this.sendObjectsTimeout) {\n clearTimeout(this.sendObjectsTimeout);\n this.sendObjectsTimeout = null;\n }\n if (this.sendStatesTimeout) {\n clearTimeout(this.sendStatesTimeout);\n this.sendStatesTimeout = null;\n }\n AdminSocket.stopGB();\n this._unsubscribeAll();\n this.sockets = {};\n }\n\n _clearMemory(): void {\n const now = Date.now();\n const DAY = 36000000 * 3;\n Object.keys(this.sockets).forEach(sid => {\n if (now - this.sockets[sid].ts > DAY) {\n this._unsubscribeSocket(sid, 'stateChange');\n this._unsubscribeSocket(sid, 'objectChange');\n this._unsubscribeSocket(sid, 'log');\n delete this.sockets[sid];\n }\n });\n\n Object.keys(this.packets).forEach(id => {\n if (now - this.packets[id].ts > 120000) {\n delete this.packets[id];\n }\n });\n }\n\n _readAllObjects(): Promise<{ [id: string]: ioBroker.Object }> {\n return this.adapter.getObjectListAsync({ include_docs: true }).then(res => {\n const objects: { [id: string]: ioBroker.Object } = {};\n this.adapter.log.info('[REMOTE] received all objects');\n if (res?.rows) {\n for (let i = 0; i < res.rows.length; i++) {\n objects[res.rows[i].doc._id] = res.rows[i].doc;\n }\n }\n return objects;\n });\n }\n\n pattern2RegEx(pattern: string): string | null {\n if (!pattern || typeof pattern !== 'string') {\n return null;\n }\n if (pattern !== '*') {\n if (pattern[0] === '*' && pattern[pattern.length - 1] !== '*') {\n pattern += '$';\n }\n if (pattern[0] !== '*' && pattern[pattern.length - 1] === '*') {\n pattern = `^${pattern}`;\n }\n }\n pattern = pattern.replace(/\\./g, '\\\\.');\n pattern = pattern.replace(/\\*/g, '.*');\n pattern = pattern.replace(/\\[/g, '\\\\[');\n pattern = pattern.replace(/]/g, '\\\\]');\n pattern = pattern.replace(/\\(/g, '\\\\(');\n pattern = pattern.replace(/\\)/g, '\\\\)');\n return pattern;\n }\n\n _subscribe(sid: SessionID, type: SubscribeType, pattern: string): void {\n //console.log((socket._name || socket.id) + ' subscribe ' + pattern);\n const socket = this.sockets[sid];\n\n this.subscribes[type] ||= {};\n\n let s: { pattern: string; regex: RegExp }[] | undefined;\n if (socket) {\n socket._subscribe[type] ||= [];\n s = socket._subscribe[type];\n for (let i = 0; i < s.length; i++) {\n if (s[i].pattern === pattern) {\n return;\n }\n }\n }\n\n const p = this.pattern2RegEx(pattern);\n if (p === null) {\n return this.adapter.log.warn('[REMOTE] Empty or invalid pattern on subscribe!');\n }\n if (s) {\n s.push({ pattern, regex: new RegExp(p) });\n }\n\n if (this.subscribes[type][pattern] === undefined) {\n this.subscribes[type][pattern] = 1;\n if (type === 'stateChange') {\n this.adapter.log.debug(`[REMOTE] Subscribe STATES: ${pattern}`);\n this.adapter.subscribeForeignStates(pattern);\n } else if (type === 'objectChange') {\n this.adapter.log.debug(`[REMOTE] Subscribe OBJECTS: ${pattern}`);\n this.adapter.subscribeForeignObjects?.(pattern);\n } else if (type === 'log') {\n this.adapter.log.debug('[REMOTE] Subscribe LOGS');\n void this.adapter.requireLog?.(true);\n }\n } else {\n this.subscribes[type][pattern]++;\n }\n }\n\n _showSubscribes(sid: SessionID, type: SubscribeType): void {\n const socket = this.sockets[sid];\n\n if (socket?._subscribe) {\n const s = socket._subscribe[type] || [];\n const ids = [];\n for (let i = 0; i < s.length; i++) {\n ids.push(s[i].pattern);\n }\n this.adapter.log.debug(`[REMOTE] Subscribes: ${ids.join(', ')}`);\n } else {\n this.adapter.log.debug('[REMOTE] Subscribes: no subscribes');\n }\n }\n\n _updateConnectedInfo(): void {\n if (this.infoTimeout) {\n clearTimeout(this.infoTimeout);\n this.infoTimeout = null;\n }\n\n // TODO\n // this.adapter.setState('info.connection', text, true);\n }\n\n _unsubscribe(sid: SessionID, type: SubscribeType, pattern?: string): void {\n const socket = this.sockets[sid];\n this.subscribes[type] ||= {};\n\n if (socket && typeof socket === 'object') {\n if (!socket._subscribe?.[type]) {\n return;\n }\n\n for (let i = socket._subscribe[type].length - 1; i >= 0; i--) {\n if (socket._subscribe[type][i].pattern === pattern) {\n // Remove pattern from global list\n if (this.subscribes[type][pattern] !== undefined) {\n this.subscribes[type][pattern]--;\n if (this.subscribes[type][pattern] <= 0) {\n if (type === 'stateChange') {\n this.adapter.log.debug(`[REMOTE] Unsubscribe STATES: ${pattern}`);\n //console.log((socket._name || socket.id) + ' unsubscribeForeignStates ' + pattern);\n this.adapter.unsubscribeForeignStates(pattern);\n } else if (type === 'objectChange') {\n this.adapter.log.debug(`[REMOTE] Unsubscribe OBJECTS: ${pattern}`);\n //console.log((socket._name || socket.id) + ' unsubscribeForeignObjects ' + pattern);\n this.adapter.unsubscribeForeignObjects &&\n this.adapter.unsubscribeForeignObjects(pattern);\n } else if (type === 'log') {\n //console.log((socket._name || socket.id) + ' requireLog false');\n this.adapter.log.debug('[REMOTE] Unsubscribe LOGS');\n void this.adapter.requireLog?.(false);\n }\n delete this.subscribes[type][pattern];\n }\n }\n\n socket._subscribe[type].splice(i, 1);\n return;\n }\n }\n } else if (pattern) {\n // Remove pattern from global list\n if (this.subscribes[type][pattern] !== undefined) {\n this.subscribes[type][pattern]--;\n if (this.subscribes[type][pattern] <= 0) {\n if (type === 'stateChange') {\n this.adapter.log.debug(`[REMOTE] Unsubscribe STATES: ${pattern}`);\n this.adapter.unsubscribeForeignStates(pattern);\n } else if (type === 'objectChange') {\n this.adapter.log.debug(`[REMOTE] Unsubscribe OBJECTS: ${pattern}`);\n this.adapter.unsubscribeForeignObjects?.(pattern);\n } else if (type === 'log') {\n this.adapter.log.debug('[REMOTE] Unsubscribe LOGS');\n void this.adapter.requireLog?.(false);\n }\n delete this.subscribes[type][pattern];\n }\n }\n }\n }\n\n _unsubscribeAll(): void {\n Object.keys(this.sockets).forEach(sid => {\n this._unsubscribe(sid, 'stateChange');\n this._unsubscribe(sid, 'objectChange');\n this._unsubscribe(sid, 'log');\n });\n }\n\n _unsubscribeSocket(sid: SessionID, type: SubscribeType): void {\n const socket = this.sockets[sid];\n\n if (!socket?._subscribe?.[type]) {\n return;\n }\n\n for (let i = 0; i < socket._subscribe[type].length; i++) {\n const pattern = socket._subscribe[type][i].pattern;\n if (this.subscribes[type][pattern] !== undefined) {\n this.subscribes[type][pattern]--;\n if (this.subscribes[type][pattern] <= 0) {\n if (type === 'stateChange') {\n this.adapter.log.debug(`[REMOTE] Unsubscribe STATES: ${pattern}`);\n this.adapter.unsubscribeForeignStates(pattern);\n } else if (type === 'objectChange') {\n this.adapter.log.debug(`[REMOTE] Unsubscribe OBJECTS: ${pattern}`);\n this.adapter.unsubscribeForeignObjects?.(pattern);\n } else if (type === 'log') {\n this.adapter.log.debug(`[REMOTE] Unsubscribe LOGS: ${pattern}`);\n void this.adapter.requireLog?.(false);\n }\n delete this.subscribes[type][pattern];\n }\n }\n }\n }\n\n _subscribeSocket(sid: SessionID, type: SubscribeType): void {\n const socket = this.sockets[sid];\n\n if (!socket?._subscribe?.[type]) {\n return;\n }\n\n for (let i = 0; i < socket._subscribe[type].length; i++) {\n const pattern = socket._subscribe[type][i].pattern;\n if (this.subscribes[type][pattern] === undefined) {\n this.subscribes[type][pattern] = 1;\n if (type === 'stateChange') {\n this.adapter.log.debug(`[REMOTE] Subscribe STATES: ${pattern}`);\n this.adapter.subscribeForeignStates(pattern);\n } else if (type === 'objectChange') {\n this.adapter.log.debug(`[REMOTE] Subscribe OBJECTS: ${pattern}`);\n this.adapter.subscribeForeignObjects?.(pattern);\n } else if (type === 'log') {\n this.adapter.log.debug('[REMOTE] Subscribe LOGS');\n void this.adapter.requireLog?.(true);\n }\n } else {\n this.subscribes[type][pattern]++;\n }\n }\n }\n\n _sendEvent(\n message: SOCKET_MESSAGE | SOCKET_CHANGE_MESSAGE,\n _originalMessage?: SOCKET_MESSAGE,\n ): Promise<string | undefined> {\n return axios\n .post('https://remote-events.iobroker.in/', message, {\n validateStatus: status => status === 200,\n timeout: 5000,\n })\n .then(() => undefined)\n .catch(error => {\n let errorMessage: any;\n if ((error as AxiosError).response) {\n errorMessage = (error as AxiosError).response!.data || (error as AxiosError).response!.status;\n } else {\n errorMessage = error.message?.toString();\n }\n\n this.adapter.log.warn(\n `[REMOTE] Cannot send status update to ${message.sid} (${JSON.stringify(_originalMessage)}): ${JSON.stringify(errorMessage)}`,\n );\n\n if (errorMessage.error === 'invalid connectionId') {\n if (this.sockets[message.sid]) {\n this.adapter.log.debug(`[REMOTE] delete connection id ${message.sid}`);\n delete this.sockets[message.sid];\n }\n errorMessage = false;\n } else {\n this.adapter.log.warn(\n `[REMOTE] Cannot send status update to \"${message.sid}\" (${JSON.stringify(_originalMessage)}): ${JSON.stringify(errorMessage)}`,\n );\n }\n\n return JSON.stringify(errorMessage);\n });\n }\n\n async _getStatesManyArgs(\n args: [string][],\n ): Promise<[error: string | null, states?: Record<string, ioBroker.State>][]> {\n const response: [error: string | null, states?: Record<string, ioBroker.State>][] = [];\n for (let a = 0; a < args.length; a++) {\n const id = args[a][0];\n try {\n const result: Record<string, ioBroker.State> = await this.adapter.getForeignStatesAsync(id || '*');\n response[a] = [null, result];\n if (result) {\n Object.keys(result).forEach(id => (this.statesCache[id] = JSON.stringify(result[id])));\n }\n } catch (error) {\n response[a] = [error];\n }\n }\n return response;\n }\n\n async _getStateManyArgs(\n args: [string][],\n ): Promise<[error: string | null, state?: ioBroker.State | null | undefined][]> {\n const response: [error: string | null, state?: ioBroker.State | null | undefined][] = [];\n for (let a = 0; a < args.length; a++) {\n const id = args[a][0];\n try {\n const result = await this.adapter.getForeignStateAsync(id || '*');\n response[a] = [null, result];\n this.statesCache[id] = JSON.stringify(result);\n } catch (error) {\n response[a] = [error];\n }\n }\n return response;\n }\n\n async _getObjectManyArgs(\n args: [string][],\n ): Promise<[error: string | null, state?: ioBroker.Object | null | undefined][]> {\n const response: [error: string | null, state?: ioBroker.Object | null | undefined][] = [];\n for (let a = 0; a < args.length; a++) {\n const id = args[a][0];\n try {\n const result = await this.adapter.getForeignObjectAsync(id || '*');\n response[a] = [null, result];\n } catch (error) {\n response[a] = [error];\n }\n }\n return response;\n }\n\n _subscribeManyArgs(sid: SessionID, args: [string | string[]][]): Promise<[error: string | null][]> {\n const result: [error: string | null][] = [];\n for (let a = 0; a < args.length; a++) {\n const pattern = args[a][0];\n if (Array.isArray(pattern)) {\n for (let p = 0; p < pattern.length; p++) {\n this._subscribe(sid, 'stateChange', pattern[p]);\n }\n } else {\n this._subscribe(sid, 'stateChange', pattern);\n }\n result.push([null]);\n }\n return Promise.resolve(result);\n }\n\n async _unsubscribeManyArgs(sid: SessionID, args: [string | string[]][]): Promise<[error: string | null][]> {\n const result: [error: string | null][] = [];\n for (let a = 0; a < args.length; a++) {\n const pattern = args[a][0];\n if (Array.isArray(pattern)) {\n for (let p = 0; p < pattern.length; p++) {\n this._unsubscribe(sid, 'stateChange', pattern[p]);\n }\n } else {\n this._unsubscribe(sid, 'stateChange', pattern);\n }\n result.push([null]);\n }\n return Promise.resolve(result);\n }\n\n uploadToServer(url: string, data: { file: string; mimeType: string }, raw?: boolean): Promise<boolean> {\n return axios\n .put(url, raw ? data.file : Buffer.from(data.file, 'base64'), {\n headers: {\n 'Content-Type': data.mimeType,\n },\n })\n .then(() => {\n return true;\n })\n .catch(e => {\n console.log(e);\n return false;\n });\n }\n\n readUrlFile(\n url: string,\n path: string,\n sid: SessionID,\n type: MESSAGE_TYPE,\n id: number,\n ): Promise<{ file: string; mimeType: string } | SOCKET_MESSAGE> {\n return axios(url + path, {\n responseType: 'arraybuffer',\n validateStatus: status => status === 200,\n timeout: 500,\n })\n .then(response => {\n // replace port\n if (path.endsWith('_socket/info.js')) {\n response.data = response.data.toString();\n // var socketUrl = \":8084\"; var socketSession = \"\"; window.sysLang = \"ru\"; window.socketForceWebSockets = false;\n // replace \":8084\"; => \"\";\n response.data = response.data.replace(/\":\\d+\";/, '\"\";');\n }\n\n return {\n file: Buffer.from(response.data).toString('base64'),\n mimeType: response.headers['content-type'],\n };\n })\n .catch(error => {\n this.adapter.log.warn(`[REMOTE] File ${url}${path} not found`);\n let errorMessage;\n if (error.response && error.response.status === 404) {\n errorMessage = 'Not exists';\n } else if (error.response && error.response.status === 401) {\n errorMessage = 'Not authorised';\n } else {\n if (error.response) {\n errorMessage = error.response.data || error.response.status;\n } else if (error.request) {\n errorMessage = 'No answer';\n } else {\n errorMessage = error.message;\n }\n }\n return { sid, d: [type, id, '', { error: errorMessage }] };\n });\n }\n\n _sendResponse(\n sid: SessionID,\n _type: MESSAGE_TYPE,\n id: number,\n name: string,\n args: any[],\n writeUrl?: string,\n readUrl?: string,\n ): Promise<SOCKET_MESSAGE> {\n let packed = deflateSync(JSON.stringify(args)).toString('base64');\n\n if (packed.length > MAX_IOT_MESSAGE_LENGTH) {\n if (writeUrl) {\n if (args.length === 3) {\n const [error, file, mimeType] = args;\n if (!error) {\n return this.uploadToServer(writeUrl, { file, mimeType }, true).then(done => ({\n sid,\n d: [_type, id, name, done ? readUrl! : ['Cannot upload']],\n }));\n }\n } else if (args.length === 2) {\n const [error, result] = args;\n if (!error) {\n return this.uploadToServer(\n writeUrl,\n { file: JSON.stringify(result), mimeType: 'application/json' },\n true,\n ).then(done => ({ sid, d: [_type, id, name, done ? readUrl! : ['Cannot upload']] }));\n }\n } else if (args.length === 1) {\n const [result] = args;\n return this.uploadToServer(\n writeUrl,\n { file: JSON.stringify(result), mimeType: 'application/json' },\n true,\n ).then(done => ({ sid, d: [_type, id, name, done ? readUrl! : ['Cannot upload']] }));\n }\n }\n // too big message. Do not use iot for that and send directly to socket\n /*const packets = []\n while (packed.length > MAX_IOT_MESSAGE_LENGTH) {\n const trunk = packed.substring(0, MAX_IOT_MESSAGE_LENGTH);\n packed = packed.substring(MAX_IOT_MESSAGE_LENGTH);\n packets.push(trunk);\n }\n if (packed.length) {\n packets.push(packed);\n }\n\n const trunks = packets.map((trunk, i) =>\n sid: message.sid, i, l: packets.length, d: [_type, id, name, trunk]}));\n\n this.packets[id] = {ts: Date.now(), trunks};\n\n // start garbage collector\n this.gcInterval = this.gcInterval || setInterval(() => this._clearMemory(), 60000);\n\n return trunks;*/\n setImmediate(async () => {\n if (packed.length > MAX_POST_MESSAGE_LENGTH) {\n // too big message. Do not use iot for that and send directly to socket\n const packets: string[] = [];\n while (packed.length > MAX_POST_MESSAGE_LENGTH) {\n const trunk = packed.substring(0, MAX_POST_MESSAGE_LENGTH);\n packed = packed.substring(MAX_POST_MESSAGE_LENGTH);\n packets.push(trunk);\n }\n if (packed.length) {\n packets.push(packed);\n }\n\n for (let i = 0; i < packets.length; i++) {\n const error = await this._sendEvent({\n sid,\n d: [_type, id, name, packets[i], packets.length, i],\n });\n if (error) {\n this.adapter.log.error(`[REMOTE] cannot send: ${JSON.stringify(error)}`);\n break;\n }\n }\n } else {\n await this._sendEvent({ sid, d: [_type, id, name, packed] });\n }\n });\n\n return Promise.resolve({ sid, d: [MESSAGE_TYPES.WAIT, id, name, [packed.length]] });\n }\n return Promise.resolve({ sid, d: [_type, id, name, packed] });\n }\n\n onCloudDisconnect(): void {\n // delete all sockets\n this.adapter.log.debug(`[REMOTE] Cloud disconnected`);\n if (!this.sockets) {\n return;\n }\n\n const sids = Object.keys(this.sockets);\n for (let s = 0; s < sids.length; s++) {\n this._unsubscribeSocket(sids[s], 'stateChange');\n this._unsubscribeSocket(sids[s], 'objectChange');\n this._unsubscribeSocket(sids[s], 'log');\n delete this.sockets[sids[s]];\n }\n }\n\n process(\n request: string | SOCKET_MESSAGE,\n serviceType: `remote${string}`,\n ): Promise<'___none___' | SOCKET_MESSAGE | SOCKET_TRUNK[]> {\n let message: SOCKET_MESSAGE | null;\n if (typeof request === 'string') {\n try {\n message = JSON.parse(request);\n } catch {\n this.adapter.log.error(`[REMOTE] Cannot parse request: ${request}`);\n message = null;\n }\n } else {\n message = request;\n }\n\n if (message) {\n const [_type, id, name, args, readUrl] = message.d;\n let promiseOne: Promise<any> | undefined; // answer will be created automatically (error, result)\n let promiseResult: Promise<SOCKET_MESSAGE | '___none___'> | undefined; // answer will be created by promise\n\n if (this.config.remote && _type === MESSAGE_TYPES.MISSING) {\n if (this.packets[id]) {\n const missing = (args as number[][])[0];\n this.adapter.log.warn(\n `[REMOTE] Request for existing trunks: ${id}, \"${name}\": ${JSON.stringify(missing)}`,\n );\n\n if (this.device) {\n setImmediate(async () => {\n try {\n for (let m = 0; m < missing.length; m++) {\n await new Promise<void>((resolve, reject) =>\n this.device!.publish(\n `response/${this.clientId}/${serviceType}`,\n JSON.stringify(this.packets[id].trunks[m]),\n { qos: 1 },\n error => {\n if (error) {\n reject(error);\n } else {\n resolve();\n }\n },\n ),\n );\n }\n } catch (err) {\n this.adapter.log.error(`[REMOTE] Cannot send packet: ${err}`);\n }\n });\n }\n } else {\n this.adapter.log.warn(`[REMOTE] Request for non existing trunks: ${id}, \"${name}\"`);\n }\n promiseResult = Promise.resolve(NONE);\n } else if (this.config.remote && _type === MESSAGE_TYPES.SENDING_DONE) {\n this.adapter.log.debug(`[REMOTE] Packet received: ${id}, \"${name}\"`);\n delete this.packets[id];\n promiseResult = Promise.resolve(NONE);\n } else if (_type === MESSAGE_TYPES.HTML) {\n let promiseFile: Promise<SOCKET_MESSAGE | { file: string; mimeType: string }>;\n\n if (!this.config.remote) {\n return Promise.resolve({ sid: message.sid, d: [_type, id, '', ['Not enabled']] });\n } else if (name === 'listOfPrograms' || name === '/listOfPrograms') {\n promiseFile = AdminSocket.getListOfAllAdapters(this.adapter)\n .then(result => {\n const packed = deflateSync(JSON.stringify([null, result])).toString('base64');\n return { sid: message.sid, d: [_type, id, '', packed] } as SOCKET_MESSAGE;\n })\n .catch(\n error =>\n ({\n sid: message.sid,\n d: [_type, id, '', [error.toString()]],\n }) as SOCKET_MESSAGE,\n );\n } else if (name === 'vendorPrefix' || name === '/vendorPrefix') {\n return Promise.resolve({ sid: message.sid, d: [_type, id, '', [null, this.vendorPrefix]] });\n } else if (name.startsWith('/adapter')) {\n if (this.config.remoteAdminInstance) {\n if (this.adminUrl) {\n promiseFile = this.readUrlFile(this.adminUrl, name, message.sid, _type, id);\n } else {\n promiseFile = Promise.resolve({\n sid: message.sid,\n d: [_type, id, '', { error: 'Not exists' }],\n });\n }\n } else {\n promiseFile = Promise.resolve({\n sid: message.sid,\n d: [_type, id, '', { error: 'Not exists' }],\n });\n }\n } else {\n const path = name.split('?')[0];\n const parts = path.split('/');\n parts.shift(); // remove leading /\n const _adapter = parts.shift() || '';\n this.adapter.log.debug(`[REMOTE] HTML: ${path}`);\n\n // html must be returned only by iot channel, as lambda must process the answer\n promiseFile = this.adapter\n .readFileAsync(_adapter, parts.join('/'))\n .then(data => {\n data.file = Buffer.from(data.file).toString('base64');\n return data as { file: string; mimeType: string };\n })\n .catch(() => {\n if (this.webUrl) {\n // try to read from server\n return this.readUrlFile(this.webUrl, path, message.sid, _type, id);\n }\n return {\n sid: message.sid,\n d: [_type, id, '', { error: 'Not exists' }],\n };\n });\n }\n\n return promiseFile.then(\n (\n data: SOCKET_MESSAGE | { file: string; mimeType: string },\n ): Promise<SOCKET_MESSAGE | SOCKET_TRUNK[]> => {\n // if error\n if ((data as SOCKET_MESSAGE).sid) {\n return Promise.resolve(data as SOCKET_MESSAGE);\n }\n const dataFile = data as { file: string; mimeType: string };\n let packed = deflateSync(JSON.stringify(data)).toString('base64');\n if (\n typeof args === 'string' &&\n args?.startsWith('https:') &&\n packed.length > MAX_IOT_MESSAGE_LENGTH\n ) {\n // upload file to temp server\n return this.uploadToServer(args, dataFile).then(done => ({\n sid: message.sid,\n d: [_type, id, '', done ? '_$%URL' : 'Cannot upload'],\n }));\n }\n\n if (dataFile.file.length > MAX_FILE_SIZE) {\n // file too big\n this.adapter.log.warn(\n `[REMOTE] Requested file ${name} is too big (${Math.round(dataFile.file.length / 1000)}Kb). Max length is ${MAX_FILE_SIZE / 1024}Kb`,\n );\n return Promise.resolve({\n sid: message.sid,\n d: [\n _type,\n id,\n '',\n {\n error: `File is too big: ${Math.round(dataFile.file.length / 1000)}Kb, max ${MAX_FILE_SIZE / 1024}Kb`,\n },\n ],\n });\n }\n\n if (packed.length > MAX_IOT_MESSAGE_LENGTH) {\n const packets: string[] = [];\n while (packed.length > MAX_IOT_MESSAGE_LENGTH) {\n const trunk = packed.substring(0, MAX_IOT_MESSAGE_LENGTH);\n packed = packed.substring(MAX_IOT_MESSAGE_LENGTH);\n packets.push(trunk);\n }\n if (packed.length) {\n packets.push(packed);\n }\n\n const trunks: SOCKET_TRUNK[] = packets.map((trunk, i) => ({\n sid: message.sid,\n i,\n l: packets.length,\n d: [_type, id, '', trunk],\n }));\n\n this.packets[id] = { ts: Date.now(), trunks };\n\n // start garbage collector\n this.gcInterval = this.gcInterval || setInterval(() => this._clearMemory(), 60000);\n\n return Promise.resolve(trunks);\n }\n return Promise.resolve({ sid: message.sid, d: [_type, id, '', packed] });\n },\n );\n }\n\n if (!this.config.remote) {\n promiseResult = Promise.resolve({ sid: message.sid, d: [_type, id, name, ['Not enabled']] });\n }\n let isNew = false;\n if (this.sockets) {\n if (!this.sockets[message.sid]) {\n this.adapter.log.debug(`[REMOTE] +++++ CONNECT ${message.sid}`);\n this.sockets[message.sid] = {\n _subscribe: {\n stateChange: [],\n objectChange: [],\n log: [],\n },\n ts: Date.now(),\n };\n isNew = true;\n } else {\n this.sockets[message.sid].ts = Date.now();\n }\n }\n\n if (promiseResult) {\n // this answer will be processed at the very end of the function\n } else if (_type === MESSAGE_TYPES.COMBINED_CALLBACK || _type === MESSAGE_TYPES.COMBINED_MESSAGE) {\n let promiseMany: Promise<[error: string | null, result?: any][]> | undefined;\n if (name === 'getStates') {\n promiseMany = this._getStatesManyArgs(args as [string][]);\n } else if (name === 'getState') {\n promiseMany = this._getStateManyArgs(args as [string][]);\n } else if (name === 'getObject') {\n promiseMany = this._getObjectManyArgs(args as [string][]);\n } else if (name === 'subscribe' || name === 'subscribeStates') {\n promiseMany = this._subscribeManyArgs(message.sid, args as [string | string[]][]);\n } else if (name === 'unsubscribe' || name === 'unsubscribeStates') {\n promiseMany = this._unsubscribeManyArgs(message.sid, args as [string | string[]][]);\n } else if (name === 'ppng') {\n // ping\n promiseResult = Promise.resolve({ sid: message.sid, d: [_type, id, name, [0, isNew ? 0 : 1]] }); // 1 is OK, 0 is not OK\n } else {\n // error\n this.adapter.log.error(`[REMOTE] Received unknown multiple request: ${name}`);\n promiseResult = Promise.resolve({ sid: message.sid, d: [_type, id, name, ['Unknown command']] });\n }\n if (promiseMany) {\n promiseResult = promiseMany\n .then(result => this._sendResponse(message.sid, _type, id, name, result))\n /* let packed = zlib.deflateSync(JSON.stringify(result)).toString('base64');\n\n if (packed.length > MAX_IOT_MESSAGE_LENGTH) {\n setImmediate(async () => {\n if (packed.length > MAX_POST_MESSAGE_LENGTH) {\n // too big message. Do not use iot for that and send directly to socket\n const packets = []\n while (packed.length > MAX_POST_MESSAGE_LENGTH) {\n const trunk = packed.substring(0, MAX_POST_MESSAGE_LENGTH);\n packed = packed.substring(MAX_POST_MESSAGE_LENGTH);\n packets.push(trunk);\n }\n if (packed.length) {\n packets.push(packed);\n }\n\n for (let i = 0; i < packets.length; i++) {\n const error = await this._sendEvent({sid: message.sid, d: [_type, id, name, packets[i], packets.length, i]});\n if (error) {\n this.adapter.log.error('[REMOTE] cannot send: ' + JSON.stringify(error));\n break;\n }\n }\n } else {\n await this._sendEvent({sid: message.sid, d: [_type, id, name, packed]});\n }\n });\n return {sid: message.sid, d: [MESSAGE_TYPES.WAIT, id, name, [packed.length]]};\n } else {\n return {sid: message.sid, d: [_type, id, name, packed]};\n }\n })*/\n .catch(error => ({ sid: message.sid, d: [_type, id, name, [error]] }) as SOCKET_MESSAGE);\n }\n } else if (this.handlers[name]) {\n const argsArray = args as any[];\n if (!this.handlers[name].args) {\n promiseOne = this.handlers[name].f();\n } else if (this.handlers[name].args === 1) {\n promiseOne = this.handlers[name].f(argsArray[0]);\n } else if (this.handlers[name].args === 2) {\n promiseOne = this.handlers[name].f(argsArray[0], argsArray[1]);\n } else if (this.handlers[name].args === 3) {\n promiseOne = this.handlers[name].f(argsArray[0], argsArray[1], argsArray[2]);\n } else if (this.handlers[name].args === 4) {\n promiseOne = this.handlers[name].f(argsArray[0], argsArray[1], argsArray[2], argsArray[3]);\n } else if (this.handlers[name].args === 5) {\n promiseOne = this.handlers[name].f(\n argsArray[0],\n argsArray[1],\n argsArray[2],\n argsArray[3],\n argsArray[4],\n );\n } else if (this.handlers[name].args === 6) {\n promiseOne = this.handlers[name].f(\n argsArray[0],\n argsArray[1],\n argsArray[2],\n argsArray[3],\n argsArray[4],\n argsArray[5],\n );\n } else {\n this.adapter.log.warn('[REMOTE] Unsupported number of arguments');\n }\n } else if (name === 'ppng') {\n // ping\n promiseResult = Promise.resolve({ sid: message.sid, d: [_type, id, name, [null, !isNew]] });\n } else if (name === 'name') {\n const socket = this.sockets[message.sid];\n if (socket.name === undefined) {\n socket.name = name;\n this.adapter.log.info(`[REMOTE] socket ${message.sid} connected with name \"${name}\"`);\n } else if (socket.name !== name) {\n this.adapter.log.warn(\n `[REMOTE] socket ${message.sid} changed socket name from ${socket.name} to ${name}`,\n );\n socket.name = name;\n }\n\n // start garbage collector\n this.gcInterval = this.gcInterval || setInterval(() => this._clearMemory(), 60000);\n\n promiseResult = Promise.resolve({ sid: message.sid, d: [_type, id, name, []] });\n } else if (name === 'authenticate') {\n promiseResult = Promise.resolve({ sid: message.sid, d: [_type, id, name, [true, false]] });\n } else if (name === 'getObjects') {\n promiseOne = this._readAllObjects();\n } else if (name === 'getHostByIp') {\n promiseResult = AdminSocket.getHostByIp(this.adapter, (args as [string])[0]).then(result => ({\n sid: message.sid,\n d: [_type, id, name, [result.ip, result.obj]],\n }));\n } else if (name === 'getStates') {\n promiseOne = this.adapter.getForeignStatesAsync((args as [string])[0] || '*');\n } else if (name === 'requireLog') {\n const isEnabled = (args as [string])[0];\n if (isEnabled) {\n this._subscribe(message.sid, 'log', 'dummy');\n } else {\n this._unsubscribe(message.sid, 'log', 'dummy');\n }\n\n if (this.adapter.log.level === 'debug') {\n this._showSubscribes(message.sid, 'log');\n }\n\n promiseOne = Promise.resolve({ sid: message.sid, d: [_type, id, name, [null]] });\n } else if (name === 'DCT') {\n // disconnect\n const socket = this.sockets[message.sid];\n this.adapter.log.debug(`[REMOTE] ---- DISCONNECT ${message.sid}`);\n if (socket) {\n this._unsubscribeSocket(message.sid, 'stateChange');\n this._unsubscribeSocket(message.sid, 'objectChange');\n this._unsubscribeSocket(message.sid, 'log');\n delete this.sockets[message.sid];\n }\n } else if (name === 'getVersion') {\n promiseResult = Promise.resolve({\n sid: message.sid,\n d: [_type, id, name, [null, this.adminObj?.common.version, 'admin']],\n });\n } else if (name === 'subscribe' || name === 'subscribeStates') {\n const pattern = (args as [string | string[]])[0];\n if (Array.isArray(pattern)) {\n for (let p = 0; p < pattern.length; p++) {\n this._subscribe(message.sid, 'stateChange', pattern[p]);\n }\n } else {\n this._subscribe(message.sid, 'stateChange', pattern);\n }\n\n this.adapter.log.level === 'debug' && this._showSubscribes(message.sid, 'stateChange');\n promiseOne = Promise.resolve({ sid: message.sid, d: [_type, id, name, [null]] });\n } else if (name === 'unsubscribe' || name === 'unsubscribeStates') {\n const pattern = (args as [string | string[]])[0];\n if (Array.isArray(pattern)) {\n for (let p = 0; p < pattern.length; p++) {\n this._unsubscribe(message.sid, 'stateChange', pattern[p]);\n }\n } else {\n this._unsubscribe(message.sid, 'stateChange', pattern);\n }\n\n this.adapter.log.level === 'debug' && this._showSubscribes(message.sid, 'stateChange');\n promiseOne = Promise.resolve({ sid: message.sid, d: [_type, id, name, [null]] });\n } else if (name === 'subscribeObjects') {\n const pattern = (args as [string | string[]])?.[0] || '*';\n if (Array.isArray(pattern)) {\n for (let p = 0; p < pattern.length; p++) {\n this._subscribe(message.sid, 'objectChange', pattern[p]);\n }\n } else {\n this._subscribe(message.sid, 'objectChange', pattern);\n }\n\n this.adapter.log.level === 'debug' && this._showSubscribes(message.sid, 'objectChange');\n promiseOne = Promise.resolve({ sid: message.sid, d: [_type, id, name, [null]] });\n } else if (name === 'unsubscribeObjects') {\n const pattern = (args as [string | string[]])[0];\n if (Array.isArray(pattern)) {\n for (let p = 0; p < pattern.length; p++) {\n this._unsubscribe(message.sid, 'objectChange', pattern[p]);\n }\n } else {\n this._unsubscribe(message.sid, 'objectChange', pattern);\n }\n\n this.adapter.log.level === 'debug' && this._showSubscribes(message.sid, 'objectChange');\n promiseOne = Promise.resolve({ sid: message.sid, d: [_type, id, name, [null]] });\n } else if (name === 'authEnabled') {\n promiseResult = Promise.resolve({ sid: message.sid, d: [_type, id, name, [false, 'admin']] });\n } else if (name === 'readFile') {\n const adapter = (args as [id: string, filePath: string])[0];\n const fileName = (args as [id: string, filePath: string])[1];\n promiseResult = this.adapter\n .readFileAsync(adapter, fileName)\n .then(data =>\n this._sendResponse(\n message.sid,\n _type,\n id,\n name,\n [null, data.file, data.mimeType],\n message.wu,\n message.ru,\n ),\n )\n .catch(error => ({ sid: message.sid, d: [_type, id, name, [error]] }) as SOCKET_MESSAGE);\n } else if (name === 'readFile64') {\n const adapter = (args as [id: string, filePath: string])[0];\n const fileName = (args as [id: string, filePath: string])[1];\n promiseResult = this.adapter\n .readFileAsync(adapter, fileName)\n .then(data => {\n let data64: string | undefined;\n if (data.mimeType) {\n try {\n if (\n data.mimeType === 'application/json' ||\n data.mimeType === 'application/json5' ||\n fileName.toLowerCase().endsWith('.json5')\n ) {\n data64 = Buffer.from(encodeURIComponent(data.mimeType)).toString('base64');\n } else if (data.mimeType) {\n data64 = Buffer.from(data.mimeType).toString('base64');\n }\n } catch (error) {\n this.adapter.log.error(`[readFile64] Cannot convert data: ${error.toString()}`);\n }\n }\n\n return this._sendResponse(\n message.sid,\n _type,\n id,\n name,\n [null, data64, data.mimeType],\n message.wu,\n message.ru,\n );\n })\n .catch(error => ({ sid: message.sid, d: [_type, id, name, [error]] }) as SOCKET_MESSAGE);\n } else if (name === 'writeFile' || name === 'writeFile64') {\n const [adr, fileName, data64, options] = args as [\n adapterId: string,\n fileName: string,\n data64: string,\n options?: any,\n ];\n if (readUrl) {\n promiseOne = axios(readUrl as string, {\n responseType: 'arraybuffer',\n validateStatus: status => status === 200,\n timeout: 15000,\n }).then(response =>\n this.adapter.writeFileAsync(adr, fileName, Buffer.from(response.data), options),\n );\n } else if (name === 'writeFile') {\n this.adapter.log.debug('writeFile deprecated. Please use writeFile64');\n promiseOne = this.adapter.writeFileAsync(adr, fileName, data64, options);\n } else if (name === 'writeFile64') {\n const buffer = Buffer.from(data64, 'base64');\n promiseOne = this.adapter.writeFileAsync(adr, fileName, buffer, options);\n }\n } else if (name === 'getHistory') {\n const _id = (args as [id: string, otions: ioBroker.GetHistoryOptions])[0];\n const options = (args as [id: string, otions: ioBroker.GetHistoryOptions])[1];\n promiseResult = this.adapter\n .getHistoryAsync(_id, options)\n .then(data =>\n this._sendResponse(\n message.sid,\n _type,\n id,\n name,\n [null, data.result, data.step, data.sessionId],\n message.wu,\n message.ru,\n ),\n )\n .catch(error => ({ sid: message.sid, d: [_type, id, name, [error]] }) as SOCKET_MESSAGE);\n } else if (name === 'getEasyMode') {\n promiseOne = AdminSocket.getEasyMode(this.adapter, this.adminObj);\n } else if (name === 'getAdapterInstances') {\n promiseOne = AdminSocket.getAdapterInstances(this.adapter, (args as [string])[0]);\n } else if (name === 'getCurrentInstance') {\n promiseOne = Promise.resolve(this.config.remoteAdminInstance);\n } else if (name === 'checkFeatureSupported') {\n promiseOne = Promise.resolve(\n this.adapter.supportsFeature?.(\n (\n args as [\n | 'ALIAS'\n | 'ALIAS_SEPARATE_READ_WRITE_ID'\n | 'ADAPTER_GETPORT_BIND'\n | 'ADAPTER_DEL_OBJECT_RECURSIVE'\n | 'ADAPTER_SET_OBJECT_SETS_DEFAULT_VALUE'\n | 'ADAPTER_AUTO_DECRYPT_NATIVE'\n | 'PLUGINS'\n | 'CONTROLLER_NPM_AUTO_REBUILD'\n | 'CONTROLLER_READWRITE_BASE_SETTINGS'\n | 'CONTROLLER_MULTI_REPO'\n | 'CONTROLLER_LICENSE_MANAGER'\n | 'CONTROLLER_OS_PACKAGE_UPGRADE'\n | 'DEL_INSTANCE_CUSTOM'\n | 'CUSTOM_FULL_VIEW'\n | 'ADAPTER_GET_OBJECTS_BY_ARRAY'\n | 'CONTROLLER_UI_UPGRADE'\n | 'ADAPTER_WEBSERVER_UPGRADE',\n ]\n )[0],\n ),\n );\n } else if (name === 'getAdapterName') {\n promiseOne = Promise.resolve('admin');\n } else if (name === 'decrypt') {\n if (this.secret) {\n promiseOne = Promise.resolve(this.adapter.decrypt(this.secret, (args as [string])[0]));\n } else {\n promiseOne = this.adapter.getForeignObjectAsync(\n 'system.config',\n (err: Error | null | undefined, obj: ioBroker.SystemConfigObject): string => {\n if (obj?.native?.secret) {\n this.secret = obj.native.secret;\n return this.adapter.decrypt(this.secret, (args as [string])[0]);\n }\n this.adapter.log.error(`No system.config found: ${err}`);\n throw new Error('No system.config found');\n },\n );\n }\n } else if (name === 'encrypt') {\n if (this.secret) {\n promiseOne = Promise.resolve(this.adapter.encrypt(this.secret, (args as [string])[0]));\n } else {\n promiseOne = this.adapter.getForeignObjectAsync(\n 'system.config',\n (err: Error | null | undefined, obj: ioBroker.SystemConfigObject): string => {\n if (obj?.native?.secret) {\n this.secret = obj.native.secret;\n return this.adapter.encrypt(this.secret, (args as [string])[0]);\n }\n this.adapter.log.error(`No system.config found: ${err}`);\n throw new Error('No system.config found');\n },\n );\n }\n } else if (name === 'getIsEasyModeStrict') {\n promiseOne = AdminSocket.getIsEasyModeStrict(this.adapter, this.adminObj);\n } else if (name === 'getAdapters') {\n promiseOne = AdminSocket.getAdapters(this.adapter, (args as [string])[0]);\n } else if (name === 'updateLicenses') {\n promiseOne = AdminSocket.updateLicenses(\n this.adapter,\n (args as [admin: string, password: string])[0],\n (args as [admin: string, password: string])[1],\n this.adminObj,\n );\n } else if (name === 'getCompactInstances') {\n promiseOne = AdminSocket.getCompactInstances(this.adapter);\n } else if (name === 'getCompactSystemRepositories') {\n promiseOne = AdminSocket.getCompactSystemRepositories(this.adapter);\n } else if (name === 'getCompactAdapters') {\n promiseOne = AdminSocket.getCompactAdapters(this.adapter);\n } else if (name === 'getCompactInstalled') {\n promiseResult = AdminSocket.getCompactInstalled(\n this.adapter,\n (args as [hostName: string])[0] || this.adminObj?.common.host || this.adapter.common!.host,\n ).then(data => ({ sid: message.sid, d: [_type, id, name, [data]] }));\n } else if (name === 'getCompactSystemConfig') {\n promiseOne = AdminSocket.getCompactSystemConfig(this.adapter);\n } else if (name === 'getCompactRepository') {\n promiseResult = AdminSocket.getCompactRepository(\n this.adapter,\n (args as [hostName: string])[0] || this.adminObj?.common.host || this.adapter.common!.host,\n ).then(data => ({ sid: message.sid, d: [_type, id, name, [data]] }));\n } else if (name === 'getCompactHosts') {\n promiseOne = AdminSocket.getCompactHosts(this.adapter);\n } else if (name === 'readLogs') {\n promiseOne = AdminSocket.readLogs(\n this.adapter,\n (args as [hostName: string])[0] || this.adminObj?.common.host || this.adapter.common!.host,\n );\n } else if (name === 'eventsThreshold') {\n promiseOne = Promise.resolve(NONE);\n } else if (name === 'getRatings') {\n promiseOne = AdminSocket.getRatings(\n this.adapter,\n (args as [forceUpdate?: boolean, autoUpdate?: boolean])[0],\n (args as [forceUpdate?: boolean, autoUpdate?: boolean])[1],\n );\n } else if (name === 'getUserPermissions') {\n this.adapter.log.error(`[REMOTE] getUserPermissions not implemented!!!!!!!!!!!!!!!!!!!!!`);\n } else if (name === 'listPermissions') {\n promiseResult = AdminSocket.listPermissions(this.adapter)\n .then(commandsPermissions =>\n this._sendResponse(message.sid, _type, id, name, [commandsPermissions]),\n )\n .catch(error => ({ sid: message.sid, d: [_type, id, name, [error]] }) as SOCKET_MESSAGE);\n } else if (name === 'sendToHost') {\n const [host, command, msg] = args as [host: string, command: string, message: any];\n this.adapter.log.debug(`[REMOTE] SEND_TO_HOST: ${command}`);\n // check if the host is alive\n promiseResult = AdminSocket.sendToHost(this.adapter, host, command, msg)\n .then(data => this._sendResponse(message.sid, _type, id, name, [data], message.wu, message.ru))\n .catch(error => ({ sid: message.sid, d: [_type, id, name, [error]] }) as SOCKET_MESSAGE);\n } else if (name === 'sendTo') {\n const [adapterInstance, command, message] = args as [instance: string, command: string, message: any];\n promiseResult = AdminSocket.sendTo(this.adapter, adapterInstance, command, message)\n .then(data => this._sendResponse(message.sid, _type, id, name, [data], message.wu, message.ru))\n .catch(error => ({ sid: message.sid, d: [_type, id, name, [error]] }) as SOCKET_MESSAGE);\n } else if (name === 'getAllObjects') {\n promiseOne = AdminSocket.getAllObjects(this.adapter);\n }\n\n // MESSAGE is the only one-way message and no answer is expected\n if (_type === MESSAGE_TYPES.MESSAGE || _type === MESSAGE_TYPES.COMBINED_MESSAGE) {\n promiseResult = promiseOne ? promiseOne.then(() => NONE) : Promise.resolve(NONE);\n } else if (!promiseResult && promiseOne) {\n promiseResult = promiseOne\n .then(result =>\n this._sendResponse(message.sid, _type, id, name, [null, result], message.wu, message.ru),\n )\n .catch(error => ({ sid: message.sid, d: [_type, id, name, [error]] }) as SOCKET_MESSAGE);\n }\n\n if (!promiseResult) {\n this.adapter.log.warn(`[REMOTE] Received unknown command: ${name}`);\n promiseResult = Promise.resolve({ sid: message.sid, d: [_type, id, name, ['Unknown command']] });\n }\n\n return promiseResult.then(result => {\n if (result !== NONE && result.d && result.d[0] !== MESSAGE_TYPES.WAIT) {\n setImmediate(\n async (_result, _message) => await this._sendEvent(_result, _message),\n result,\n message,\n );\n }\n\n return NONE;\n });\n }\n return Promise.reject(new Error('Null message'));\n }\n}\n"]}
@@ -1,7 +1,10 @@
1
- 'use strict';
2
-
3
- const translate = require('./translate.js');
4
-
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.default = rooms;
7
+ const translate_1 = __importDefault(require("./translate"));
5
8
  const dictionary = [
6
9
  { en: 'living room/livingroom', it: 'soggiorno/soggiorno', de: 'Wohnzimmer', ru: 'зал' },
7
10
  {
@@ -39,7 +42,7 @@ const dictionary = [
39
42
  { en: 'summerhouse', it: 'casa estiva', de: 'Gartenhaus', ru: 'теплица' },
40
43
  { en: 'undefined', it: 'Non definito', de: 'Nicht definiert', ru: 'без комнаты' },
41
44
  ];
42
-
43
- module.exports = function (lang, word) {
44
- return translate(dictionary, lang, word);
45
- };
45
+ function rooms(lang, word) {
46
+ return (0, translate_1.default)(dictionary, lang, word);
47
+ }
48
+ //# sourceMappingURL=rooms.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rooms.js","sourceRoot":"","sources":["../../src/lib/rooms.ts"],"names":[],"mappings":"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","sourcesContent":["import translate from './translate';\n\nconst dictionary: ioBroker.Translated[] = [\n { en: 'living room/livingroom', it: 'soggiorno/soggiorno', de: 'Wohnzimmer', ru: 'зал' },\n {\n en: 'bedroom/sleeping room/sleepingroom',\n it: 'camera da letto/camera da letto/camera da letto',\n de: 'Schlafzimmer',\n ru: 'спальня',\n },\n { en: 'bathroom/bath', it: 'Bagno/bagno', de: 'Bad/Badezimmer', ru: 'ванная' },\n { en: 'office', it: 'ufficio', de: 'Arbeitszimmer', ru: 'кабинет' },\n { en: 'nursery room/nurseryroom', it: 'stanza dei bambini/stanza dei bambini', de: 'Kinderzimmer', ru: 'детская' },\n { en: 'guestwc', it: 'Guestwc', de: 'Gästewc', ru: 'гостевой туалет' },\n { en: 'wc', it: 'bagno', de: 'WC', ru: 'туалет' },\n { en: 'toilet', it: 'gabinetto', de: 'Toilette', ru: 'туалет' },\n { en: 'floor', it: 'pavimento', de: 'Flur/Diele/gang', ru: 'коридор/прихожая' },\n { en: 'kitchen', it: 'cucina', de: 'Küche/kueche', ru: 'кухня' },\n { en: 'terrace', it: 'terrazza', de: 'Balkon/terrasse', ru: 'терасса/балкон' },\n { en: 'dinning room/dinningroom', it: 'sala da pranzo/sala da pranzo', de: 'Esszimmer', ru: 'столовая' },\n { en: 'garage', it: 'box auto', de: 'Garage', ru: 'гараж' },\n { en: 'stairs', it: 'le scale', de: 'Treppe/treppenhaus', ru: 'лестница' },\n { en: 'garden', it: 'giardino', de: 'Garten', ru: 'сад' },\n { en: 'court', it: 'Tribunale', de: 'Hof', ru: 'двор' },\n { en: 'guest room/guestroom', it: 'camera degli ospiti/camera', de: 'Gästezimmer', ru: 'гостевая' },\n { en: 'attic', it: 'Attico', de: 'Speicher', ru: 'кладовка' },\n { en: 'roof', it: 'tetto', de: 'Dachstuhl', ru: 'крыша' },\n { en: 'terminal', it: 'terminale', de: 'Anschlussraum', ru: 'сени' },\n { en: 'washroom', it: 'Toilette', de: 'Waschraum', ru: 'прачечная' },\n {\n en: 'heating room/heatingroom',\n it: 'stanza di riscaldamento/riscaldamento',\n de: 'Heizungsraum/Heatingroom',\n ru: 'котельная',\n },\n { en: 'hovel', it: 'Tugurio', de: 'Schuppen/Scheune', ru: 'сарай' },\n { en: 'summerhouse', it: 'casa estiva', de: 'Gartenhaus', ru: 'теплица' },\n { en: 'undefined', it: 'Non definito', de: 'Nicht definiert', ru: 'без комнаты' },\n];\n\nexport default function rooms(lang: ioBroker.Languages, word: string): string {\n return translate(dictionary, lang, word);\n}\n"]}
@@ -1,3 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.default = translate;
1
4
  const dictionary = {
2
5
  'Answer from ioBroker': {
3
6
  en: 'Answer from ioBroker',
@@ -69,11 +72,10 @@ const dictionary = {
69
72
  'zh-cn': '错误',
70
73
  },
71
74
  };
72
-
73
- module.exports = function (lang, word, arg) {
75
+ function translate(lang, word, arg) {
74
76
  if (dictionary[word]) {
75
77
  word = dictionary[word][lang] || dictionary[word].en;
76
78
  }
77
-
78
79
  return word.replace('%s', arg);
79
- };
80
+ }
81
+ //# sourceMappingURL=texts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"texts.js","sourceRoot":"","sources":["../../src/lib/texts.ts"],"names":[],"mappings":";;AAwEA,4BAMC;AA9ED,MAAM,UAAU,GAA2C;IACvD,sBAAsB,EAAE;QACpB,EAAE,EAAE,sBAAsB;QAC1B,EAAE,EAAE,mBAAmB;QACvB,EAAE,EAAE,sBAAsB;KAC7B;IACD,yBAAyB,EAAE;QACvB,EAAE,EAAE,yBAAyB;QAC7B,EAAE,EAAE,iBAAiB;QACrB,EAAE,EAAE,6BAA6B;KACpC;IACD,gBAAgB,EAAE;QACd,EAAE,EAAE,gBAAgB;QACpB,EAAE,EAAE,wBAAwB;QAC5B,EAAE,EAAE,mBAAmB;KAC1B;IACD,cAAc,EAAE;QACZ,EAAE,EAAE,cAAc;QAClB,EAAE,EAAE,oBAAoB;QACxB,EAAE,EAAE,gBAAgB;QACpB,EAAE,EAAE,eAAe;KACtB;IACD,gBAAgB,EAAE;QACd,EAAE,EAAE,gBAAgB;QACpB,EAAE,EAAE,oBAAoB;QACxB,EAAE,EAAE,gBAAgB;QACpB,EAAE,EAAE,eAAe;KACtB;IACD,KAAK,EAAE;QACH,EAAE,EAAE,UAAU;QACd,EAAE,EAAE,SAAS;QACb,EAAE,EAAE,SAAS;QACb,EAAE,EAAE,SAAS;KAChB;IACD,MAAM,EAAE;QACJ,EAAE,EAAE,WAAW;QACf,EAAE,EAAE,UAAU;QACd,EAAE,EAAE,WAAW;QACf,EAAE,EAAE,aAAa;KACpB;IACD,MAAM,EAAE;QACJ,EAAE,EAAE,WAAW;QACf,EAAE,EAAE,WAAW;QACf,EAAE,EAAE,SAAS;QACb,EAAE,EAAE,aAAa;KACpB;IACD,UAAU,EAAE;QACR,EAAE,EAAE,eAAe;QACnB,EAAE,EAAE,eAAe;QACnB,EAAE,EAAE,cAAc;QAClB,EAAE,EAAE,eAAe;KACtB;IACD,KAAK,EAAE;QACH,EAAE,EAAE,UAAU;QACd,EAAE,EAAE,UAAU;QACd,EAAE,EAAE,SAAS;QACb,EAAE,EAAE,UAAU;KACjB;IACD,KAAK,EAAE;QACH,EAAE,EAAE,OAAO;QACX,EAAE,EAAE,OAAO;QACX,EAAE,EAAE,QAAQ;QACZ,EAAE,EAAE,MAAM;QACV,EAAE,EAAE,MAAM;QACV,EAAE,EAAE,QAAQ;QACZ,EAAE,EAAE,QAAQ;QACZ,EAAE,EAAE,OAAO;QACX,EAAE,EAAE,MAAM;QACV,OAAO,EAAE,IAAI;KAChB;CACJ,CAAC;AAEF,SAAwB,SAAS,CAAC,IAAwB,EAAE,IAAY,EAAE,GAAS;IAC/E,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACnB,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;IACzD,CAAC;IAED,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AACnC,CAAC","sourcesContent":["const dictionary: { [key: string]: ioBroker.Translated } = {\n 'Answer from ioBroker': {\n en: 'Answer from ioBroker',\n ru: 'Ответ от ioBroker',\n de: 'Antwort vom ioBroker',\n },\n 'The service deactivated': {\n en: 'The service deactivated',\n ru: 'Сервис отключен',\n de: 'Der service ist deaktiviert',\n },\n 'missing inputs': {\n en: 'missing inputs',\n ru: 'Неправильные параметры',\n de: 'Falsche Parameter',\n },\n 'missing data': {\n en: 'missing data',\n ru: 'недостающие данные',\n de: 'fehlende Daten',\n it: 'dati mancanti',\n },\n 'missing intent': {\n en: 'missing intent',\n ru: 'недостающие данные',\n de: 'fehlende Daten',\n it: 'dati mancanti',\n },\n light: {\n en: '%s light',\n ru: '%s Свет',\n de: '%slight',\n it: '%s luce',\n },\n window: {\n en: '%s window',\n ru: '%s Окно',\n de: '%sfenster',\n it: '%s finestra',\n },\n blinds: {\n en: '%s blinds',\n ru: '%s Жалюзи',\n de: '%srollo',\n it: '%s persiane',\n },\n thermostat: {\n en: '%s thermostat',\n ru: '%s Термостат',\n de: '%sthermostat',\n it: '%s termostato',\n },\n media: {\n en: '%s media',\n ru: '%s Медиа',\n de: '%smedia',\n it: '%s media',\n },\n Error: {\n en: 'Error',\n de: 'Error',\n ru: 'Ошибка',\n pt: 'Erro',\n nl: 'Fout',\n fr: 'Erreur',\n it: 'Errore',\n es: 'Error',\n pl: 'Błąd',\n 'zh-cn': '错误',\n },\n};\n\nexport default function translate(lang: ioBroker.Languages, word: string, arg?: any): string {\n if (dictionary[word]) {\n word = dictionary[word][lang] || dictionary[word].en;\n }\n\n return word.replace('%s', arg);\n}\n"]}
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.default = translate;
4
+ function translate(dictionary, language, word) {
5
+ const _word = (word || '').toString().toLowerCase();
6
+ for (let r = 0; r < dictionary.length; r++) {
7
+ for (const l in dictionary[r]) {
8
+ if (Object.prototype.hasOwnProperty.call(dictionary[r], l)) {
9
+ const words = dictionary[r][l].toLowerCase().split('/');
10
+ if (words.includes(_word)) {
11
+ if (dictionary[r][language]) {
12
+ return dictionary[r][language].split('/')[0];
13
+ }
14
+ return dictionary[r].en.split('/')[0];
15
+ }
16
+ }
17
+ }
18
+ }
19
+ return word;
20
+ }
21
+ //# sourceMappingURL=translate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"translate.js","sourceRoot":"","sources":["../../src/lib/translate.ts"],"names":[],"mappings":";;AAAA,4BAqBC;AArBD,SAAwB,SAAS,CAC7B,UAAiC,EACjC,QAA4B,EAC5B,IAAY;IAEZ,MAAM,KAAK,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,WAAW,EAAE,CAAC;IACpD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACzC,KAAK,MAAM,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;YAC5B,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;gBACzD,MAAM,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,CAAuB,CAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAC/E,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;oBACxB,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC;wBAC1B,OAAO,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;oBAClD,CAAC;oBACD,OAAO,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC1C,CAAC;YACL,CAAC;QACL,CAAC;IACL,CAAC;IAED,OAAO,IAAI,CAAC;AAChB,CAAC","sourcesContent":["export default function translate(\n dictionary: ioBroker.Translated[],\n language: ioBroker.Languages,\n word: string,\n): string {\n const _word = (word || '').toString().toLowerCase();\n for (let r = 0; r < dictionary.length; r++) {\n for (const l in dictionary[r]) {\n if (Object.prototype.hasOwnProperty.call(dictionary[r], l)) {\n const words = dictionary[r][l as ioBroker.Languages]!.toLowerCase().split('/');\n if (words.includes(_word)) {\n if (dictionary[r][language]) {\n return dictionary[r][language]!.split('/')[0];\n }\n return dictionary[r].en.split('/')[0];\n }\n }\n }\n }\n\n return word;\n}\n"]}
@@ -1,45 +1,40 @@
1
- /** @typedef {{ command: 'sendToAdapter', instance: string, message: string, data: any }} SendToAdapterCommand */
2
-
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.handleSendToAdapter = handleSendToAdapter;
4
+ exports.handleGetInstances = handleGetInstances;
5
+ exports.handleGeofenceData = handleGeofenceData;
6
+ exports.handleDevicesData = handleDevicesData;
3
7
  /**
4
8
  * Handles `sendToAdapter` command
5
9
  *
6
- * @param {SendToAdapterCommand} visuData the data sent by the app
7
- * @param {ioBroker.Adapter} adapter the adapter instance
8
- * @returns {Promise<Record<string, any>>}
10
+ * @param visuData the data sent by the app
11
+ * @param adapter the adapter instance
9
12
  */
10
13
  async function handleSendToAdapter(visuData, adapter) {
11
14
  const { instance, message, data } = visuData;
12
-
13
15
  const resp = await adapter.sendToAsync(instance, message, data, { timeout: 2_000 });
14
16
  return { ...resp };
15
17
  }
16
-
17
- /** @typedef {{ command: 'getInstances', adapterName: string }} GetInstancesCommand */
18
-
19
18
  /**
20
19
  * Handles `sendToAdapter` command
21
20
  *
22
- * @param {GetInstancesCommand} visuData the data sent by the app
23
- * @param {ioBroker.Adapter} adapter the adapter instance
24
- * @returns {Promise<{ instances: string[] }>}
21
+ * @param visuData the data sent by the app
22
+ * @param adapter the adapter instance
25
23
  */
26
24
  async function handleGetInstances(visuData, adapter) {
27
25
  const { adapterName } = visuData;
28
-
29
26
  const res = await adapter.getObjectViewAsync('system', 'instance', {
30
27
  startkey: `system.adapter.${adapterName}.`,
31
28
  endkey: `system.adapter.${adapterName}.\u9999`,
32
29
  });
33
-
34
30
  const instances = res.rows.map(item => item.id.substring('system.adapter.'.length));
35
31
  return { instances };
36
32
  }
37
-
38
33
  /**
39
34
  * Handle Geofence data update from app
40
35
  *
41
- * @param {{ presence: Record<string, boolean>, devices?: Record<string, any> }} visuData the data sent by app
42
- * @param {ioBroker.Adapter} adapter the adapter instance
36
+ * @param visuData the data sent by app
37
+ * @param adapter the adapter instance
43
38
  */
44
39
  async function handleGeofenceData(visuData, adapter) {
45
40
  await adapter.setObjectNotExistsAsync('app.geofence', {
@@ -50,10 +45,8 @@ async function handleGeofenceData(visuData, adapter) {
50
45
  },
51
46
  native: {},
52
47
  });
53
-
54
48
  for (const [locationName, presenceStatus] of Object.entries(visuData.presence)) {
55
49
  const id = `app.geofence.${locationName.replace(adapter.FORBIDDEN_CHARS, '_').replace(/\s|ä|ü|ö/g, '_')}`;
56
-
57
50
  await adapter.setObjectNotExistsAsync(id, {
58
51
  type: 'state',
59
52
  common: {
@@ -66,48 +59,9 @@ async function handleGeofenceData(visuData, adapter) {
66
59
  },
67
60
  native: {},
68
61
  });
69
-
70
62
  await adapter.setState(id, presenceStatus, true);
71
63
  }
72
64
  }
73
-
74
- /**
75
- * Handle device's data update from app
76
- *
77
- * @param {{ presence?: Record<string, boolean>, devices: Record<string, any> }} visuData the data sent by app
78
- * @param {ioBroker.Adapter} adapter the adapter instance
79
- */
80
- async function handleDevicesData(visuData, adapter) {
81
- // e.g. {"devices":{"iPhone":{"batteryLevel":95,"batteryState":2,"ssid":"FRITZ!Box Fon WLAN","connectionType":"wifi"}}}
82
- for (const [deviceName, deviceData] of Object.entries(visuData.devices)) {
83
- const deviceId = `app.devices.${deviceName.replace(adapter.FORBIDDEN_CHARS, '_').replace(/\s|ä|ü|ö/g, '_')}`;
84
- await adapter.setObjectNotExistsAsync(deviceId, {
85
- type: 'folder',
86
- common: {
87
- name: deviceName,
88
- desc: 'All states related to this device',
89
- },
90
- native: {},
91
- });
92
-
93
- for (const [dataName, dataVal] of Object.entries(deviceData)) {
94
- const id = `${deviceId}.${dataName}`;
95
-
96
- if (!commonMapping[dataName]) {
97
- adapter.log.warn(`Unknown device data "${dataName}" with value "${dataVal}"`);
98
- }
99
-
100
- await adapter.setObjectNotExistsAsync(id, {
101
- type: 'state',
102
- common: commonMapping[dataName],
103
- native: {},
104
- });
105
-
106
- await adapter.setState(id, dataVal, true);
107
- }
108
- }
109
- }
110
-
111
65
  /** Map data name to state common */
112
66
  const commonMapping = {
113
67
  actionResponse: {
@@ -158,10 +112,36 @@ const commonMapping = {
158
112
  },
159
113
  },
160
114
  };
161
-
162
- module.exports = {
163
- handleGetInstances,
164
- handleSendToAdapter,
165
- handleGeofenceData,
166
- handleDevicesData,
167
- };
115
+ /**
116
+ * Handle device's data update from app
117
+ *
118
+ * @param visuData the data sent by app
119
+ * @param adapter the adapter instance
120
+ */
121
+ async function handleDevicesData(visuData, adapter) {
122
+ // e.g. {"devices":{"iPhone":{"batteryLevel":95,"batteryState":2,"ssid":"FRITZ!Box Fon WLAN","connectionType":"wifi"}}}
123
+ for (const [deviceName, deviceData] of Object.entries(visuData.devices)) {
124
+ const deviceId = `app.devices.${deviceName.replace(adapter.FORBIDDEN_CHARS, '_').replace(/\s|ä|ü|ö/g, '_')}`;
125
+ await adapter.setObjectNotExistsAsync(deviceId, {
126
+ type: 'folder',
127
+ common: {
128
+ name: deviceName,
129
+ desc: 'All states related to this device',
130
+ },
131
+ native: {},
132
+ });
133
+ for (const [dataName, dataVal] of Object.entries(deviceData)) {
134
+ const id = `${deviceId}.${dataName}`;
135
+ if (!commonMapping[dataName]) {
136
+ adapter.log.warn(`Unknown device data "${dataName}" with value "${dataVal}"`);
137
+ }
138
+ await adapter.setObjectNotExistsAsync(id, {
139
+ type: 'state',
140
+ common: commonMapping[dataName],
141
+ native: {},
142
+ });
143
+ await adapter.setState(id, dataVal, true);
144
+ }
145
+ }
146
+ }
147
+ //# sourceMappingURL=visuApp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"visuApp.js","sourceRoot":"","sources":["../../src/lib/visuApp.ts"],"names":[],"mappings":"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","sourcesContent":["import type { IotAdapter } from '../main';\n/**\n * Handles `sendToAdapter` command\n *\n * @param visuData the data sent by the app\n * @param adapter the adapter instance\n */\nexport async function handleSendToAdapter(\n visuData: { command: 'sendToAdapter'; instance: string; message: string; data: any },\n adapter: IotAdapter,\n): Promise<{ error?: string; result?: string }> {\n const { instance, message, data } = visuData;\n\n const resp = await adapter.sendToAsync(instance, message, data, { timeout: 2_000 });\n return { ...resp } as { error?: string; result?: string };\n}\n\n/**\n * Handles `sendToAdapter` command\n *\n * @param visuData the data sent by the app\n * @param adapter the adapter instance\n */\nexport async function handleGetInstances(\n visuData: { command: 'getInstances'; adapterName: string },\n adapter: IotAdapter,\n): Promise<{ instances: string[] }> {\n const { adapterName } = visuData;\n\n const res = await adapter.getObjectViewAsync('system', 'instance', {\n startkey: `system.adapter.${adapterName}.`,\n endkey: `system.adapter.${adapterName}.\\u9999`,\n });\n\n const instances = res.rows.map(item => item.id.substring('system.adapter.'.length));\n return { instances };\n}\n\n/**\n * Handle Geofence data update from app\n *\n * @param visuData the data sent by app\n * @param adapter the adapter instance\n */\nexport async function handleGeofenceData(\n visuData: { presence: Record<string, boolean>; devices?: Record<string, any> },\n adapter: IotAdapter,\n): Promise<void> {\n await adapter.setObjectNotExistsAsync('app.geofence', {\n type: 'folder',\n common: {\n name: 'Geofence',\n desc: 'Collection of all the Geofence-locations managed by ioBroker Visu App',\n },\n native: {},\n });\n\n for (const [locationName, presenceStatus] of Object.entries(visuData.presence)) {\n const id = `app.geofence.${locationName.replace(adapter.FORBIDDEN_CHARS, '_').replace(/\\s|ä|ü|ö/g, '_')}`;\n\n await adapter.setObjectNotExistsAsync(id, {\n type: 'state',\n common: {\n name: locationName,\n desc: `Geofence Status of ${locationName}`,\n type: 'boolean',\n read: true,\n write: false,\n role: 'indicator',\n },\n native: {},\n });\n\n await adapter.setState(id, presenceStatus, true);\n }\n}\n\n/** Map data name to state common */\nconst commonMapping: Record<string, ioBroker.StateCommon> = {\n actionResponse: {\n name: 'Action response for a notification',\n desc: 'User clicked on a notification and this is the response from the app',\n type: 'string',\n read: true,\n write: false,\n role: 'text',\n },\n ssid: {\n name: 'Current connected WiFi',\n desc: 'Current connected WiFi network',\n type: 'string',\n read: true,\n write: false,\n role: 'text',\n },\n connectionType: {\n name: 'Current connection type',\n desc: 'Current connection type',\n type: 'string',\n read: true,\n write: false,\n role: 'text',\n },\n batteryLevel: {\n name: 'Current battery level',\n desc: 'Current battery level',\n type: 'number',\n read: true,\n write: false,\n role: 'level.battery',\n unit: '%',\n },\n batteryState: {\n name: 'Current battery state',\n desc: 'Current battery state',\n type: 'number',\n read: true,\n write: false,\n role: 'value',\n states: {\n 0: 'unknown',\n 1: 'unplugged',\n 2: 'charging',\n 3: 'full',\n },\n },\n};\n\n/**\n * Handle device's data update from app\n *\n * @param visuData the data sent by app\n * @param adapter the adapter instance\n */\nexport async function handleDevicesData(\n visuData: {\n presence?: Record<string, boolean>;\n devices: { [deviceId: string]: { [dataName: string]: ioBroker.StateValue } };\n },\n adapter: IotAdapter,\n): Promise<void> {\n // e.g. {\"devices\":{\"iPhone\":{\"batteryLevel\":95,\"batteryState\":2,\"ssid\":\"FRITZ!Box Fon WLAN\",\"connectionType\":\"wifi\"}}}\n for (const [deviceName, deviceData] of Object.entries(visuData.devices)) {\n const deviceId = `app.devices.${deviceName.replace(adapter.FORBIDDEN_CHARS, '_').replace(/\\s|ä|ü|ö/g, '_')}`;\n await adapter.setObjectNotExistsAsync(deviceId, {\n type: 'folder',\n common: {\n name: deviceName,\n desc: 'All states related to this device',\n },\n native: {},\n });\n\n for (const [dataName, dataVal] of Object.entries(deviceData)) {\n const id = `${deviceId}.${dataName}`;\n\n if (!commonMapping[dataName]) {\n adapter.log.warn(`Unknown device data \"${dataName}\" with value \"${dataVal}\"`);\n }\n\n await adapter.setObjectNotExistsAsync(id, {\n type: 'state',\n common: commonMapping[dataName],\n native: {},\n });\n\n await adapter.setState(id, dataVal, true);\n }\n }\n}\n"]}