@fastybird/smart-panel-backend 1.1.0-alpha.3 → 1.1.0-alpha.30

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 (412) hide show
  1. package/dist/app.module.js +8 -0
  2. package/dist/app.module.js.map +1 -1
  3. package/dist/common/filters/conflict-exception.filter.d.ts +6 -0
  4. package/dist/common/filters/conflict-exception.filter.js +59 -0
  5. package/dist/common/filters/conflict-exception.filter.js.map +1 -0
  6. package/dist/common/filters/global-error.filter.js +1 -4
  7. package/dist/common/filters/global-error.filter.js.map +1 -1
  8. package/dist/common/filters/global-filters.d.ts +3 -0
  9. package/dist/common/filters/global-filters.js +22 -0
  10. package/dist/common/filters/global-filters.js.map +1 -0
  11. package/dist/common/filters/unprocessable-entity-exception.filter.d.ts +1 -0
  12. package/dist/common/filters/unprocessable-entity-exception.filter.js +15 -3
  13. package/dist/common/filters/unprocessable-entity-exception.filter.js.map +1 -1
  14. package/dist/dataSource.js +1 -0
  15. package/dist/dataSource.js.map +1 -1
  16. package/dist/main.js +2 -7
  17. package/dist/main.js.map +1 -1
  18. package/dist/migrations/1000000000026-AddHardwareInputCategories.d.ts +7 -0
  19. package/dist/migrations/1000000000026-AddHardwareInputCategories.js +364 -0
  20. package/dist/migrations/1000000000026-AddHardwareInputCategories.js.map +1 -0
  21. package/dist/modules/devices/controllers/channels.controller.d.ts +5 -1
  22. package/dist/modules/devices/controllers/channels.controller.js +34 -2
  23. package/dist/modules/devices/controllers/channels.controller.js.map +1 -1
  24. package/dist/modules/devices/controllers/channels.properties.controller.js +21 -4
  25. package/dist/modules/devices/controllers/channels.properties.controller.js.map +1 -1
  26. package/dist/modules/devices/controllers/devices.channels.controller.d.ts +5 -1
  27. package/dist/modules/devices/controllers/devices.channels.controller.js +38 -2
  28. package/dist/modules/devices/controllers/devices.channels.controller.js.map +1 -1
  29. package/dist/modules/devices/controllers/devices.channels.properties.controller.js +21 -4
  30. package/dist/modules/devices/controllers/devices.channels.properties.controller.js.map +1 -1
  31. package/dist/modules/devices/devices.constants.d.ts +6 -0
  32. package/dist/modules/devices/devices.constants.js +6 -0
  33. package/dist/modules/devices/devices.constants.js.map +1 -1
  34. package/dist/modules/devices/devices.module.js +20 -0
  35. package/dist/modules/devices/devices.module.js.map +1 -1
  36. package/dist/modules/devices/devices.openapi.d.ts +3 -1
  37. package/dist/modules/devices/devices.openapi.js +7 -0
  38. package/dist/modules/devices/devices.openapi.js.map +1 -1
  39. package/dist/modules/devices/dto/channel-input-occurrence.dto.d.ts +10 -0
  40. package/dist/modules/devices/dto/channel-input-occurrence.dto.js +99 -0
  41. package/dist/modules/devices/dto/channel-input-occurrence.dto.js.map +1 -0
  42. package/dist/modules/devices/models/channel-input-capabilities.model.d.ts +20 -0
  43. package/dist/modules/devices/models/channel-input-capabilities.model.js +111 -0
  44. package/dist/modules/devices/models/channel-input-capabilities.model.js.map +1 -0
  45. package/dist/modules/devices/models/channel-input-occurrence.model.d.ts +22 -0
  46. package/dist/modules/devices/models/channel-input-occurrence.model.js +154 -0
  47. package/dist/modules/devices/models/channel-input-occurrence.model.js.map +1 -0
  48. package/dist/modules/devices/services/channel-input-deduplication.service.d.ts +17 -0
  49. package/dist/modules/devices/services/channel-input-deduplication.service.js +88 -0
  50. package/dist/modules/devices/services/channel-input-deduplication.service.js.map +1 -0
  51. package/dist/modules/devices/services/channel-input-occurrences.service.d.ts +21 -0
  52. package/dist/modules/devices/services/channel-input-occurrences.service.js +163 -0
  53. package/dist/modules/devices/services/channel-input-occurrences.service.js.map +1 -0
  54. package/dist/modules/devices/services/channels.properties.service.d.ts +31 -3
  55. package/dist/modules/devices/services/channels.properties.service.js +346 -51
  56. package/dist/modules/devices/services/channels.properties.service.js.map +1 -1
  57. package/dist/modules/devices/services/channels.service.js +42 -38
  58. package/dist/modules/devices/services/channels.service.js.map +1 -1
  59. package/dist/modules/devices/services/command-latency-trace-collector.service.d.ts +101 -0
  60. package/dist/modules/devices/services/command-latency-trace-collector.service.js +451 -0
  61. package/dist/modules/devices/services/command-latency-trace-collector.service.js.map +1 -0
  62. package/dist/modules/devices/services/device-structure-lock.service.d.ts +10 -2
  63. package/dist/modules/devices/services/device-structure-lock.service.js +86 -7
  64. package/dist/modules/devices/services/device-structure-lock.service.js.map +1 -1
  65. package/dist/modules/devices/services/devices.service.js +37 -33
  66. package/dist/modules/devices/services/devices.service.js.map +1 -1
  67. package/dist/modules/devices/services/module-reset.service.d.ts +3 -1
  68. package/dist/modules/devices/services/module-reset.service.js +21 -16
  69. package/dist/modules/devices/services/module-reset.service.js.map +1 -1
  70. package/dist/modules/devices/services/property-command-dispatch.service.d.ts +45 -0
  71. package/dist/modules/devices/services/property-command-dispatch.service.js +227 -0
  72. package/dist/modules/devices/services/property-command-dispatch.service.js.map +1 -0
  73. package/dist/modules/devices/services/property-command-window.service.d.ts +71 -0
  74. package/dist/modules/devices/services/property-command-window.service.js +206 -0
  75. package/dist/modules/devices/services/property-command-window.service.js.map +1 -0
  76. package/dist/modules/devices/services/property-command.service.d.ts +20 -3
  77. package/dist/modules/devices/services/property-command.service.js +56 -10
  78. package/dist/modules/devices/services/property-command.service.js.map +1 -1
  79. package/dist/modules/devices/services/property-metadata.service.d.ts +31 -0
  80. package/dist/modules/devices/services/property-metadata.service.js +160 -0
  81. package/dist/modules/devices/services/property-metadata.service.js.map +1 -0
  82. package/dist/modules/devices/services/property-state-coordinator.service.d.ts +4 -0
  83. package/dist/modules/devices/services/property-state-coordinator.service.js +35 -0
  84. package/dist/modules/devices/services/property-state-coordinator.service.js.map +1 -0
  85. package/dist/modules/devices/services/property-value-lock.service.d.ts +3 -1
  86. package/dist/modules/devices/services/property-value-lock.service.js +13 -2
  87. package/dist/modules/devices/services/property-value-lock.service.js.map +1 -1
  88. package/dist/modules/devices/services/property-value.service.d.ts +1 -0
  89. package/dist/modules/devices/services/property-value.service.js +4 -0
  90. package/dist/modules/devices/services/property-value.service.js.map +1 -1
  91. package/dist/modules/devices/utils/schema.utils.js +1 -1
  92. package/dist/modules/devices/utils/schema.utils.js.map +1 -1
  93. package/dist/modules/platform/platforms/raspberry.platform.js +5 -10
  94. package/dist/modules/platform/platforms/raspberry.platform.js.map +1 -1
  95. package/dist/modules/platform/services/platform.service.d.ts +13 -4
  96. package/dist/modules/platform/services/platform.service.js +57 -35
  97. package/dist/modules/platform/services/platform.service.js.map +1 -1
  98. package/dist/modules/remote-access/dto/update-config.dto.js +5 -0
  99. package/dist/modules/remote-access/dto/update-config.dto.js.map +1 -1
  100. package/dist/modules/remote-access/validators/is-remote-access-url.validator.js +5 -2
  101. package/dist/modules/remote-access/validators/is-remote-access-url.validator.js.map +1 -1
  102. package/dist/modules/system/scripts/update-worker.sh +1168 -61
  103. package/dist/modules/system/services/privileged-worker.service.d.ts +13 -0
  104. package/dist/modules/system/services/privileged-worker.service.js +192 -31
  105. package/dist/modules/system/services/privileged-worker.service.js.map +1 -1
  106. package/dist/modules/system/services/system.service.d.ts +2 -0
  107. package/dist/modules/system/services/system.service.js +22 -1
  108. package/dist/modules/system/services/system.service.js.map +1 -1
  109. package/dist/modules/system/services/update-executor.service.d.ts +20 -2
  110. package/dist/modules/system/services/update-executor.service.js +272 -26
  111. package/dist/modules/system/services/update-executor.service.js.map +1 -1
  112. package/dist/modules/websocket/gateway/websocket.gateway.d.ts +4 -1
  113. package/dist/modules/websocket/gateway/websocket.gateway.js +28 -5
  114. package/dist/modules/websocket/gateway/websocket.gateway.js.map +1 -1
  115. package/dist/modules/websocket/services/command-acknowledgement-trace.service.d.ts +143 -0
  116. package/dist/modules/websocket/services/command-acknowledgement-trace.service.js +523 -0
  117. package/dist/modules/websocket/services/command-acknowledgement-trace.service.js.map +1 -0
  118. package/dist/modules/websocket/websocket.module.js +9 -1
  119. package/dist/modules/websocket/websocket.module.js.map +1 -1
  120. package/dist/plugins/devices-home-assistant/devices-home-assistant.openapi.d.ts +2 -2
  121. package/dist/plugins/devices-home-assistant/devices-home-assistant.plugin.d.ts +6 -1
  122. package/dist/plugins/devices-home-assistant/devices-home-assistant.plugin.js +16 -1
  123. package/dist/plugins/devices-home-assistant/devices-home-assistant.plugin.js.map +1 -1
  124. package/dist/plugins/devices-home-assistant/dto/mapping-preview.dto.d.ts +1 -0
  125. package/dist/plugins/devices-home-assistant/dto/mapping-preview.dto.js +11 -0
  126. package/dist/plugins/devices-home-assistant/dto/mapping-preview.dto.js.map +1 -1
  127. package/dist/plugins/devices-home-assistant/mappers/button.entity.mapper.service.d.ts +19 -0
  128. package/dist/plugins/devices-home-assistant/mappers/button.entity.mapper.service.js +51 -0
  129. package/dist/plugins/devices-home-assistant/mappers/button.entity.mapper.service.js.map +1 -0
  130. package/dist/plugins/devices-home-assistant/mappings/definitions/entity-mappings.yaml +56 -7
  131. package/dist/plugins/devices-home-assistant/models/mapping-preview.model.d.ts +1 -0
  132. package/dist/plugins/devices-home-assistant/models/mapping-preview.model.js +11 -0
  133. package/dist/plugins/devices-home-assistant/models/mapping-preview.model.js.map +1 -1
  134. package/dist/plugins/devices-home-assistant/services/device-adoption.service.js +17 -0
  135. package/dist/plugins/devices-home-assistant/services/device-adoption.service.js.map +1 -1
  136. package/dist/plugins/devices-home-assistant/services/home-assistant-raw-event.service.d.ts +27 -0
  137. package/dist/plugins/devices-home-assistant/services/home-assistant-raw-event.service.js +271 -0
  138. package/dist/plugins/devices-home-assistant/services/home-assistant-raw-event.service.js.map +1 -0
  139. package/dist/plugins/devices-home-assistant/services/home-assistant.ws.service.d.ts +2 -2
  140. package/dist/plugins/devices-home-assistant/services/home-assistant.ws.service.js +33 -14
  141. package/dist/plugins/devices-home-assistant/services/home-assistant.ws.service.js.map +1 -1
  142. package/dist/plugins/devices-home-assistant/services/mapping-preview.service.js +24 -4
  143. package/dist/plugins/devices-home-assistant/services/mapping-preview.service.js.map +1 -1
  144. package/dist/plugins/devices-home-assistant/services/state-changed.event.service.d.ts +4 -1
  145. package/dist/plugins/devices-home-assistant/services/state-changed.event.service.js +84 -5
  146. package/dist/plugins/devices-home-assistant/services/state-changed.event.service.js.map +1 -1
  147. package/dist/plugins/devices-home-assistant/services/wizard.service.js +1 -0
  148. package/dist/plugins/devices-home-assistant/services/wizard.service.js.map +1 -1
  149. package/dist/plugins/devices-home-assistant/utils/ha-event.utils.d.ts +2 -0
  150. package/dist/plugins/devices-home-assistant/utils/ha-event.utils.js +50 -0
  151. package/dist/plugins/devices-home-assistant/utils/ha-event.utils.js.map +1 -0
  152. package/dist/plugins/devices-homekit/listeners/homekit-event.listener.d.ts +4 -1
  153. package/dist/plugins/devices-homekit/listeners/homekit-event.listener.js +39 -4
  154. package/dist/plugins/devices-homekit/listeners/homekit-event.listener.js.map +1 -1
  155. package/dist/plugins/devices-homekit/mappers/base.mapper.js +30 -6
  156. package/dist/plugins/devices-homekit/mappers/base.mapper.js.map +1 -1
  157. package/dist/plugins/devices-homekit/mappers/button.mapper.d.ts +15 -0
  158. package/dist/plugins/devices-homekit/mappers/button.mapper.js +143 -0
  159. package/dist/plugins/devices-homekit/mappers/button.mapper.js.map +1 -0
  160. package/dist/plugins/devices-homekit/mappers/characteristic-write.d.ts +2 -0
  161. package/dist/plugins/devices-homekit/mappers/characteristic-write.js +17 -0
  162. package/dist/plugins/devices-homekit/mappers/characteristic-write.js.map +1 -0
  163. package/dist/plugins/devices-homekit/mappers/homekit-mapper.interface.d.ts +17 -1
  164. package/dist/plugins/devices-homekit/mappers/thermostat-coordinator.d.ts +7 -0
  165. package/dist/plugins/devices-homekit/mappers/thermostat-coordinator.js +96 -84
  166. package/dist/plugins/devices-homekit/mappers/thermostat-coordinator.js.map +1 -1
  167. package/dist/plugins/devices-homekit/services/homekit-mapper-registry.service.d.ts +5 -1
  168. package/dist/plugins/devices-homekit/services/homekit-mapper-registry.service.js +42 -0
  169. package/dist/plugins/devices-homekit/services/homekit-mapper-registry.service.js.map +1 -1
  170. package/dist/plugins/devices-homey/mappings/definitions/channels.yaml +50 -0
  171. package/dist/plugins/devices-homey/mappings/definitions/devices.yaml +18 -0
  172. package/dist/plugins/devices-homey/mappings/definitions/properties.yaml +55 -0
  173. package/dist/plugins/devices-homey/mappings/device-support.js +10 -0
  174. package/dist/plugins/devices-homey/mappings/device-support.js.map +1 -1
  175. package/dist/plugins/devices-homey/mappings/mapping-loader.service.d.ts +1 -0
  176. package/dist/plugins/devices-homey/mappings/mapping-loader.service.js +66 -8
  177. package/dist/plugins/devices-homey/mappings/mapping-loader.service.js.map +1 -1
  178. package/dist/plugins/devices-homey/models/inventory.model.d.ts +2 -1
  179. package/dist/plugins/devices-homey/models/inventory.model.js +1 -0
  180. package/dist/plugins/devices-homey/models/inventory.model.js.map +1 -1
  181. package/dist/plugins/devices-homey/models/mapping-preview.model.d.ts +1 -0
  182. package/dist/plugins/devices-homey/models/mapping-preview.model.js +1 -0
  183. package/dist/plugins/devices-homey/models/mapping-preview.model.js.map +1 -1
  184. package/dist/plugins/devices-homey/services/homey-mapping-preview.service.js +7 -0
  185. package/dist/plugins/devices-homey/services/homey-mapping-preview.service.js.map +1 -1
  186. package/dist/plugins/devices-homey/services/homey-synchronizer.service.d.ts +3 -1
  187. package/dist/plugins/devices-homey/services/homey-synchronizer.service.js +37 -6
  188. package/dist/plugins/devices-homey/services/homey-synchronizer.service.js.map +1 -1
  189. package/dist/plugins/devices-reterminal/services/reterminal-button.service.d.ts +7 -3
  190. package/dist/plugins/devices-reterminal/services/reterminal-button.service.js +63 -17
  191. package/dist/plugins/devices-reterminal/services/reterminal-button.service.js.map +1 -1
  192. package/dist/plugins/devices-shelly-ng/delegates/delegates-manager.service.d.ts +36 -3
  193. package/dist/plugins/devices-shelly-ng/delegates/delegates-manager.service.js +707 -42
  194. package/dist/plugins/devices-shelly-ng/delegates/delegates-manager.service.js.map +1 -1
  195. package/dist/plugins/devices-shelly-ng/delegates/shelly-device.delegate.d.ts +11 -1
  196. package/dist/plugins/devices-shelly-ng/delegates/shelly-device.delegate.js +100 -10
  197. package/dist/plugins/devices-shelly-ng/delegates/shelly-device.delegate.js.map +1 -1
  198. package/dist/plugins/devices-shelly-ng/devices-shelly-ng.constants.js +9 -11
  199. package/dist/plugins/devices-shelly-ng/devices-shelly-ng.constants.js.map +1 -1
  200. package/dist/plugins/devices-shelly-ng/devices-shelly-ng.plugin.js +2 -0
  201. package/dist/plugins/devices-shelly-ng/devices-shelly-ng.plugin.js.map +1 -1
  202. package/dist/plugins/devices-shelly-ng/mappings/definitions/inputs.yaml +80 -0
  203. package/dist/plugins/devices-shelly-ng/mappings/mapping-loader.service.js +7 -1
  204. package/dist/plugins/devices-shelly-ng/mappings/mapping-loader.service.js.map +1 -1
  205. package/dist/plugins/devices-shelly-ng/mappings/mapping.types.d.ts +6 -3
  206. package/dist/plugins/devices-shelly-ng/mappings/schema/mapping-schema.json +5 -0
  207. package/dist/plugins/devices-shelly-ng/services/device-manager.service.js +153 -8
  208. package/dist/plugins/devices-shelly-ng/services/device-manager.service.js.map +1 -1
  209. package/dist/plugins/devices-shelly-ng/services/poll-placement-diagnostics.service.d.ts +51 -0
  210. package/dist/plugins/devices-shelly-ng/services/poll-placement-diagnostics.service.js +549 -0
  211. package/dist/plugins/devices-shelly-ng/services/poll-placement-diagnostics.service.js.map +1 -0
  212. package/dist/plugins/devices-shelly-ng/services/shelly-ng.service.d.ts +14 -2
  213. package/dist/plugins/devices-shelly-ng/services/shelly-ng.service.js +134 -35
  214. package/dist/plugins/devices-shelly-ng/services/shelly-ng.service.js.map +1 -1
  215. package/dist/plugins/devices-shelly-ng/services/shelly-rpc-client.service.js +3 -0
  216. package/dist/plugins/devices-shelly-ng/services/shelly-rpc-client.service.js.map +1 -1
  217. package/dist/plugins/devices-shelly-ng/services/shelly-ws-server.service.d.ts +1 -0
  218. package/dist/plugins/devices-shelly-ng/services/shelly-ws-server.service.js +14 -4
  219. package/dist/plugins/devices-shelly-ng/services/shelly-ws-server.service.js.map +1 -1
  220. package/dist/plugins/devices-shelly-v1/devices-shelly-v1.constants.d.ts +2 -0
  221. package/dist/plugins/devices-shelly-v1/devices-shelly-v1.constants.js +66 -4
  222. package/dist/plugins/devices-shelly-v1/devices-shelly-v1.constants.js.map +1 -1
  223. package/dist/plugins/devices-shelly-v1/devices-shelly-v1.plugin.js +2 -0
  224. package/dist/plugins/devices-shelly-v1/devices-shelly-v1.plugin.js.map +1 -1
  225. package/dist/plugins/devices-shelly-v1/platforms/shelly-v1.device.platform.js +7 -0
  226. package/dist/plugins/devices-shelly-v1/platforms/shelly-v1.device.platform.js.map +1 -1
  227. package/dist/plugins/devices-shelly-v1/services/device-mapper.service.d.ts +3 -1
  228. package/dist/plugins/devices-shelly-v1/services/device-mapper.service.js +20 -2
  229. package/dist/plugins/devices-shelly-v1/services/device-mapper.service.js.map +1 -1
  230. package/dist/plugins/devices-shelly-v1/services/shelly-v1-input-tracker.service.d.ts +16 -0
  231. package/dist/plugins/devices-shelly-v1/services/shelly-v1-input-tracker.service.js +107 -0
  232. package/dist/plugins/devices-shelly-v1/services/shelly-v1-input-tracker.service.js.map +1 -0
  233. package/dist/plugins/devices-shelly-v1/services/shelly-v1.service.d.ts +7 -1
  234. package/dist/plugins/devices-shelly-v1/services/shelly-v1.service.js +98 -3
  235. package/dist/plugins/devices-shelly-v1/services/shelly-v1.service.js.map +1 -1
  236. package/dist/plugins/devices-third-party/controllers/third-party-inputs.controller.d.ts +17 -0
  237. package/dist/plugins/devices-third-party/controllers/third-party-inputs.controller.js +205 -0
  238. package/dist/plugins/devices-third-party/controllers/third-party-inputs.controller.js.map +1 -0
  239. package/dist/plugins/devices-third-party/devices-third-party.openapi.d.ts +1 -1
  240. package/dist/plugins/devices-third-party/devices-third-party.plugin.js +2 -1
  241. package/dist/plugins/devices-third-party/devices-third-party.plugin.js.map +1 -1
  242. package/dist/plugins/devices-third-party/dto/report-input-occurrence-response.dto.d.ts +5 -0
  243. package/dist/plugins/devices-third-party/dto/report-input-occurrence-response.dto.js +50 -0
  244. package/dist/plugins/devices-third-party/dto/report-input-occurrence-response.dto.js.map +1 -0
  245. package/dist/plugins/devices-third-party/dto/report-input-occurrence.dto.d.ts +8 -0
  246. package/dist/plugins/devices-third-party/dto/report-input-occurrence.dto.js +81 -0
  247. package/dist/plugins/devices-third-party/dto/report-input-occurrence.dto.js.map +1 -0
  248. package/dist/plugins/devices-third-party/platforms/third-party-device.platform.js +19 -4
  249. package/dist/plugins/devices-third-party/platforms/third-party-device.platform.js.map +1 -1
  250. package/dist/plugins/devices-virtual/listeners/virtual-projection.listener.d.ts +2 -0
  251. package/dist/plugins/devices-virtual/listeners/virtual-projection.listener.js +57 -0
  252. package/dist/plugins/devices-virtual/listeners/virtual-projection.listener.js.map +1 -1
  253. package/dist/plugins/devices-zigbee2mqtt/devices-zigbee2mqtt.constants.d.ts +3 -0
  254. package/dist/plugins/devices-zigbee2mqtt/devices-zigbee2mqtt.constants.js +41 -5
  255. package/dist/plugins/devices-zigbee2mqtt/devices-zigbee2mqtt.constants.js.map +1 -1
  256. package/dist/plugins/devices-zigbee2mqtt/interfaces/zigbee2mqtt.interface.d.ts +7 -1
  257. package/dist/plugins/devices-zigbee2mqtt/mappings/config-driven.converter.js +16 -15
  258. package/dist/plugins/devices-zigbee2mqtt/mappings/config-driven.converter.js.map +1 -1
  259. package/dist/plugins/devices-zigbee2mqtt/mappings/definitions/remotes.yaml +505 -74
  260. package/dist/plugins/devices-zigbee2mqtt/mappings/schema/mapping-schema.json +3 -3
  261. package/dist/plugins/devices-zigbee2mqtt/mappings/transformers/transformer.types.d.ts +1 -1
  262. package/dist/plugins/devices-zigbee2mqtt/services/base-client-adapter.d.ts +8 -2
  263. package/dist/plugins/devices-zigbee2mqtt/services/base-client-adapter.js +6 -5
  264. package/dist/plugins/devices-zigbee2mqtt/services/base-client-adapter.js.map +1 -1
  265. package/dist/plugins/devices-zigbee2mqtt/services/device-adoption.service.js +18 -11
  266. package/dist/plugins/devices-zigbee2mqtt/services/device-adoption.service.js.map +1 -1
  267. package/dist/plugins/devices-zigbee2mqtt/services/device-mapper.service.d.ts +9 -3
  268. package/dist/plugins/devices-zigbee2mqtt/services/device-mapper.service.js +166 -3
  269. package/dist/plugins/devices-zigbee2mqtt/services/device-mapper.service.js.map +1 -1
  270. package/dist/plugins/devices-zigbee2mqtt/services/mqtt-client-adapter.service.js +5 -2
  271. package/dist/plugins/devices-zigbee2mqtt/services/mqtt-client-adapter.service.js.map +1 -1
  272. package/dist/plugins/devices-zigbee2mqtt/services/zigbee2mqtt.service.d.ts +1 -0
  273. package/dist/plugins/devices-zigbee2mqtt/services/zigbee2mqtt.service.js +44 -4
  274. package/dist/plugins/devices-zigbee2mqtt/services/zigbee2mqtt.service.js.map +1 -1
  275. package/dist/plugins/remote-access-cloudflare-tunnel/controllers/setup.controller.d.ts +17 -0
  276. package/dist/plugins/remote-access-cloudflare-tunnel/controllers/setup.controller.js +147 -0
  277. package/dist/plugins/remote-access-cloudflare-tunnel/controllers/setup.controller.js.map +1 -0
  278. package/dist/plugins/remote-access-cloudflare-tunnel/controllers/status.controller.d.ts +15 -0
  279. package/dist/plugins/remote-access-cloudflare-tunnel/controllers/status.controller.js +98 -0
  280. package/dist/plugins/remote-access-cloudflare-tunnel/controllers/status.controller.js.map +1 -0
  281. package/dist/plugins/remote-access-cloudflare-tunnel/dto/update-config.dto.d.ts +9 -0
  282. package/dist/plugins/remote-access-cloudflare-tunnel/dto/update-config.dto.js +94 -0
  283. package/dist/plugins/remote-access-cloudflare-tunnel/dto/update-config.dto.js.map +1 -0
  284. package/dist/plugins/remote-access-cloudflare-tunnel/models/config.model.d.ts +9 -0
  285. package/dist/plugins/remote-access-cloudflare-tunnel/models/config.model.js +92 -0
  286. package/dist/plugins/remote-access-cloudflare-tunnel/models/config.model.js.map +1 -0
  287. package/dist/plugins/remote-access-cloudflare-tunnel/models/install.model.d.ts +7 -0
  288. package/dist/plugins/remote-access-cloudflare-tunnel/models/install.model.js +48 -0
  289. package/dist/plugins/remote-access-cloudflare-tunnel/models/install.model.js.map +1 -0
  290. package/dist/plugins/remote-access-cloudflare-tunnel/models/status.model.d.ts +42 -0
  291. package/dist/plugins/remote-access-cloudflare-tunnel/models/status.model.js +352 -0
  292. package/dist/plugins/remote-access-cloudflare-tunnel/models/status.model.js.map +1 -0
  293. package/dist/plugins/remote-access-cloudflare-tunnel/remote-access-cloudflare-tunnel.constants.d.ts +24 -0
  294. package/dist/plugins/remote-access-cloudflare-tunnel/remote-access-cloudflare-tunnel.constants.js +27 -0
  295. package/dist/plugins/remote-access-cloudflare-tunnel/remote-access-cloudflare-tunnel.constants.js.map +1 -0
  296. package/dist/plugins/remote-access-cloudflare-tunnel/remote-access-cloudflare-tunnel.exceptions.d.ts +8 -0
  297. package/dist/plugins/remote-access-cloudflare-tunnel/remote-access-cloudflare-tunnel.exceptions.js +19 -0
  298. package/dist/plugins/remote-access-cloudflare-tunnel/remote-access-cloudflare-tunnel.exceptions.js.map +1 -0
  299. package/dist/plugins/remote-access-cloudflare-tunnel/remote-access-cloudflare-tunnel.openapi.d.ts +4 -0
  300. package/dist/plugins/remote-access-cloudflare-tunnel/remote-access-cloudflare-tunnel.openapi.js +20 -0
  301. package/dist/plugins/remote-access-cloudflare-tunnel/remote-access-cloudflare-tunnel.openapi.js.map +1 -0
  302. package/dist/plugins/remote-access-cloudflare-tunnel/remote-access-cloudflare-tunnel.plugin.d.ts +21 -0
  303. package/dist/plugins/remote-access-cloudflare-tunnel/remote-access-cloudflare-tunnel.plugin.js +135 -0
  304. package/dist/plugins/remote-access-cloudflare-tunnel/remote-access-cloudflare-tunnel.plugin.js.map +1 -0
  305. package/dist/plugins/remote-access-cloudflare-tunnel/scripts/cloudflared-setup.sh +185 -0
  306. package/dist/plugins/remote-access-cloudflare-tunnel/services/cloudflare-tunnel-managed.service.d.ts +82 -0
  307. package/dist/plugins/remote-access-cloudflare-tunnel/services/cloudflare-tunnel-managed.service.js +507 -0
  308. package/dist/plugins/remote-access-cloudflare-tunnel/services/cloudflare-tunnel-managed.service.js.map +1 -0
  309. package/dist/plugins/remote-access-cloudflare-tunnel/services/cloudflare-tunnel-provider.service.d.ts +10 -0
  310. package/dist/plugins/remote-access-cloudflare-tunnel/services/cloudflare-tunnel-provider.service.js +37 -0
  311. package/dist/plugins/remote-access-cloudflare-tunnel/services/cloudflare-tunnel-provider.service.js.map +1 -0
  312. package/dist/plugins/remote-access-cloudflare-tunnel/services/cloudflare-tunnel-setup.service.d.ts +38 -0
  313. package/dist/plugins/remote-access-cloudflare-tunnel/services/cloudflare-tunnel-setup.service.js +147 -0
  314. package/dist/plugins/remote-access-cloudflare-tunnel/services/cloudflare-tunnel-setup.service.js.map +1 -0
  315. package/dist/plugins/remote-access-cloudflare-tunnel/services/cloudflared-cli.service.d.ts +15 -0
  316. package/dist/plugins/remote-access-cloudflare-tunnel/services/cloudflared-cli.service.js +67 -0
  317. package/dist/plugins/remote-access-cloudflare-tunnel/services/cloudflared-cli.service.js.map +1 -0
  318. package/dist/plugins/remote-access-cloudflare-tunnel/services/cloudflared-metrics.service.d.ts +8 -0
  319. package/dist/plugins/remote-access-cloudflare-tunnel/services/cloudflared-metrics.service.js +46 -0
  320. package/dist/plugins/remote-access-cloudflare-tunnel/services/cloudflared-metrics.service.js.map +1 -0
  321. package/dist/plugins/remote-access-cloudflare-tunnel/services/cloudflared-process.service.d.ts +27 -0
  322. package/dist/plugins/remote-access-cloudflare-tunnel/services/cloudflared-process.service.js +139 -0
  323. package/dist/plugins/remote-access-cloudflare-tunnel/services/cloudflared-process.service.js.map +1 -0
  324. package/dist/plugins/remote-access-tailscale/controllers/setup.controller.d.ts +1 -0
  325. package/dist/plugins/remote-access-tailscale/controllers/setup.controller.js +26 -10
  326. package/dist/plugins/remote-access-tailscale/controllers/setup.controller.js.map +1 -1
  327. package/dist/plugins/remote-access-tailscale/controllers/status.controller.d.ts +6 -1
  328. package/dist/plugins/remote-access-tailscale/controllers/status.controller.js +28 -3
  329. package/dist/plugins/remote-access-tailscale/controllers/status.controller.js.map +1 -1
  330. package/dist/plugins/remote-access-tailscale/models/status.model.d.ts +19 -0
  331. package/dist/plugins/remote-access-tailscale/models/status.model.js +158 -1
  332. package/dist/plugins/remote-access-tailscale/models/status.model.js.map +1 -1
  333. package/dist/plugins/remote-access-tailscale/remote-access-tailscale.constants.d.ts +3 -0
  334. package/dist/plugins/remote-access-tailscale/remote-access-tailscale.constants.js +4 -1
  335. package/dist/plugins/remote-access-tailscale/remote-access-tailscale.constants.js.map +1 -1
  336. package/dist/plugins/remote-access-tailscale/remote-access-tailscale.exceptions.d.ts +13 -0
  337. package/dist/plugins/remote-access-tailscale/remote-access-tailscale.exceptions.js +27 -0
  338. package/dist/plugins/remote-access-tailscale/remote-access-tailscale.exceptions.js.map +1 -0
  339. package/dist/plugins/remote-access-tailscale/remote-access-tailscale.openapi.d.ts +2 -2
  340. package/dist/plugins/remote-access-tailscale/remote-access-tailscale.openapi.js +2 -0
  341. package/dist/plugins/remote-access-tailscale/remote-access-tailscale.openapi.js.map +1 -1
  342. package/dist/plugins/remote-access-tailscale/remote-access-tailscale.plugin.js +1 -1
  343. package/dist/plugins/remote-access-tailscale/scripts/tailscale-setup.sh +61 -0
  344. package/dist/plugins/remote-access-tailscale/services/tailscale-cli.service.d.ts +9 -0
  345. package/dist/plugins/remote-access-tailscale/services/tailscale-cli.service.js +12 -0
  346. package/dist/plugins/remote-access-tailscale/services/tailscale-cli.service.js.map +1 -1
  347. package/dist/plugins/remote-access-tailscale/services/tailscale-login.service.d.ts +1 -0
  348. package/dist/plugins/remote-access-tailscale/services/tailscale-login.service.js +27 -2
  349. package/dist/plugins/remote-access-tailscale/services/tailscale-login.service.js.map +1 -1
  350. package/dist/plugins/remote-access-tailscale/services/tailscale-node-managed.service.d.ts +31 -1
  351. package/dist/plugins/remote-access-tailscale/services/tailscale-node-managed.service.js +316 -30
  352. package/dist/plugins/remote-access-tailscale/services/tailscale-node-managed.service.js.map +1 -1
  353. package/dist/plugins/remote-access-tailscale/services/tailscale-serve.service.d.ts +8 -3
  354. package/dist/plugins/remote-access-tailscale/services/tailscale-serve.service.js +39 -12
  355. package/dist/plugins/remote-access-tailscale/services/tailscale-serve.service.js.map +1 -1
  356. package/dist/plugins/remote-access-tailscale/services/tailscale-setup.service.d.ts +14 -5
  357. package/dist/plugins/remote-access-tailscale/services/tailscale-setup.service.js +51 -16
  358. package/dist/plugins/remote-access-tailscale/services/tailscale-setup.service.js.map +1 -1
  359. package/dist/plugins/scenes-local/platforms/local-scene.platform.d.ts +3 -1
  360. package/dist/plugins/scenes-local/platforms/local-scene.platform.js +12 -7
  361. package/dist/plugins/scenes-local/platforms/local-scene.platform.js.map +1 -1
  362. package/dist/plugins/simulator/controllers/simulator.controller.d.ts +8 -2
  363. package/dist/plugins/simulator/controllers/simulator.controller.js +102 -2
  364. package/dist/plugins/simulator/controllers/simulator.controller.js.map +1 -1
  365. package/dist/plugins/simulator/dto/simulate-occurrence.dto.d.ts +12 -0
  366. package/dist/plugins/simulator/dto/simulate-occurrence.dto.js +122 -0
  367. package/dist/plugins/simulator/dto/simulate-occurrence.dto.js.map +1 -0
  368. package/dist/plugins/simulator/models/simulator-response.model.d.ts +12 -0
  369. package/dist/plugins/simulator/models/simulator-response.model.js +84 -1
  370. package/dist/plugins/simulator/models/simulator-response.model.js.map +1 -1
  371. package/dist/plugins/simulator/scenarios/definitions/small-apartment.yaml +78 -0
  372. package/dist/plugins/simulator/services/scenario-executor.service.js +3 -1
  373. package/dist/plugins/simulator/services/scenario-executor.service.js.map +1 -1
  374. package/dist/plugins/simulator/services/simulation.service.js +10 -1
  375. package/dist/plugins/simulator/services/simulation.service.js.map +1 -1
  376. package/dist/plugins/simulator/simulator.openapi.d.ts +3 -2
  377. package/dist/plugins/simulator/simulator.openapi.js +5 -0
  378. package/dist/plugins/simulator/simulator.openapi.js.map +1 -1
  379. package/dist/plugins/simulator/simulators/device-simulator.interface.d.ts +2 -0
  380. package/dist/plugins/simulator/simulators/device-simulator.interface.js +83 -0
  381. package/dist/plugins/simulator/simulators/device-simulator.interface.js.map +1 -1
  382. package/dist/plugins/simulator/simulators/index.d.ts +1 -0
  383. package/dist/plugins/simulator/simulators/index.js +1 -0
  384. package/dist/plugins/simulator/simulators/index.js.map +1 -1
  385. package/dist/plugins/simulator/simulators/input-controller.simulator.d.ts +10 -0
  386. package/dist/plugins/simulator/simulators/input-controller.simulator.js +57 -0
  387. package/dist/plugins/simulator/simulators/input-controller.simulator.js.map +1 -0
  388. package/dist/plugins/simulator/simulators/lighting.simulator.js +1 -0
  389. package/dist/plugins/simulator/simulators/lighting.simulator.js.map +1 -1
  390. package/dist/plugins/spaces-home-control/services/climate-intent.service.d.ts +3 -1
  391. package/dist/plugins/spaces-home-control/services/climate-intent.service.js +6 -3
  392. package/dist/plugins/spaces-home-control/services/climate-intent.service.js.map +1 -1
  393. package/dist/plugins/spaces-home-control/services/covers-intent.service.d.ts +3 -1
  394. package/dist/plugins/spaces-home-control/services/covers-intent.service.js +6 -3
  395. package/dist/plugins/spaces-home-control/services/covers-intent.service.js.map +1 -1
  396. package/dist/plugins/spaces-home-control/services/lighting-intent.service.d.ts +3 -1
  397. package/dist/plugins/spaces-home-control/services/lighting-intent.service.js +7 -4
  398. package/dist/plugins/spaces-home-control/services/lighting-intent.service.js.map +1 -1
  399. package/dist/plugins/spaces-home-control/services/space-media-activity.service.d.ts +3 -1
  400. package/dist/plugins/spaces-home-control/services/space-media-activity.service.js +11 -5
  401. package/dist/plugins/spaces-home-control/services/space-media-activity.service.js.map +1 -1
  402. package/dist/plugins/spaces-home-control/services/space-undo-history.service.d.ts +3 -1
  403. package/dist/plugins/spaces-home-control/services/space-undo-history.service.js +8 -5
  404. package/dist/plugins/spaces-home-control/services/space-undo-history.service.js.map +1 -1
  405. package/dist/spec/channels.d.ts +51 -1
  406. package/dist/spec/channels.js +64 -1
  407. package/dist/spec/channels.js.map +1 -1
  408. package/dist/spec/devices.d.ts +155 -2
  409. package/dist/spec/devices.js +161 -2
  410. package/dist/spec/devices.js.map +1 -1
  411. package/dist/tsconfig.build.tsbuildinfo +1 -1
  412. package/package.json +3 -3
@@ -1,83 +1,514 @@
1
1
  # Zigbee2MQTT Remote Control and Button Mappings
2
2
  # Handles remote controls, buttons, and devices with action/click events
3
3
 
4
- version: "1.0"
5
-
6
- # DISABLED: All remote/button mappings are commented out because:
7
- # - They use GENERIC category which is only a fallback and not used by the system
8
- # - Button events (push, click, double click, hold, etc.) are not supported by Smart Panel
9
- # Enable when event-based device support is added to the spec.
10
-
11
- mappings: []
4
+ version: '1.0'
12
5
 
6
+ mappings:
13
7
  # ============================================
14
- # REMOTE CONTROLS AND BUTTONS
8
+ # SPECIFIC REMOTE CONTROLS
15
9
  # ============================================
16
10
 
17
- # Action event (most common for remotes/buttons)
18
- # Values like: single, double, triple, hold, release, rotate_left, rotate_right, etc.
19
- # - name: action_event
20
- # description: "Remote control or button action event"
21
- # priority: 50
22
- # match:
23
- # expose_type: enum
24
- # property: action
25
- # device_category: GENERIC
26
- # channels:
27
- # - identifier: button
28
- # name: Button
29
- # category: GENERIC
30
- # properties:
31
- # - z2m_property: action
32
- # direction: read_only
33
- # panel:
34
- # identifier: EVENT
35
- # name: Action
36
- # data_type: ENUM
37
- # settable: false
38
- # queryable: false
11
+ # Philips Hue Dimmer switch (RWL020, RWL021, RWL022, 324131092621)
12
+ # 4 physical buttons: on, up, down, off
13
+ - name: hue_dimmer
14
+ description: 'Philips Hue Dimmer Switch (4 buttons)'
15
+ priority: 120
16
+ match:
17
+ all_of:
18
+ - expose_type: enum
19
+ - property: action
20
+ - any_of:
21
+ - model: RWL020
22
+ - model: RWL021
23
+ - model: RWL022
24
+ - model: '324131092621'
25
+ device_category: INPUT_CONTROLLER
26
+ channels:
27
+ - identifier: button_on
28
+ name: On Button
29
+ category: BUTTON
30
+ properties:
31
+ - z2m_property: action
32
+ direction: event_only
33
+ panel:
34
+ identifier: EVENT
35
+ name: Event
36
+ data_type: ENUM
37
+ format:
38
+ - press
39
+ - double_press
40
+ - triple_press
41
+ - long_press
42
+ - release
43
+ - down
44
+ - up
45
+ settable: false
46
+ queryable: false
47
+ - identifier: button_up
48
+ name: Up Button
49
+ category: BUTTON
50
+ properties:
51
+ - z2m_property: action
52
+ direction: event_only
53
+ panel:
54
+ identifier: EVENT
55
+ name: Event
56
+ data_type: ENUM
57
+ format:
58
+ - press
59
+ - double_press
60
+ - triple_press
61
+ - long_press
62
+ - release
63
+ - down
64
+ - up
65
+ settable: false
66
+ queryable: false
67
+ - identifier: button_down
68
+ name: Down Button
69
+ category: BUTTON
70
+ properties:
71
+ - z2m_property: action
72
+ direction: event_only
73
+ panel:
74
+ identifier: EVENT
75
+ name: Event
76
+ data_type: ENUM
77
+ format:
78
+ - press
79
+ - double_press
80
+ - triple_press
81
+ - long_press
82
+ - release
83
+ - down
84
+ - up
85
+ settable: false
86
+ queryable: false
87
+ - identifier: button_off
88
+ name: Off Button
89
+ category: BUTTON
90
+ properties:
91
+ - z2m_property: action
92
+ direction: event_only
93
+ panel:
94
+ identifier: EVENT
95
+ name: Event
96
+ data_type: ENUM
97
+ format:
98
+ - press
99
+ - double_press
100
+ - triple_press
101
+ - long_press
102
+ - release
103
+ - down
104
+ - up
105
+ settable: false
106
+ queryable: false
107
+
108
+ # IKEA SOMRIG shortcut button (E2202)
109
+ # 2 physical buttons: button_1, button_2
110
+ - name: ikea_somrig
111
+ description: 'IKEA SOMRIG Shortcut Button (2 buttons)'
112
+ priority: 120
113
+ match:
114
+ all_of:
115
+ - expose_type: enum
116
+ - property: action
117
+ - any_of:
118
+ - model: E2202
119
+ device_category: INPUT_CONTROLLER
120
+ channels:
121
+ - identifier: button_1
122
+ name: Button 1
123
+ category: BUTTON
124
+ properties:
125
+ - z2m_property: action
126
+ direction: event_only
127
+ panel:
128
+ identifier: EVENT
129
+ name: Event
130
+ data_type: ENUM
131
+ format:
132
+ - press
133
+ - double_press
134
+ - triple_press
135
+ - long_press
136
+ - release
137
+ - down
138
+ - up
139
+ settable: false
140
+ queryable: false
141
+ - identifier: button_2
142
+ name: Button 2
143
+ category: BUTTON
144
+ properties:
145
+ - z2m_property: action
146
+ direction: event_only
147
+ panel:
148
+ identifier: EVENT
149
+ name: Event
150
+ data_type: ENUM
151
+ format:
152
+ - press
153
+ - double_press
154
+ - triple_press
155
+ - long_press
156
+ - release
157
+ - down
158
+ - up
159
+ settable: false
160
+ queryable: false
161
+
162
+ # IKEA STYRBAR remote control (E2001, E2002)
163
+ # 4 physical buttons: on, off, left, right
164
+ - name: ikea_styrbar
165
+ description: 'IKEA STYRBAR Remote Control (4 buttons)'
166
+ priority: 120
167
+ match:
168
+ all_of:
169
+ - expose_type: enum
170
+ - property: action
171
+ - any_of:
172
+ - model: E2001
173
+ - model: E2002
174
+ device_category: INPUT_CONTROLLER
175
+ channels:
176
+ - identifier: button_on
177
+ name: On Button
178
+ category: BUTTON
179
+ properties:
180
+ - z2m_property: action
181
+ direction: event_only
182
+ panel:
183
+ identifier: EVENT
184
+ name: Event
185
+ data_type: ENUM
186
+ format:
187
+ - press
188
+ - double_press
189
+ - triple_press
190
+ - long_press
191
+ - release
192
+ - down
193
+ - up
194
+ settable: false
195
+ queryable: false
196
+ - identifier: button_off
197
+ name: Off Button
198
+ category: BUTTON
199
+ properties:
200
+ - z2m_property: action
201
+ direction: event_only
202
+ panel:
203
+ identifier: EVENT
204
+ name: Event
205
+ data_type: ENUM
206
+ format:
207
+ - press
208
+ - double_press
209
+ - triple_press
210
+ - long_press
211
+ - release
212
+ - down
213
+ - up
214
+ settable: false
215
+ queryable: false
216
+ - identifier: button_left
217
+ name: Left Button
218
+ category: BUTTON
219
+ properties:
220
+ - z2m_property: action
221
+ direction: event_only
222
+ panel:
223
+ identifier: EVENT
224
+ name: Event
225
+ data_type: ENUM
226
+ format:
227
+ - press
228
+ - double_press
229
+ - triple_press
230
+ - long_press
231
+ - release
232
+ - down
233
+ - up
234
+ settable: false
235
+ queryable: false
236
+ - identifier: button_right
237
+ name: Right Button
238
+ category: BUTTON
239
+ properties:
240
+ - z2m_property: action
241
+ direction: event_only
242
+ panel:
243
+ identifier: EVENT
244
+ name: Event
245
+ data_type: ENUM
246
+ format:
247
+ - press
248
+ - double_press
249
+ - triple_press
250
+ - long_press
251
+ - release
252
+ - down
253
+ - up
254
+ settable: false
255
+ queryable: false
256
+
257
+ # Rotary Dial / Smart Knob (e.g. Tuya Smart Knob ERS-10TZBVK-AA, TS004F dimmer/knob, IKEA Symfonisk E1744, Philips Hue Tap Dial 8719514440937, 929003500201)
258
+ # 2 physical controls: push button and rotary dial
259
+ - name: rotary_dial_remote
260
+ description: 'Rotary dial and button controller'
261
+ priority: 120
262
+ match:
263
+ all_of:
264
+ - expose_type: enum
265
+ - property: action
266
+ - any_of:
267
+ - model: ERS-10TZBVK-AA
268
+ - model: TS004F
269
+ manufacturer: _TZ3000_pftj0i7z
270
+ - model: TS004F
271
+ manufacturer: _TZ3000_4fjiwweb
272
+ - model: TS004F
273
+ manufacturer: _TZ3000_uri7ongn
274
+ - model: TS004F
275
+ manufacturer: _TZ3000_abrsvsou
276
+ - model: TS004F
277
+ manufacturer: _TZ3000_402vrq2i
278
+ - model: E1744
279
+ - model: '8719514440937'
280
+ - model: '929003500201'
281
+ device_category: INPUT_CONTROLLER
282
+ channels:
283
+ - identifier: button
284
+ name: Button
285
+ category: BUTTON
286
+ properties:
287
+ - z2m_property: action
288
+ direction: event_only
289
+ panel:
290
+ identifier: EVENT
291
+ name: Event
292
+ data_type: ENUM
293
+ format:
294
+ - press
295
+ - double_press
296
+ - triple_press
297
+ - long_press
298
+ - release
299
+ - down
300
+ - up
301
+ settable: false
302
+ queryable: false
303
+ - identifier: rotary
304
+ name: Rotary Dial
305
+ category: BUTTON
306
+ properties:
307
+ - z2m_property: action
308
+ direction: event_only
309
+ panel:
310
+ identifier: EVENT
311
+ name: Dial Event
312
+ data_type: ENUM
313
+ format:
314
+ - press
315
+ - double_press
316
+ - triple_press
317
+ - long_press
318
+ - release
319
+ - down
320
+ - up
321
+ - rotate_left
322
+ - rotate_right
323
+ settable: false
324
+ queryable: false
325
+
326
+ # Tuya 4-Button Remote / Scene Switch (TS004F, TS004F_1, TS0044)
327
+ # 4 physical buttons: button_1, button_2, button_3, button_4
328
+ - name: tuya_4button_remote
329
+ description: 'Tuya 4-Button Scene Switch (4 buttons)'
330
+ priority: 115
331
+ match:
332
+ all_of:
333
+ - expose_type: enum
334
+ - property: action
335
+ - any_of:
336
+ - model: TS004F
337
+ - model: TS004F_1
338
+ - model: TS0044
339
+ device_category: INPUT_CONTROLLER
340
+ channels:
341
+ - identifier: button_1
342
+ name: Button 1
343
+ category: BUTTON
344
+ properties:
345
+ - z2m_property: action
346
+ direction: event_only
347
+ panel:
348
+ identifier: EVENT
349
+ name: Event
350
+ data_type: ENUM
351
+ format:
352
+ - press
353
+ - double_press
354
+ - triple_press
355
+ - long_press
356
+ - release
357
+ - down
358
+ - up
359
+ settable: false
360
+ queryable: false
361
+ - identifier: button_2
362
+ name: Button 2
363
+ category: BUTTON
364
+ properties:
365
+ - z2m_property: action
366
+ direction: event_only
367
+ panel:
368
+ identifier: EVENT
369
+ name: Event
370
+ data_type: ENUM
371
+ format:
372
+ - press
373
+ - double_press
374
+ - triple_press
375
+ - long_press
376
+ - release
377
+ - down
378
+ - up
379
+ settable: false
380
+ queryable: false
381
+ - identifier: button_3
382
+ name: Button 3
383
+ category: BUTTON
384
+ properties:
385
+ - z2m_property: action
386
+ direction: event_only
387
+ panel:
388
+ identifier: EVENT
389
+ name: Event
390
+ data_type: ENUM
391
+ format:
392
+ - press
393
+ - double_press
394
+ - triple_press
395
+ - long_press
396
+ - release
397
+ - down
398
+ - up
399
+ settable: false
400
+ queryable: false
401
+ - identifier: button_4
402
+ name: Button 4
403
+ category: BUTTON
404
+ properties:
405
+ - z2m_property: action
406
+ direction: event_only
407
+ panel:
408
+ identifier: EVENT
409
+ name: Event
410
+ data_type: ENUM
411
+ format:
412
+ - press
413
+ - double_press
414
+ - triple_press
415
+ - long_press
416
+ - release
417
+ - down
418
+ - up
419
+ settable: false
420
+ queryable: false
421
+
422
+ # Generic Multi-Endpoint Remote (matches exposes that have an endpoint or are list elements)
423
+ - name: generic_endpoint_button
424
+ description: 'Multi-endpoint remote button'
425
+ priority: 60
426
+ match:
427
+ all_of:
428
+ - expose_type: enum
429
+ - property: action
430
+ - is_list: true
431
+ device_category: INPUT_CONTROLLER
432
+ channels:
433
+ - identifier: 'button_{endpoint}'
434
+ name: 'Button {endpoint}'
435
+ category: BUTTON
436
+ properties:
437
+ - z2m_property: action
438
+ direction: event_only
439
+ panel:
440
+ identifier: EVENT
441
+ name: Event
442
+ data_type: ENUM
443
+ format:
444
+ - press
445
+ - double_press
446
+ - triple_press
447
+ - long_press
448
+ - release
449
+ - down
450
+ - up
451
+ settable: false
452
+ queryable: false
39
453
 
40
- # Click event (alternative naming used by some devices)
41
- # Values like: single, double, long, etc.
42
- # - name: click_event
43
- # description: "Button click event"
44
- # priority: 50
45
- # match:
46
- # expose_type: enum
47
- # property: click
48
- # device_category: GENERIC
49
- # channels:
50
- # - identifier: button
51
- # name: Button
52
- # category: GENERIC
53
- # properties:
54
- # - z2m_property: click
55
- # direction: read_only
56
- # panel:
57
- # identifier: EVENT
58
- # name: Click
59
- # data_type: ENUM
60
- # settable: false
61
- # queryable: false
454
+ # Generic single button action event (Sonoff SNZB-01, Aqara Wireless Mini Switch WXKG11LM, etc.)
455
+ - name: action_event
456
+ description: 'Remote control or button action event'
457
+ priority: 50
458
+ match:
459
+ expose_type: enum
460
+ property: action
461
+ device_category: INPUT_CONTROLLER
462
+ channels:
463
+ - identifier: button
464
+ name: Button
465
+ category: BUTTON
466
+ properties:
467
+ - z2m_property: action
468
+ direction: event_only
469
+ panel:
470
+ identifier: EVENT
471
+ name: Event
472
+ data_type: ENUM
473
+ format:
474
+ - press
475
+ - double_press
476
+ - triple_press
477
+ - long_press
478
+ - release
479
+ - down
480
+ - up
481
+ - rotate_left
482
+ - rotate_right
483
+ settable: false
484
+ queryable: false
62
485
 
63
- # Operation event (used by some remotes for mode switching)
64
- # - name: operation_event
65
- # description: "Operation mode event"
66
- # priority: 50
67
- # match:
68
- # expose_type: enum
69
- # property: operation
70
- # device_category: GENERIC
71
- # channels:
72
- # - identifier: remote
73
- # name: Remote
74
- # category: GENERIC
75
- # properties:
76
- # - z2m_property: operation
77
- # direction: read_only
78
- # panel:
79
- # identifier: EVENT
80
- # name: Operation
81
- # data_type: ENUM
82
- # settable: false
83
- # queryable: false
486
+ # Generic click event (alternative naming used by some legacy devices)
487
+ - name: click_event
488
+ description: 'Button click event'
489
+ priority: 50
490
+ match:
491
+ expose_type: enum
492
+ property: click
493
+ device_category: INPUT_CONTROLLER
494
+ channels:
495
+ - identifier: button
496
+ name: Button
497
+ category: BUTTON
498
+ properties:
499
+ - z2m_property: click
500
+ direction: event_only
501
+ panel:
502
+ identifier: EVENT
503
+ name: Event
504
+ data_type: ENUM
505
+ format:
506
+ - press
507
+ - double_press
508
+ - triple_press
509
+ - long_press
510
+ - release
511
+ - down
512
+ - up
513
+ settable: false
514
+ queryable: false
@@ -47,7 +47,7 @@
47
47
  },
48
48
  "direction": {
49
49
  "type": "string",
50
- "enum": ["bidirectional", "read_only", "write_only"],
50
+ "enum": ["bidirectional", "read_only", "write_only", "event_only"],
51
51
  "default": "bidirectional",
52
52
  "description": "Direction of transformation"
53
53
  }
@@ -334,7 +334,7 @@
334
334
  },
335
335
  "direction": {
336
336
  "type": "string",
337
- "enum": ["bidirectional", "read_only", "write_only"],
337
+ "enum": ["bidirectional", "read_only", "write_only", "event_only"],
338
338
  "default": "bidirectional",
339
339
  "description": "Data flow direction"
340
340
  },
@@ -390,7 +390,7 @@
390
390
  },
391
391
  "direction": {
392
392
  "type": "string",
393
- "enum": ["bidirectional", "read_only", "write_only"],
393
+ "enum": ["bidirectional", "read_only", "write_only", "event_only"],
394
394
  "default": "bidirectional",
395
395
  "description": "Data flow direction"
396
396
  },
@@ -1,5 +1,5 @@
1
1
  export type TransformerType = 'scale' | 'map' | 'formula' | 'boolean' | 'clamp' | 'round';
2
- export type TransformDirection = 'bidirectional' | 'read_only' | 'write_only';
2
+ export type TransformDirection = 'bidirectional' | 'read_only' | 'write_only' | 'event_only';
3
3
  export interface TransformerDefinition {
4
4
  type: TransformerType;
5
5
  direction?: TransformDirection;
@@ -23,13 +23,19 @@ export declare abstract class Z2mBaseClientAdapter {
23
23
  abstract publishCommand(friendlyName: string, payload: Z2mSetPayload): Promise<boolean>;
24
24
  abstract requestState(friendlyName: string, properties?: string[]): Promise<boolean>;
25
25
  abstract setPermitJoin(seconds: number): Promise<boolean>;
26
- protected handleMessage(topic: string, message: string, isRelative?: boolean): void;
26
+ protected handleMessage(topic: string, message: string, isRelative?: boolean, isRetained?: boolean, options?: {
27
+ isDup?: boolean;
28
+ packetId?: number;
29
+ }): void;
27
30
  protected handleBridgeMessage(subtopic: string | undefined, message: string): void;
28
31
  protected handleBridgeStateMessage(message: string): void;
29
32
  protected handleBridgeDevicesMessage(message: string): void;
30
33
  protected requestMissingStates(): void;
31
34
  protected handleBridgeEventMessage(message: string): void;
32
- protected handleDeviceStateMessage(friendlyName: string, message: string): void;
35
+ protected handleDeviceStateMessage(friendlyName: string, message: string, isRetained?: boolean, options?: {
36
+ isDup?: boolean;
37
+ packetId?: number;
38
+ }): void;
33
39
  protected handleDeviceAvailabilityMessage(friendlyName: string, message: string): void;
34
40
  protected clearReconnectTimer(): void;
35
41
  protected resetState(): void;
@@ -43,7 +43,7 @@ class Z2mBaseClientAdapter {
43
43
  getCachedState(friendlyName) {
44
44
  return this.stateCache.get(friendlyName) ?? {};
45
45
  }
46
- handleMessage(topic, message, isRelative = false) {
46
+ handleMessage(topic, message, isRelative = false, isRetained = false, options) {
47
47
  try {
48
48
  const relativePath = isRelative ? topic : topic.replace(`${this.baseTopic}/`, '');
49
49
  if (!relativePath) {
@@ -51,7 +51,7 @@ class Z2mBaseClientAdapter {
51
51
  }
52
52
  const topicParts = relativePath.split('/');
53
53
  if (this.deviceRegistry.has(relativePath)) {
54
- this.handleDeviceStateMessage(relativePath, message);
54
+ this.handleDeviceStateMessage(relativePath, message, isRetained, options);
55
55
  return;
56
56
  }
57
57
  if (topicParts[0] === 'bridge') {
@@ -67,7 +67,7 @@ class Z2mBaseClientAdapter {
67
67
  if (lastPart === 'set' || lastPart === 'get') {
68
68
  return;
69
69
  }
70
- this.handleDeviceStateMessage(relativePath, message);
70
+ this.handleDeviceStateMessage(relativePath, message, isRetained, options);
71
71
  }
72
72
  catch (error) {
73
73
  this.logger.warn(`Failed to handle message on topic ${topic}`, {
@@ -202,7 +202,7 @@ class Z2mBaseClientAdapter {
202
202
  });
203
203
  }
204
204
  }
205
- handleDeviceStateMessage(friendlyName, message) {
205
+ handleDeviceStateMessage(friendlyName, message, isRetained = false, options) {
206
206
  try {
207
207
  const state = JSON.parse(message);
208
208
  this.logger.debug(`Received state for "${friendlyName}": ${Object.keys(state).join(', ')}`);
@@ -217,7 +217,8 @@ class Z2mBaseClientAdapter {
217
217
  else {
218
218
  this.logger.debug(`Updated cache for "${friendlyName}" (not yet in registry)`);
219
219
  }
220
- void this.callbacks.onDeviceStateChanged?.(friendlyName, state);
220
+ const metadata = { isRetained, isDup: options?.isDup, packetId: options?.packetId };
221
+ void this.callbacks.onDeviceStateChanged?.(friendlyName, state, metadata);
221
222
  }
222
223
  catch (error) {
223
224
  this.logger.warn(`Failed to parse state for device ${friendlyName}`, {