@smarthome.exchange/integrations 0.2.0 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1308) hide show
  1. package/changelog.md +171 -0
  2. package/dist_ts/00_commitinfo_data.js +1 -1
  3. package/dist_ts/cli/classes.cliruntime.d.ts +1 -1
  4. package/dist_ts/cli/commands.discover.js +1 -1
  5. package/dist_ts/cli/commands.setup.d.ts +1 -1
  6. package/dist_ts/core/classes.configrecord.d.ts +15 -0
  7. package/dist_ts/core/classes.configrecord.js +93 -0
  8. package/dist_ts/core/classes.configstore.d.ts +40 -10
  9. package/dist_ts/core/classes.configstore.js +355 -32
  10. package/dist_ts/core/classes.discoveryengine.js +12 -2
  11. package/dist_ts/core/classes.nativehomeadmission.d.ts +19 -0
  12. package/dist_ts/core/classes.nativehomeadmission.js +84 -0
  13. package/dist_ts/core/classes.nativeintegrationowner.d.ts +79 -0
  14. package/dist_ts/core/classes.nativeintegrationowner.js +269 -0
  15. package/dist_ts/core/classes.runtimemanager.js +1 -1
  16. package/dist_ts/core/classes.simplelocalintegration.js +1 -1
  17. package/dist_ts/core/errors.d.ts +2 -2
  18. package/dist_ts/core/errors.js +1 -1
  19. package/dist_ts/core/index.d.ts +2 -0
  20. package/dist_ts/core/index.js +3 -1
  21. package/dist_ts/core/types.d.ts +27 -4
  22. package/dist_ts/index.d.ts +4 -1
  23. package/dist_ts/index.js +7 -1
  24. package/dist_ts/integrations/adguard/adguard.classes.client.js +1 -1
  25. package/dist_ts/integrations/adguard/adguard.classes.integration.d.ts +1 -1
  26. package/dist_ts/integrations/adguard/adguard.classes.integration.js +1 -1
  27. package/dist_ts/integrations/adguard/adguard.discovery.d.ts +1 -1
  28. package/dist_ts/integrations/adguard/adguard.mapper.js +1 -1
  29. package/dist_ts/integrations/agent_dvr/agent_dvr.classes.client.js +1 -1
  30. package/dist_ts/integrations/agent_dvr/agent_dvr.classes.integration.d.ts +1 -1
  31. package/dist_ts/integrations/agent_dvr/agent_dvr.classes.integration.js +1 -1
  32. package/dist_ts/integrations/agent_dvr/agent_dvr.discovery.d.ts +3 -3
  33. package/dist_ts/integrations/agent_dvr/agent_dvr.mapper.js +1 -1
  34. package/dist_ts/integrations/agent_dvr/agent_dvr.types.d.ts +1 -1
  35. package/dist_ts/integrations/airgradient/airgradient.classes.client.js +1 -1
  36. package/dist_ts/integrations/airgradient/airgradient.classes.integration.d.ts +1 -1
  37. package/dist_ts/integrations/airgradient/airgradient.classes.integration.js +1 -1
  38. package/dist_ts/integrations/airgradient/airgradient.discovery.d.ts +2 -2
  39. package/dist_ts/integrations/airos/airos.classes.client.js +1 -1
  40. package/dist_ts/integrations/airos/airos.classes.integration.d.ts +1 -1
  41. package/dist_ts/integrations/airos/airos.classes.integration.js +1 -1
  42. package/dist_ts/integrations/airos/airos.discovery.d.ts +4 -4
  43. package/dist_ts/integrations/airos/airos.discovery.js +1 -1
  44. package/dist_ts/integrations/airos/airos.mapper.js +1 -1
  45. package/dist_ts/integrations/amcrest/amcrest.classes.client.js +1 -1
  46. package/dist_ts/integrations/amcrest/amcrest.classes.integration.d.ts +1 -1
  47. package/dist_ts/integrations/amcrest/amcrest.classes.integration.js +1 -1
  48. package/dist_ts/integrations/amcrest/amcrest.discovery.d.ts +3 -3
  49. package/dist_ts/integrations/amcrest/amcrest.types.d.ts +5 -5
  50. package/dist_ts/integrations/android_ip_webcam/android_ip_webcam.classes.client.js +1 -1
  51. package/dist_ts/integrations/android_ip_webcam/android_ip_webcam.classes.integration.d.ts +1 -1
  52. package/dist_ts/integrations/android_ip_webcam/android_ip_webcam.classes.integration.js +1 -1
  53. package/dist_ts/integrations/android_ip_webcam/android_ip_webcam.discovery.d.ts +1 -1
  54. package/dist_ts/integrations/androidtv/androidtv.classes.client.js +1 -1
  55. package/dist_ts/integrations/androidtv/androidtv.classes.integration.d.ts +1 -1
  56. package/dist_ts/integrations/androidtv/androidtv.classes.integration.js +1 -1
  57. package/dist_ts/integrations/androidtv/androidtv.discovery.d.ts +3 -3
  58. package/dist_ts/integrations/androidtv_remote/androidtv_remote.classes.client.js +1 -1
  59. package/dist_ts/integrations/androidtv_remote/androidtv_remote.classes.integration.d.ts +1 -1
  60. package/dist_ts/integrations/androidtv_remote/androidtv_remote.classes.integration.js +1 -1
  61. package/dist_ts/integrations/androidtv_remote/androidtv_remote.discovery.d.ts +2 -2
  62. package/dist_ts/integrations/apcupsd/apcupsd.classes.client.js +1 -1
  63. package/dist_ts/integrations/apcupsd/apcupsd.classes.integration.d.ts +1 -1
  64. package/dist_ts/integrations/apcupsd/apcupsd.classes.integration.js +1 -1
  65. package/dist_ts/integrations/apcupsd/apcupsd.discovery.d.ts +1 -1
  66. package/dist_ts/integrations/apcupsd/apcupsd.mapper.js +1 -1
  67. package/dist_ts/integrations/arcam_fmj/arcam_fmj.classes.client.js +1 -1
  68. package/dist_ts/integrations/arcam_fmj/arcam_fmj.classes.integration.d.ts +1 -1
  69. package/dist_ts/integrations/arcam_fmj/arcam_fmj.classes.integration.js +1 -1
  70. package/dist_ts/integrations/arcam_fmj/arcam_fmj.discovery.d.ts +2 -2
  71. package/dist_ts/integrations/asuswrt/asuswrt.classes.client.js +1 -1
  72. package/dist_ts/integrations/asuswrt/asuswrt.classes.integration.d.ts +1 -1
  73. package/dist_ts/integrations/asuswrt/asuswrt.classes.integration.js +1 -1
  74. package/dist_ts/integrations/asuswrt/asuswrt.discovery.d.ts +1 -1
  75. package/dist_ts/integrations/asuswrt/asuswrt.mapper.js +1 -1
  76. package/dist_ts/integrations/axis/axis.classes.client.js +1 -1
  77. package/dist_ts/integrations/axis/axis.classes.integration.d.ts +1 -1
  78. package/dist_ts/integrations/axis/axis.classes.integration.js +1 -1
  79. package/dist_ts/integrations/axis/axis.discovery.d.ts +3 -3
  80. package/dist_ts/integrations/blebox/blebox.classes.client.js +1 -1
  81. package/dist_ts/integrations/blebox/blebox.classes.integration.d.ts +1 -1
  82. package/dist_ts/integrations/blebox/blebox.classes.integration.js +1 -1
  83. package/dist_ts/integrations/blebox/blebox.discovery.d.ts +2 -2
  84. package/dist_ts/integrations/bluesound/bluesound.classes.client.d.ts +9 -4
  85. package/dist_ts/integrations/bluesound/bluesound.classes.client.js +1 -1
  86. package/dist_ts/integrations/bluesound/bluesound.classes.integration.d.ts +1 -1
  87. package/dist_ts/integrations/bluesound/bluesound.classes.integration.js +1 -1
  88. package/dist_ts/integrations/bluesound/bluesound.discovery.d.ts +2 -2
  89. package/dist_ts/integrations/bluetooth_le_tracker/bluetooth_le_tracker.classes.client.js +1 -1
  90. package/dist_ts/integrations/bluetooth_le_tracker/bluetooth_le_tracker.classes.integration.d.ts +1 -1
  91. package/dist_ts/integrations/bluetooth_le_tracker/bluetooth_le_tracker.classes.integration.js +1 -1
  92. package/dist_ts/integrations/bluetooth_le_tracker/bluetooth_le_tracker.discovery.d.ts +2 -2
  93. package/dist_ts/integrations/bluetooth_le_tracker/bluetooth_le_tracker.mapper.js +1 -1
  94. package/dist_ts/integrations/bond/bond.classes.client.js +1 -1
  95. package/dist_ts/integrations/bond/bond.classes.integration.d.ts +1 -1
  96. package/dist_ts/integrations/bond/bond.classes.integration.js +1 -1
  97. package/dist_ts/integrations/bond/bond.discovery.d.ts +3 -3
  98. package/dist_ts/integrations/bond/bond.mapper.js +1 -1
  99. package/dist_ts/integrations/bond/bond.types.d.ts +71 -71
  100. package/dist_ts/integrations/bosch_shc/bosch_shc.classes.client.js +1 -1
  101. package/dist_ts/integrations/bosch_shc/bosch_shc.classes.integration.d.ts +1 -1
  102. package/dist_ts/integrations/bosch_shc/bosch_shc.classes.integration.js +1 -1
  103. package/dist_ts/integrations/bosch_shc/bosch_shc.discovery.d.ts +2 -2
  104. package/dist_ts/integrations/bosch_shc/bosch_shc.mapper.js +1 -1
  105. package/dist_ts/integrations/braviatv/braviatv.classes.client.d.ts +23 -72
  106. package/dist_ts/integrations/braviatv/braviatv.classes.client.js +265 -625
  107. package/dist_ts/integrations/braviatv/braviatv.classes.configflow.d.ts +7 -7
  108. package/dist_ts/integrations/braviatv/braviatv.classes.configflow.js +51 -68
  109. package/dist_ts/integrations/braviatv/braviatv.classes.integration.d.ts +9 -12
  110. package/dist_ts/integrations/braviatv/braviatv.classes.integration.js +186 -135
  111. package/dist_ts/integrations/braviatv/braviatv.discovery.d.ts +3 -3
  112. package/dist_ts/integrations/braviatv/braviatv.discovery.js +12 -11
  113. package/dist_ts/integrations/braviatv/braviatv.mapper.d.ts +6 -14
  114. package/dist_ts/integrations/braviatv/braviatv.mapper.js +37 -131
  115. package/dist_ts/integrations/braviatv/braviatv.types.d.ts +55 -133
  116. package/dist_ts/integrations/braviatv/braviatv.validation.d.ts +7 -0
  117. package/dist_ts/integrations/braviatv/braviatv.validation.js +72 -0
  118. package/dist_ts/integrations/broadlink/broadlink.actions.d.ts +2 -0
  119. package/dist_ts/integrations/broadlink/broadlink.actions.js +36 -0
  120. package/dist_ts/integrations/broadlink/broadlink.classes.client.d.ts +21 -19
  121. package/dist_ts/integrations/broadlink/broadlink.classes.client.js +185 -124
  122. package/dist_ts/integrations/broadlink/broadlink.classes.configflow.d.ts +5 -4
  123. package/dist_ts/integrations/broadlink/broadlink.classes.configflow.js +64 -83
  124. package/dist_ts/integrations/broadlink/broadlink.classes.integration.d.ts +17 -20
  125. package/dist_ts/integrations/broadlink/broadlink.classes.integration.js +114 -59
  126. package/dist_ts/integrations/broadlink/broadlink.discovery.d.ts +3 -3
  127. package/dist_ts/integrations/broadlink/broadlink.mapper.d.ts +3 -2
  128. package/dist_ts/integrations/broadlink/broadlink.mapper.js +2 -1
  129. package/dist_ts/integrations/broadlink/broadlink.packet.d.ts +2 -2
  130. package/dist_ts/integrations/broadlink/broadlink.packet.js +1 -1
  131. package/dist_ts/integrations/broadlink/broadlink.selected.mapper.d.ts +10 -0
  132. package/dist_ts/integrations/broadlink/broadlink.selected.mapper.js +41 -0
  133. package/dist_ts/integrations/broadlink/broadlink.types.d.ts +43 -7
  134. package/dist_ts/integrations/broadlink/broadlink.validation.d.ts +7 -0
  135. package/dist_ts/integrations/broadlink/broadlink.validation.js +63 -0
  136. package/dist_ts/integrations/brother/brother.classes.client.js +1 -1
  137. package/dist_ts/integrations/brother/brother.classes.integration.d.ts +1 -1
  138. package/dist_ts/integrations/brother/brother.classes.integration.js +1 -1
  139. package/dist_ts/integrations/brother/brother.constants.d.ts +12 -12
  140. package/dist_ts/integrations/brother/brother.discovery.d.ts +2 -2
  141. package/dist_ts/integrations/brother/brother.mapper.js +1 -1
  142. package/dist_ts/integrations/cast/cast.classes.client.js +1 -1
  143. package/dist_ts/integrations/cast/cast.classes.integration.d.ts +1 -1
  144. package/dist_ts/integrations/cast/cast.classes.integration.js +1 -1
  145. package/dist_ts/integrations/cast/cast.discovery.d.ts +2 -2
  146. package/dist_ts/integrations/channels/channels.classes.client.js +1 -1
  147. package/dist_ts/integrations/channels/channels.classes.integration.d.ts +1 -1
  148. package/dist_ts/integrations/channels/channels.classes.integration.js +1 -1
  149. package/dist_ts/integrations/channels/channels.discovery.d.ts +2 -2
  150. package/dist_ts/integrations/cisco_ios/cisco_ios.classes.client.js +1 -1
  151. package/dist_ts/integrations/cisco_ios/cisco_ios.classes.integration.d.ts +1 -1
  152. package/dist_ts/integrations/cisco_ios/cisco_ios.classes.integration.js +1 -1
  153. package/dist_ts/integrations/cisco_ios/cisco_ios.discovery.d.ts +2 -2
  154. package/dist_ts/integrations/cisco_ios/cisco_ios.mapper.js +1 -1
  155. package/dist_ts/integrations/daikin/daikin.classes.client.d.ts +10 -52
  156. package/dist_ts/integrations/daikin/daikin.classes.client.js +55 -614
  157. package/dist_ts/integrations/daikin/daikin.classes.configflow.d.ts +8 -12
  158. package/dist_ts/integrations/daikin/daikin.classes.configflow.js +77 -138
  159. package/dist_ts/integrations/daikin/daikin.classes.integration.d.ts +8 -25
  160. package/dist_ts/integrations/daikin/daikin.classes.integration.js +175 -67
  161. package/dist_ts/integrations/daikin/daikin.discovery.d.ts +11 -24
  162. package/dist_ts/integrations/daikin/daikin.discovery.js +98 -305
  163. package/dist_ts/integrations/daikin/daikin.mapper.d.ts +6 -7
  164. package/dist_ts/integrations/daikin/daikin.mapper.js +95 -155
  165. package/dist_ts/integrations/daikin/daikin.types.d.ts +24 -44
  166. package/dist_ts/integrations/daikin/daikin.types.js +1 -1
  167. package/dist_ts/integrations/daikin/daikin.validation.d.ts +5 -0
  168. package/dist_ts/integrations/daikin/daikin.validation.js +53 -0
  169. package/dist_ts/integrations/ddwrt/ddwrt.classes.client.js +1 -1
  170. package/dist_ts/integrations/ddwrt/ddwrt.classes.integration.d.ts +1 -1
  171. package/dist_ts/integrations/ddwrt/ddwrt.classes.integration.js +1 -1
  172. package/dist_ts/integrations/ddwrt/ddwrt.discovery.d.ts +3 -3
  173. package/dist_ts/integrations/ddwrt/ddwrt.mapper.js +1 -1
  174. package/dist_ts/integrations/deconz/deconz.classes.client.d.ts +31 -22
  175. package/dist_ts/integrations/deconz/deconz.classes.client.js +302 -153
  176. package/dist_ts/integrations/deconz/deconz.classes.configflow.js +43 -26
  177. package/dist_ts/integrations/deconz/deconz.classes.integration.d.ts +3 -1
  178. package/dist_ts/integrations/deconz/deconz.classes.integration.js +133 -20
  179. package/dist_ts/integrations/deconz/deconz.discovery.d.ts +4 -4
  180. package/dist_ts/integrations/deconz/deconz.mapper.d.ts +2 -1
  181. package/dist_ts/integrations/deconz/deconz.mapper.js +23 -18
  182. package/dist_ts/integrations/deconz/deconz.types.d.ts +34 -3
  183. package/dist_ts/integrations/deconz/deconz.validation.d.ts +14 -0
  184. package/dist_ts/integrations/deconz/deconz.validation.js +269 -0
  185. package/dist_ts/integrations/deluge/deluge.classes.client.js +1 -1
  186. package/dist_ts/integrations/deluge/deluge.classes.integration.d.ts +1 -1
  187. package/dist_ts/integrations/deluge/deluge.classes.integration.js +1 -1
  188. package/dist_ts/integrations/deluge/deluge.discovery.d.ts +2 -2
  189. package/dist_ts/integrations/denon/denon.classes.client.js +1 -1
  190. package/dist_ts/integrations/denon/denon.classes.integration.d.ts +1 -1
  191. package/dist_ts/integrations/denon/denon.classes.integration.js +1 -1
  192. package/dist_ts/integrations/denon/denon.discovery.d.ts +1 -1
  193. package/dist_ts/integrations/denonavr/denonavr.classes.client.d.ts +31 -40
  194. package/dist_ts/integrations/denonavr/denonavr.classes.client.js +149 -404
  195. package/dist_ts/integrations/denonavr/denonavr.classes.configflow.d.ts +7 -2
  196. package/dist_ts/integrations/denonavr/denonavr.classes.configflow.js +44 -36
  197. package/dist_ts/integrations/denonavr/denonavr.classes.integration.d.ts +7 -12
  198. package/dist_ts/integrations/denonavr/denonavr.classes.integration.js +192 -113
  199. package/dist_ts/integrations/denonavr/denonavr.discovery.d.ts +10 -18
  200. package/dist_ts/integrations/denonavr/denonavr.discovery.js +71 -193
  201. package/dist_ts/integrations/denonavr/denonavr.mapper.d.ts +5 -13
  202. package/dist_ts/integrations/denonavr/denonavr.mapper.js +35 -159
  203. package/dist_ts/integrations/denonavr/denonavr.types.d.ts +55 -90
  204. package/dist_ts/integrations/denonavr/denonavr.validation.d.ts +10 -0
  205. package/dist_ts/integrations/denonavr/denonavr.validation.js +86 -0
  206. package/dist_ts/integrations/devolo_home_network/devolo_home_network.classes.client.js +1 -1
  207. package/dist_ts/integrations/devolo_home_network/devolo_home_network.classes.integration.d.ts +1 -1
  208. package/dist_ts/integrations/devolo_home_network/devolo_home_network.classes.integration.js +1 -1
  209. package/dist_ts/integrations/devolo_home_network/devolo_home_network.discovery.d.ts +3 -3
  210. package/dist_ts/integrations/devolo_home_network/devolo_home_network.mapper.js +1 -1
  211. package/dist_ts/integrations/directv/directv.classes.client.js +1 -1
  212. package/dist_ts/integrations/directv/directv.classes.integration.d.ts +1 -1
  213. package/dist_ts/integrations/directv/directv.classes.integration.js +1 -1
  214. package/dist_ts/integrations/directv/directv.discovery.d.ts +2 -2
  215. package/dist_ts/integrations/directv/directv.types.d.ts +1 -1
  216. package/dist_ts/integrations/dlink/dlink.classes.client.d.ts +6 -3
  217. package/dist_ts/integrations/dlink/dlink.classes.client.js +1 -1
  218. package/dist_ts/integrations/dlink/dlink.classes.integration.d.ts +1 -1
  219. package/dist_ts/integrations/dlink/dlink.classes.integration.js +1 -1
  220. package/dist_ts/integrations/dlink/dlink.discovery.d.ts +2 -2
  221. package/dist_ts/integrations/dlink/dlink.mapper.js +1 -1
  222. package/dist_ts/integrations/dlna_dmr/dlna_dmr.classes.client.js +1 -1
  223. package/dist_ts/integrations/dlna_dmr/dlna_dmr.classes.integration.d.ts +1 -1
  224. package/dist_ts/integrations/dlna_dmr/dlna_dmr.classes.integration.js +1 -1
  225. package/dist_ts/integrations/dlna_dmr/dlna_dmr.discovery.d.ts +2 -2
  226. package/dist_ts/integrations/dlna_dms/dlna_dms.classes.client.js +1 -1
  227. package/dist_ts/integrations/dlna_dms/dlna_dms.classes.integration.d.ts +1 -1
  228. package/dist_ts/integrations/dlna_dms/dlna_dms.classes.integration.js +1 -1
  229. package/dist_ts/integrations/dlna_dms/dlna_dms.discovery.d.ts +2 -2
  230. package/dist_ts/integrations/doorbird/doorbird.classes.client.js +1 -1
  231. package/dist_ts/integrations/doorbird/doorbird.classes.integration.d.ts +1 -1
  232. package/dist_ts/integrations/doorbird/doorbird.classes.integration.js +1 -1
  233. package/dist_ts/integrations/doorbird/doorbird.discovery.d.ts +2 -2
  234. package/dist_ts/integrations/dsmr/dsmr.classes.client.js +1 -1
  235. package/dist_ts/integrations/dsmr/dsmr.classes.integration.d.ts +1 -1
  236. package/dist_ts/integrations/dsmr/dsmr.classes.integration.js +1 -1
  237. package/dist_ts/integrations/dsmr/dsmr.discovery.d.ts +1 -1
  238. package/dist_ts/integrations/dsmr/dsmr.parser.js +1 -1
  239. package/dist_ts/integrations/dunehd/dunehd.classes.client.js +1 -1
  240. package/dist_ts/integrations/dunehd/dunehd.classes.integration.d.ts +1 -1
  241. package/dist_ts/integrations/dunehd/dunehd.classes.integration.js +1 -1
  242. package/dist_ts/integrations/dunehd/dunehd.discovery.d.ts +3 -3
  243. package/dist_ts/integrations/edimax/edimax.classes.client.js +1 -1
  244. package/dist_ts/integrations/edl21/edl21.classes.client.js +1 -1
  245. package/dist_ts/integrations/egardia/egardia.classes.client.js +1 -1
  246. package/dist_ts/integrations/elgato/elgato.classes.client.js +1 -1
  247. package/dist_ts/integrations/elgato/elgato.classes.integration.d.ts +1 -1
  248. package/dist_ts/integrations/elgato/elgato.classes.integration.js +1 -1
  249. package/dist_ts/integrations/elgato/elgato.discovery.d.ts +3 -3
  250. package/dist_ts/integrations/emby/emby.classes.client.js +1 -1
  251. package/dist_ts/integrations/emby/emby.classes.integration.d.ts +1 -1
  252. package/dist_ts/integrations/emby/emby.classes.integration.js +1 -1
  253. package/dist_ts/integrations/emby/emby.discovery.d.ts +3 -3
  254. package/dist_ts/integrations/emoncms_history/emoncms_history.classes.client.js +1 -1
  255. package/dist_ts/integrations/emonitor/emonitor.classes.client.js +1 -1
  256. package/dist_ts/integrations/emulated_hue/emulated_hue.classes.client.js +1 -1
  257. package/dist_ts/integrations/emulated_kasa/emulated_kasa.classes.client.js +1 -1
  258. package/dist_ts/integrations/emulated_roku/emulated_roku.classes.client.js +1 -1
  259. package/dist_ts/integrations/energenie_power_sockets/energenie_power_sockets.classes.client.js +1 -1
  260. package/dist_ts/integrations/enigma2/enigma2.classes.client.js +1 -1
  261. package/dist_ts/integrations/enocean/enocean.classes.client.js +1 -1
  262. package/dist_ts/integrations/esphome/esphome.classes.client.d.ts +35 -18
  263. package/dist_ts/integrations/esphome/esphome.classes.client.js +267 -77
  264. package/dist_ts/integrations/esphome/esphome.classes.configflow.js +2 -4
  265. package/dist_ts/integrations/esphome/esphome.classes.integration.d.ts +22 -11
  266. package/dist_ts/integrations/esphome/esphome.classes.integration.js +68 -61
  267. package/dist_ts/integrations/esphome/esphome.discovery.d.ts +2 -2
  268. package/dist_ts/integrations/esphome/esphome.discovery.js +2 -2
  269. package/dist_ts/integrations/esphome/esphome.mapper.d.ts +1 -2
  270. package/dist_ts/integrations/esphome/esphome.mapper.js +79 -36
  271. package/dist_ts/integrations/esphome/esphome.types.d.ts +2 -0
  272. package/dist_ts/integrations/fibaro/fibaro.classes.client.js +1 -1
  273. package/dist_ts/integrations/file/file.classes.client.js +1 -1
  274. package/dist_ts/integrations/filesize/filesize.classes.client.js +1 -1
  275. package/dist_ts/integrations/flexit_bacnet/flexit_bacnet.classes.client.js +1 -1
  276. package/dist_ts/integrations/flic/flic.classes.client.js +1 -1
  277. package/dist_ts/integrations/flux_led/flux_led.classes.client.js +1 -1
  278. package/dist_ts/integrations/folder/folder.classes.client.js +1 -1
  279. package/dist_ts/integrations/folder_watcher/folder_watcher.classes.client.js +1 -1
  280. package/dist_ts/integrations/forked_daapd/forked_daapd.classes.client.js +1 -1
  281. package/dist_ts/integrations/forked_daapd/forked_daapd.classes.integration.d.ts +1 -1
  282. package/dist_ts/integrations/forked_daapd/forked_daapd.classes.integration.js +1 -1
  283. package/dist_ts/integrations/forked_daapd/forked_daapd.discovery.d.ts +2 -2
  284. package/dist_ts/integrations/foscam/foscam.classes.client.js +1 -1
  285. package/dist_ts/integrations/foscam/foscam.classes.integration.d.ts +1 -1
  286. package/dist_ts/integrations/foscam/foscam.classes.integration.js +1 -1
  287. package/dist_ts/integrations/foscam/foscam.discovery.d.ts +3 -3
  288. package/dist_ts/integrations/foscam/foscam.types.d.ts +2 -2
  289. package/dist_ts/integrations/freebox/freebox.classes.client.js +1 -1
  290. package/dist_ts/integrations/freebox/freebox.classes.integration.d.ts +1 -1
  291. package/dist_ts/integrations/freebox/freebox.classes.integration.js +1 -1
  292. package/dist_ts/integrations/freebox/freebox.discovery.d.ts +2 -2
  293. package/dist_ts/integrations/freebox/freebox.mapper.js +1 -1
  294. package/dist_ts/integrations/freebox/freebox.types.d.ts +11 -11
  295. package/dist_ts/integrations/fritz/fritz.classes.client.js +1 -1
  296. package/dist_ts/integrations/fritz/fritz.classes.integration.d.ts +1 -1
  297. package/dist_ts/integrations/fritz/fritz.classes.integration.js +1 -1
  298. package/dist_ts/integrations/fritz/fritz.discovery.d.ts +3 -3
  299. package/dist_ts/integrations/fritz/fritz.mapper.js +1 -1
  300. package/dist_ts/integrations/fritzbox_callmonitor/fritzbox_callmonitor.classes.client.js +1 -1
  301. package/dist_ts/integrations/fritzbox_callmonitor/fritzbox_callmonitor.classes.integration.d.ts +1 -1
  302. package/dist_ts/integrations/fritzbox_callmonitor/fritzbox_callmonitor.classes.integration.js +1 -1
  303. package/dist_ts/integrations/fritzbox_callmonitor/fritzbox_callmonitor.discovery.d.ts +3 -3
  304. package/dist_ts/integrations/fritzbox_callmonitor/fritzbox_callmonitor.mapper.js +1 -1
  305. package/dist_ts/integrations/fronius/fronius.classes.client.js +1 -1
  306. package/dist_ts/integrations/fronius/fronius.classes.integration.d.ts +1 -1
  307. package/dist_ts/integrations/fronius/fronius.classes.integration.js +1 -1
  308. package/dist_ts/integrations/fronius/fronius.discovery.d.ts +2 -2
  309. package/dist_ts/integrations/fronius/fronius.mapper.js +1 -1
  310. package/dist_ts/integrations/frontier_silicon/frontier_silicon.classes.client.js +1 -1
  311. package/dist_ts/integrations/frontier_silicon/frontier_silicon.classes.integration.d.ts +1 -1
  312. package/dist_ts/integrations/frontier_silicon/frontier_silicon.classes.integration.js +1 -1
  313. package/dist_ts/integrations/frontier_silicon/frontier_silicon.discovery.d.ts +2 -2
  314. package/dist_ts/integrations/fully_kiosk/fully_kiosk.classes.client.js +1 -1
  315. package/dist_ts/integrations/fully_kiosk/fully_kiosk.classes.integration.d.ts +1 -1
  316. package/dist_ts/integrations/fully_kiosk/fully_kiosk.classes.integration.js +1 -1
  317. package/dist_ts/integrations/fully_kiosk/fully_kiosk.discovery.d.ts +2 -2
  318. package/dist_ts/integrations/fully_kiosk/fully_kiosk.mapper.js +1 -1
  319. package/dist_ts/integrations/generated/index.d.ts +1 -1
  320. package/dist_ts/integrations/generated/index.js +5 -7
  321. package/dist_ts/integrations/generic/generic.classes.client.js +1 -1
  322. package/dist_ts/integrations/geniushub/geniushub.classes.client.js +1 -1
  323. package/dist_ts/integrations/glances/glances.classes.client.js +1 -1
  324. package/dist_ts/integrations/glances/glances.classes.integration.d.ts +1 -1
  325. package/dist_ts/integrations/glances/glances.classes.integration.js +1 -1
  326. package/dist_ts/integrations/glances/glances.discovery.d.ts +2 -2
  327. package/dist_ts/integrations/go2rtc/go2rtc.classes.client.js +1 -1
  328. package/dist_ts/integrations/go2rtc/go2rtc.classes.integration.d.ts +1 -1
  329. package/dist_ts/integrations/go2rtc/go2rtc.classes.integration.js +1 -1
  330. package/dist_ts/integrations/go2rtc/go2rtc.discovery.d.ts +2 -2
  331. package/dist_ts/integrations/go2rtc/go2rtc.mapper.js +1 -1
  332. package/dist_ts/integrations/goalzero/goalzero.classes.client.js +1 -1
  333. package/dist_ts/integrations/gogogate2/gogogate2.classes.client.js +1 -1
  334. package/dist_ts/integrations/goodwe/goodwe.classes.client.js +1 -1
  335. package/dist_ts/integrations/goodwe/goodwe.classes.integration.d.ts +1 -1
  336. package/dist_ts/integrations/goodwe/goodwe.classes.integration.js +1 -1
  337. package/dist_ts/integrations/goodwe/goodwe.discovery.d.ts +1 -1
  338. package/dist_ts/integrations/goodwe/goodwe.types.d.ts +8 -8
  339. package/dist_ts/integrations/google_wifi/google_wifi.classes.client.js +1 -1
  340. package/dist_ts/integrations/govee_ble/govee_ble.classes.client.js +1 -1
  341. package/dist_ts/integrations/govee_light_local/govee_light_local.classes.client.js +1 -1
  342. package/dist_ts/integrations/gpsd/gpsd.classes.client.js +1 -1
  343. package/dist_ts/integrations/graphite/graphite.classes.client.js +1 -1
  344. package/dist_ts/integrations/gree/gree.classes.client.js +1 -1
  345. package/dist_ts/integrations/harman_kardon_avr/harman_kardon_avr.classes.client.js +1 -1
  346. package/dist_ts/integrations/harman_kardon_avr/harman_kardon_avr.classes.integration.d.ts +1 -1
  347. package/dist_ts/integrations/harman_kardon_avr/harman_kardon_avr.classes.integration.js +1 -1
  348. package/dist_ts/integrations/harman_kardon_avr/harman_kardon_avr.discovery.d.ts +1 -1
  349. package/dist_ts/integrations/harman_kardon_avr/harman_kardon_avr.types.d.ts +12 -12
  350. package/dist_ts/integrations/harmony/harmony.classes.client.js +1 -1
  351. package/dist_ts/integrations/harmony/harmony.classes.integration.d.ts +1 -1
  352. package/dist_ts/integrations/harmony/harmony.classes.integration.js +1 -1
  353. package/dist_ts/integrations/harmony/harmony.discovery.d.ts +2 -2
  354. package/dist_ts/integrations/hddtemp/hddtemp.classes.client.js +1 -1
  355. package/dist_ts/integrations/hddtemp/hddtemp.classes.integration.d.ts +1 -1
  356. package/dist_ts/integrations/hddtemp/hddtemp.classes.integration.js +1 -1
  357. package/dist_ts/integrations/hddtemp/hddtemp.discovery.d.ts +2 -2
  358. package/dist_ts/integrations/hdfury/hdfury.classes.client.js +1 -1
  359. package/dist_ts/integrations/hdmi_cec/hdmi_cec.classes.client.js +1 -1
  360. package/dist_ts/integrations/heatmiser/heatmiser.classes.client.js +1 -1
  361. package/dist_ts/integrations/hegel/hegel.classes.client.js +1 -1
  362. package/dist_ts/integrations/heos/heos.classes.client.js +1 -1
  363. package/dist_ts/integrations/heos/heos.classes.integration.d.ts +1 -1
  364. package/dist_ts/integrations/heos/heos.classes.integration.js +1 -1
  365. package/dist_ts/integrations/heos/heos.discovery.d.ts +3 -3
  366. package/dist_ts/integrations/hikvision/hikvision.classes.client.js +1 -1
  367. package/dist_ts/integrations/hikvision/hikvision.classes.integration.d.ts +1 -1
  368. package/dist_ts/integrations/hikvision/hikvision.classes.integration.js +1 -1
  369. package/dist_ts/integrations/hikvision/hikvision.discovery.d.ts +3 -3
  370. package/dist_ts/integrations/hikvisioncam/hikvisioncam.classes.client.js +1 -1
  371. package/dist_ts/integrations/hisense_aehw4a1/hisense_aehw4a1.classes.client.js +1 -1
  372. package/dist_ts/integrations/hitron_coda/hitron_coda.classes.client.js +1 -1
  373. package/dist_ts/integrations/hlk_sw16/hlk_sw16.classes.client.js +1 -1
  374. package/dist_ts/integrations/holiday/holiday.classes.client.js +1 -1
  375. package/dist_ts/integrations/homeassistant/homeassistant.classes.client.d.ts +7 -1
  376. package/dist_ts/integrations/homeassistant/homeassistant.classes.client.js +174 -50
  377. package/dist_ts/integrations/homeassistant/homeassistant.classes.integration.d.ts +1 -1
  378. package/dist_ts/integrations/homeassistant/homeassistant.classes.integration.js +1 -1
  379. package/dist_ts/integrations/homeassistant/homeassistant.classes.runtime.d.ts +2 -0
  380. package/dist_ts/integrations/homeassistant/homeassistant.classes.runtime.js +35 -3
  381. package/dist_ts/integrations/homeassistant/homeassistant.mapper.d.ts +4 -4
  382. package/dist_ts/integrations/homeassistant/homeassistant.mapper.js +25 -36
  383. package/dist_ts/integrations/homeassistant/homeassistant.types.d.ts +10 -0
  384. package/dist_ts/integrations/homeassistant/homeassistant.validation.d.ts +9 -0
  385. package/dist_ts/integrations/homeassistant/homeassistant.validation.js +137 -0
  386. package/dist_ts/integrations/homee/homee.classes.client.js +1 -1
  387. package/dist_ts/integrations/homekit_controller/homekit_controller.classes.client.js +1 -1
  388. package/dist_ts/integrations/homekit_controller/homekit_controller.classes.integration.d.ts +1 -1
  389. package/dist_ts/integrations/homekit_controller/homekit_controller.classes.integration.js +1 -1
  390. package/dist_ts/integrations/homekit_controller/homekit_controller.discovery.d.ts +2 -2
  391. package/dist_ts/integrations/homekit_controller/homekit_controller.mapper.js +1 -1
  392. package/dist_ts/integrations/homematic/homematic.classes.client.d.ts +2 -2
  393. package/dist_ts/integrations/homematic/homematic.classes.client.js +1 -1
  394. package/dist_ts/integrations/homematic/homematic.classes.integration.d.ts +1 -1
  395. package/dist_ts/integrations/homematic/homematic.classes.integration.js +1 -1
  396. package/dist_ts/integrations/homematic/homematic.constants.d.ts +2 -2
  397. package/dist_ts/integrations/homematic/homematic.discovery.d.ts +2 -2
  398. package/dist_ts/integrations/homewizard/homewizard.classes.client.js +1 -1
  399. package/dist_ts/integrations/homewizard/homewizard.classes.integration.d.ts +3 -3
  400. package/dist_ts/integrations/homewizard/homewizard.classes.integration.js +1 -1
  401. package/dist_ts/integrations/homewizard/homewizard.discovery.d.ts +3 -3
  402. package/dist_ts/integrations/homewizard/homewizard.mapper.js +1 -1
  403. package/dist_ts/integrations/homewizard/homewizard.types.d.ts +10 -10
  404. package/dist_ts/integrations/huawei_lte/huawei_lte.classes.client.js +1 -1
  405. package/dist_ts/integrations/huawei_lte/huawei_lte.classes.integration.d.ts +2 -2
  406. package/dist_ts/integrations/huawei_lte/huawei_lte.classes.integration.js +1 -1
  407. package/dist_ts/integrations/huawei_lte/huawei_lte.discovery.d.ts +3 -3
  408. package/dist_ts/integrations/huawei_lte/huawei_lte.mapper.js +1 -1
  409. package/dist_ts/integrations/huawei_lte/huawei_lte.types.d.ts +1 -1
  410. package/dist_ts/integrations/hue/hue.classes.client.d.ts +13 -5
  411. package/dist_ts/integrations/hue/hue.classes.client.js +278 -23
  412. package/dist_ts/integrations/hue/hue.classes.configflow.js +34 -14
  413. package/dist_ts/integrations/hue/hue.classes.integration.d.ts +2 -1
  414. package/dist_ts/integrations/hue/hue.classes.integration.js +85 -25
  415. package/dist_ts/integrations/hue/hue.discovery.d.ts +2 -2
  416. package/dist_ts/integrations/hue/hue.discovery.js +79 -26
  417. package/dist_ts/integrations/hue/hue.mapper.d.ts +0 -1
  418. package/dist_ts/integrations/hue/hue.mapper.js +26 -54
  419. package/dist_ts/integrations/hue/hue.types.d.ts +14 -7
  420. package/dist_ts/integrations/hue/hue.validation.d.ts +11 -0
  421. package/dist_ts/integrations/hue/hue.validation.js +160 -0
  422. package/dist_ts/integrations/hunterdouglas_powerview/hunterdouglas_powerview.classes.client.js +1 -1
  423. package/dist_ts/integrations/hunterdouglas_powerview/hunterdouglas_powerview.classes.integration.d.ts +2 -2
  424. package/dist_ts/integrations/hunterdouglas_powerview/hunterdouglas_powerview.classes.integration.js +1 -1
  425. package/dist_ts/integrations/hunterdouglas_powerview/hunterdouglas_powerview.discovery.d.ts +3 -3
  426. package/dist_ts/integrations/hunterdouglas_powerview/hunterdouglas_powerview.types.d.ts +1 -1
  427. package/dist_ts/integrations/hyperion/hyperion.classes.client.js +1 -1
  428. package/dist_ts/integrations/hyperion/hyperion.classes.integration.d.ts +1 -1
  429. package/dist_ts/integrations/hyperion/hyperion.classes.integration.js +1 -1
  430. package/dist_ts/integrations/hyperion/hyperion.discovery.d.ts +3 -3
  431. package/dist_ts/integrations/hyperion/hyperion.types.d.ts +1 -1
  432. package/dist_ts/integrations/imeon_inverter/imeon_inverter.classes.client.js +1 -1
  433. package/dist_ts/integrations/immich/immich.classes.client.js +1 -1
  434. package/dist_ts/integrations/incomfort/incomfort.classes.integration.js +1 -1
  435. package/dist_ts/integrations/indevolt/indevolt.classes.integration.js +1 -1
  436. package/dist_ts/integrations/index.d.ts +4 -1
  437. package/dist_ts/integrations/index.js +5 -2
  438. package/dist_ts/integrations/influxdb/influxdb.classes.client.js +1 -1
  439. package/dist_ts/integrations/intellifire/intellifire.classes.client.js +1 -1
  440. package/dist_ts/integrations/intellifire/intellifire.mapper.js +1 -1
  441. package/dist_ts/integrations/iometer/iometer.classes.client.js +1 -1
  442. package/dist_ts/integrations/iometer/iometer.mapper.js +1 -1
  443. package/dist_ts/integrations/iotawatt/iotawatt.classes.client.js +1 -1
  444. package/dist_ts/integrations/iperf3/iperf3.classes.client.js +1 -1
  445. package/dist_ts/integrations/ipp/ipp.classes.client.js +1 -1
  446. package/dist_ts/integrations/ipp/ipp.classes.integration.d.ts +1 -1
  447. package/dist_ts/integrations/ipp/ipp.classes.integration.js +1 -1
  448. package/dist_ts/integrations/ipp/ipp.discovery.d.ts +2 -2
  449. package/dist_ts/integrations/iron_os/iron_os.classes.client.js +1 -1
  450. package/dist_ts/integrations/iskra/iskra.classes.client.js +1 -1
  451. package/dist_ts/integrations/iskra/iskra.mapper.js +1 -1
  452. package/dist_ts/integrations/itunes/itunes.classes.client.js +1 -1
  453. package/dist_ts/integrations/jellyfin/jellyfin.classes.client.js +1 -1
  454. package/dist_ts/integrations/jellyfin/jellyfin.classes.integration.d.ts +1 -1
  455. package/dist_ts/integrations/jellyfin/jellyfin.classes.integration.js +1 -1
  456. package/dist_ts/integrations/jellyfin/jellyfin.discovery.d.ts +3 -3
  457. package/dist_ts/integrations/jvc_projector/jvc_projector.classes.client.js +1 -1
  458. package/dist_ts/integrations/kaleidescape/kaleidescape.classes.client.js +1 -1
  459. package/dist_ts/integrations/kankun/kankun.classes.client.js +1 -1
  460. package/dist_ts/integrations/keenetic_ndms2/keenetic_ndms2.classes.client.js +1 -1
  461. package/dist_ts/integrations/kef/kef.classes.client.js +1 -1
  462. package/dist_ts/integrations/kiosker/kiosker.classes.client.js +1 -1
  463. package/dist_ts/integrations/kira/kira.classes.client.js +1 -1
  464. package/dist_ts/integrations/kmtronic/kmtronic.classes.client.js +1 -1
  465. package/dist_ts/integrations/knx/knx.classes.client.js +1 -1
  466. package/dist_ts/integrations/knx/knx.classes.integration.d.ts +1 -1
  467. package/dist_ts/integrations/knx/knx.classes.integration.js +1 -1
  468. package/dist_ts/integrations/knx/knx.discovery.d.ts +3 -3
  469. package/dist_ts/integrations/knx/knx.mapper.d.ts +1 -1
  470. package/dist_ts/integrations/knx/knx.mapper.js +1 -1
  471. package/dist_ts/integrations/kodi/kodi.classes.client.d.ts +11 -45
  472. package/dist_ts/integrations/kodi/kodi.classes.client.js +84 -310
  473. package/dist_ts/integrations/kodi/kodi.classes.configflow.d.ts +9 -8
  474. package/dist_ts/integrations/kodi/kodi.classes.configflow.js +53 -48
  475. package/dist_ts/integrations/kodi/kodi.classes.integration.d.ts +12 -12
  476. package/dist_ts/integrations/kodi/kodi.classes.integration.js +114 -171
  477. package/dist_ts/integrations/kodi/kodi.discovery.d.ts +2 -2
  478. package/dist_ts/integrations/kodi/kodi.discovery.js +53 -29
  479. package/dist_ts/integrations/kodi/kodi.mapper.d.ts +7 -2
  480. package/dist_ts/integrations/kodi/kodi.mapper.js +48 -10
  481. package/dist_ts/integrations/kodi/kodi.types.d.ts +32 -28
  482. package/dist_ts/integrations/kodi/kodi.validation.d.ts +9 -0
  483. package/dist_ts/integrations/kodi/kodi.validation.js +62 -0
  484. package/dist_ts/integrations/konnected/konnected.classes.client.js +1 -1
  485. package/dist_ts/integrations/kostal_plenticore/kostal_plenticore.classes.client.js +1 -1
  486. package/dist_ts/integrations/kostal_plenticore/kostal_plenticore.mapper.js +1 -1
  487. package/dist_ts/integrations/kwb/kwb.classes.client.js +1 -1
  488. package/dist_ts/integrations/kwb/kwb.mapper.js +1 -1
  489. package/dist_ts/integrations/lametric/lametric.classes.client.js +1 -1
  490. package/dist_ts/integrations/landisgyr_heat_meter/landisgyr_heat_meter.mapper.js +1 -1
  491. package/dist_ts/integrations/lcn/lcn.classes.client.js +1 -1
  492. package/dist_ts/integrations/lektrico/lektrico.classes.client.js +1 -1
  493. package/dist_ts/integrations/lektrico/lektrico.types.d.ts +4 -4
  494. package/dist_ts/integrations/lg_netcast/lg_netcast.classes.client.js +1 -1
  495. package/dist_ts/integrations/lg_soundbar/lg_soundbar.classes.client.js +1 -1
  496. package/dist_ts/integrations/libre_hardware_monitor/libre_hardware_monitor.classes.client.js +1 -1
  497. package/dist_ts/integrations/lidarr/lidarr.classes.client.js +1 -1
  498. package/dist_ts/integrations/lifx/lifx.classes.client.d.ts +10 -4
  499. package/dist_ts/integrations/lifx/lifx.classes.client.js +94 -6
  500. package/dist_ts/integrations/lifx/lifx.classes.configflow.d.ts +3 -3
  501. package/dist_ts/integrations/lifx/lifx.classes.configflow.js +37 -6
  502. package/dist_ts/integrations/lifx/lifx.classes.integration.d.ts +19 -4
  503. package/dist_ts/integrations/lifx/lifx.classes.integration.js +152 -7
  504. package/dist_ts/integrations/lifx/lifx.discovery.d.ts +2 -1
  505. package/dist_ts/integrations/lifx/lifx.discovery.js +26 -4
  506. package/dist_ts/integrations/lifx/lifx.mapper.d.ts +7 -8
  507. package/dist_ts/integrations/lifx/lifx.mapper.js +42 -12
  508. package/dist_ts/integrations/lifx/lifx.types.d.ts +61 -9
  509. package/dist_ts/integrations/lifx/lifx.types.js +9 -116
  510. package/dist_ts/integrations/lifx/lifx.validation.d.ts +10 -0
  511. package/dist_ts/integrations/lifx/lifx.validation.js +83 -0
  512. package/dist_ts/integrations/linkplay/linkplay.classes.client.js +1 -1
  513. package/dist_ts/integrations/linkplay/linkplay.classes.integration.d.ts +1 -1
  514. package/dist_ts/integrations/linkplay/linkplay.classes.integration.js +1 -1
  515. package/dist_ts/integrations/linkplay/linkplay.discovery.d.ts +3 -3
  516. package/dist_ts/integrations/linksys_smart/linksys_smart.classes.client.js +1 -1
  517. package/dist_ts/integrations/livisi/livisi.classes.client.js +1 -1
  518. package/dist_ts/integrations/local_calendar/local_calendar.classes.client.js +1 -1
  519. package/dist_ts/integrations/local_file/local_file.classes.client.js +1 -1
  520. package/dist_ts/integrations/local_ip/local_ip.classes.client.js +1 -1
  521. package/dist_ts/integrations/local_todo/local_todo.classes.client.js +1 -1
  522. package/dist_ts/integrations/lookin/lookin.classes.client.js +1 -1
  523. package/dist_ts/integrations/loqed/loqed.classes.client.js +1 -1
  524. package/dist_ts/integrations/loqed/loqed.mapper.d.ts +1 -1
  525. package/dist_ts/integrations/loqed/loqed.mapper.js +1 -1
  526. package/dist_ts/integrations/luci/luci.classes.client.js +1 -1
  527. package/dist_ts/integrations/luci/luci.mapper.js +1 -1
  528. package/dist_ts/integrations/lunatone/lunatone.classes.client.js +1 -1
  529. package/dist_ts/integrations/lunatone/lunatone.mapper.js +1 -1
  530. package/dist_ts/integrations/madvr/madvr.classes.client.js +1 -1
  531. package/dist_ts/integrations/madvr/madvr.classes.integration.d.ts +1 -1
  532. package/dist_ts/integrations/madvr/madvr.classes.integration.js +1 -1
  533. package/dist_ts/integrations/madvr/madvr.discovery.d.ts +2 -2
  534. package/dist_ts/integrations/marytts/marytts.classes.client.js +1 -1
  535. package/dist_ts/integrations/marytts/marytts.classes.integration.js +1 -1
  536. package/dist_ts/integrations/matter/matter.classes.client.js +1 -1
  537. package/dist_ts/integrations/matter/matter.classes.integration.d.ts +1 -1
  538. package/dist_ts/integrations/matter/matter.classes.integration.js +1 -1
  539. package/dist_ts/integrations/matter/matter.discovery.d.ts +2 -2
  540. package/dist_ts/integrations/matter/matter.mapper.js +1 -1
  541. package/dist_ts/integrations/maxcube/maxcube.classes.client.js +1 -1
  542. package/dist_ts/integrations/mcp/mcp.classes.client.js +1 -1
  543. package/dist_ts/integrations/mcp_server/mcp_server.classes.client.js +1 -1
  544. package/dist_ts/integrations/mealie/mealie.classes.client.js +1 -1
  545. package/dist_ts/integrations/mealie/mealie.mapper.js +1 -1
  546. package/dist_ts/integrations/medcom_ble/medcom_ble.classes.client.js +1 -1
  547. package/dist_ts/integrations/medcom_ble/medcom_ble.mapper.js +1 -1
  548. package/dist_ts/integrations/mediaroom/mediaroom.classes.client.js +1 -1
  549. package/dist_ts/integrations/mediaroom/mediaroom.mapper.js +1 -1
  550. package/dist_ts/integrations/mfi/mfi.mapper.js +1 -1
  551. package/dist_ts/integrations/mikrotik/mikrotik.classes.client.js +1 -1
  552. package/dist_ts/integrations/mikrotik/mikrotik.classes.integration.d.ts +1 -1
  553. package/dist_ts/integrations/mikrotik/mikrotik.classes.integration.js +1 -1
  554. package/dist_ts/integrations/mikrotik/mikrotik.discovery.d.ts +1 -1
  555. package/dist_ts/integrations/mikrotik/mikrotik.mapper.js +1 -1
  556. package/dist_ts/integrations/mill/mill.classes.client.js +1 -1
  557. package/dist_ts/integrations/mill/mill.mapper.js +1 -1
  558. package/dist_ts/integrations/minecraft_server/minecraft_server.classes.client.js +1 -1
  559. package/dist_ts/integrations/mjpeg/mjpeg.classes.client.js +1 -1
  560. package/dist_ts/integrations/mobile_app/mobile_app.classes.client.js +1 -1
  561. package/dist_ts/integrations/mochad/mochad.classes.client.js +1 -1
  562. package/dist_ts/integrations/modbus/modbus.classes.client.d.ts +15 -61
  563. package/dist_ts/integrations/modbus/modbus.classes.client.js +117 -776
  564. package/dist_ts/integrations/modbus/modbus.classes.configflow.d.ts +9 -5
  565. package/dist_ts/integrations/modbus/modbus.classes.configflow.js +70 -38
  566. package/dist_ts/integrations/modbus/modbus.classes.integration.d.ts +7 -18
  567. package/dist_ts/integrations/modbus/modbus.classes.integration.js +133 -57
  568. package/dist_ts/integrations/modbus/modbus.discovery.d.ts +5 -8
  569. package/dist_ts/integrations/modbus/modbus.discovery.js +38 -93
  570. package/dist_ts/integrations/modbus/modbus.mapper.d.ts +8 -32
  571. package/dist_ts/integrations/modbus/modbus.mapper.js +71 -431
  572. package/dist_ts/integrations/modbus/modbus.types.d.ts +82 -332
  573. package/dist_ts/integrations/modbus/modbus.validation.d.ts +10 -0
  574. package/dist_ts/integrations/modbus/modbus.validation.js +128 -0
  575. package/dist_ts/integrations/modern_forms/modern_forms.classes.client.js +1 -1
  576. package/dist_ts/integrations/moehlenhoff_alpha2/moehlenhoff_alpha2.classes.client.js +1 -1
  577. package/dist_ts/integrations/monoprice/monoprice.classes.client.js +1 -1
  578. package/dist_ts/integrations/motioneye/motioneye.classes.client.js +1 -1
  579. package/dist_ts/integrations/motioneye/motioneye.classes.integration.d.ts +1 -1
  580. package/dist_ts/integrations/motioneye/motioneye.classes.integration.js +1 -1
  581. package/dist_ts/integrations/motioneye/motioneye.discovery.d.ts +2 -2
  582. package/dist_ts/integrations/motioneye/motioneye.types.d.ts +1 -1
  583. package/dist_ts/integrations/motionmount/motionmount.classes.client.js +1 -1
  584. package/dist_ts/integrations/mpd/mpd.classes.client.js +1 -1
  585. package/dist_ts/integrations/mpd/mpd.classes.integration.d.ts +1 -1
  586. package/dist_ts/integrations/mpd/mpd.classes.integration.js +1 -1
  587. package/dist_ts/integrations/mpd/mpd.discovery.d.ts +2 -2
  588. package/dist_ts/integrations/mqtt/mqtt.classes.client.d.ts +54 -9
  589. package/dist_ts/integrations/mqtt/mqtt.classes.client.js +443 -352
  590. package/dist_ts/integrations/mqtt/mqtt.classes.configflow.d.ts +0 -1
  591. package/dist_ts/integrations/mqtt/mqtt.classes.configflow.js +23 -18
  592. package/dist_ts/integrations/mqtt/mqtt.classes.integration.d.ts +1 -1
  593. package/dist_ts/integrations/mqtt/mqtt.classes.integration.js +140 -37
  594. package/dist_ts/integrations/mqtt/mqtt.discovery.d.ts +2 -2
  595. package/dist_ts/integrations/mqtt/mqtt.mapper.d.ts +7 -1
  596. package/dist_ts/integrations/mqtt/mqtt.mapper.js +161 -48
  597. package/dist_ts/integrations/mqtt/mqtt.types.d.ts +17 -0
  598. package/dist_ts/integrations/mqtt_eventstream/mqtt_eventstream.classes.client.js +1 -1
  599. package/dist_ts/integrations/mqtt_json/mqtt_json.classes.client.js +1 -1
  600. package/dist_ts/integrations/mqtt_room/mqtt_room.classes.client.js +1 -1
  601. package/dist_ts/integrations/music_assistant/music_assistant.classes.client.js +1 -1
  602. package/dist_ts/integrations/music_assistant/music_assistant.mapper.js +1 -1
  603. package/dist_ts/integrations/mutesync/mutesync.classes.client.js +1 -1
  604. package/dist_ts/integrations/mutesync/mutesync.mapper.js +1 -1
  605. package/dist_ts/integrations/mycroft/mycroft.classes.client.js +1 -1
  606. package/dist_ts/integrations/mysensors/mysensors.classes.client.js +1 -1
  607. package/dist_ts/integrations/mystrom/mystrom.classes.client.js +1 -1
  608. package/dist_ts/integrations/nad/nad.classes.client.js +1 -1
  609. package/dist_ts/integrations/nam/nam.classes.client.js +1 -1
  610. package/dist_ts/integrations/nanoleaf/nanoleaf.classes.client.d.ts +12 -34
  611. package/dist_ts/integrations/nanoleaf/nanoleaf.classes.client.js +143 -231
  612. package/dist_ts/integrations/nanoleaf/nanoleaf.classes.configflow.d.ts +6 -1
  613. package/dist_ts/integrations/nanoleaf/nanoleaf.classes.configflow.js +105 -18
  614. package/dist_ts/integrations/nanoleaf/nanoleaf.classes.integration.d.ts +9 -9
  615. package/dist_ts/integrations/nanoleaf/nanoleaf.classes.integration.js +141 -155
  616. package/dist_ts/integrations/nanoleaf/nanoleaf.credentials.d.ts +9 -0
  617. package/dist_ts/integrations/nanoleaf/nanoleaf.credentials.js +35 -0
  618. package/dist_ts/integrations/nanoleaf/nanoleaf.discovery.d.ts +3 -3
  619. package/dist_ts/integrations/nanoleaf/nanoleaf.mapper.d.ts +6 -18
  620. package/dist_ts/integrations/nanoleaf/nanoleaf.mapper.js +45 -220
  621. package/dist_ts/integrations/nanoleaf/nanoleaf.types.d.ts +33 -147
  622. package/dist_ts/integrations/nanoleaf/nanoleaf.validation.d.ts +6 -0
  623. package/dist_ts/integrations/nanoleaf/nanoleaf.validation.js +82 -0
  624. package/dist_ts/integrations/nasweb/nasweb.classes.client.js +1 -1
  625. package/dist_ts/integrations/netdata/netdata.classes.client.js +1 -1
  626. package/dist_ts/integrations/nibe_heatpump/nibe_heatpump.classes.client.js +1 -1
  627. package/dist_ts/integrations/niko_home_control/niko_home_control.classes.client.js +1 -1
  628. package/dist_ts/integrations/nobo_hub/nobo_hub.classes.client.js +1 -1
  629. package/dist_ts/integrations/nrgkick/nrgkick.classes.client.js +1 -1
  630. package/dist_ts/integrations/nuki/nuki.classes.client.js +1 -1
  631. package/dist_ts/integrations/nut/nut.classes.client.js +1 -1
  632. package/dist_ts/integrations/nut/nut.classes.integration.js +1 -1
  633. package/dist_ts/integrations/nx584/nx584.classes.client.js +1 -1
  634. package/dist_ts/integrations/nx584/nx584.classes.integration.js +1 -1
  635. package/dist_ts/integrations/nzbget/nzbget.classes.client.js +1 -1
  636. package/dist_ts/integrations/nzbget/nzbget.mapper.js +1 -1
  637. package/dist_ts/integrations/obihai/obihai.classes.client.js +1 -1
  638. package/dist_ts/integrations/octoprint/octoprint.classes.client.js +1 -1
  639. package/dist_ts/integrations/octoprint/octoprint.mapper.js +1 -1
  640. package/dist_ts/integrations/oem/oem.classes.client.js +1 -1
  641. package/dist_ts/integrations/ollama/ollama.classes.client.js +1 -1
  642. package/dist_ts/integrations/ombi/ombi.classes.client.js +1 -1
  643. package/dist_ts/integrations/onewire/onewire.classes.client.js +1 -1
  644. package/dist_ts/integrations/onkyo/onkyo.classes.client.d.ts +15 -20
  645. package/dist_ts/integrations/onkyo/onkyo.classes.client.js +161 -404
  646. package/dist_ts/integrations/onkyo/onkyo.classes.configflow.d.ts +9 -4
  647. package/dist_ts/integrations/onkyo/onkyo.classes.configflow.js +51 -6
  648. package/dist_ts/integrations/onkyo/onkyo.classes.integration.d.ts +22 -6
  649. package/dist_ts/integrations/onkyo/onkyo.classes.integration.js +144 -11
  650. package/dist_ts/integrations/onkyo/onkyo.discovery.d.ts +6 -1
  651. package/dist_ts/integrations/onkyo/onkyo.discovery.js +40 -4
  652. package/dist_ts/integrations/onkyo/onkyo.mapper.d.ts +7 -8
  653. package/dist_ts/integrations/onkyo/onkyo.mapper.js +45 -12
  654. package/dist_ts/integrations/onkyo/onkyo.types.d.ts +58 -8
  655. package/dist_ts/integrations/onkyo/onkyo.types.js +13 -102
  656. package/dist_ts/integrations/onkyo/onkyo.validation.d.ts +16 -0
  657. package/dist_ts/integrations/onkyo/onkyo.validation.js +77 -0
  658. package/dist_ts/integrations/onvif/onvif.classes.client.js +1 -1
  659. package/dist_ts/integrations/onvif/onvif.classes.integration.d.ts +1 -1
  660. package/dist_ts/integrations/onvif/onvif.classes.integration.js +1 -1
  661. package/dist_ts/integrations/onvif/onvif.discovery.d.ts +3 -3
  662. package/dist_ts/integrations/onvif/onvif.mapper.js +1 -1
  663. package/dist_ts/integrations/openevse/openevse.classes.client.js +1 -1
  664. package/dist_ts/integrations/openevse/openevse.mapper.js +1 -1
  665. package/dist_ts/integrations/opengarage/opengarage.classes.client.js +1 -1
  666. package/dist_ts/integrations/opengarage/opengarage.mapper.js +1 -1
  667. package/dist_ts/integrations/openhardwaremonitor/openhardwaremonitor.classes.client.js +1 -1
  668. package/dist_ts/integrations/openhome/openhome.classes.client.d.ts +2 -1
  669. package/dist_ts/integrations/openhome/openhome.classes.client.js +21 -19
  670. package/dist_ts/integrations/openrgb/openrgb.classes.client.js +1 -1
  671. package/dist_ts/integrations/openrgb/openrgb.classes.integration.d.ts +1 -1
  672. package/dist_ts/integrations/openrgb/openrgb.classes.integration.js +1 -1
  673. package/dist_ts/integrations/openrgb/openrgb.discovery.d.ts +2 -2
  674. package/dist_ts/integrations/openrgb/openrgb.mapper.js +1 -1
  675. package/dist_ts/integrations/opentherm_gw/opentherm_gw.classes.client.d.ts +1 -1
  676. package/dist_ts/integrations/opentherm_gw/opentherm_gw.classes.client.js +1 -1
  677. package/dist_ts/integrations/opentherm_gw/opentherm_gw.classes.integration.d.ts +1 -1
  678. package/dist_ts/integrations/opentherm_gw/opentherm_gw.classes.integration.js +1 -1
  679. package/dist_ts/integrations/opentherm_gw/opentherm_gw.discovery.d.ts +1 -1
  680. package/dist_ts/integrations/opnsense/opnsense.classes.client.js +1 -1
  681. package/dist_ts/integrations/opnsense/opnsense.classes.integration.d.ts +1 -1
  682. package/dist_ts/integrations/opnsense/opnsense.classes.integration.js +1 -1
  683. package/dist_ts/integrations/opnsense/opnsense.discovery.d.ts +1 -1
  684. package/dist_ts/integrations/opnsense/opnsense.mapper.js +1 -1
  685. package/dist_ts/integrations/orvibo/orvibo.classes.client.js +1 -1
  686. package/dist_ts/integrations/osramlightify/osramlightify.classes.client.js +1 -1
  687. package/dist_ts/integrations/otbr/otbr.classes.client.js +1 -1
  688. package/dist_ts/integrations/overkiz/overkiz.classes.client.js +1 -1
  689. package/dist_ts/integrations/overseerr/overseerr.classes.client.js +1 -1
  690. package/dist_ts/integrations/owntracks/owntracks.classes.client.js +1 -1
  691. package/dist_ts/integrations/p1_monitor/p1_monitor.classes.client.js +1 -1
  692. package/dist_ts/integrations/palazzetti/palazzetti.classes.client.js +1 -1
  693. package/dist_ts/integrations/panasonic_bluray/panasonic_bluray.classes.client.js +1 -1
  694. package/dist_ts/integrations/panasonic_viera/panasonic_viera.classes.client.d.ts +25 -25
  695. package/dist_ts/integrations/panasonic_viera/panasonic_viera.classes.client.js +116 -360
  696. package/dist_ts/integrations/panasonic_viera/panasonic_viera.classes.configflow.d.ts +11 -3
  697. package/dist_ts/integrations/panasonic_viera/panasonic_viera.classes.configflow.js +76 -6
  698. package/dist_ts/integrations/panasonic_viera/panasonic_viera.classes.integration.d.ts +26 -4
  699. package/dist_ts/integrations/panasonic_viera/panasonic_viera.classes.integration.js +142 -9
  700. package/dist_ts/integrations/panasonic_viera/panasonic_viera.discovery.d.ts +2 -1
  701. package/dist_ts/integrations/panasonic_viera/panasonic_viera.discovery.js +31 -4
  702. package/dist_ts/integrations/panasonic_viera/panasonic_viera.mapper.d.ts +9 -9
  703. package/dist_ts/integrations/panasonic_viera/panasonic_viera.mapper.js +31 -149
  704. package/dist_ts/integrations/panasonic_viera/panasonic_viera.types.d.ts +51 -11
  705. package/dist_ts/integrations/panasonic_viera/panasonic_viera.types.js +22 -87
  706. package/dist_ts/integrations/panasonic_viera/panasonic_viera.validation.d.ts +6 -0
  707. package/dist_ts/integrations/panasonic_viera/panasonic_viera.validation.js +56 -0
  708. package/dist_ts/integrations/paperless_ngx/paperless_ngx.classes.client.js +1 -1
  709. package/dist_ts/integrations/paperless_ngx/paperless_ngx.mapper.js +1 -1
  710. package/dist_ts/integrations/peblar/peblar.classes.client.js +1 -1
  711. package/dist_ts/integrations/peblar/peblar.mapper.js +1 -1
  712. package/dist_ts/integrations/pencom/pencom.classes.client.js +1 -1
  713. package/dist_ts/integrations/philips_js/philips_js.classes.client.js +1 -1
  714. package/dist_ts/integrations/pi_hole/pi_hole.classes.client.js +1 -1
  715. package/dist_ts/integrations/pi_hole/pi_hole.classes.integration.d.ts +1 -1
  716. package/dist_ts/integrations/pi_hole/pi_hole.classes.integration.js +1 -1
  717. package/dist_ts/integrations/pi_hole/pi_hole.discovery.d.ts +2 -2
  718. package/dist_ts/integrations/pi_hole/pi_hole.mapper.js +1 -1
  719. package/dist_ts/integrations/picotts/picotts.classes.client.js +1 -1
  720. package/dist_ts/integrations/pilight/pilight.classes.client.js +1 -1
  721. package/dist_ts/integrations/pilight/pilight.classes.integration.js +1 -1
  722. package/dist_ts/integrations/ping/ping.classes.client.js +1 -1
  723. package/dist_ts/integrations/pioneer/pioneer.classes.client.d.ts +31 -16
  724. package/dist_ts/integrations/pioneer/pioneer.classes.client.js +167 -409
  725. package/dist_ts/integrations/pioneer/pioneer.classes.configflow.d.ts +10 -3
  726. package/dist_ts/integrations/pioneer/pioneer.classes.configflow.js +66 -6
  727. package/dist_ts/integrations/pioneer/pioneer.classes.integration.d.ts +13 -5
  728. package/dist_ts/integrations/pioneer/pioneer.classes.integration.js +239 -11
  729. package/dist_ts/integrations/pioneer/pioneer.discovery.d.ts +14 -1
  730. package/dist_ts/integrations/pioneer/pioneer.discovery.js +51 -4
  731. package/dist_ts/integrations/pioneer/pioneer.mapper.d.ts +14 -8
  732. package/dist_ts/integrations/pioneer/pioneer.mapper.js +54 -12
  733. package/dist_ts/integrations/pioneer/pioneer.types.d.ts +79 -12
  734. package/dist_ts/integrations/pioneer/pioneer.types.js +12 -76
  735. package/dist_ts/integrations/pioneer/pioneer.validation.d.ts +10 -0
  736. package/dist_ts/integrations/pioneer/pioneer.validation.js +85 -0
  737. package/dist_ts/integrations/pjlink/pjlink.classes.client.js +1 -1
  738. package/dist_ts/integrations/plex/plex.classes.client.d.ts +1 -1
  739. package/dist_ts/integrations/plex/plex.classes.client.js +1 -1
  740. package/dist_ts/integrations/plex/plex.classes.integration.d.ts +1 -1
  741. package/dist_ts/integrations/plex/plex.classes.integration.js +1 -1
  742. package/dist_ts/integrations/plex/plex.discovery.d.ts +5 -5
  743. package/dist_ts/integrations/plugwise/plugwise.classes.client.js +1 -1
  744. package/dist_ts/integrations/prusalink/prusalink.classes.client.js +1 -1
  745. package/dist_ts/integrations/prusalink/prusalink.classes.integration.d.ts +1 -1
  746. package/dist_ts/integrations/prusalink/prusalink.classes.integration.js +1 -1
  747. package/dist_ts/integrations/prusalink/prusalink.discovery.d.ts +2 -2
  748. package/dist_ts/integrations/rainbird/rainbird.classes.client.js +1 -1
  749. package/dist_ts/integrations/rainbird/rainbird.classes.integration.d.ts +1 -1
  750. package/dist_ts/integrations/rainbird/rainbird.classes.integration.js +1 -1
  751. package/dist_ts/integrations/rainbird/rainbird.discovery.d.ts +1 -1
  752. package/dist_ts/integrations/rflink/rflink.classes.client.js +1 -1
  753. package/dist_ts/integrations/rflink/rflink.classes.integration.d.ts +1 -1
  754. package/dist_ts/integrations/rflink/rflink.classes.integration.js +1 -1
  755. package/dist_ts/integrations/rflink/rflink.discovery.d.ts +1 -1
  756. package/dist_ts/integrations/roku/roku.classes.client.d.ts +27 -14
  757. package/dist_ts/integrations/roku/roku.classes.client.js +213 -132
  758. package/dist_ts/integrations/roku/roku.classes.configflow.js +23 -14
  759. package/dist_ts/integrations/roku/roku.classes.integration.d.ts +4 -1
  760. package/dist_ts/integrations/roku/roku.classes.integration.js +74 -91
  761. package/dist_ts/integrations/roku/roku.discovery.d.ts +8 -8
  762. package/dist_ts/integrations/roku/roku.discovery.js +82 -65
  763. package/dist_ts/integrations/roku/roku.mapper.d.ts +0 -3
  764. package/dist_ts/integrations/roku/roku.mapper.js +18 -50
  765. package/dist_ts/integrations/roku/roku.types.d.ts +21 -12
  766. package/dist_ts/integrations/roku/roku.validation.d.ts +9 -0
  767. package/dist_ts/integrations/roku/roku.validation.js +74 -0
  768. package/dist_ts/integrations/samsungtv/samsungtv.classes.client.d.ts +9 -38
  769. package/dist_ts/integrations/samsungtv/samsungtv.classes.client.js +113 -417
  770. package/dist_ts/integrations/samsungtv/samsungtv.classes.configflow.js +31 -29
  771. package/dist_ts/integrations/samsungtv/samsungtv.classes.integration.d.ts +8 -7
  772. package/dist_ts/integrations/samsungtv/samsungtv.classes.integration.js +122 -117
  773. package/dist_ts/integrations/samsungtv/samsungtv.discovery.d.ts +11 -11
  774. package/dist_ts/integrations/samsungtv/samsungtv.discovery.js +120 -143
  775. package/dist_ts/integrations/samsungtv/samsungtv.mapper.d.ts +3 -11
  776. package/dist_ts/integrations/samsungtv/samsungtv.mapper.js +18 -117
  777. package/dist_ts/integrations/samsungtv/samsungtv.types.d.ts +18 -85
  778. package/dist_ts/integrations/samsungtv/samsungtv.validation.d.ts +7 -0
  779. package/dist_ts/integrations/samsungtv/samsungtv.validation.js +83 -0
  780. package/dist_ts/integrations/shelly/shelly.classes.client.d.ts +29 -14
  781. package/dist_ts/integrations/shelly/shelly.classes.client.js +310 -126
  782. package/dist_ts/integrations/shelly/shelly.classes.configflow.js +29 -11
  783. package/dist_ts/integrations/shelly/shelly.classes.integration.d.ts +4 -1
  784. package/dist_ts/integrations/shelly/shelly.classes.integration.js +120 -27
  785. package/dist_ts/integrations/shelly/shelly.classes.subscription.d.ts +47 -0
  786. package/dist_ts/integrations/shelly/shelly.classes.subscription.js +206 -0
  787. package/dist_ts/integrations/shelly/shelly.discovery.d.ts +2 -2
  788. package/dist_ts/integrations/shelly/shelly.discovery.js +6 -3
  789. package/dist_ts/integrations/shelly/shelly.rpc.d.ts +21 -0
  790. package/dist_ts/integrations/shelly/shelly.rpc.js +210 -0
  791. package/dist_ts/integrations/shelly/shelly.types.d.ts +26 -4
  792. package/dist_ts/integrations/snapcast/snapcast.classes.client.js +1 -1
  793. package/dist_ts/integrations/snapcast/snapcast.classes.integration.d.ts +1 -1
  794. package/dist_ts/integrations/snapcast/snapcast.classes.integration.js +1 -1
  795. package/dist_ts/integrations/snapcast/snapcast.discovery.d.ts +2 -2
  796. package/dist_ts/integrations/sonos/index.d.ts +3 -0
  797. package/dist_ts/integrations/sonos/index.js +4 -1
  798. package/dist_ts/integrations/sonos/sonos.classes.client.d.ts +30 -29
  799. package/dist_ts/integrations/sonos/sonos.classes.client.js +162 -208
  800. package/dist_ts/integrations/sonos/sonos.classes.configflow.js +27 -9
  801. package/dist_ts/integrations/sonos/sonos.classes.integration.d.ts +6 -5
  802. package/dist_ts/integrations/sonos/sonos.classes.integration.js +280 -61
  803. package/dist_ts/integrations/sonos/sonos.classes.ssdpprobe.d.ts +17 -0
  804. package/dist_ts/integrations/sonos/sonos.classes.ssdpprobe.js +88 -0
  805. package/dist_ts/integrations/sonos/sonos.config.d.ts +12 -0
  806. package/dist_ts/integrations/sonos/sonos.config.js +52 -0
  807. package/dist_ts/integrations/sonos/sonos.discovery.d.ts +1 -25
  808. package/dist_ts/integrations/sonos/sonos.discovery.js +6 -114
  809. package/dist_ts/integrations/sonos/sonos.mapper.d.ts +2 -1
  810. package/dist_ts/integrations/sonos/sonos.mapper.js +33 -13
  811. package/dist_ts/integrations/sonos/sonos.matchers.d.ts +25 -0
  812. package/dist_ts/integrations/sonos/sonos.matchers.js +82 -0
  813. package/dist_ts/integrations/sonos/sonos.topology.d.ts +2 -0
  814. package/dist_ts/integrations/sonos/sonos.topology.js +59 -0
  815. package/dist_ts/integrations/sonos/sonos.types.d.ts +18 -8
  816. package/dist_ts/integrations/sonos/sonos.xml.d.ts +3 -0
  817. package/dist_ts/integrations/sonos/sonos.xml.js +21 -0
  818. package/dist_ts/integrations/soundtouch/soundtouch.classes.client.d.ts +13 -36
  819. package/dist_ts/integrations/soundtouch/soundtouch.classes.client.js +179 -502
  820. package/dist_ts/integrations/soundtouch/soundtouch.classes.configflow.d.ts +6 -1
  821. package/dist_ts/integrations/soundtouch/soundtouch.classes.configflow.js +50 -40
  822. package/dist_ts/integrations/soundtouch/soundtouch.classes.integration.d.ts +15 -16
  823. package/dist_ts/integrations/soundtouch/soundtouch.classes.integration.js +108 -128
  824. package/dist_ts/integrations/soundtouch/soundtouch.discovery.d.ts +2 -20
  825. package/dist_ts/integrations/soundtouch/soundtouch.discovery.js +23 -113
  826. package/dist_ts/integrations/soundtouch/soundtouch.mapper.d.ts +3 -12
  827. package/dist_ts/integrations/soundtouch/soundtouch.mapper.js +35 -189
  828. package/dist_ts/integrations/soundtouch/soundtouch.types.d.ts +57 -142
  829. package/dist_ts/integrations/soundtouch/soundtouch.types.js +18 -3
  830. package/dist_ts/integrations/soundtouch/soundtouch.validation.d.ts +22 -0
  831. package/dist_ts/integrations/soundtouch/soundtouch.validation.js +65 -0
  832. package/dist_ts/integrations/squeezebox/squeezebox.classes.client.js +1 -1
  833. package/dist_ts/integrations/squeezebox/squeezebox.classes.integration.d.ts +1 -1
  834. package/dist_ts/integrations/squeezebox/squeezebox.classes.integration.js +1 -1
  835. package/dist_ts/integrations/squeezebox/squeezebox.discovery.d.ts +3 -3
  836. package/dist_ts/integrations/synology_dsm/synology_dsm.classes.client.js +1 -1
  837. package/dist_ts/integrations/synology_dsm/synology_dsm.classes.integration.d.ts +1 -1
  838. package/dist_ts/integrations/synology_dsm/synology_dsm.classes.integration.js +1 -1
  839. package/dist_ts/integrations/synology_dsm/synology_dsm.discovery.d.ts +4 -4
  840. package/dist_ts/integrations/synology_dsm/synology_dsm.mapper.js +1 -1
  841. package/dist_ts/integrations/synology_srm/synology_srm.classes.client.js +1 -1
  842. package/dist_ts/integrations/synology_srm/synology_srm.classes.integration.d.ts +1 -1
  843. package/dist_ts/integrations/synology_srm/synology_srm.classes.integration.js +1 -1
  844. package/dist_ts/integrations/synology_srm/synology_srm.discovery.d.ts +2 -2
  845. package/dist_ts/integrations/synology_srm/synology_srm.mapper.js +1 -1
  846. package/dist_ts/integrations/tasmota/index.d.ts +4 -0
  847. package/dist_ts/integrations/tasmota/index.js +5 -1
  848. package/dist_ts/integrations/tasmota/tasmota.classes.integration.d.ts +21 -3
  849. package/dist_ts/integrations/tasmota/tasmota.classes.integration.js +24 -25
  850. package/dist_ts/integrations/tasmota/tasmota.classes.runtime.d.ts +36 -0
  851. package/dist_ts/integrations/tasmota/tasmota.classes.runtime.js +292 -0
  852. package/dist_ts/integrations/tasmota/tasmota.config.d.ts +2 -0
  853. package/dist_ts/integrations/tasmota/tasmota.config.js +78 -0
  854. package/dist_ts/integrations/tasmota/tasmota.discovery.d.ts +7 -0
  855. package/dist_ts/integrations/tasmota/tasmota.discovery.js +85 -0
  856. package/dist_ts/integrations/tasmota/tasmota.mapper.d.ts +12 -0
  857. package/dist_ts/integrations/tasmota/tasmota.mapper.js +91 -0
  858. package/dist_ts/integrations/tasmota/tasmota.types.d.ts +51 -1
  859. package/dist_ts/integrations/tplink/index.d.ts +3 -0
  860. package/dist_ts/integrations/tplink/index.js +4 -1
  861. package/dist_ts/integrations/tplink/tplink.classes.client.d.ts +8 -14
  862. package/dist_ts/integrations/tplink/tplink.classes.client.js +64 -64
  863. package/dist_ts/integrations/tplink/tplink.classes.configflow.d.ts +3 -8
  864. package/dist_ts/integrations/tplink/tplink.classes.configflow.js +53 -89
  865. package/dist_ts/integrations/tplink/tplink.classes.integration.d.ts +8 -13
  866. package/dist_ts/integrations/tplink/tplink.classes.integration.js +136 -37
  867. package/dist_ts/integrations/tplink/tplink.discovery.d.ts +11 -14
  868. package/dist_ts/integrations/tplink/tplink.discovery.js +125 -210
  869. package/dist_ts/integrations/tplink/tplink.mapper.js +1 -1
  870. package/dist_ts/integrations/tplink/tplink.native.mapper.d.ts +11 -0
  871. package/dist_ts/integrations/tplink/tplink.native.mapper.js +61 -0
  872. package/dist_ts/integrations/tplink/tplink.native.types.d.ts +32 -0
  873. package/dist_ts/integrations/tplink/tplink.native.types.js +2 -0
  874. package/dist_ts/integrations/tplink/tplink.validation.d.ts +4 -0
  875. package/dist_ts/integrations/tplink/tplink.validation.js +48 -0
  876. package/dist_ts/integrations/tradfri/tradfri.classes.client.js +1 -1
  877. package/dist_ts/integrations/tradfri/tradfri.classes.integration.d.ts +1 -1
  878. package/dist_ts/integrations/tradfri/tradfri.classes.integration.js +1 -1
  879. package/dist_ts/integrations/tradfri/tradfri.discovery.d.ts +2 -3
  880. package/dist_ts/integrations/tradfri/tradfri.discovery.js +52 -26
  881. package/dist_ts/integrations/tradfri/tradfri.mapper.js +1 -1
  882. package/dist_ts/integrations/tuya/tuya.classes.integration.d.ts +21 -3
  883. package/dist_ts/integrations/tuya/tuya.classes.integration.js +139 -28
  884. package/dist_ts/integrations/tuya/tuya.classes.runtime.d.ts +15 -0
  885. package/dist_ts/integrations/tuya/tuya.classes.runtime.js +189 -0
  886. package/dist_ts/integrations/tuya/tuya.mapper.d.ts +13 -0
  887. package/dist_ts/integrations/tuya/tuya.mapper.js +30 -0
  888. package/dist_ts/integrations/tuya/tuya.types.d.ts +40 -1
  889. package/dist_ts/integrations/tuya/tuya.validation.d.ts +10 -0
  890. package/dist_ts/integrations/tuya/tuya.validation.js +122 -0
  891. package/dist_ts/integrations/unifi/unifi.classes.client.js +1 -1
  892. package/dist_ts/integrations/unifi/unifi.classes.integration.d.ts +1 -1
  893. package/dist_ts/integrations/unifi/unifi.classes.integration.js +1 -1
  894. package/dist_ts/integrations/unifi/unifi.discovery.d.ts +4 -4
  895. package/dist_ts/integrations/unifi/unifi.mapper.js +6 -6
  896. package/dist_ts/integrations/velbus/velbus.classes.client.js +1 -1
  897. package/dist_ts/integrations/velbus/velbus.classes.integration.d.ts +1 -1
  898. package/dist_ts/integrations/velbus/velbus.classes.integration.js +1 -1
  899. package/dist_ts/integrations/velbus/velbus.discovery.d.ts +2 -2
  900. package/dist_ts/integrations/volumio/volumio.classes.client.js +1 -1
  901. package/dist_ts/integrations/volumio/volumio.classes.integration.d.ts +1 -1
  902. package/dist_ts/integrations/volumio/volumio.classes.integration.js +1 -1
  903. package/dist_ts/integrations/volumio/volumio.discovery.d.ts +2 -2
  904. package/dist_ts/integrations/wake_on_lan/wake_on_lan.classes.client.js +1 -1
  905. package/dist_ts/integrations/wake_on_lan/wake_on_lan.classes.integration.d.ts +1 -1
  906. package/dist_ts/integrations/wake_on_lan/wake_on_lan.classes.integration.js +1 -1
  907. package/dist_ts/integrations/wake_on_lan/wake_on_lan.discovery.d.ts +2 -2
  908. package/dist_ts/integrations/wake_on_lan/wake_on_lan.mapper.js +1 -1
  909. package/dist_ts/integrations/wake_on_lan/wake_on_lan.packet.js +1 -1
  910. package/dist_ts/integrations/webostv/webostv.classes.client.d.ts +10 -4
  911. package/dist_ts/integrations/webostv/webostv.classes.client.js +370 -6
  912. package/dist_ts/integrations/webostv/webostv.classes.configflow.d.ts +3 -3
  913. package/dist_ts/integrations/webostv/webostv.classes.configflow.js +23 -6
  914. package/dist_ts/integrations/webostv/webostv.classes.integration.d.ts +20 -5
  915. package/dist_ts/integrations/webostv/webostv.classes.integration.js +138 -7
  916. package/dist_ts/integrations/webostv/webostv.discovery.d.ts +2 -1
  917. package/dist_ts/integrations/webostv/webostv.discovery.js +26 -4
  918. package/dist_ts/integrations/webostv/webostv.mapper.d.ts +6 -8
  919. package/dist_ts/integrations/webostv/webostv.mapper.js +24 -13
  920. package/dist_ts/integrations/webostv/webostv.types.d.ts +61 -5
  921. package/dist_ts/integrations/webostv/webostv.types.js +5 -96
  922. package/dist_ts/integrations/webostv/webostv.validation.d.ts +6 -0
  923. package/dist_ts/integrations/webostv/webostv.validation.js +54 -0
  924. package/dist_ts/integrations/wiz/index.d.ts +1 -0
  925. package/dist_ts/integrations/wiz/index.js +2 -1
  926. package/dist_ts/integrations/wiz/wiz.classes.client.d.ts +14 -28
  927. package/dist_ts/integrations/wiz/wiz.classes.client.js +93 -229
  928. package/dist_ts/integrations/wiz/wiz.classes.configflow.d.ts +6 -4
  929. package/dist_ts/integrations/wiz/wiz.classes.configflow.js +38 -67
  930. package/dist_ts/integrations/wiz/wiz.classes.integration.d.ts +11 -22
  931. package/dist_ts/integrations/wiz/wiz.classes.integration.js +204 -44
  932. package/dist_ts/integrations/wiz/wiz.discovery.d.ts +10 -31
  933. package/dist_ts/integrations/wiz/wiz.discovery.js +48 -249
  934. package/dist_ts/integrations/wiz/wiz.mapper.d.ts +7 -51
  935. package/dist_ts/integrations/wiz/wiz.mapper.js +82 -668
  936. package/dist_ts/integrations/wiz/wiz.types.d.ts +34 -208
  937. package/dist_ts/integrations/wiz/wiz.validation.d.ts +8 -0
  938. package/dist_ts/integrations/wiz/wiz.validation.js +72 -0
  939. package/dist_ts/integrations/wled/index.d.ts +1 -0
  940. package/dist_ts/integrations/wled/index.js +2 -1
  941. package/dist_ts/integrations/wled/wled.classes.client.d.ts +27 -4
  942. package/dist_ts/integrations/wled/wled.classes.client.js +231 -6
  943. package/dist_ts/integrations/wled/wled.classes.configflow.d.ts +3 -3
  944. package/dist_ts/integrations/wled/wled.classes.configflow.js +33 -6
  945. package/dist_ts/integrations/wled/wled.classes.integration.d.ts +24 -4
  946. package/dist_ts/integrations/wled/wled.classes.integration.js +171 -7
  947. package/dist_ts/integrations/wled/wled.classes.subscription.d.ts +37 -0
  948. package/dist_ts/integrations/wled/wled.classes.subscription.js +116 -0
  949. package/dist_ts/integrations/wled/wled.commands.d.ts +4 -0
  950. package/dist_ts/integrations/wled/wled.commands.js +65 -0
  951. package/dist_ts/integrations/wled/wled.discovery.d.ts +17 -1
  952. package/dist_ts/integrations/wled/wled.discovery.js +68 -4
  953. package/dist_ts/integrations/wled/wled.errors.d.ts +5 -0
  954. package/dist_ts/integrations/wled/wled.errors.js +9 -0
  955. package/dist_ts/integrations/wled/wled.mapper.d.ts +8 -8
  956. package/dist_ts/integrations/wled/wled.mapper.js +40 -16
  957. package/dist_ts/integrations/wled/wled.types.d.ts +75 -6
  958. package/dist_ts/integrations/wled/wled.types.js +12 -82
  959. package/dist_ts/integrations/wled/wled.validation.d.ts +7 -0
  960. package/dist_ts/integrations/wled/wled.validation.js +85 -0
  961. package/dist_ts/integrations/wolf_smartset/wolf_smartset.classes.client.js +1 -1
  962. package/dist_ts/integrations/wolf_smartset/wolf_smartset.classes.integration.d.ts +1 -1
  963. package/dist_ts/integrations/wolf_smartset/wolf_smartset.discovery.d.ts +1 -1
  964. package/dist_ts/integrations/xiaomi_miio/xiaomi_miio.classes.client.js +1 -1
  965. package/dist_ts/integrations/xiaomi_miio/xiaomi_miio.classes.integration.d.ts +1 -1
  966. package/dist_ts/integrations/xiaomi_miio/xiaomi_miio.classes.integration.js +1 -1
  967. package/dist_ts/integrations/xiaomi_miio/xiaomi_miio.discovery.d.ts +3 -3
  968. package/dist_ts/integrations/xiaomi_miio/xiaomi_miio.mapper.js +1 -1
  969. package/dist_ts/integrations/yamaha/index.d.ts +1 -0
  970. package/dist_ts/integrations/yamaha/index.js +2 -1
  971. package/dist_ts/integrations/yamaha/yamaha.classes.client.d.ts +30 -4
  972. package/dist_ts/integrations/yamaha/yamaha.classes.client.js +162 -6
  973. package/dist_ts/integrations/yamaha/yamaha.classes.configflow.d.ts +10 -3
  974. package/dist_ts/integrations/yamaha/yamaha.classes.configflow.js +106 -6
  975. package/dist_ts/integrations/yamaha/yamaha.classes.integration.d.ts +22 -4
  976. package/dist_ts/integrations/yamaha/yamaha.classes.integration.js +243 -8
  977. package/dist_ts/integrations/yamaha/yamaha.discovery.d.ts +13 -1
  978. package/dist_ts/integrations/yamaha/yamaha.discovery.js +57 -4
  979. package/dist_ts/integrations/yamaha/yamaha.mapper.d.ts +16 -8
  980. package/dist_ts/integrations/yamaha/yamaha.mapper.js +58 -12
  981. package/dist_ts/integrations/yamaha/yamaha.types.d.ts +73 -6
  982. package/dist_ts/integrations/yamaha/yamaha.types.js +8 -94
  983. package/dist_ts/integrations/yamaha/yamaha.validation.d.ts +12 -0
  984. package/dist_ts/integrations/yamaha/yamaha.validation.js +89 -0
  985. package/dist_ts/integrations/yamaha_musiccast/yamaha_musiccast.classes.client.js +1 -1
  986. package/dist_ts/integrations/yamaha_musiccast/yamaha_musiccast.classes.integration.d.ts +1 -1
  987. package/dist_ts/integrations/yamaha_musiccast/yamaha_musiccast.classes.integration.js +1 -1
  988. package/dist_ts/integrations/yamaha_musiccast/yamaha_musiccast.discovery.d.ts +3 -3
  989. package/dist_ts/integrations/yeelight/yeelight.classes.client.d.ts +34 -26
  990. package/dist_ts/integrations/yeelight/yeelight.classes.client.js +225 -275
  991. package/dist_ts/integrations/yeelight/yeelight.classes.configflow.d.ts +0 -2
  992. package/dist_ts/integrations/yeelight/yeelight.classes.configflow.js +29 -30
  993. package/dist_ts/integrations/yeelight/yeelight.classes.integration.d.ts +11 -5
  994. package/dist_ts/integrations/yeelight/yeelight.classes.integration.js +140 -80
  995. package/dist_ts/integrations/yeelight/yeelight.discovery.d.ts +11 -13
  996. package/dist_ts/integrations/yeelight/yeelight.discovery.js +90 -128
  997. package/dist_ts/integrations/yeelight/yeelight.mapper.d.ts +2 -10
  998. package/dist_ts/integrations/yeelight/yeelight.mapper.js +57 -178
  999. package/dist_ts/integrations/yeelight/yeelight.types.d.ts +37 -139
  1000. package/dist_ts/integrations/yeelight/yeelight.validation.d.ts +10 -0
  1001. package/dist_ts/integrations/yeelight/yeelight.validation.js +111 -0
  1002. package/dist_ts/integrations/zha/zha.classes.client.js +1 -1
  1003. package/dist_ts/integrations/zha/zha.classes.integration.d.ts +1 -1
  1004. package/dist_ts/integrations/zha/zha.classes.integration.js +1 -1
  1005. package/dist_ts/integrations/zha/zha.discovery.d.ts +3 -12
  1006. package/dist_ts/integrations/zha/zha.discovery.js +102 -222
  1007. package/dist_ts/integrations/zha/zha.discoveryvalidation.d.ts +10 -0
  1008. package/dist_ts/integrations/zha/zha.discoveryvalidation.js +71 -0
  1009. package/dist_ts/integrations/zha/zha.mapper.js +1 -1
  1010. package/dist_ts/integrations/zigbee2mqtt/index.d.ts +5 -0
  1011. package/dist_ts/integrations/zigbee2mqtt/index.js +6 -0
  1012. package/dist_ts/integrations/zigbee2mqtt/zigbee2mqtt.classes.configflow.d.ts +5 -0
  1013. package/dist_ts/integrations/zigbee2mqtt/zigbee2mqtt.classes.configflow.js +27 -0
  1014. package/dist_ts/integrations/zigbee2mqtt/zigbee2mqtt.classes.integration.d.ts +19 -0
  1015. package/dist_ts/integrations/zigbee2mqtt/zigbee2mqtt.classes.integration.js +19 -0
  1016. package/dist_ts/integrations/zigbee2mqtt/zigbee2mqtt.classes.runtime.d.ts +55 -0
  1017. package/dist_ts/integrations/zigbee2mqtt/zigbee2mqtt.classes.runtime.js +464 -0
  1018. package/dist_ts/integrations/zigbee2mqtt/zigbee2mqtt.mapper.d.ts +15 -0
  1019. package/dist_ts/integrations/zigbee2mqtt/zigbee2mqtt.mapper.js +186 -0
  1020. package/dist_ts/integrations/zigbee2mqtt/zigbee2mqtt.types.d.ts +57 -0
  1021. package/dist_ts/integrations/zigbee2mqtt/zigbee2mqtt.types.js +2 -0
  1022. package/dist_ts/integrations/zigbee2mqtt/zigbee2mqtt.validation.d.ts +5 -0
  1023. package/dist_ts/integrations/zigbee2mqtt/zigbee2mqtt.validation.js +66 -0
  1024. package/dist_ts/integrations/zwave_js/zwave_js.classes.client.d.ts +19 -21
  1025. package/dist_ts/integrations/zwave_js/zwave_js.classes.client.js +303 -134
  1026. package/dist_ts/integrations/zwave_js/zwave_js.classes.configflow.d.ts +0 -3
  1027. package/dist_ts/integrations/zwave_js/zwave_js.classes.configflow.js +31 -26
  1028. package/dist_ts/integrations/zwave_js/zwave_js.classes.integration.d.ts +2 -1
  1029. package/dist_ts/integrations/zwave_js/zwave_js.classes.integration.js +71 -76
  1030. package/dist_ts/integrations/zwave_js/zwave_js.discovery.d.ts +3 -3
  1031. package/dist_ts/integrations/zwave_js/zwave_js.discovery.js +120 -16
  1032. package/dist_ts/integrations/zwave_js/zwave_js.mapper.d.ts +13 -14
  1033. package/dist_ts/integrations/zwave_js/zwave_js.mapper.js +140 -257
  1034. package/dist_ts/integrations/zwave_js/zwave_js.types.d.ts +30 -19
  1035. package/dist_ts/integrations/zwave_js/zwave_js.validation.d.ts +15 -0
  1036. package/dist_ts/integrations/zwave_js/zwave_js.validation.js +191 -0
  1037. package/dist_ts/plugins.d.ts +10 -2
  1038. package/dist_ts/plugins.js +11 -3
  1039. package/dist_ts_migration/001.import-json-config.d.ts +10 -0
  1040. package/dist_ts_migration/001.import-json-config.js +147 -0
  1041. package/dist_ts_migration/index.d.ts +1 -0
  1042. package/dist_ts_migration/index.js +2 -0
  1043. package/package.json +20 -11
  1044. package/readme.md +560 -9
  1045. package/ts/00_commitinfo_data.ts +1 -1
  1046. package/ts/core/classes.configrecord.ts +23 -0
  1047. package/ts/core/classes.configstore.ts +381 -25
  1048. package/ts/core/classes.discoveryengine.ts +11 -1
  1049. package/ts/core/classes.nativehomeadmission.ts +96 -0
  1050. package/ts/core/classes.nativeintegrationowner.ts +297 -0
  1051. package/ts/core/index.ts +2 -0
  1052. package/ts/core/types.ts +31 -4
  1053. package/ts/index.ts +6 -0
  1054. package/ts/integrations/braviatv/braviatv.classes.client.ts +245 -709
  1055. package/ts/integrations/braviatv/braviatv.classes.configflow.ts +47 -76
  1056. package/ts/integrations/braviatv/braviatv.classes.integration.ts +167 -147
  1057. package/ts/integrations/braviatv/braviatv.discovery.ts +11 -10
  1058. package/ts/integrations/braviatv/braviatv.mapper.ts +39 -142
  1059. package/ts/integrations/braviatv/braviatv.types.ts +53 -173
  1060. package/ts/integrations/braviatv/braviatv.validation.ts +68 -0
  1061. package/ts/integrations/broadlink/broadlink.actions.ts +31 -0
  1062. package/ts/integrations/broadlink/broadlink.classes.client.ts +170 -144
  1063. package/ts/integrations/broadlink/broadlink.classes.configflow.ts +59 -89
  1064. package/ts/integrations/broadlink/broadlink.classes.integration.ts +110 -64
  1065. package/ts/integrations/broadlink/broadlink.mapper.ts +5 -4
  1066. package/ts/integrations/broadlink/broadlink.selected.mapper.ts +46 -0
  1067. package/ts/integrations/broadlink/broadlink.types.ts +48 -8
  1068. package/ts/integrations/broadlink/broadlink.validation.ts +66 -0
  1069. package/ts/integrations/daikin/daikin.classes.client.ts +52 -661
  1070. package/ts/integrations/daikin/daikin.classes.configflow.ts +72 -152
  1071. package/ts/integrations/daikin/daikin.classes.integration.ts +166 -71
  1072. package/ts/integrations/daikin/daikin.discovery.ts +94 -346
  1073. package/ts/integrations/daikin/daikin.mapper.ts +83 -166
  1074. package/ts/integrations/daikin/daikin.types.ts +27 -48
  1075. package/ts/integrations/daikin/daikin.validation.ts +51 -0
  1076. package/ts/integrations/daikin/readme.md +83 -0
  1077. package/ts/integrations/deconz/deconz.classes.client.ts +243 -190
  1078. package/ts/integrations/deconz/deconz.classes.configflow.ts +34 -25
  1079. package/ts/integrations/deconz/deconz.classes.integration.ts +105 -22
  1080. package/ts/integrations/deconz/deconz.mapper.ts +24 -18
  1081. package/ts/integrations/deconz/deconz.types.ts +38 -3
  1082. package/ts/integrations/deconz/deconz.validation.ts +261 -0
  1083. package/ts/integrations/deconz/readme.md +44 -0
  1084. package/ts/integrations/denonavr/denonavr.classes.client.ts +132 -421
  1085. package/ts/integrations/denonavr/denonavr.classes.configflow.ts +44 -37
  1086. package/ts/integrations/denonavr/denonavr.classes.integration.ts +171 -117
  1087. package/ts/integrations/denonavr/denonavr.discovery.ts +67 -220
  1088. package/ts/integrations/denonavr/denonavr.mapper.ts +36 -182
  1089. package/ts/integrations/denonavr/denonavr.types.ts +48 -111
  1090. package/ts/integrations/denonavr/denonavr.validation.ts +87 -0
  1091. package/ts/integrations/esphome/esphome.classes.client.ts +254 -74
  1092. package/ts/integrations/esphome/esphome.classes.configflow.ts +1 -3
  1093. package/ts/integrations/esphome/esphome.classes.integration.ts +61 -66
  1094. package/ts/integrations/esphome/esphome.discovery.ts +1 -1
  1095. package/ts/integrations/esphome/esphome.mapper.ts +71 -37
  1096. package/ts/integrations/esphome/esphome.types.ts +2 -0
  1097. package/ts/integrations/esphome/readme.md +66 -0
  1098. package/ts/integrations/generated/index.ts +4 -6
  1099. package/ts/integrations/homeassistant/homeassistant.classes.client.ts +166 -63
  1100. package/ts/integrations/homeassistant/homeassistant.classes.runtime.ts +41 -3
  1101. package/ts/integrations/homeassistant/homeassistant.mapper.ts +32 -36
  1102. package/ts/integrations/homeassistant/homeassistant.types.ts +11 -0
  1103. package/ts/integrations/homeassistant/homeassistant.validation.ts +139 -0
  1104. package/ts/integrations/homeassistant/readme.md +40 -0
  1105. package/ts/integrations/hue/hue.classes.client.ts +251 -21
  1106. package/ts/integrations/hue/hue.classes.configflow.ts +26 -13
  1107. package/ts/integrations/hue/hue.classes.integration.ts +76 -30
  1108. package/ts/integrations/hue/hue.discovery.ts +61 -26
  1109. package/ts/integrations/hue/hue.mapper.ts +28 -60
  1110. package/ts/integrations/hue/hue.types.ts +12 -18
  1111. package/ts/integrations/hue/hue.validation.ts +154 -0
  1112. package/ts/integrations/hue/readme.md +71 -0
  1113. package/ts/integrations/index.ts +5 -1
  1114. package/ts/integrations/kodi/kodi.classes.client.ts +72 -352
  1115. package/ts/integrations/kodi/kodi.classes.configflow.ts +52 -55
  1116. package/ts/integrations/kodi/kodi.classes.integration.ts +97 -178
  1117. package/ts/integrations/kodi/kodi.discovery.ts +49 -28
  1118. package/ts/integrations/kodi/kodi.mapper.ts +52 -10
  1119. package/ts/integrations/kodi/kodi.types.ts +33 -58
  1120. package/ts/integrations/kodi/kodi.validation.ts +60 -0
  1121. package/ts/integrations/lifx/lifx.classes.client.ts +95 -6
  1122. package/ts/integrations/lifx/lifx.classes.configflow.ts +32 -5
  1123. package/ts/integrations/lifx/lifx.classes.integration.ts +142 -7
  1124. package/ts/integrations/lifx/lifx.discovery.ts +26 -3
  1125. package/ts/integrations/lifx/lifx.mapper.ts +45 -17
  1126. package/ts/integrations/lifx/lifx.types.ts +51 -125
  1127. package/ts/integrations/lifx/lifx.validation.ts +86 -0
  1128. package/ts/integrations/lifx/readme.md +55 -0
  1129. package/ts/integrations/modbus/modbus.classes.client.ts +100 -842
  1130. package/ts/integrations/modbus/modbus.classes.configflow.ts +70 -41
  1131. package/ts/integrations/modbus/modbus.classes.integration.ts +115 -60
  1132. package/ts/integrations/modbus/modbus.discovery.ts +38 -106
  1133. package/ts/integrations/modbus/modbus.mapper.ts +64 -467
  1134. package/ts/integrations/modbus/modbus.types.ts +64 -381
  1135. package/ts/integrations/modbus/modbus.validation.ts +119 -0
  1136. package/ts/integrations/mqtt/mqtt.classes.client.ts +394 -366
  1137. package/ts/integrations/mqtt/mqtt.classes.configflow.ts +22 -18
  1138. package/ts/integrations/mqtt/mqtt.classes.integration.ts +119 -44
  1139. package/ts/integrations/mqtt/mqtt.mapper.ts +139 -47
  1140. package/ts/integrations/mqtt/mqtt.types.ts +19 -0
  1141. package/ts/integrations/mqtt/readme.md +28 -0
  1142. package/ts/integrations/nanoleaf/nanoleaf.classes.client.ts +115 -249
  1143. package/ts/integrations/nanoleaf/nanoleaf.classes.configflow.ts +90 -19
  1144. package/ts/integrations/nanoleaf/nanoleaf.classes.integration.ts +130 -181
  1145. package/ts/integrations/nanoleaf/nanoleaf.credentials.ts +39 -0
  1146. package/ts/integrations/nanoleaf/nanoleaf.mapper.ts +47 -260
  1147. package/ts/integrations/nanoleaf/nanoleaf.types.ts +29 -147
  1148. package/ts/integrations/nanoleaf/nanoleaf.validation.ts +77 -0
  1149. package/ts/integrations/onkyo/onkyo.classes.client.ts +148 -457
  1150. package/ts/integrations/onkyo/onkyo.classes.configflow.ts +52 -6
  1151. package/ts/integrations/onkyo/onkyo.classes.integration.ts +121 -12
  1152. package/ts/integrations/onkyo/onkyo.discovery.ts +41 -3
  1153. package/ts/integrations/onkyo/onkyo.mapper.ts +46 -19
  1154. package/ts/integrations/onkyo/onkyo.types.ts +55 -110
  1155. package/ts/integrations/onkyo/onkyo.validation.ts +85 -0
  1156. package/ts/integrations/onkyo/readme.md +126 -0
  1157. package/ts/integrations/openhome/openhome.classes.client.ts +22 -18
  1158. package/ts/integrations/panasonic_viera/panasonic_viera.classes.client.ts +101 -398
  1159. package/ts/integrations/panasonic_viera/panasonic_viera.classes.configflow.ts +69 -5
  1160. package/ts/integrations/panasonic_viera/panasonic_viera.classes.integration.ts +141 -9
  1161. package/ts/integrations/panasonic_viera/panasonic_viera.discovery.ts +32 -3
  1162. package/ts/integrations/panasonic_viera/panasonic_viera.mapper.ts +34 -161
  1163. package/ts/integrations/panasonic_viera/panasonic_viera.types.ts +52 -96
  1164. package/ts/integrations/panasonic_viera/panasonic_viera.validation.ts +56 -0
  1165. package/ts/integrations/pioneer/pioneer.classes.client.ts +132 -428
  1166. package/ts/integrations/pioneer/pioneer.classes.configflow.ts +67 -5
  1167. package/ts/integrations/pioneer/pioneer.classes.integration.ts +225 -11
  1168. package/ts/integrations/pioneer/pioneer.discovery.ts +45 -3
  1169. package/ts/integrations/pioneer/pioneer.mapper.ts +57 -13
  1170. package/ts/integrations/pioneer/pioneer.types.ts +87 -85
  1171. package/ts/integrations/pioneer/pioneer.validation.ts +84 -0
  1172. package/ts/integrations/roku/readme.md +95 -0
  1173. package/ts/integrations/roku/roku.classes.client.ts +194 -131
  1174. package/ts/integrations/roku/roku.classes.configflow.ts +20 -13
  1175. package/ts/integrations/roku/roku.classes.integration.ts +69 -98
  1176. package/ts/integrations/roku/roku.discovery.ts +68 -71
  1177. package/ts/integrations/roku/roku.mapper.ts +17 -52
  1178. package/ts/integrations/roku/roku.types.ts +23 -14
  1179. package/ts/integrations/roku/roku.validation.ts +79 -0
  1180. package/ts/integrations/samsungtv/readme.md +30 -0
  1181. package/ts/integrations/samsungtv/samsungtv.classes.client.ts +107 -481
  1182. package/ts/integrations/samsungtv/samsungtv.classes.configflow.ts +28 -29
  1183. package/ts/integrations/samsungtv/samsungtv.classes.integration.ts +108 -132
  1184. package/ts/integrations/samsungtv/samsungtv.discovery.ts +101 -165
  1185. package/ts/integrations/samsungtv/samsungtv.mapper.ts +20 -127
  1186. package/ts/integrations/samsungtv/samsungtv.types.ts +18 -95
  1187. package/ts/integrations/samsungtv/samsungtv.validation.ts +84 -0
  1188. package/ts/integrations/shelly/readme.md +34 -0
  1189. package/ts/integrations/shelly/shelly.classes.client.ts +275 -137
  1190. package/ts/integrations/shelly/shelly.classes.configflow.ts +24 -10
  1191. package/ts/integrations/shelly/shelly.classes.integration.ts +109 -32
  1192. package/ts/integrations/shelly/shelly.classes.subscription.ts +218 -0
  1193. package/ts/integrations/shelly/shelly.discovery.ts +5 -2
  1194. package/ts/integrations/shelly/shelly.rpc.ts +190 -0
  1195. package/ts/integrations/shelly/shelly.types.ts +16 -4
  1196. package/ts/integrations/sonos/index.ts +3 -0
  1197. package/ts/integrations/sonos/readme.md +74 -0
  1198. package/ts/integrations/sonos/sonos.classes.client.ts +153 -225
  1199. package/ts/integrations/sonos/sonos.classes.configflow.ts +21 -8
  1200. package/ts/integrations/sonos/sonos.classes.integration.ts +234 -72
  1201. package/ts/integrations/sonos/sonos.classes.ssdpprobe.ts +85 -0
  1202. package/ts/integrations/sonos/sonos.config.ts +57 -0
  1203. package/ts/integrations/sonos/sonos.discovery.ts +5 -123
  1204. package/ts/integrations/sonos/sonos.mapper.ts +29 -13
  1205. package/ts/integrations/sonos/sonos.matchers.ts +83 -0
  1206. package/ts/integrations/sonos/sonos.topology.ts +54 -0
  1207. package/ts/integrations/sonos/sonos.types.ts +20 -8
  1208. package/ts/integrations/sonos/sonos.xml.ts +19 -0
  1209. package/ts/integrations/soundtouch/soundtouch.classes.client.ts +152 -571
  1210. package/ts/integrations/soundtouch/soundtouch.classes.configflow.ts +47 -42
  1211. package/ts/integrations/soundtouch/soundtouch.classes.integration.ts +95 -150
  1212. package/ts/integrations/soundtouch/soundtouch.discovery.ts +21 -133
  1213. package/ts/integrations/soundtouch/soundtouch.mapper.ts +36 -207
  1214. package/ts/integrations/soundtouch/soundtouch.types.ts +50 -195
  1215. package/ts/integrations/soundtouch/soundtouch.validation.ts +60 -0
  1216. package/ts/integrations/tasmota/index.ts +4 -0
  1217. package/ts/integrations/tasmota/readme.md +33 -0
  1218. package/ts/integrations/tasmota/tasmota.classes.integration.ts +27 -24
  1219. package/ts/integrations/tasmota/tasmota.classes.runtime.ts +274 -0
  1220. package/ts/integrations/tasmota/tasmota.config.ts +69 -0
  1221. package/ts/integrations/tasmota/tasmota.discovery.ts +84 -0
  1222. package/ts/integrations/tasmota/tasmota.mapper.ts +88 -0
  1223. package/ts/integrations/tasmota/tasmota.types.ts +48 -2
  1224. package/ts/integrations/tplink/index.ts +3 -0
  1225. package/ts/integrations/tplink/readme.md +38 -0
  1226. package/ts/integrations/tplink/tplink.classes.client.ts +56 -75
  1227. package/ts/integrations/tplink/tplink.classes.configflow.ts +48 -100
  1228. package/ts/integrations/tplink/tplink.classes.integration.ts +118 -40
  1229. package/ts/integrations/tplink/tplink.discovery.ts +106 -235
  1230. package/ts/integrations/tplink/tplink.native.mapper.ts +67 -0
  1231. package/ts/integrations/tplink/tplink.native.types.ts +32 -0
  1232. package/ts/integrations/tplink/tplink.validation.ts +50 -0
  1233. package/ts/integrations/tradfri/tradfri.discovery.ts +52 -26
  1234. package/ts/integrations/tuya/readme.md +106 -0
  1235. package/ts/integrations/tuya/tuya.classes.integration.ts +127 -28
  1236. package/ts/integrations/tuya/tuya.classes.runtime.ts +166 -0
  1237. package/ts/integrations/tuya/tuya.mapper.ts +47 -0
  1238. package/ts/integrations/tuya/tuya.types.ts +47 -2
  1239. package/ts/integrations/tuya/tuya.validation.ts +118 -0
  1240. package/ts/integrations/unifi/unifi.mapper.ts +8 -5
  1241. package/ts/integrations/webostv/readme.md +48 -0
  1242. package/ts/integrations/webostv/webostv.classes.client.ts +297 -6
  1243. package/ts/integrations/webostv/webostv.classes.configflow.ts +18 -5
  1244. package/ts/integrations/webostv/webostv.classes.integration.ts +92 -7
  1245. package/ts/integrations/webostv/webostv.discovery.ts +22 -3
  1246. package/ts/integrations/webostv/webostv.mapper.ts +27 -18
  1247. package/ts/integrations/webostv/webostv.types.ts +47 -101
  1248. package/ts/integrations/webostv/webostv.validation.ts +48 -0
  1249. package/ts/integrations/wiz/index.ts +1 -0
  1250. package/ts/integrations/wiz/wiz.classes.client.ts +84 -254
  1251. package/ts/integrations/wiz/wiz.classes.configflow.ts +39 -70
  1252. package/ts/integrations/wiz/wiz.classes.integration.ts +189 -45
  1253. package/ts/integrations/wiz/wiz.discovery.ts +48 -291
  1254. package/ts/integrations/wiz/wiz.mapper.ts +81 -754
  1255. package/ts/integrations/wiz/wiz.types.ts +24 -224
  1256. package/ts/integrations/wiz/wiz.validation.ts +73 -0
  1257. package/ts/integrations/wled/index.ts +1 -0
  1258. package/ts/integrations/wled/readme.md +83 -0
  1259. package/ts/integrations/wled/wled.classes.client.ts +208 -6
  1260. package/ts/integrations/wled/wled.classes.configflow.ts +26 -5
  1261. package/ts/integrations/wled/wled.classes.integration.ts +142 -7
  1262. package/ts/integrations/wled/wled.classes.subscription.ts +122 -0
  1263. package/ts/integrations/wled/wled.commands.ts +54 -0
  1264. package/ts/integrations/wled/wled.discovery.ts +52 -3
  1265. package/ts/integrations/wled/wled.errors.ts +9 -0
  1266. package/ts/integrations/wled/wled.mapper.ts +39 -19
  1267. package/ts/integrations/wled/wled.types.ts +59 -87
  1268. package/ts/integrations/wled/wled.validation.ts +72 -0
  1269. package/ts/integrations/yamaha/index.ts +1 -0
  1270. package/ts/integrations/yamaha/yamaha.classes.client.ts +150 -6
  1271. package/ts/integrations/yamaha/yamaha.classes.configflow.ts +100 -5
  1272. package/ts/integrations/yamaha/yamaha.classes.integration.ts +236 -8
  1273. package/ts/integrations/yamaha/yamaha.discovery.ts +52 -3
  1274. package/ts/integrations/yamaha/yamaha.mapper.ts +65 -13
  1275. package/ts/integrations/yamaha/yamaha.types.ts +77 -97
  1276. package/ts/integrations/yamaha/yamaha.validation.ts +86 -0
  1277. package/ts/integrations/yeelight/readme.md +47 -0
  1278. package/ts/integrations/yeelight/yeelight.classes.client.ts +201 -302
  1279. package/ts/integrations/yeelight/yeelight.classes.configflow.ts +23 -32
  1280. package/ts/integrations/yeelight/yeelight.classes.integration.ts +115 -87
  1281. package/ts/integrations/yeelight/yeelight.discovery.ts +78 -140
  1282. package/ts/integrations/yeelight/yeelight.mapper.ts +61 -191
  1283. package/ts/integrations/yeelight/yeelight.types.ts +31 -162
  1284. package/ts/integrations/yeelight/yeelight.validation.ts +112 -0
  1285. package/ts/integrations/zha/readme.md +23 -0
  1286. package/ts/integrations/zha/zha.discovery.ts +92 -232
  1287. package/ts/integrations/zha/zha.discoveryvalidation.ts +67 -0
  1288. package/ts/integrations/zigbee2mqtt/index.ts +5 -0
  1289. package/ts/integrations/zigbee2mqtt/readme.md +40 -0
  1290. package/ts/integrations/zigbee2mqtt/zigbee2mqtt.classes.configflow.ts +26 -0
  1291. package/ts/integrations/zigbee2mqtt/zigbee2mqtt.classes.integration.ts +23 -0
  1292. package/ts/integrations/zigbee2mqtt/zigbee2mqtt.classes.runtime.ts +414 -0
  1293. package/ts/integrations/zigbee2mqtt/zigbee2mqtt.mapper.ts +172 -0
  1294. package/ts/integrations/zigbee2mqtt/zigbee2mqtt.types.ts +63 -0
  1295. package/ts/integrations/zigbee2mqtt/zigbee2mqtt.validation.ts +65 -0
  1296. package/ts/integrations/zwave_js/readme.md +23 -0
  1297. package/ts/integrations/zwave_js/zwave_js.classes.client.ts +256 -136
  1298. package/ts/integrations/zwave_js/zwave_js.classes.configflow.ts +26 -28
  1299. package/ts/integrations/zwave_js/zwave_js.classes.integration.ts +65 -81
  1300. package/ts/integrations/zwave_js/zwave_js.discovery.ts +100 -15
  1301. package/ts/integrations/zwave_js/zwave_js.mapper.ts +129 -256
  1302. package/ts/integrations/zwave_js/zwave_js.types.ts +32 -19
  1303. package/ts/integrations/zwave_js/zwave_js.validation.ts +191 -0
  1304. package/ts/plugins.ts +12 -3
  1305. package/ts_migration/001.import-json-config.ts +81 -0
  1306. package/ts_migration/index.ts +1 -0
  1307. package/ts/integrations/tasmota/.generated-by-smarthome-exchange +0 -1
  1308. package/ts/integrations/tuya/.generated-by-smarthome-exchange +0 -1
@@ -1,440 +1,80 @@
1
- import * as plugins from '../../plugins.js';
2
- const modbusDomain = 'modbus';
1
+ import { modbusCommand, modbusRecord } from './modbus.validation.js';
3
2
  export class ModbusMapper {
3
+ static deviceId(configArg) {
4
+ return `modbus:${encodeURIComponent(configArg.homeId)}:${configArg.address}:${configArg.port}:${configArg.unitId}`;
5
+ }
6
+ static entityId(configArg, mappingIdArg) {
7
+ return `${this.deviceId(configArg)}:${mappingIdArg}`;
8
+ }
4
9
  static toDevices(snapshotArg) {
5
- const updatedAt = snapshotArg.updatedAt || new Date().toISOString();
6
- const devices = [];
7
- for (const hub of snapshotArg.hubs) {
8
- devices.push({
9
- id: this.hubDeviceId(hub),
10
- integrationDomain: modbusDomain,
11
- name: hub.name,
12
- protocol: 'unknown',
13
- manufacturer: hub.manufacturer || 'Modbus',
14
- model: hub.model || `${hub.type.toUpperCase()} hub`,
15
- online: hub.online && !hub.unsupportedReason,
16
- features: [
17
- { id: 'connectivity', capability: 'sensor', name: 'Connectivity', readable: true, writable: false },
18
- { id: 'configured_entities', capability: 'sensor', name: 'Configured entities', readable: true, writable: false },
19
- ],
20
- state: [
21
- { featureId: 'connectivity', value: hub.online && !hub.unsupportedReason ? 'online' : 'offline', updatedAt },
22
- { featureId: 'configured_entities', value: hub.entities.length, updatedAt },
23
- ],
24
- metadata: this.cleanAttributes({
25
- type: hub.type,
26
- host: hub.host,
27
- port: hub.port,
28
- serialNumber: hub.serialNumber,
29
- unsupportedReason: hub.unsupportedReason,
30
- ...hub.metadata,
31
- }),
32
- });
33
- for (const slave of hub.slaves) {
34
- devices.push({
35
- id: this.slaveDeviceId(hub, slave.unitId),
36
- integrationDomain: modbusDomain,
37
- name: slave.name,
38
- protocol: 'unknown',
39
- manufacturer: slave.manufacturer || hub.manufacturer || 'Modbus',
40
- model: slave.model || 'Modbus slave',
41
- online: hub.online && slave.online && !hub.unsupportedReason,
42
- features: [
43
- { id: 'registers', capability: 'sensor', name: 'Configured registers', readable: true, writable: false },
44
- { id: 'coils', capability: 'sensor', name: 'Configured coils', readable: true, writable: false },
45
- ],
46
- state: [
47
- { featureId: 'registers', value: slave.registers.length, updatedAt },
48
- { featureId: 'coils', value: slave.coils.length, updatedAt },
49
- ],
50
- metadata: this.cleanAttributes({
51
- hubId: hub.id,
52
- hubName: hub.name,
53
- unitId: slave.unitId,
54
- viaDevice: this.hubDeviceId(hub),
55
- serialNumber: slave.serialNumber,
56
- ...slave.metadata,
57
- }),
58
- });
10
+ const features = [];
11
+ const state = [];
12
+ for (const observation of snapshotArg.observations) {
13
+ const mapping = observation.mapping;
14
+ for (let index = 0; index < observation.values.length; index++) {
15
+ const id = mapping.quantity === 1 ? mapping.id : `${mapping.id}:${index}`;
16
+ features.push({ id, name: mapping.quantity === 1 ? mapping.name : `${mapping.name} [${index}]`, capability: 'sensor',
17
+ readable: true, writable: mapping.quantity === 1 && this.writable(observation) });
18
+ state.push({ featureId: id, value: observation.values[index], updatedAt: observation.observedAt });
59
19
  }
60
20
  }
61
- return devices;
21
+ return [{ id: this.deviceId(snapshotArg.config), integrationDomain: 'modbus', protocol: 'tcp',
22
+ name: snapshotArg.config.name ?? snapshotArg.identity.productCode, manufacturer: snapshotArg.identity.vendorName,
23
+ model: snapshotArg.identity.productCode, features, state, online: true, metadata: {
24
+ homeId: snapshotArg.config.homeId, address: snapshotArg.config.address, port: snapshotArg.config.port,
25
+ unitId: snapshotArg.config.unitId, revision: snapshotArg.identity.revision, observedAt: snapshotArg.observedAt,
26
+ networkAuthenticated: false, physicalEffectConfirmed: false, interpretation: 'raw-modbus-values',
27
+ } }];
62
28
  }
63
29
  static toEntities(snapshotArg) {
64
- const usedIds = new Map();
65
- return snapshotArg.hubs.flatMap((hubArg) => hubArg.entities.map((entityArg) => this.toEntity(hubArg, entityArg, usedIds)));
66
- }
67
- static commandForService(snapshotArg, requestArg) {
68
- const targetEntity = this.findEntity(snapshotArg, requestArg);
69
- if (requestArg.domain === modbusDomain && ['refresh', 'reload'].includes(requestArg.service)) {
70
- return { type: 'refresh', ...this.commandTarget(snapshotArg, requestArg, targetEntity) };
71
- }
72
- if (requestArg.domain === modbusDomain && requestArg.service === 'stop') {
73
- return { type: 'stop', ...this.commandTarget(snapshotArg, requestArg, targetEntity) };
74
- }
75
- if (requestArg.domain === modbusDomain && requestArg.service === 'restart') {
76
- return { type: 'restart', ...this.commandTarget(snapshotArg, requestArg, targetEntity) };
77
- }
78
- if (requestArg.domain === modbusDomain && ['read_register', 'read_holding_register', 'read_input_register'].includes(requestArg.service)) {
79
- const address = this.addressValue(requestArg, targetEntity);
80
- if (address === undefined) {
81
- return undefined;
82
- }
83
- return {
84
- type: 'read_register',
85
- ...this.commandTarget(snapshotArg, requestArg, targetEntity),
86
- address,
87
- count: this.numberData(requestArg, 'count') || targetEntity?.register?.count || 1,
88
- inputType: this.registerType(requestArg, targetEntity, requestArg.service === 'read_input_register' ? 'input' : undefined),
89
- dataType: this.dataType(requestArg, targetEntity),
90
- };
91
- }
92
- if (requestArg.domain === modbusDomain && ['read_coil', 'read_discrete_input'].includes(requestArg.service)) {
93
- const address = this.addressValue(requestArg, targetEntity);
94
- if (address === undefined) {
95
- return undefined;
96
- }
97
- return {
98
- type: 'read_coil',
99
- ...this.commandTarget(snapshotArg, requestArg, targetEntity),
100
- address,
101
- count: this.numberData(requestArg, 'count') || targetEntity?.coil?.count || 1,
102
- inputType: this.coilType(requestArg, targetEntity, requestArg.service === 'read_discrete_input' ? 'discrete_input' : undefined),
103
- };
104
- }
105
- if (requestArg.domain === modbusDomain && requestArg.service === 'write_register') {
106
- const address = this.addressValue(requestArg, targetEntity);
107
- const value = this.numberOrArrayData(requestArg, 'value');
108
- return address !== undefined && value !== undefined ? {
109
- type: 'write_register',
110
- ...this.commandTarget(snapshotArg, requestArg, targetEntity),
111
- address,
112
- value,
113
- } : undefined;
114
- }
115
- if (requestArg.domain === modbusDomain && requestArg.service === 'write_coil') {
116
- const address = this.addressValue(requestArg, targetEntity);
117
- const value = this.boolOrArrayData(requestArg, 'state') ?? this.boolOrArrayData(requestArg, 'value');
118
- return address !== undefined && value !== undefined ? {
119
- type: 'write_coil',
120
- ...this.commandTarget(snapshotArg, requestArg, targetEntity),
121
- address,
122
- value,
123
- } : undefined;
124
- }
125
- if (requestArg.domain === 'switch' && ['turn_on', 'turn_off'].includes(requestArg.service) && targetEntity?.platform === 'switch') {
126
- const commandValue = requestArg.service === 'turn_on' ? this.attributeNumber(targetEntity, 'commandOn') ?? 1 : this.attributeNumber(targetEntity, 'commandOff') ?? 0;
127
- const writeType = String(targetEntity.attributes?.writeType || 'coil');
128
- if (writeType === 'holding' || writeType === 'holdings' || targetEntity.register) {
129
- return {
130
- type: 'write_register',
131
- ...this.commandTarget(snapshotArg, requestArg, targetEntity),
132
- address: targetEntity.address,
133
- value: commandValue,
134
- };
135
- }
136
- return {
137
- type: 'write_coil',
138
- ...this.commandTarget(snapshotArg, requestArg, targetEntity),
139
- address: targetEntity.address,
140
- value: commandValue,
30
+ return snapshotArg.observations.map((observation) => {
31
+ const mapping = observation.mapping;
32
+ const bit = mapping.kind === 'coil' || mapping.kind === 'discrete_input';
33
+ const writable = this.writable(observation);
34
+ return { id: this.entityId(snapshotArg.config, mapping.id), uniqueId: this.entityId(snapshotArg.config, mapping.id),
35
+ deviceId: this.deviceId(snapshotArg.config), integrationDomain: 'modbus',
36
+ platform: bit ? writable ? 'switch' : 'binary_sensor' : writable ? 'number' : 'sensor',
37
+ name: mapping.name, state: mapping.quantity === 1 ? observation.values[0] : observation.values, available: true,
38
+ attributes: { homeId: snapshotArg.config.homeId, kind: mapping.kind, address: mapping.address, quantity: mapping.quantity,
39
+ writable, ...(mapping.kind === 'holding' && mapping.write ? { minimum: mapping.write.minimum, maximum: mapping.write.maximum } : {}),
40
+ observedAt: observation.observedAt, interpretation: 'raw-modbus-values', networkAuthenticated: false, physicalEffectConfirmed: false },
141
41
  };
142
- }
143
- if (requestArg.domain === 'number' && requestArg.service === 'set_value' && targetEntity?.platform === 'number') {
144
- const value = this.numberData(requestArg, 'value');
145
- return value !== undefined ? {
146
- type: 'write_register',
147
- ...this.commandTarget(snapshotArg, requestArg, targetEntity),
148
- address: targetEntity.address,
149
- value,
150
- } : undefined;
151
- }
152
- return undefined;
153
- }
154
- static toIntegrationEvent(eventArg) {
155
- return {
156
- type: eventArg.type === 'command_failed' ? 'error' : 'state_changed',
157
- integrationDomain: modbusDomain,
158
- deviceId: eventArg.deviceId,
159
- entityId: eventArg.entityId,
160
- data: eventArg,
161
- timestamp: eventArg.timestamp,
162
- };
163
- }
164
- static hubDeviceId(hubArg) {
165
- return `modbus.hub.${this.slug(hubArg.id)}`;
166
- }
167
- static slaveDeviceId(hubArg, unitIdArg) {
168
- return `modbus.slave.${this.slug(hubArg.id)}.${unitIdArg}`;
169
- }
170
- static decodeRegisterValue(registerArg) {
171
- if (registerArg.value !== undefined) {
172
- return registerArg.value;
173
- }
174
- const registers = registerArg.registers || [];
175
- if (!registers.length) {
176
- return null;
177
- }
178
- const dataType = this.normalizedDataType(registerArg.dataType);
179
- if (dataType === 'custom') {
180
- return registers;
181
- }
182
- const bytes = Buffer.alloc(registers.length * 2);
183
- registers.forEach((registerValueArg, indexArg) => bytes.writeUInt16BE(registerValueArg & 0xffff, indexArg * 2));
184
- let value;
185
- if (dataType === 'string') {
186
- value = bytes.toString('utf8').replace(/\0+$/g, '');
187
- }
188
- else if (dataType === 'int16') {
189
- value = bytes.readInt16BE(0);
190
- }
191
- else if (dataType === 'int32') {
192
- value = bytes.readInt32BE(0);
193
- }
194
- else if (dataType === 'uint32') {
195
- value = bytes.readUInt32BE(0);
196
- }
197
- else if (dataType === 'int64') {
198
- value = Number(bytes.readBigInt64BE(0));
199
- }
200
- else if (dataType === 'uint64') {
201
- value = Number(bytes.readBigUInt64BE(0));
202
- }
203
- else if (dataType === 'float16') {
204
- value = this.decodeFloat16(bytes.readUInt16BE(0));
205
- }
206
- else if (dataType === 'float32') {
207
- value = bytes.readFloatBE(0);
208
- }
209
- else if (dataType === 'float64') {
210
- value = bytes.readDoubleBE(0);
211
- }
212
- else {
213
- value = bytes.readUInt16BE(0);
214
- }
215
- return typeof value === 'number' ? this.processNumericValue(value, registerArg) : value;
216
- }
217
- static registerCountForDataType(dataTypeArg) {
218
- const dataType = this.normalizedDataType(dataTypeArg || 'int16');
219
- if (dataType === 'int32' || dataType === 'uint32' || dataType === 'float32') {
220
- return 2;
221
- }
222
- if (dataType === 'int64' || dataType === 'uint64' || dataType === 'float64') {
223
- return 4;
224
- }
225
- return 1;
226
- }
227
- static toEntity(hubArg, entityArg, usedIdsArg) {
228
- const platform = entityArg.platform;
229
- const id = entityArg.id.includes('.') ? entityArg.id : this.uniqueEntityId(platform, entityArg.name, usedIdsArg);
230
- const state = this.entityState(entityArg);
231
- return {
232
- id,
233
- uniqueId: entityArg.uniqueId,
234
- integrationDomain: modbusDomain,
235
- deviceId: this.slaveDeviceId(hubArg, entityArg.unitId),
236
- platform,
237
- name: entityArg.name,
238
- state,
239
- attributes: this.cleanAttributes({
240
- hubId: hubArg.id,
241
- hubName: hubArg.name,
242
- unitId: entityArg.unitId,
243
- address: entityArg.address,
244
- writable: entityArg.writable,
245
- registerType: entityArg.register?.inputType,
246
- coilType: entityArg.coil?.inputType,
247
- dataType: entityArg.register?.dataType,
248
- count: entityArg.register?.count || entityArg.coil?.count,
249
- ...entityArg.attributes,
250
- }),
251
- available: entityArg.available && hubArg.online && !hubArg.unsupportedReason,
252
- };
253
- }
254
- static entityState(entityArg) {
255
- if (entityArg.state !== undefined) {
256
- return entityArg.state;
257
- }
258
- if (entityArg.platform === 'sensor') {
259
- return entityArg.register ? this.decodeRegisterValue(entityArg.register) : null;
260
- }
261
- if (entityArg.platform === 'number') {
262
- const value = entityArg.register ? this.decodeRegisterValue(entityArg.register) : null;
263
- return typeof value === 'number' && Number.isFinite(value) ? value : null;
264
- }
265
- const boolValue = this.coilBoolean(entityArg.coil);
266
- return boolValue === undefined ? 'unknown' : boolValue ? 'on' : 'off';
267
- }
268
- static coilBoolean(coilArg) {
269
- if (!coilArg) {
270
- return undefined;
271
- }
272
- if (typeof coilArg.value === 'boolean') {
273
- return coilArg.value;
274
- }
275
- if (typeof coilArg.value === 'number') {
276
- return Boolean(coilArg.value & 1);
277
- }
278
- if (coilArg.bits?.length) {
279
- return Boolean(coilArg.bits[0]);
280
- }
281
- return undefined;
282
- }
283
- static uniqueEntityId(platformArg, nameArg, usedIdsArg) {
284
- const baseId = `${platformArg}.${this.slug(nameArg)}`;
285
- const seen = usedIdsArg.get(baseId) || 0;
286
- usedIdsArg.set(baseId, seen + 1);
287
- return seen ? `${baseId}_${seen + 1}` : baseId;
288
- }
289
- static findEntity(snapshotArg, requestArg) {
290
- const target = requestArg.target.entityId || requestArg.target.deviceId;
291
- if (!target) {
292
- return undefined;
293
- }
294
- for (const hub of snapshotArg.hubs) {
295
- const entity = hub.entities.find((entityArg) => entityArg.id === target || entityArg.uniqueId === target || this.slaveDeviceId(hub, entityArg.unitId) === target);
296
- if (entity) {
297
- return entity;
298
- }
299
- }
300
- return undefined;
301
- }
302
- static commandTarget(snapshotArg, requestArg, entityArg) {
303
- const firstHub = snapshotArg.hubs[0];
304
- return {
305
- hub: this.stringData(requestArg, 'hub') || entityArg?.hubName || firstHub?.name,
306
- hubId: this.stringData(requestArg, 'hubId') || entityArg?.hubId || firstHub?.id,
307
- unitId: this.numberData(requestArg, 'unitId') ?? this.numberData(requestArg, 'unit') ?? this.numberData(requestArg, 'slave') ?? entityArg?.unitId ?? 1,
308
- entityId: requestArg.target.entityId,
309
- deviceId: requestArg.target.deviceId,
310
- uniqueId: entityArg?.uniqueId,
311
- };
312
- }
313
- static addressValue(requestArg, entityArg) {
314
- return this.numberData(requestArg, 'address') ?? entityArg?.address;
315
- }
316
- static registerType(requestArg, entityArg, fallbackArg) {
317
- const value = this.stringData(requestArg, 'inputType') || this.stringData(requestArg, 'input_type') || this.stringData(requestArg, 'registerType') || this.stringData(requestArg, 'register_type') || entityArg?.register?.inputType || fallbackArg || 'holding';
318
- return value === 'input' ? 'input' : 'holding';
319
- }
320
- static coilType(requestArg, entityArg, fallbackArg) {
321
- const value = this.stringData(requestArg, 'inputType') || this.stringData(requestArg, 'input_type') || this.stringData(requestArg, 'coilType') || this.stringData(requestArg, 'coil_type') || entityArg?.coil?.inputType || fallbackArg || 'coil';
322
- return value === 'discrete_input' ? 'discrete_input' : 'coil';
323
- }
324
- static dataType(requestArg, entityArg) {
325
- const value = this.stringData(requestArg, 'dataType') || this.stringData(requestArg, 'data_type') || entityArg?.register?.dataType;
326
- return value;
327
- }
328
- static numberData(requestArg, keyArg) {
329
- const value = requestArg.data?.[keyArg];
330
- return this.toNumber(value);
331
- }
332
- static attributeNumber(entityArg, keyArg) {
333
- return this.toNumber(entityArg.attributes?.[keyArg]);
334
- }
335
- static toNumber(valueArg) {
336
- return typeof valueArg === 'number' && Number.isFinite(valueArg) ? valueArg : typeof valueArg === 'string' && valueArg.trim() && Number.isFinite(Number(valueArg)) ? Number(valueArg) : undefined;
337
- }
338
- static stringData(requestArg, keyArg) {
339
- const value = requestArg.data?.[keyArg];
340
- return typeof value === 'string' && value.trim() ? value.trim() : undefined;
341
- }
342
- static numberOrArrayData(requestArg, keyArg) {
343
- const value = requestArg.data?.[keyArg];
344
- if (Array.isArray(value)) {
345
- const values = value.map((entryArg) => this.toNumber(entryArg)).filter((entryArg) => entryArg !== undefined);
346
- return values.length === value.length ? values : undefined;
347
- }
348
- return this.toNumber(value);
349
- }
350
- static boolOrArrayData(requestArg, keyArg) {
351
- const value = requestArg.data?.[keyArg];
352
- if (Array.isArray(value)) {
353
- const values = value.map((entryArg) => this.toBooleanOrNumber(entryArg)).filter((entryArg) => entryArg !== undefined);
354
- return values.length === value.length ? values.map((entryArg) => typeof entryArg === 'boolean' ? entryArg : Boolean(entryArg)) : undefined;
355
- }
356
- return this.toBooleanOrNumber(value);
357
- }
358
- static toBooleanOrNumber(valueArg) {
359
- if (typeof valueArg === 'boolean') {
360
- return valueArg;
361
- }
362
- if (typeof valueArg === 'number' && Number.isFinite(valueArg)) {
363
- return valueArg;
364
- }
365
- if (typeof valueArg === 'string') {
366
- const value = valueArg.trim().toLowerCase();
367
- if (value === 'true' || value === 'on') {
368
- return true;
369
- }
370
- if (value === 'false' || value === 'off') {
371
- return false;
372
- }
373
- if (value && Number.isFinite(Number(value))) {
374
- return Number(value);
375
- }
376
- }
377
- return undefined;
378
- }
379
- static normalizedDataType(dataTypeArg) {
380
- if (dataTypeArg === 'int' || dataTypeArg === 'integer') {
381
- return 'int16';
382
- }
383
- if (dataTypeArg === 'uint') {
384
- return 'uint16';
385
- }
386
- if (dataTypeArg === 'float') {
387
- return 'float32';
388
- }
389
- return dataTypeArg;
390
- }
391
- static decodeFloat16(valueArg) {
392
- const sign = (valueArg & 0x8000) ? -1 : 1;
393
- const exponent = (valueArg >> 10) & 0x1f;
394
- const fraction = valueArg & 0x03ff;
395
- if (exponent === 0) {
396
- return sign * Math.pow(2, -14) * (fraction / 1024);
397
- }
398
- if (exponent === 31) {
399
- return fraction ? Number.NaN : sign * Number.POSITIVE_INFINITY;
400
- }
401
- return sign * Math.pow(2, exponent - 15) * (1 + fraction / 1024);
402
- }
403
- static processNumericValue(valueArg, registerArg) {
404
- const metadata = registerArg.metadata || {};
405
- const nanValue = this.toNumberValue(metadata.nanValue) ?? this.toNumberValue(metadata.nan_value);
406
- if (nanValue !== undefined && (valueArg === nanValue || valueArg === -nanValue)) {
407
- return null;
408
- }
409
- if (Number.isNaN(valueArg)) {
410
- return null;
411
- }
412
- const scale = this.toNumberValue(metadata.scale) ?? 1;
413
- const offset = this.toNumberValue(metadata.offset) ?? 0;
414
- let value = valueArg * scale + offset;
415
- const min = this.toNumberValue(metadata.minValue) ?? this.toNumberValue(metadata.min_value);
416
- const max = this.toNumberValue(metadata.maxValue) ?? this.toNumberValue(metadata.max_value);
417
- const zeroSuppress = this.toNumberValue(metadata.zeroSuppress) ?? this.toNumberValue(metadata.zero_suppress);
418
- const precision = this.toNumberValue(metadata.precision);
419
- if (min !== undefined && value < min) {
420
- value = min;
421
- }
422
- if (max !== undefined && value > max) {
423
- value = max;
424
- }
425
- if (zeroSuppress !== undefined && Math.abs(value) <= zeroSuppress) {
426
- value = 0;
427
- }
428
- return precision !== undefined ? Number(value.toFixed(precision)) : value;
429
- }
430
- static toNumberValue(valueArg) {
431
- return typeof valueArg === 'number' && Number.isFinite(valueArg) ? valueArg : typeof valueArg === 'string' && valueArg.trim() && Number.isFinite(Number(valueArg)) ? Number(valueArg) : undefined;
432
- }
433
- static cleanAttributes(attributesArg) {
434
- return Object.fromEntries(Object.entries(attributesArg).filter(([, valueArg]) => valueArg !== undefined));
435
- }
436
- static slug(valueArg) {
437
- return valueArg.toLowerCase().replace(/[^a-z0-9]+/g, '_').replace(/^_+|_+$/g, '') || modbusDomain;
42
+ });
43
+ }
44
+ static commandForService(configArg, requestArg) {
45
+ const request = modbusRecord(requestArg, ['domain', 'service', 'target', 'data']);
46
+ const target = modbusRecord(request.target, ['deviceId', 'entityId']);
47
+ if (target.deviceId !== undefined && target.deviceId !== this.deviceId(configArg))
48
+ throw new TypeError('Modbus service device is outside the selected home and device.');
49
+ const mapping = configArg.mappings.find((entry) => this.entityId(configArg, entry.id) === target.entityId);
50
+ if (!mapping)
51
+ throw new TypeError('Modbus services require one exact mapped entity target.');
52
+ if (request.domain !== 'modbus')
53
+ throw new TypeError('Modbus raw services use the modbus domain.');
54
+ if (request.service === 'read') {
55
+ if (request.data !== undefined)
56
+ modbusRecord(request.data, []);
57
+ return modbusCommand({ type: 'read', mappingId: mapping.id }, configArg);
58
+ }
59
+ const data = modbusRecord(request.data, ['value']);
60
+ return modbusCommand({ type: request.service, mappingId: mapping.id, value: data.value }, configArg);
61
+ }
62
+ static commandForFeature(configArg, requestArg) {
63
+ const request = modbusRecord(requestArg, ['device', 'feature', 'value']);
64
+ const device = modbusRecord(request.device);
65
+ const feature = modbusRecord(request.feature);
66
+ const metadata = modbusRecord(device.metadata);
67
+ if (device.id !== this.deviceId(configArg) || device.integrationDomain !== 'modbus' || metadata.homeId !== configArg.homeId) {
68
+ throw new TypeError('Modbus feature writes require the exact owned home and device.');
69
+ }
70
+ const mapping = configArg.mappings.find((entry) => entry.id === feature.id);
71
+ if (!mapping)
72
+ throw new TypeError('Modbus feature is outside the explicit owner mapping.');
73
+ return modbusCommand({ type: mapping.kind === 'coil' ? 'write_coil' : 'write_register', mappingId: mapping.id, value: request.value }, configArg);
74
+ }
75
+ static writable(observationArg) {
76
+ const mapping = observationArg.mapping;
77
+ return mapping.kind === 'coil' && mapping.write === true || mapping.kind === 'holding' && mapping.write !== undefined;
438
78
  }
439
79
  }
440
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYnVzLm1hcHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3RzL2ludGVncmF0aW9ucy9tb2RidXMvbW9kYnVzLm1hcHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssT0FBTyxNQUFNLGtCQUFrQixDQUFDO0FBZ0I1QyxNQUFNLFlBQVksR0FBRyxRQUFRLENBQUM7QUFFOUIsTUFBTSxPQUFPLFlBQVk7SUFDaEIsTUFBTSxDQUFDLFNBQVMsQ0FBQyxXQUE0QjtRQUNsRCxNQUFNLFNBQVMsR0FBRyxXQUFXLENBQUMsU0FBUyxJQUFJLElBQUksSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDcEUsTUFBTSxPQUFPLEdBQW1ELEVBQUUsQ0FBQztRQUVuRSxLQUFLLE1BQU0sR0FBRyxJQUFJLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNuQyxPQUFPLENBQUMsSUFBSSxDQUFDO2dCQUNYLEVBQUUsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQztnQkFDekIsaUJBQWlCLEVBQUUsWUFBWTtnQkFDL0IsSUFBSSxFQUFFLEdBQUcsQ0FBQyxJQUFJO2dCQUNkLFFBQVEsRUFBRSxTQUFTO2dCQUNuQixZQUFZLEVBQUUsR0FBRyxDQUFDLFlBQVksSUFBSSxRQUFRO2dCQUMxQyxLQUFLLEVBQUUsR0FBRyxDQUFDLEtBQUssSUFBSSxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLE1BQU07Z0JBQ25ELE1BQU0sRUFBRSxHQUFHLENBQUMsTUFBTSxJQUFJLENBQUMsR0FBRyxDQUFDLGlCQUFpQjtnQkFDNUMsUUFBUSxFQUFFO29CQUNSLEVBQUUsRUFBRSxFQUFFLGNBQWMsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxjQUFjLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFO29CQUNuRyxFQUFFLEVBQUUsRUFBRSxx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
80
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYnVzLm1hcHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3RzL2ludGVncmF0aW9ucy9tb2RidXMvbW9kYnVzLm1hcHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxPQUFPLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRXJFLE1BQU0sT0FBTyxZQUFZO0lBQ2hCLE1BQU0sQ0FBQyxRQUFRLENBQUMsU0FBa0M7UUFDdkQsT0FBTyxVQUFVLGtCQUFrQixDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsSUFBSSxTQUFTLENBQUMsT0FBTyxJQUFJLFNBQVMsQ0FBQyxJQUFJLElBQUksU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ3JILENBQUM7SUFFTSxNQUFNLENBQUMsUUFBUSxDQUFDLFNBQWtDLEVBQUUsWUFBb0I7UUFDN0UsT0FBTyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLElBQUksWUFBWSxFQUFFLENBQUM7SUFDdkQsQ0FBQztJQUVNLE1BQU0sQ0FBQyxTQUFTLENBQUMsV0FBNEI7UUFDbEQsTUFBTSxRQUFRLEdBQWdELEVBQUUsQ0FBQztRQUNqRSxNQUFNLEtBQUssR0FBOEMsRUFBRSxDQUFDO1FBQzVELEtBQUssTUFBTSxXQUFXLElBQUksV0FBVyxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ25ELE1BQU0sT0FBTyxHQUFHLFdBQVcsQ0FBQyxPQUFPLENBQUM7WUFDcEMsS0FBSyxJQUFJLEtBQUssR0FBRyxDQUFDLEVBQUUsS0FBSyxHQUFHLFdBQVcsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUM7Z0JBQy9ELE1BQU0sRUFBRSxHQUFHLE9BQU8sQ0FBQyxRQUFRLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxFQUFFLElBQUksS0FBSyxF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