@smarthome.exchange/integrations 0.2.0 → 1.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 (1064) hide show
  1. package/changelog.md +122 -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 +38 -10
  9. package/dist_ts/core/classes.configstore.js +298 -32
  10. package/dist_ts/core/classes.discoveryengine.js +12 -2
  11. package/dist_ts/core/classes.runtimemanager.js +1 -1
  12. package/dist_ts/core/classes.simplelocalintegration.js +1 -1
  13. package/dist_ts/core/errors.d.ts +2 -2
  14. package/dist_ts/core/errors.js +1 -1
  15. package/dist_ts/core/types.d.ts +13 -4
  16. package/dist_ts/index.d.ts +4 -1
  17. package/dist_ts/index.js +7 -1
  18. package/dist_ts/integrations/adguard/adguard.classes.client.js +1 -1
  19. package/dist_ts/integrations/adguard/adguard.classes.integration.d.ts +1 -1
  20. package/dist_ts/integrations/adguard/adguard.classes.integration.js +1 -1
  21. package/dist_ts/integrations/adguard/adguard.discovery.d.ts +1 -1
  22. package/dist_ts/integrations/adguard/adguard.mapper.js +1 -1
  23. package/dist_ts/integrations/agent_dvr/agent_dvr.classes.client.js +1 -1
  24. package/dist_ts/integrations/agent_dvr/agent_dvr.classes.integration.d.ts +1 -1
  25. package/dist_ts/integrations/agent_dvr/agent_dvr.classes.integration.js +1 -1
  26. package/dist_ts/integrations/agent_dvr/agent_dvr.discovery.d.ts +3 -3
  27. package/dist_ts/integrations/agent_dvr/agent_dvr.mapper.js +1 -1
  28. package/dist_ts/integrations/agent_dvr/agent_dvr.types.d.ts +1 -1
  29. package/dist_ts/integrations/airgradient/airgradient.classes.client.js +1 -1
  30. package/dist_ts/integrations/airgradient/airgradient.classes.integration.d.ts +1 -1
  31. package/dist_ts/integrations/airgradient/airgradient.classes.integration.js +1 -1
  32. package/dist_ts/integrations/airgradient/airgradient.discovery.d.ts +2 -2
  33. package/dist_ts/integrations/airos/airos.classes.client.js +1 -1
  34. package/dist_ts/integrations/airos/airos.classes.integration.d.ts +1 -1
  35. package/dist_ts/integrations/airos/airos.classes.integration.js +1 -1
  36. package/dist_ts/integrations/airos/airos.discovery.d.ts +4 -4
  37. package/dist_ts/integrations/airos/airos.discovery.js +1 -1
  38. package/dist_ts/integrations/airos/airos.mapper.js +1 -1
  39. package/dist_ts/integrations/amcrest/amcrest.classes.client.js +1 -1
  40. package/dist_ts/integrations/amcrest/amcrest.classes.integration.d.ts +1 -1
  41. package/dist_ts/integrations/amcrest/amcrest.classes.integration.js +1 -1
  42. package/dist_ts/integrations/amcrest/amcrest.discovery.d.ts +3 -3
  43. package/dist_ts/integrations/amcrest/amcrest.types.d.ts +5 -5
  44. package/dist_ts/integrations/android_ip_webcam/android_ip_webcam.classes.client.js +1 -1
  45. package/dist_ts/integrations/android_ip_webcam/android_ip_webcam.classes.integration.d.ts +1 -1
  46. package/dist_ts/integrations/android_ip_webcam/android_ip_webcam.classes.integration.js +1 -1
  47. package/dist_ts/integrations/android_ip_webcam/android_ip_webcam.discovery.d.ts +1 -1
  48. package/dist_ts/integrations/androidtv/androidtv.classes.client.js +1 -1
  49. package/dist_ts/integrations/androidtv/androidtv.classes.integration.d.ts +1 -1
  50. package/dist_ts/integrations/androidtv/androidtv.classes.integration.js +1 -1
  51. package/dist_ts/integrations/androidtv/androidtv.discovery.d.ts +3 -3
  52. package/dist_ts/integrations/androidtv_remote/androidtv_remote.classes.client.js +1 -1
  53. package/dist_ts/integrations/androidtv_remote/androidtv_remote.classes.integration.d.ts +1 -1
  54. package/dist_ts/integrations/androidtv_remote/androidtv_remote.classes.integration.js +1 -1
  55. package/dist_ts/integrations/androidtv_remote/androidtv_remote.discovery.d.ts +2 -2
  56. package/dist_ts/integrations/apcupsd/apcupsd.classes.client.js +1 -1
  57. package/dist_ts/integrations/apcupsd/apcupsd.classes.integration.d.ts +1 -1
  58. package/dist_ts/integrations/apcupsd/apcupsd.classes.integration.js +1 -1
  59. package/dist_ts/integrations/apcupsd/apcupsd.discovery.d.ts +1 -1
  60. package/dist_ts/integrations/apcupsd/apcupsd.mapper.js +1 -1
  61. package/dist_ts/integrations/arcam_fmj/arcam_fmj.classes.client.js +1 -1
  62. package/dist_ts/integrations/arcam_fmj/arcam_fmj.classes.integration.d.ts +1 -1
  63. package/dist_ts/integrations/arcam_fmj/arcam_fmj.classes.integration.js +1 -1
  64. package/dist_ts/integrations/arcam_fmj/arcam_fmj.discovery.d.ts +2 -2
  65. package/dist_ts/integrations/asuswrt/asuswrt.classes.client.js +1 -1
  66. package/dist_ts/integrations/asuswrt/asuswrt.classes.integration.d.ts +1 -1
  67. package/dist_ts/integrations/asuswrt/asuswrt.classes.integration.js +1 -1
  68. package/dist_ts/integrations/asuswrt/asuswrt.discovery.d.ts +1 -1
  69. package/dist_ts/integrations/asuswrt/asuswrt.mapper.js +1 -1
  70. package/dist_ts/integrations/axis/axis.classes.client.js +1 -1
  71. package/dist_ts/integrations/axis/axis.classes.integration.d.ts +1 -1
  72. package/dist_ts/integrations/axis/axis.classes.integration.js +1 -1
  73. package/dist_ts/integrations/axis/axis.discovery.d.ts +3 -3
  74. package/dist_ts/integrations/blebox/blebox.classes.client.js +1 -1
  75. package/dist_ts/integrations/blebox/blebox.classes.integration.d.ts +1 -1
  76. package/dist_ts/integrations/blebox/blebox.classes.integration.js +1 -1
  77. package/dist_ts/integrations/blebox/blebox.discovery.d.ts +2 -2
  78. package/dist_ts/integrations/bluesound/bluesound.classes.client.d.ts +9 -4
  79. package/dist_ts/integrations/bluesound/bluesound.classes.client.js +1 -1
  80. package/dist_ts/integrations/bluesound/bluesound.classes.integration.d.ts +1 -1
  81. package/dist_ts/integrations/bluesound/bluesound.classes.integration.js +1 -1
  82. package/dist_ts/integrations/bluesound/bluesound.discovery.d.ts +2 -2
  83. package/dist_ts/integrations/bluetooth_le_tracker/bluetooth_le_tracker.classes.client.js +1 -1
  84. package/dist_ts/integrations/bluetooth_le_tracker/bluetooth_le_tracker.classes.integration.d.ts +1 -1
  85. package/dist_ts/integrations/bluetooth_le_tracker/bluetooth_le_tracker.classes.integration.js +1 -1
  86. package/dist_ts/integrations/bluetooth_le_tracker/bluetooth_le_tracker.discovery.d.ts +2 -2
  87. package/dist_ts/integrations/bluetooth_le_tracker/bluetooth_le_tracker.mapper.js +1 -1
  88. package/dist_ts/integrations/bond/bond.classes.client.js +1 -1
  89. package/dist_ts/integrations/bond/bond.classes.integration.d.ts +1 -1
  90. package/dist_ts/integrations/bond/bond.classes.integration.js +1 -1
  91. package/dist_ts/integrations/bond/bond.discovery.d.ts +3 -3
  92. package/dist_ts/integrations/bond/bond.mapper.js +1 -1
  93. package/dist_ts/integrations/bond/bond.types.d.ts +71 -71
  94. package/dist_ts/integrations/bosch_shc/bosch_shc.classes.client.js +1 -1
  95. package/dist_ts/integrations/bosch_shc/bosch_shc.classes.integration.d.ts +1 -1
  96. package/dist_ts/integrations/bosch_shc/bosch_shc.classes.integration.js +1 -1
  97. package/dist_ts/integrations/bosch_shc/bosch_shc.discovery.d.ts +2 -2
  98. package/dist_ts/integrations/bosch_shc/bosch_shc.mapper.js +1 -1
  99. package/dist_ts/integrations/braviatv/braviatv.classes.client.js +1 -1
  100. package/dist_ts/integrations/braviatv/braviatv.classes.integration.d.ts +1 -1
  101. package/dist_ts/integrations/braviatv/braviatv.classes.integration.js +1 -1
  102. package/dist_ts/integrations/braviatv/braviatv.discovery.d.ts +3 -3
  103. package/dist_ts/integrations/broadlink/broadlink.classes.client.js +1 -1
  104. package/dist_ts/integrations/broadlink/broadlink.classes.integration.d.ts +1 -1
  105. package/dist_ts/integrations/broadlink/broadlink.classes.integration.js +1 -1
  106. package/dist_ts/integrations/broadlink/broadlink.discovery.d.ts +3 -3
  107. package/dist_ts/integrations/broadlink/broadlink.mapper.js +1 -1
  108. package/dist_ts/integrations/broadlink/broadlink.packet.d.ts +2 -2
  109. package/dist_ts/integrations/broadlink/broadlink.packet.js +1 -1
  110. package/dist_ts/integrations/brother/brother.classes.client.js +1 -1
  111. package/dist_ts/integrations/brother/brother.classes.integration.d.ts +1 -1
  112. package/dist_ts/integrations/brother/brother.classes.integration.js +1 -1
  113. package/dist_ts/integrations/brother/brother.constants.d.ts +12 -12
  114. package/dist_ts/integrations/brother/brother.discovery.d.ts +2 -2
  115. package/dist_ts/integrations/brother/brother.mapper.js +1 -1
  116. package/dist_ts/integrations/cast/cast.classes.client.js +1 -1
  117. package/dist_ts/integrations/cast/cast.classes.integration.d.ts +1 -1
  118. package/dist_ts/integrations/cast/cast.classes.integration.js +1 -1
  119. package/dist_ts/integrations/cast/cast.discovery.d.ts +2 -2
  120. package/dist_ts/integrations/channels/channels.classes.client.js +1 -1
  121. package/dist_ts/integrations/channels/channels.classes.integration.d.ts +1 -1
  122. package/dist_ts/integrations/channels/channels.classes.integration.js +1 -1
  123. package/dist_ts/integrations/channels/channels.discovery.d.ts +2 -2
  124. package/dist_ts/integrations/cisco_ios/cisco_ios.classes.client.js +1 -1
  125. package/dist_ts/integrations/cisco_ios/cisco_ios.classes.integration.d.ts +1 -1
  126. package/dist_ts/integrations/cisco_ios/cisco_ios.classes.integration.js +1 -1
  127. package/dist_ts/integrations/cisco_ios/cisco_ios.discovery.d.ts +2 -2
  128. package/dist_ts/integrations/cisco_ios/cisco_ios.mapper.js +1 -1
  129. package/dist_ts/integrations/daikin/daikin.classes.client.js +1 -1
  130. package/dist_ts/integrations/daikin/daikin.classes.integration.d.ts +1 -1
  131. package/dist_ts/integrations/daikin/daikin.classes.integration.js +1 -1
  132. package/dist_ts/integrations/daikin/daikin.discovery.d.ts +5 -5
  133. package/dist_ts/integrations/daikin/daikin.mapper.js +1 -1
  134. package/dist_ts/integrations/ddwrt/ddwrt.classes.client.js +1 -1
  135. package/dist_ts/integrations/ddwrt/ddwrt.classes.integration.d.ts +1 -1
  136. package/dist_ts/integrations/ddwrt/ddwrt.classes.integration.js +1 -1
  137. package/dist_ts/integrations/ddwrt/ddwrt.discovery.d.ts +3 -3
  138. package/dist_ts/integrations/ddwrt/ddwrt.mapper.js +1 -1
  139. package/dist_ts/integrations/deconz/deconz.classes.client.d.ts +31 -22
  140. package/dist_ts/integrations/deconz/deconz.classes.client.js +302 -153
  141. package/dist_ts/integrations/deconz/deconz.classes.configflow.js +43 -26
  142. package/dist_ts/integrations/deconz/deconz.classes.integration.d.ts +3 -1
  143. package/dist_ts/integrations/deconz/deconz.classes.integration.js +133 -20
  144. package/dist_ts/integrations/deconz/deconz.discovery.d.ts +4 -4
  145. package/dist_ts/integrations/deconz/deconz.mapper.d.ts +2 -1
  146. package/dist_ts/integrations/deconz/deconz.mapper.js +23 -18
  147. package/dist_ts/integrations/deconz/deconz.types.d.ts +34 -3
  148. package/dist_ts/integrations/deconz/deconz.validation.d.ts +14 -0
  149. package/dist_ts/integrations/deconz/deconz.validation.js +269 -0
  150. package/dist_ts/integrations/deluge/deluge.classes.client.js +1 -1
  151. package/dist_ts/integrations/deluge/deluge.classes.integration.d.ts +1 -1
  152. package/dist_ts/integrations/deluge/deluge.classes.integration.js +1 -1
  153. package/dist_ts/integrations/deluge/deluge.discovery.d.ts +2 -2
  154. package/dist_ts/integrations/denon/denon.classes.client.js +1 -1
  155. package/dist_ts/integrations/denon/denon.classes.integration.d.ts +1 -1
  156. package/dist_ts/integrations/denon/denon.classes.integration.js +1 -1
  157. package/dist_ts/integrations/denon/denon.discovery.d.ts +1 -1
  158. package/dist_ts/integrations/denonavr/denonavr.classes.client.js +1 -1
  159. package/dist_ts/integrations/denonavr/denonavr.classes.integration.d.ts +1 -1
  160. package/dist_ts/integrations/denonavr/denonavr.classes.integration.js +1 -1
  161. package/dist_ts/integrations/denonavr/denonavr.discovery.d.ts +3 -3
  162. package/dist_ts/integrations/devolo_home_network/devolo_home_network.classes.client.js +1 -1
  163. package/dist_ts/integrations/devolo_home_network/devolo_home_network.classes.integration.d.ts +1 -1
  164. package/dist_ts/integrations/devolo_home_network/devolo_home_network.classes.integration.js +1 -1
  165. package/dist_ts/integrations/devolo_home_network/devolo_home_network.discovery.d.ts +3 -3
  166. package/dist_ts/integrations/devolo_home_network/devolo_home_network.mapper.js +1 -1
  167. package/dist_ts/integrations/directv/directv.classes.client.js +1 -1
  168. package/dist_ts/integrations/directv/directv.classes.integration.d.ts +1 -1
  169. package/dist_ts/integrations/directv/directv.classes.integration.js +1 -1
  170. package/dist_ts/integrations/directv/directv.discovery.d.ts +2 -2
  171. package/dist_ts/integrations/directv/directv.types.d.ts +1 -1
  172. package/dist_ts/integrations/dlink/dlink.classes.client.d.ts +6 -3
  173. package/dist_ts/integrations/dlink/dlink.classes.client.js +1 -1
  174. package/dist_ts/integrations/dlink/dlink.classes.integration.d.ts +1 -1
  175. package/dist_ts/integrations/dlink/dlink.classes.integration.js +1 -1
  176. package/dist_ts/integrations/dlink/dlink.discovery.d.ts +2 -2
  177. package/dist_ts/integrations/dlink/dlink.mapper.js +1 -1
  178. package/dist_ts/integrations/dlna_dmr/dlna_dmr.classes.client.js +1 -1
  179. package/dist_ts/integrations/dlna_dmr/dlna_dmr.classes.integration.d.ts +1 -1
  180. package/dist_ts/integrations/dlna_dmr/dlna_dmr.classes.integration.js +1 -1
  181. package/dist_ts/integrations/dlna_dmr/dlna_dmr.discovery.d.ts +2 -2
  182. package/dist_ts/integrations/dlna_dms/dlna_dms.classes.client.js +1 -1
  183. package/dist_ts/integrations/dlna_dms/dlna_dms.classes.integration.d.ts +1 -1
  184. package/dist_ts/integrations/dlna_dms/dlna_dms.classes.integration.js +1 -1
  185. package/dist_ts/integrations/dlna_dms/dlna_dms.discovery.d.ts +2 -2
  186. package/dist_ts/integrations/doorbird/doorbird.classes.client.js +1 -1
  187. package/dist_ts/integrations/doorbird/doorbird.classes.integration.d.ts +1 -1
  188. package/dist_ts/integrations/doorbird/doorbird.classes.integration.js +1 -1
  189. package/dist_ts/integrations/doorbird/doorbird.discovery.d.ts +2 -2
  190. package/dist_ts/integrations/dsmr/dsmr.classes.client.js +1 -1
  191. package/dist_ts/integrations/dsmr/dsmr.classes.integration.d.ts +1 -1
  192. package/dist_ts/integrations/dsmr/dsmr.classes.integration.js +1 -1
  193. package/dist_ts/integrations/dsmr/dsmr.discovery.d.ts +1 -1
  194. package/dist_ts/integrations/dsmr/dsmr.parser.js +1 -1
  195. package/dist_ts/integrations/dunehd/dunehd.classes.client.js +1 -1
  196. package/dist_ts/integrations/dunehd/dunehd.classes.integration.d.ts +1 -1
  197. package/dist_ts/integrations/dunehd/dunehd.classes.integration.js +1 -1
  198. package/dist_ts/integrations/dunehd/dunehd.discovery.d.ts +3 -3
  199. package/dist_ts/integrations/edimax/edimax.classes.client.js +1 -1
  200. package/dist_ts/integrations/edl21/edl21.classes.client.js +1 -1
  201. package/dist_ts/integrations/egardia/egardia.classes.client.js +1 -1
  202. package/dist_ts/integrations/elgato/elgato.classes.client.js +1 -1
  203. package/dist_ts/integrations/elgato/elgato.classes.integration.d.ts +1 -1
  204. package/dist_ts/integrations/elgato/elgato.classes.integration.js +1 -1
  205. package/dist_ts/integrations/elgato/elgato.discovery.d.ts +3 -3
  206. package/dist_ts/integrations/emby/emby.classes.client.js +1 -1
  207. package/dist_ts/integrations/emby/emby.classes.integration.d.ts +1 -1
  208. package/dist_ts/integrations/emby/emby.classes.integration.js +1 -1
  209. package/dist_ts/integrations/emby/emby.discovery.d.ts +3 -3
  210. package/dist_ts/integrations/emoncms_history/emoncms_history.classes.client.js +1 -1
  211. package/dist_ts/integrations/emonitor/emonitor.classes.client.js +1 -1
  212. package/dist_ts/integrations/emulated_hue/emulated_hue.classes.client.js +1 -1
  213. package/dist_ts/integrations/emulated_kasa/emulated_kasa.classes.client.js +1 -1
  214. package/dist_ts/integrations/emulated_roku/emulated_roku.classes.client.js +1 -1
  215. package/dist_ts/integrations/energenie_power_sockets/energenie_power_sockets.classes.client.js +1 -1
  216. package/dist_ts/integrations/enigma2/enigma2.classes.client.js +1 -1
  217. package/dist_ts/integrations/enocean/enocean.classes.client.js +1 -1
  218. package/dist_ts/integrations/esphome/esphome.classes.client.d.ts +35 -18
  219. package/dist_ts/integrations/esphome/esphome.classes.client.js +267 -77
  220. package/dist_ts/integrations/esphome/esphome.classes.configflow.js +2 -4
  221. package/dist_ts/integrations/esphome/esphome.classes.integration.d.ts +22 -11
  222. package/dist_ts/integrations/esphome/esphome.classes.integration.js +68 -61
  223. package/dist_ts/integrations/esphome/esphome.discovery.d.ts +2 -2
  224. package/dist_ts/integrations/esphome/esphome.discovery.js +2 -2
  225. package/dist_ts/integrations/esphome/esphome.mapper.d.ts +1 -2
  226. package/dist_ts/integrations/esphome/esphome.mapper.js +79 -36
  227. package/dist_ts/integrations/esphome/esphome.types.d.ts +2 -0
  228. package/dist_ts/integrations/fibaro/fibaro.classes.client.js +1 -1
  229. package/dist_ts/integrations/file/file.classes.client.js +1 -1
  230. package/dist_ts/integrations/filesize/filesize.classes.client.js +1 -1
  231. package/dist_ts/integrations/flexit_bacnet/flexit_bacnet.classes.client.js +1 -1
  232. package/dist_ts/integrations/flic/flic.classes.client.js +1 -1
  233. package/dist_ts/integrations/flux_led/flux_led.classes.client.js +1 -1
  234. package/dist_ts/integrations/folder/folder.classes.client.js +1 -1
  235. package/dist_ts/integrations/folder_watcher/folder_watcher.classes.client.js +1 -1
  236. package/dist_ts/integrations/forked_daapd/forked_daapd.classes.client.js +1 -1
  237. package/dist_ts/integrations/forked_daapd/forked_daapd.classes.integration.d.ts +1 -1
  238. package/dist_ts/integrations/forked_daapd/forked_daapd.classes.integration.js +1 -1
  239. package/dist_ts/integrations/forked_daapd/forked_daapd.discovery.d.ts +2 -2
  240. package/dist_ts/integrations/foscam/foscam.classes.client.js +1 -1
  241. package/dist_ts/integrations/foscam/foscam.classes.integration.d.ts +1 -1
  242. package/dist_ts/integrations/foscam/foscam.classes.integration.js +1 -1
  243. package/dist_ts/integrations/foscam/foscam.discovery.d.ts +3 -3
  244. package/dist_ts/integrations/foscam/foscam.types.d.ts +2 -2
  245. package/dist_ts/integrations/freebox/freebox.classes.client.js +1 -1
  246. package/dist_ts/integrations/freebox/freebox.classes.integration.d.ts +1 -1
  247. package/dist_ts/integrations/freebox/freebox.classes.integration.js +1 -1
  248. package/dist_ts/integrations/freebox/freebox.discovery.d.ts +2 -2
  249. package/dist_ts/integrations/freebox/freebox.mapper.js +1 -1
  250. package/dist_ts/integrations/freebox/freebox.types.d.ts +11 -11
  251. package/dist_ts/integrations/fritz/fritz.classes.client.js +1 -1
  252. package/dist_ts/integrations/fritz/fritz.classes.integration.d.ts +1 -1
  253. package/dist_ts/integrations/fritz/fritz.classes.integration.js +1 -1
  254. package/dist_ts/integrations/fritz/fritz.discovery.d.ts +3 -3
  255. package/dist_ts/integrations/fritz/fritz.mapper.js +1 -1
  256. package/dist_ts/integrations/fritzbox_callmonitor/fritzbox_callmonitor.classes.client.js +1 -1
  257. package/dist_ts/integrations/fritzbox_callmonitor/fritzbox_callmonitor.classes.integration.d.ts +1 -1
  258. package/dist_ts/integrations/fritzbox_callmonitor/fritzbox_callmonitor.classes.integration.js +1 -1
  259. package/dist_ts/integrations/fritzbox_callmonitor/fritzbox_callmonitor.discovery.d.ts +3 -3
  260. package/dist_ts/integrations/fritzbox_callmonitor/fritzbox_callmonitor.mapper.js +1 -1
  261. package/dist_ts/integrations/fronius/fronius.classes.client.js +1 -1
  262. package/dist_ts/integrations/fronius/fronius.classes.integration.d.ts +1 -1
  263. package/dist_ts/integrations/fronius/fronius.classes.integration.js +1 -1
  264. package/dist_ts/integrations/fronius/fronius.discovery.d.ts +2 -2
  265. package/dist_ts/integrations/fronius/fronius.mapper.js +1 -1
  266. package/dist_ts/integrations/frontier_silicon/frontier_silicon.classes.client.js +1 -1
  267. package/dist_ts/integrations/frontier_silicon/frontier_silicon.classes.integration.d.ts +1 -1
  268. package/dist_ts/integrations/frontier_silicon/frontier_silicon.classes.integration.js +1 -1
  269. package/dist_ts/integrations/frontier_silicon/frontier_silicon.discovery.d.ts +2 -2
  270. package/dist_ts/integrations/fully_kiosk/fully_kiosk.classes.client.js +1 -1
  271. package/dist_ts/integrations/fully_kiosk/fully_kiosk.classes.integration.d.ts +1 -1
  272. package/dist_ts/integrations/fully_kiosk/fully_kiosk.classes.integration.js +1 -1
  273. package/dist_ts/integrations/fully_kiosk/fully_kiosk.discovery.d.ts +2 -2
  274. package/dist_ts/integrations/fully_kiosk/fully_kiosk.mapper.js +1 -1
  275. package/dist_ts/integrations/generated/index.d.ts +1 -1
  276. package/dist_ts/integrations/generated/index.js +5 -7
  277. package/dist_ts/integrations/generic/generic.classes.client.js +1 -1
  278. package/dist_ts/integrations/geniushub/geniushub.classes.client.js +1 -1
  279. package/dist_ts/integrations/glances/glances.classes.client.js +1 -1
  280. package/dist_ts/integrations/glances/glances.classes.integration.d.ts +1 -1
  281. package/dist_ts/integrations/glances/glances.classes.integration.js +1 -1
  282. package/dist_ts/integrations/glances/glances.discovery.d.ts +2 -2
  283. package/dist_ts/integrations/go2rtc/go2rtc.classes.client.js +1 -1
  284. package/dist_ts/integrations/go2rtc/go2rtc.classes.integration.d.ts +1 -1
  285. package/dist_ts/integrations/go2rtc/go2rtc.classes.integration.js +1 -1
  286. package/dist_ts/integrations/go2rtc/go2rtc.discovery.d.ts +2 -2
  287. package/dist_ts/integrations/go2rtc/go2rtc.mapper.js +1 -1
  288. package/dist_ts/integrations/goalzero/goalzero.classes.client.js +1 -1
  289. package/dist_ts/integrations/gogogate2/gogogate2.classes.client.js +1 -1
  290. package/dist_ts/integrations/goodwe/goodwe.classes.client.js +1 -1
  291. package/dist_ts/integrations/goodwe/goodwe.classes.integration.d.ts +1 -1
  292. package/dist_ts/integrations/goodwe/goodwe.classes.integration.js +1 -1
  293. package/dist_ts/integrations/goodwe/goodwe.discovery.d.ts +1 -1
  294. package/dist_ts/integrations/goodwe/goodwe.types.d.ts +8 -8
  295. package/dist_ts/integrations/google_wifi/google_wifi.classes.client.js +1 -1
  296. package/dist_ts/integrations/govee_ble/govee_ble.classes.client.js +1 -1
  297. package/dist_ts/integrations/govee_light_local/govee_light_local.classes.client.js +1 -1
  298. package/dist_ts/integrations/gpsd/gpsd.classes.client.js +1 -1
  299. package/dist_ts/integrations/graphite/graphite.classes.client.js +1 -1
  300. package/dist_ts/integrations/gree/gree.classes.client.js +1 -1
  301. package/dist_ts/integrations/harman_kardon_avr/harman_kardon_avr.classes.client.js +1 -1
  302. package/dist_ts/integrations/harman_kardon_avr/harman_kardon_avr.classes.integration.d.ts +1 -1
  303. package/dist_ts/integrations/harman_kardon_avr/harman_kardon_avr.classes.integration.js +1 -1
  304. package/dist_ts/integrations/harman_kardon_avr/harman_kardon_avr.discovery.d.ts +1 -1
  305. package/dist_ts/integrations/harman_kardon_avr/harman_kardon_avr.types.d.ts +12 -12
  306. package/dist_ts/integrations/harmony/harmony.classes.client.js +1 -1
  307. package/dist_ts/integrations/harmony/harmony.classes.integration.d.ts +1 -1
  308. package/dist_ts/integrations/harmony/harmony.classes.integration.js +1 -1
  309. package/dist_ts/integrations/harmony/harmony.discovery.d.ts +2 -2
  310. package/dist_ts/integrations/hddtemp/hddtemp.classes.client.js +1 -1
  311. package/dist_ts/integrations/hddtemp/hddtemp.classes.integration.d.ts +1 -1
  312. package/dist_ts/integrations/hddtemp/hddtemp.classes.integration.js +1 -1
  313. package/dist_ts/integrations/hddtemp/hddtemp.discovery.d.ts +2 -2
  314. package/dist_ts/integrations/hdfury/hdfury.classes.client.js +1 -1
  315. package/dist_ts/integrations/hdmi_cec/hdmi_cec.classes.client.js +1 -1
  316. package/dist_ts/integrations/heatmiser/heatmiser.classes.client.js +1 -1
  317. package/dist_ts/integrations/hegel/hegel.classes.client.js +1 -1
  318. package/dist_ts/integrations/heos/heos.classes.client.js +1 -1
  319. package/dist_ts/integrations/heos/heos.classes.integration.d.ts +1 -1
  320. package/dist_ts/integrations/heos/heos.classes.integration.js +1 -1
  321. package/dist_ts/integrations/heos/heos.discovery.d.ts +3 -3
  322. package/dist_ts/integrations/hikvision/hikvision.classes.client.js +1 -1
  323. package/dist_ts/integrations/hikvision/hikvision.classes.integration.d.ts +1 -1
  324. package/dist_ts/integrations/hikvision/hikvision.classes.integration.js +1 -1
  325. package/dist_ts/integrations/hikvision/hikvision.discovery.d.ts +3 -3
  326. package/dist_ts/integrations/hikvisioncam/hikvisioncam.classes.client.js +1 -1
  327. package/dist_ts/integrations/hisense_aehw4a1/hisense_aehw4a1.classes.client.js +1 -1
  328. package/dist_ts/integrations/hitron_coda/hitron_coda.classes.client.js +1 -1
  329. package/dist_ts/integrations/hlk_sw16/hlk_sw16.classes.client.js +1 -1
  330. package/dist_ts/integrations/holiday/holiday.classes.client.js +1 -1
  331. package/dist_ts/integrations/homeassistant/homeassistant.classes.client.d.ts +7 -1
  332. package/dist_ts/integrations/homeassistant/homeassistant.classes.client.js +174 -50
  333. package/dist_ts/integrations/homeassistant/homeassistant.classes.integration.d.ts +1 -1
  334. package/dist_ts/integrations/homeassistant/homeassistant.classes.integration.js +1 -1
  335. package/dist_ts/integrations/homeassistant/homeassistant.classes.runtime.d.ts +2 -0
  336. package/dist_ts/integrations/homeassistant/homeassistant.classes.runtime.js +35 -3
  337. package/dist_ts/integrations/homeassistant/homeassistant.mapper.d.ts +4 -4
  338. package/dist_ts/integrations/homeassistant/homeassistant.mapper.js +25 -36
  339. package/dist_ts/integrations/homeassistant/homeassistant.types.d.ts +10 -0
  340. package/dist_ts/integrations/homeassistant/homeassistant.validation.d.ts +9 -0
  341. package/dist_ts/integrations/homeassistant/homeassistant.validation.js +137 -0
  342. package/dist_ts/integrations/homee/homee.classes.client.js +1 -1
  343. package/dist_ts/integrations/homekit_controller/homekit_controller.classes.client.js +1 -1
  344. package/dist_ts/integrations/homekit_controller/homekit_controller.classes.integration.d.ts +1 -1
  345. package/dist_ts/integrations/homekit_controller/homekit_controller.classes.integration.js +1 -1
  346. package/dist_ts/integrations/homekit_controller/homekit_controller.discovery.d.ts +2 -2
  347. package/dist_ts/integrations/homekit_controller/homekit_controller.mapper.js +1 -1
  348. package/dist_ts/integrations/homematic/homematic.classes.client.d.ts +2 -2
  349. package/dist_ts/integrations/homematic/homematic.classes.client.js +1 -1
  350. package/dist_ts/integrations/homematic/homematic.classes.integration.d.ts +1 -1
  351. package/dist_ts/integrations/homematic/homematic.classes.integration.js +1 -1
  352. package/dist_ts/integrations/homematic/homematic.constants.d.ts +2 -2
  353. package/dist_ts/integrations/homematic/homematic.discovery.d.ts +2 -2
  354. package/dist_ts/integrations/homewizard/homewizard.classes.client.js +1 -1
  355. package/dist_ts/integrations/homewizard/homewizard.classes.integration.d.ts +3 -3
  356. package/dist_ts/integrations/homewizard/homewizard.classes.integration.js +1 -1
  357. package/dist_ts/integrations/homewizard/homewizard.discovery.d.ts +3 -3
  358. package/dist_ts/integrations/homewizard/homewizard.mapper.js +1 -1
  359. package/dist_ts/integrations/homewizard/homewizard.types.d.ts +10 -10
  360. package/dist_ts/integrations/huawei_lte/huawei_lte.classes.client.js +1 -1
  361. package/dist_ts/integrations/huawei_lte/huawei_lte.classes.integration.d.ts +2 -2
  362. package/dist_ts/integrations/huawei_lte/huawei_lte.classes.integration.js +1 -1
  363. package/dist_ts/integrations/huawei_lte/huawei_lte.discovery.d.ts +3 -3
  364. package/dist_ts/integrations/huawei_lte/huawei_lte.mapper.js +1 -1
  365. package/dist_ts/integrations/huawei_lte/huawei_lte.types.d.ts +1 -1
  366. package/dist_ts/integrations/hue/hue.classes.client.d.ts +13 -5
  367. package/dist_ts/integrations/hue/hue.classes.client.js +278 -23
  368. package/dist_ts/integrations/hue/hue.classes.configflow.js +34 -14
  369. package/dist_ts/integrations/hue/hue.classes.integration.d.ts +2 -1
  370. package/dist_ts/integrations/hue/hue.classes.integration.js +85 -25
  371. package/dist_ts/integrations/hue/hue.discovery.d.ts +2 -2
  372. package/dist_ts/integrations/hue/hue.discovery.js +79 -26
  373. package/dist_ts/integrations/hue/hue.mapper.d.ts +0 -1
  374. package/dist_ts/integrations/hue/hue.mapper.js +26 -54
  375. package/dist_ts/integrations/hue/hue.types.d.ts +14 -7
  376. package/dist_ts/integrations/hue/hue.validation.d.ts +11 -0
  377. package/dist_ts/integrations/hue/hue.validation.js +160 -0
  378. package/dist_ts/integrations/hunterdouglas_powerview/hunterdouglas_powerview.classes.client.js +1 -1
  379. package/dist_ts/integrations/hunterdouglas_powerview/hunterdouglas_powerview.classes.integration.d.ts +2 -2
  380. package/dist_ts/integrations/hunterdouglas_powerview/hunterdouglas_powerview.classes.integration.js +1 -1
  381. package/dist_ts/integrations/hunterdouglas_powerview/hunterdouglas_powerview.discovery.d.ts +3 -3
  382. package/dist_ts/integrations/hunterdouglas_powerview/hunterdouglas_powerview.types.d.ts +1 -1
  383. package/dist_ts/integrations/hyperion/hyperion.classes.client.js +1 -1
  384. package/dist_ts/integrations/hyperion/hyperion.classes.integration.d.ts +1 -1
  385. package/dist_ts/integrations/hyperion/hyperion.classes.integration.js +1 -1
  386. package/dist_ts/integrations/hyperion/hyperion.discovery.d.ts +3 -3
  387. package/dist_ts/integrations/hyperion/hyperion.types.d.ts +1 -1
  388. package/dist_ts/integrations/imeon_inverter/imeon_inverter.classes.client.js +1 -1
  389. package/dist_ts/integrations/immich/immich.classes.client.js +1 -1
  390. package/dist_ts/integrations/incomfort/incomfort.classes.integration.js +1 -1
  391. package/dist_ts/integrations/indevolt/indevolt.classes.integration.js +1 -1
  392. package/dist_ts/integrations/index.d.ts +4 -1
  393. package/dist_ts/integrations/index.js +5 -2
  394. package/dist_ts/integrations/influxdb/influxdb.classes.client.js +1 -1
  395. package/dist_ts/integrations/intellifire/intellifire.classes.client.js +1 -1
  396. package/dist_ts/integrations/intellifire/intellifire.mapper.js +1 -1
  397. package/dist_ts/integrations/iometer/iometer.classes.client.js +1 -1
  398. package/dist_ts/integrations/iometer/iometer.mapper.js +1 -1
  399. package/dist_ts/integrations/iotawatt/iotawatt.classes.client.js +1 -1
  400. package/dist_ts/integrations/iperf3/iperf3.classes.client.js +1 -1
  401. package/dist_ts/integrations/ipp/ipp.classes.client.js +1 -1
  402. package/dist_ts/integrations/ipp/ipp.classes.integration.d.ts +1 -1
  403. package/dist_ts/integrations/ipp/ipp.classes.integration.js +1 -1
  404. package/dist_ts/integrations/ipp/ipp.discovery.d.ts +2 -2
  405. package/dist_ts/integrations/iron_os/iron_os.classes.client.js +1 -1
  406. package/dist_ts/integrations/iskra/iskra.classes.client.js +1 -1
  407. package/dist_ts/integrations/iskra/iskra.mapper.js +1 -1
  408. package/dist_ts/integrations/itunes/itunes.classes.client.js +1 -1
  409. package/dist_ts/integrations/jellyfin/jellyfin.classes.client.js +1 -1
  410. package/dist_ts/integrations/jellyfin/jellyfin.classes.integration.d.ts +1 -1
  411. package/dist_ts/integrations/jellyfin/jellyfin.classes.integration.js +1 -1
  412. package/dist_ts/integrations/jellyfin/jellyfin.discovery.d.ts +3 -3
  413. package/dist_ts/integrations/jvc_projector/jvc_projector.classes.client.js +1 -1
  414. package/dist_ts/integrations/kaleidescape/kaleidescape.classes.client.js +1 -1
  415. package/dist_ts/integrations/kankun/kankun.classes.client.js +1 -1
  416. package/dist_ts/integrations/keenetic_ndms2/keenetic_ndms2.classes.client.js +1 -1
  417. package/dist_ts/integrations/kef/kef.classes.client.js +1 -1
  418. package/dist_ts/integrations/kiosker/kiosker.classes.client.js +1 -1
  419. package/dist_ts/integrations/kira/kira.classes.client.js +1 -1
  420. package/dist_ts/integrations/kmtronic/kmtronic.classes.client.js +1 -1
  421. package/dist_ts/integrations/knx/knx.classes.client.js +1 -1
  422. package/dist_ts/integrations/knx/knx.classes.integration.d.ts +1 -1
  423. package/dist_ts/integrations/knx/knx.classes.integration.js +1 -1
  424. package/dist_ts/integrations/knx/knx.discovery.d.ts +3 -3
  425. package/dist_ts/integrations/knx/knx.mapper.d.ts +1 -1
  426. package/dist_ts/integrations/knx/knx.mapper.js +1 -1
  427. package/dist_ts/integrations/kodi/kodi.classes.client.d.ts +2 -2
  428. package/dist_ts/integrations/kodi/kodi.classes.client.js +1 -1
  429. package/dist_ts/integrations/kodi/kodi.classes.integration.d.ts +1 -1
  430. package/dist_ts/integrations/kodi/kodi.classes.integration.js +1 -1
  431. package/dist_ts/integrations/kodi/kodi.discovery.d.ts +2 -2
  432. package/dist_ts/integrations/konnected/konnected.classes.client.js +1 -1
  433. package/dist_ts/integrations/kostal_plenticore/kostal_plenticore.classes.client.js +1 -1
  434. package/dist_ts/integrations/kostal_plenticore/kostal_plenticore.mapper.js +1 -1
  435. package/dist_ts/integrations/kwb/kwb.classes.client.js +1 -1
  436. package/dist_ts/integrations/kwb/kwb.mapper.js +1 -1
  437. package/dist_ts/integrations/lametric/lametric.classes.client.js +1 -1
  438. package/dist_ts/integrations/landisgyr_heat_meter/landisgyr_heat_meter.mapper.js +1 -1
  439. package/dist_ts/integrations/lcn/lcn.classes.client.js +1 -1
  440. package/dist_ts/integrations/lektrico/lektrico.classes.client.js +1 -1
  441. package/dist_ts/integrations/lektrico/lektrico.types.d.ts +4 -4
  442. package/dist_ts/integrations/lg_netcast/lg_netcast.classes.client.js +1 -1
  443. package/dist_ts/integrations/lg_soundbar/lg_soundbar.classes.client.js +1 -1
  444. package/dist_ts/integrations/libre_hardware_monitor/libre_hardware_monitor.classes.client.js +1 -1
  445. package/dist_ts/integrations/lidarr/lidarr.classes.client.js +1 -1
  446. package/dist_ts/integrations/lifx/lifx.classes.client.d.ts +10 -4
  447. package/dist_ts/integrations/lifx/lifx.classes.client.js +94 -6
  448. package/dist_ts/integrations/lifx/lifx.classes.configflow.d.ts +3 -3
  449. package/dist_ts/integrations/lifx/lifx.classes.configflow.js +37 -6
  450. package/dist_ts/integrations/lifx/lifx.classes.integration.d.ts +19 -4
  451. package/dist_ts/integrations/lifx/lifx.classes.integration.js +152 -7
  452. package/dist_ts/integrations/lifx/lifx.discovery.d.ts +2 -1
  453. package/dist_ts/integrations/lifx/lifx.discovery.js +26 -4
  454. package/dist_ts/integrations/lifx/lifx.mapper.d.ts +7 -8
  455. package/dist_ts/integrations/lifx/lifx.mapper.js +42 -12
  456. package/dist_ts/integrations/lifx/lifx.types.d.ts +61 -9
  457. package/dist_ts/integrations/lifx/lifx.types.js +9 -116
  458. package/dist_ts/integrations/lifx/lifx.validation.d.ts +10 -0
  459. package/dist_ts/integrations/lifx/lifx.validation.js +83 -0
  460. package/dist_ts/integrations/linkplay/linkplay.classes.client.js +1 -1
  461. package/dist_ts/integrations/linkplay/linkplay.classes.integration.d.ts +1 -1
  462. package/dist_ts/integrations/linkplay/linkplay.classes.integration.js +1 -1
  463. package/dist_ts/integrations/linkplay/linkplay.discovery.d.ts +3 -3
  464. package/dist_ts/integrations/linksys_smart/linksys_smart.classes.client.js +1 -1
  465. package/dist_ts/integrations/livisi/livisi.classes.client.js +1 -1
  466. package/dist_ts/integrations/local_calendar/local_calendar.classes.client.js +1 -1
  467. package/dist_ts/integrations/local_file/local_file.classes.client.js +1 -1
  468. package/dist_ts/integrations/local_ip/local_ip.classes.client.js +1 -1
  469. package/dist_ts/integrations/local_todo/local_todo.classes.client.js +1 -1
  470. package/dist_ts/integrations/lookin/lookin.classes.client.js +1 -1
  471. package/dist_ts/integrations/loqed/loqed.classes.client.js +1 -1
  472. package/dist_ts/integrations/loqed/loqed.mapper.d.ts +1 -1
  473. package/dist_ts/integrations/loqed/loqed.mapper.js +1 -1
  474. package/dist_ts/integrations/luci/luci.classes.client.js +1 -1
  475. package/dist_ts/integrations/luci/luci.mapper.js +1 -1
  476. package/dist_ts/integrations/lunatone/lunatone.classes.client.js +1 -1
  477. package/dist_ts/integrations/lunatone/lunatone.mapper.js +1 -1
  478. package/dist_ts/integrations/madvr/madvr.classes.client.js +1 -1
  479. package/dist_ts/integrations/madvr/madvr.classes.integration.d.ts +1 -1
  480. package/dist_ts/integrations/madvr/madvr.classes.integration.js +1 -1
  481. package/dist_ts/integrations/madvr/madvr.discovery.d.ts +2 -2
  482. package/dist_ts/integrations/marytts/marytts.classes.client.js +1 -1
  483. package/dist_ts/integrations/marytts/marytts.classes.integration.js +1 -1
  484. package/dist_ts/integrations/matter/matter.classes.client.js +1 -1
  485. package/dist_ts/integrations/matter/matter.classes.integration.d.ts +1 -1
  486. package/dist_ts/integrations/matter/matter.classes.integration.js +1 -1
  487. package/dist_ts/integrations/matter/matter.discovery.d.ts +2 -2
  488. package/dist_ts/integrations/matter/matter.mapper.js +1 -1
  489. package/dist_ts/integrations/maxcube/maxcube.classes.client.js +1 -1
  490. package/dist_ts/integrations/mcp/mcp.classes.client.js +1 -1
  491. package/dist_ts/integrations/mcp_server/mcp_server.classes.client.js +1 -1
  492. package/dist_ts/integrations/mealie/mealie.classes.client.js +1 -1
  493. package/dist_ts/integrations/mealie/mealie.mapper.js +1 -1
  494. package/dist_ts/integrations/medcom_ble/medcom_ble.classes.client.js +1 -1
  495. package/dist_ts/integrations/medcom_ble/medcom_ble.mapper.js +1 -1
  496. package/dist_ts/integrations/mediaroom/mediaroom.classes.client.js +1 -1
  497. package/dist_ts/integrations/mediaroom/mediaroom.mapper.js +1 -1
  498. package/dist_ts/integrations/mfi/mfi.mapper.js +1 -1
  499. package/dist_ts/integrations/mikrotik/mikrotik.classes.client.js +1 -1
  500. package/dist_ts/integrations/mikrotik/mikrotik.classes.integration.d.ts +1 -1
  501. package/dist_ts/integrations/mikrotik/mikrotik.classes.integration.js +1 -1
  502. package/dist_ts/integrations/mikrotik/mikrotik.discovery.d.ts +1 -1
  503. package/dist_ts/integrations/mikrotik/mikrotik.mapper.js +1 -1
  504. package/dist_ts/integrations/mill/mill.classes.client.js +1 -1
  505. package/dist_ts/integrations/mill/mill.mapper.js +1 -1
  506. package/dist_ts/integrations/minecraft_server/minecraft_server.classes.client.js +1 -1
  507. package/dist_ts/integrations/mjpeg/mjpeg.classes.client.js +1 -1
  508. package/dist_ts/integrations/mobile_app/mobile_app.classes.client.js +1 -1
  509. package/dist_ts/integrations/mochad/mochad.classes.client.js +1 -1
  510. package/dist_ts/integrations/modbus/modbus.classes.client.js +1 -1
  511. package/dist_ts/integrations/modbus/modbus.classes.integration.d.ts +1 -1
  512. package/dist_ts/integrations/modbus/modbus.classes.integration.js +1 -1
  513. package/dist_ts/integrations/modbus/modbus.discovery.d.ts +1 -1
  514. package/dist_ts/integrations/modern_forms/modern_forms.classes.client.js +1 -1
  515. package/dist_ts/integrations/moehlenhoff_alpha2/moehlenhoff_alpha2.classes.client.js +1 -1
  516. package/dist_ts/integrations/monoprice/monoprice.classes.client.js +1 -1
  517. package/dist_ts/integrations/motioneye/motioneye.classes.client.js +1 -1
  518. package/dist_ts/integrations/motioneye/motioneye.classes.integration.d.ts +1 -1
  519. package/dist_ts/integrations/motioneye/motioneye.classes.integration.js +1 -1
  520. package/dist_ts/integrations/motioneye/motioneye.discovery.d.ts +2 -2
  521. package/dist_ts/integrations/motioneye/motioneye.types.d.ts +1 -1
  522. package/dist_ts/integrations/motionmount/motionmount.classes.client.js +1 -1
  523. package/dist_ts/integrations/mpd/mpd.classes.client.js +1 -1
  524. package/dist_ts/integrations/mpd/mpd.classes.integration.d.ts +1 -1
  525. package/dist_ts/integrations/mpd/mpd.classes.integration.js +1 -1
  526. package/dist_ts/integrations/mpd/mpd.discovery.d.ts +2 -2
  527. package/dist_ts/integrations/mqtt/mqtt.classes.client.d.ts +54 -9
  528. package/dist_ts/integrations/mqtt/mqtt.classes.client.js +443 -352
  529. package/dist_ts/integrations/mqtt/mqtt.classes.configflow.d.ts +0 -1
  530. package/dist_ts/integrations/mqtt/mqtt.classes.configflow.js +23 -18
  531. package/dist_ts/integrations/mqtt/mqtt.classes.integration.d.ts +1 -1
  532. package/dist_ts/integrations/mqtt/mqtt.classes.integration.js +140 -37
  533. package/dist_ts/integrations/mqtt/mqtt.discovery.d.ts +2 -2
  534. package/dist_ts/integrations/mqtt/mqtt.mapper.d.ts +7 -1
  535. package/dist_ts/integrations/mqtt/mqtt.mapper.js +161 -48
  536. package/dist_ts/integrations/mqtt/mqtt.types.d.ts +17 -0
  537. package/dist_ts/integrations/mqtt_eventstream/mqtt_eventstream.classes.client.js +1 -1
  538. package/dist_ts/integrations/mqtt_json/mqtt_json.classes.client.js +1 -1
  539. package/dist_ts/integrations/mqtt_room/mqtt_room.classes.client.js +1 -1
  540. package/dist_ts/integrations/music_assistant/music_assistant.classes.client.js +1 -1
  541. package/dist_ts/integrations/music_assistant/music_assistant.mapper.js +1 -1
  542. package/dist_ts/integrations/mutesync/mutesync.classes.client.js +1 -1
  543. package/dist_ts/integrations/mutesync/mutesync.mapper.js +1 -1
  544. package/dist_ts/integrations/mycroft/mycroft.classes.client.js +1 -1
  545. package/dist_ts/integrations/mysensors/mysensors.classes.client.js +1 -1
  546. package/dist_ts/integrations/mystrom/mystrom.classes.client.js +1 -1
  547. package/dist_ts/integrations/nad/nad.classes.client.js +1 -1
  548. package/dist_ts/integrations/nam/nam.classes.client.js +1 -1
  549. package/dist_ts/integrations/nanoleaf/nanoleaf.classes.client.js +1 -1
  550. package/dist_ts/integrations/nanoleaf/nanoleaf.classes.integration.d.ts +1 -1
  551. package/dist_ts/integrations/nanoleaf/nanoleaf.classes.integration.js +1 -1
  552. package/dist_ts/integrations/nanoleaf/nanoleaf.discovery.d.ts +3 -3
  553. package/dist_ts/integrations/nasweb/nasweb.classes.client.js +1 -1
  554. package/dist_ts/integrations/netdata/netdata.classes.client.js +1 -1
  555. package/dist_ts/integrations/nibe_heatpump/nibe_heatpump.classes.client.js +1 -1
  556. package/dist_ts/integrations/niko_home_control/niko_home_control.classes.client.js +1 -1
  557. package/dist_ts/integrations/nobo_hub/nobo_hub.classes.client.js +1 -1
  558. package/dist_ts/integrations/nrgkick/nrgkick.classes.client.js +1 -1
  559. package/dist_ts/integrations/nuki/nuki.classes.client.js +1 -1
  560. package/dist_ts/integrations/nut/nut.classes.client.js +1 -1
  561. package/dist_ts/integrations/nut/nut.classes.integration.js +1 -1
  562. package/dist_ts/integrations/nx584/nx584.classes.client.js +1 -1
  563. package/dist_ts/integrations/nx584/nx584.classes.integration.js +1 -1
  564. package/dist_ts/integrations/nzbget/nzbget.classes.client.js +1 -1
  565. package/dist_ts/integrations/nzbget/nzbget.mapper.js +1 -1
  566. package/dist_ts/integrations/obihai/obihai.classes.client.js +1 -1
  567. package/dist_ts/integrations/octoprint/octoprint.classes.client.js +1 -1
  568. package/dist_ts/integrations/octoprint/octoprint.mapper.js +1 -1
  569. package/dist_ts/integrations/oem/oem.classes.client.js +1 -1
  570. package/dist_ts/integrations/ollama/ollama.classes.client.js +1 -1
  571. package/dist_ts/integrations/ombi/ombi.classes.client.js +1 -1
  572. package/dist_ts/integrations/onewire/onewire.classes.client.js +1 -1
  573. package/dist_ts/integrations/onkyo/onkyo.classes.client.js +1 -1
  574. package/dist_ts/integrations/onvif/onvif.classes.client.js +1 -1
  575. package/dist_ts/integrations/onvif/onvif.classes.integration.d.ts +1 -1
  576. package/dist_ts/integrations/onvif/onvif.classes.integration.js +1 -1
  577. package/dist_ts/integrations/onvif/onvif.discovery.d.ts +3 -3
  578. package/dist_ts/integrations/onvif/onvif.mapper.js +1 -1
  579. package/dist_ts/integrations/openevse/openevse.classes.client.js +1 -1
  580. package/dist_ts/integrations/openevse/openevse.mapper.js +1 -1
  581. package/dist_ts/integrations/opengarage/opengarage.classes.client.js +1 -1
  582. package/dist_ts/integrations/opengarage/opengarage.mapper.js +1 -1
  583. package/dist_ts/integrations/openhardwaremonitor/openhardwaremonitor.classes.client.js +1 -1
  584. package/dist_ts/integrations/openhome/openhome.classes.client.d.ts +2 -1
  585. package/dist_ts/integrations/openhome/openhome.classes.client.js +21 -19
  586. package/dist_ts/integrations/openrgb/openrgb.classes.client.js +1 -1
  587. package/dist_ts/integrations/openrgb/openrgb.classes.integration.d.ts +1 -1
  588. package/dist_ts/integrations/openrgb/openrgb.classes.integration.js +1 -1
  589. package/dist_ts/integrations/openrgb/openrgb.discovery.d.ts +2 -2
  590. package/dist_ts/integrations/openrgb/openrgb.mapper.js +1 -1
  591. package/dist_ts/integrations/opentherm_gw/opentherm_gw.classes.client.d.ts +1 -1
  592. package/dist_ts/integrations/opentherm_gw/opentherm_gw.classes.client.js +1 -1
  593. package/dist_ts/integrations/opentherm_gw/opentherm_gw.classes.integration.d.ts +1 -1
  594. package/dist_ts/integrations/opentherm_gw/opentherm_gw.classes.integration.js +1 -1
  595. package/dist_ts/integrations/opentherm_gw/opentherm_gw.discovery.d.ts +1 -1
  596. package/dist_ts/integrations/opnsense/opnsense.classes.client.js +1 -1
  597. package/dist_ts/integrations/opnsense/opnsense.classes.integration.d.ts +1 -1
  598. package/dist_ts/integrations/opnsense/opnsense.classes.integration.js +1 -1
  599. package/dist_ts/integrations/opnsense/opnsense.discovery.d.ts +1 -1
  600. package/dist_ts/integrations/opnsense/opnsense.mapper.js +1 -1
  601. package/dist_ts/integrations/orvibo/orvibo.classes.client.js +1 -1
  602. package/dist_ts/integrations/osramlightify/osramlightify.classes.client.js +1 -1
  603. package/dist_ts/integrations/otbr/otbr.classes.client.js +1 -1
  604. package/dist_ts/integrations/overkiz/overkiz.classes.client.js +1 -1
  605. package/dist_ts/integrations/overseerr/overseerr.classes.client.js +1 -1
  606. package/dist_ts/integrations/owntracks/owntracks.classes.client.js +1 -1
  607. package/dist_ts/integrations/p1_monitor/p1_monitor.classes.client.js +1 -1
  608. package/dist_ts/integrations/palazzetti/palazzetti.classes.client.js +1 -1
  609. package/dist_ts/integrations/panasonic_bluray/panasonic_bluray.classes.client.js +1 -1
  610. package/dist_ts/integrations/panasonic_viera/panasonic_viera.classes.client.js +1 -1
  611. package/dist_ts/integrations/paperless_ngx/paperless_ngx.classes.client.js +1 -1
  612. package/dist_ts/integrations/paperless_ngx/paperless_ngx.mapper.js +1 -1
  613. package/dist_ts/integrations/peblar/peblar.classes.client.js +1 -1
  614. package/dist_ts/integrations/peblar/peblar.mapper.js +1 -1
  615. package/dist_ts/integrations/pencom/pencom.classes.client.js +1 -1
  616. package/dist_ts/integrations/philips_js/philips_js.classes.client.js +1 -1
  617. package/dist_ts/integrations/pi_hole/pi_hole.classes.client.js +1 -1
  618. package/dist_ts/integrations/pi_hole/pi_hole.classes.integration.d.ts +1 -1
  619. package/dist_ts/integrations/pi_hole/pi_hole.classes.integration.js +1 -1
  620. package/dist_ts/integrations/pi_hole/pi_hole.discovery.d.ts +2 -2
  621. package/dist_ts/integrations/pi_hole/pi_hole.mapper.js +1 -1
  622. package/dist_ts/integrations/picotts/picotts.classes.client.js +1 -1
  623. package/dist_ts/integrations/pilight/pilight.classes.client.js +1 -1
  624. package/dist_ts/integrations/pilight/pilight.classes.integration.js +1 -1
  625. package/dist_ts/integrations/ping/ping.classes.client.js +1 -1
  626. package/dist_ts/integrations/pioneer/pioneer.classes.client.js +1 -1
  627. package/dist_ts/integrations/pjlink/pjlink.classes.client.js +1 -1
  628. package/dist_ts/integrations/plex/plex.classes.client.d.ts +1 -1
  629. package/dist_ts/integrations/plex/plex.classes.client.js +1 -1
  630. package/dist_ts/integrations/plex/plex.classes.integration.d.ts +1 -1
  631. package/dist_ts/integrations/plex/plex.classes.integration.js +1 -1
  632. package/dist_ts/integrations/plex/plex.discovery.d.ts +5 -5
  633. package/dist_ts/integrations/plugwise/plugwise.classes.client.js +1 -1
  634. package/dist_ts/integrations/prusalink/prusalink.classes.client.js +1 -1
  635. package/dist_ts/integrations/prusalink/prusalink.classes.integration.d.ts +1 -1
  636. package/dist_ts/integrations/prusalink/prusalink.classes.integration.js +1 -1
  637. package/dist_ts/integrations/prusalink/prusalink.discovery.d.ts +2 -2
  638. package/dist_ts/integrations/rainbird/rainbird.classes.client.js +1 -1
  639. package/dist_ts/integrations/rainbird/rainbird.classes.integration.d.ts +1 -1
  640. package/dist_ts/integrations/rainbird/rainbird.classes.integration.js +1 -1
  641. package/dist_ts/integrations/rainbird/rainbird.discovery.d.ts +1 -1
  642. package/dist_ts/integrations/rflink/rflink.classes.client.js +1 -1
  643. package/dist_ts/integrations/rflink/rflink.classes.integration.d.ts +1 -1
  644. package/dist_ts/integrations/rflink/rflink.classes.integration.js +1 -1
  645. package/dist_ts/integrations/rflink/rflink.discovery.d.ts +1 -1
  646. package/dist_ts/integrations/roku/roku.classes.client.d.ts +27 -14
  647. package/dist_ts/integrations/roku/roku.classes.client.js +213 -132
  648. package/dist_ts/integrations/roku/roku.classes.configflow.js +23 -14
  649. package/dist_ts/integrations/roku/roku.classes.integration.d.ts +4 -1
  650. package/dist_ts/integrations/roku/roku.classes.integration.js +74 -91
  651. package/dist_ts/integrations/roku/roku.discovery.d.ts +8 -8
  652. package/dist_ts/integrations/roku/roku.discovery.js +82 -65
  653. package/dist_ts/integrations/roku/roku.mapper.d.ts +0 -3
  654. package/dist_ts/integrations/roku/roku.mapper.js +18 -50
  655. package/dist_ts/integrations/roku/roku.types.d.ts +21 -12
  656. package/dist_ts/integrations/roku/roku.validation.d.ts +9 -0
  657. package/dist_ts/integrations/roku/roku.validation.js +74 -0
  658. package/dist_ts/integrations/samsungtv/samsungtv.classes.client.d.ts +9 -38
  659. package/dist_ts/integrations/samsungtv/samsungtv.classes.client.js +113 -417
  660. package/dist_ts/integrations/samsungtv/samsungtv.classes.configflow.js +31 -29
  661. package/dist_ts/integrations/samsungtv/samsungtv.classes.integration.d.ts +8 -7
  662. package/dist_ts/integrations/samsungtv/samsungtv.classes.integration.js +122 -117
  663. package/dist_ts/integrations/samsungtv/samsungtv.discovery.d.ts +11 -11
  664. package/dist_ts/integrations/samsungtv/samsungtv.discovery.js +120 -143
  665. package/dist_ts/integrations/samsungtv/samsungtv.mapper.d.ts +3 -11
  666. package/dist_ts/integrations/samsungtv/samsungtv.mapper.js +18 -117
  667. package/dist_ts/integrations/samsungtv/samsungtv.types.d.ts +18 -85
  668. package/dist_ts/integrations/samsungtv/samsungtv.validation.d.ts +7 -0
  669. package/dist_ts/integrations/samsungtv/samsungtv.validation.js +83 -0
  670. package/dist_ts/integrations/shelly/shelly.classes.client.d.ts +29 -14
  671. package/dist_ts/integrations/shelly/shelly.classes.client.js +310 -126
  672. package/dist_ts/integrations/shelly/shelly.classes.configflow.js +29 -11
  673. package/dist_ts/integrations/shelly/shelly.classes.integration.d.ts +4 -1
  674. package/dist_ts/integrations/shelly/shelly.classes.integration.js +120 -27
  675. package/dist_ts/integrations/shelly/shelly.classes.subscription.d.ts +47 -0
  676. package/dist_ts/integrations/shelly/shelly.classes.subscription.js +206 -0
  677. package/dist_ts/integrations/shelly/shelly.discovery.d.ts +2 -2
  678. package/dist_ts/integrations/shelly/shelly.discovery.js +6 -3
  679. package/dist_ts/integrations/shelly/shelly.rpc.d.ts +21 -0
  680. package/dist_ts/integrations/shelly/shelly.rpc.js +210 -0
  681. package/dist_ts/integrations/shelly/shelly.types.d.ts +26 -4
  682. package/dist_ts/integrations/snapcast/snapcast.classes.client.js +1 -1
  683. package/dist_ts/integrations/snapcast/snapcast.classes.integration.d.ts +1 -1
  684. package/dist_ts/integrations/snapcast/snapcast.classes.integration.js +1 -1
  685. package/dist_ts/integrations/snapcast/snapcast.discovery.d.ts +2 -2
  686. package/dist_ts/integrations/sonos/index.d.ts +3 -0
  687. package/dist_ts/integrations/sonos/index.js +4 -1
  688. package/dist_ts/integrations/sonos/sonos.classes.client.d.ts +30 -29
  689. package/dist_ts/integrations/sonos/sonos.classes.client.js +162 -208
  690. package/dist_ts/integrations/sonos/sonos.classes.configflow.js +27 -9
  691. package/dist_ts/integrations/sonos/sonos.classes.integration.d.ts +6 -5
  692. package/dist_ts/integrations/sonos/sonos.classes.integration.js +280 -61
  693. package/dist_ts/integrations/sonos/sonos.classes.ssdpprobe.d.ts +17 -0
  694. package/dist_ts/integrations/sonos/sonos.classes.ssdpprobe.js +88 -0
  695. package/dist_ts/integrations/sonos/sonos.config.d.ts +12 -0
  696. package/dist_ts/integrations/sonos/sonos.config.js +52 -0
  697. package/dist_ts/integrations/sonos/sonos.discovery.d.ts +1 -25
  698. package/dist_ts/integrations/sonos/sonos.discovery.js +6 -114
  699. package/dist_ts/integrations/sonos/sonos.mapper.d.ts +2 -1
  700. package/dist_ts/integrations/sonos/sonos.mapper.js +33 -13
  701. package/dist_ts/integrations/sonos/sonos.matchers.d.ts +25 -0
  702. package/dist_ts/integrations/sonos/sonos.matchers.js +82 -0
  703. package/dist_ts/integrations/sonos/sonos.topology.d.ts +2 -0
  704. package/dist_ts/integrations/sonos/sonos.topology.js +59 -0
  705. package/dist_ts/integrations/sonos/sonos.types.d.ts +18 -8
  706. package/dist_ts/integrations/sonos/sonos.xml.d.ts +3 -0
  707. package/dist_ts/integrations/sonos/sonos.xml.js +21 -0
  708. package/dist_ts/integrations/soundtouch/soundtouch.classes.client.js +1 -1
  709. package/dist_ts/integrations/soundtouch/soundtouch.classes.integration.d.ts +1 -1
  710. package/dist_ts/integrations/soundtouch/soundtouch.classes.integration.js +1 -1
  711. package/dist_ts/integrations/soundtouch/soundtouch.discovery.d.ts +2 -2
  712. package/dist_ts/integrations/soundtouch/soundtouch.types.d.ts +1 -1
  713. package/dist_ts/integrations/squeezebox/squeezebox.classes.client.js +1 -1
  714. package/dist_ts/integrations/squeezebox/squeezebox.classes.integration.d.ts +1 -1
  715. package/dist_ts/integrations/squeezebox/squeezebox.classes.integration.js +1 -1
  716. package/dist_ts/integrations/squeezebox/squeezebox.discovery.d.ts +3 -3
  717. package/dist_ts/integrations/synology_dsm/synology_dsm.classes.client.js +1 -1
  718. package/dist_ts/integrations/synology_dsm/synology_dsm.classes.integration.d.ts +1 -1
  719. package/dist_ts/integrations/synology_dsm/synology_dsm.classes.integration.js +1 -1
  720. package/dist_ts/integrations/synology_dsm/synology_dsm.discovery.d.ts +4 -4
  721. package/dist_ts/integrations/synology_dsm/synology_dsm.mapper.js +1 -1
  722. package/dist_ts/integrations/synology_srm/synology_srm.classes.client.js +1 -1
  723. package/dist_ts/integrations/synology_srm/synology_srm.classes.integration.d.ts +1 -1
  724. package/dist_ts/integrations/synology_srm/synology_srm.classes.integration.js +1 -1
  725. package/dist_ts/integrations/synology_srm/synology_srm.discovery.d.ts +2 -2
  726. package/dist_ts/integrations/synology_srm/synology_srm.mapper.js +1 -1
  727. package/dist_ts/integrations/tasmota/index.d.ts +4 -0
  728. package/dist_ts/integrations/tasmota/index.js +5 -1
  729. package/dist_ts/integrations/tasmota/tasmota.classes.integration.d.ts +21 -3
  730. package/dist_ts/integrations/tasmota/tasmota.classes.integration.js +24 -25
  731. package/dist_ts/integrations/tasmota/tasmota.classes.runtime.d.ts +36 -0
  732. package/dist_ts/integrations/tasmota/tasmota.classes.runtime.js +292 -0
  733. package/dist_ts/integrations/tasmota/tasmota.config.d.ts +2 -0
  734. package/dist_ts/integrations/tasmota/tasmota.config.js +78 -0
  735. package/dist_ts/integrations/tasmota/tasmota.discovery.d.ts +7 -0
  736. package/dist_ts/integrations/tasmota/tasmota.discovery.js +85 -0
  737. package/dist_ts/integrations/tasmota/tasmota.mapper.d.ts +12 -0
  738. package/dist_ts/integrations/tasmota/tasmota.mapper.js +91 -0
  739. package/dist_ts/integrations/tasmota/tasmota.types.d.ts +51 -1
  740. package/dist_ts/integrations/tplink/index.d.ts +3 -0
  741. package/dist_ts/integrations/tplink/index.js +4 -1
  742. package/dist_ts/integrations/tplink/tplink.classes.client.d.ts +8 -14
  743. package/dist_ts/integrations/tplink/tplink.classes.client.js +64 -64
  744. package/dist_ts/integrations/tplink/tplink.classes.configflow.d.ts +3 -8
  745. package/dist_ts/integrations/tplink/tplink.classes.configflow.js +53 -89
  746. package/dist_ts/integrations/tplink/tplink.classes.integration.d.ts +8 -13
  747. package/dist_ts/integrations/tplink/tplink.classes.integration.js +136 -37
  748. package/dist_ts/integrations/tplink/tplink.discovery.d.ts +11 -14
  749. package/dist_ts/integrations/tplink/tplink.discovery.js +125 -210
  750. package/dist_ts/integrations/tplink/tplink.mapper.js +1 -1
  751. package/dist_ts/integrations/tplink/tplink.native.mapper.d.ts +11 -0
  752. package/dist_ts/integrations/tplink/tplink.native.mapper.js +61 -0
  753. package/dist_ts/integrations/tplink/tplink.native.types.d.ts +32 -0
  754. package/dist_ts/integrations/tplink/tplink.native.types.js +2 -0
  755. package/dist_ts/integrations/tplink/tplink.validation.d.ts +4 -0
  756. package/dist_ts/integrations/tplink/tplink.validation.js +48 -0
  757. package/dist_ts/integrations/tradfri/tradfri.classes.client.js +1 -1
  758. package/dist_ts/integrations/tradfri/tradfri.classes.integration.d.ts +1 -1
  759. package/dist_ts/integrations/tradfri/tradfri.classes.integration.js +1 -1
  760. package/dist_ts/integrations/tradfri/tradfri.discovery.d.ts +2 -3
  761. package/dist_ts/integrations/tradfri/tradfri.discovery.js +52 -26
  762. package/dist_ts/integrations/tradfri/tradfri.mapper.js +1 -1
  763. package/dist_ts/integrations/tuya/tuya.classes.integration.d.ts +21 -3
  764. package/dist_ts/integrations/tuya/tuya.classes.integration.js +139 -28
  765. package/dist_ts/integrations/tuya/tuya.classes.runtime.d.ts +15 -0
  766. package/dist_ts/integrations/tuya/tuya.classes.runtime.js +189 -0
  767. package/dist_ts/integrations/tuya/tuya.mapper.d.ts +13 -0
  768. package/dist_ts/integrations/tuya/tuya.mapper.js +30 -0
  769. package/dist_ts/integrations/tuya/tuya.types.d.ts +40 -1
  770. package/dist_ts/integrations/tuya/tuya.validation.d.ts +10 -0
  771. package/dist_ts/integrations/tuya/tuya.validation.js +122 -0
  772. package/dist_ts/integrations/unifi/unifi.classes.client.js +1 -1
  773. package/dist_ts/integrations/unifi/unifi.classes.integration.d.ts +1 -1
  774. package/dist_ts/integrations/unifi/unifi.classes.integration.js +1 -1
  775. package/dist_ts/integrations/unifi/unifi.discovery.d.ts +4 -4
  776. package/dist_ts/integrations/unifi/unifi.mapper.js +6 -6
  777. package/dist_ts/integrations/velbus/velbus.classes.client.js +1 -1
  778. package/dist_ts/integrations/velbus/velbus.classes.integration.d.ts +1 -1
  779. package/dist_ts/integrations/velbus/velbus.classes.integration.js +1 -1
  780. package/dist_ts/integrations/velbus/velbus.discovery.d.ts +2 -2
  781. package/dist_ts/integrations/volumio/volumio.classes.client.js +1 -1
  782. package/dist_ts/integrations/volumio/volumio.classes.integration.d.ts +1 -1
  783. package/dist_ts/integrations/volumio/volumio.classes.integration.js +1 -1
  784. package/dist_ts/integrations/volumio/volumio.discovery.d.ts +2 -2
  785. package/dist_ts/integrations/wake_on_lan/wake_on_lan.classes.client.js +1 -1
  786. package/dist_ts/integrations/wake_on_lan/wake_on_lan.classes.integration.d.ts +1 -1
  787. package/dist_ts/integrations/wake_on_lan/wake_on_lan.classes.integration.js +1 -1
  788. package/dist_ts/integrations/wake_on_lan/wake_on_lan.discovery.d.ts +2 -2
  789. package/dist_ts/integrations/wake_on_lan/wake_on_lan.mapper.js +1 -1
  790. package/dist_ts/integrations/wake_on_lan/wake_on_lan.packet.js +1 -1
  791. package/dist_ts/integrations/webostv/webostv.classes.client.d.ts +10 -4
  792. package/dist_ts/integrations/webostv/webostv.classes.client.js +370 -6
  793. package/dist_ts/integrations/webostv/webostv.classes.configflow.d.ts +3 -3
  794. package/dist_ts/integrations/webostv/webostv.classes.configflow.js +23 -6
  795. package/dist_ts/integrations/webostv/webostv.classes.integration.d.ts +20 -5
  796. package/dist_ts/integrations/webostv/webostv.classes.integration.js +138 -7
  797. package/dist_ts/integrations/webostv/webostv.discovery.d.ts +2 -1
  798. package/dist_ts/integrations/webostv/webostv.discovery.js +26 -4
  799. package/dist_ts/integrations/webostv/webostv.mapper.d.ts +6 -8
  800. package/dist_ts/integrations/webostv/webostv.mapper.js +24 -13
  801. package/dist_ts/integrations/webostv/webostv.types.d.ts +61 -5
  802. package/dist_ts/integrations/webostv/webostv.types.js +5 -96
  803. package/dist_ts/integrations/webostv/webostv.validation.d.ts +6 -0
  804. package/dist_ts/integrations/webostv/webostv.validation.js +54 -0
  805. package/dist_ts/integrations/wiz/wiz.classes.client.js +1 -1
  806. package/dist_ts/integrations/wiz/wiz.classes.integration.d.ts +7 -7
  807. package/dist_ts/integrations/wiz/wiz.classes.integration.js +1 -1
  808. package/dist_ts/integrations/wiz/wiz.discovery.d.ts +4 -4
  809. package/dist_ts/integrations/wiz/wiz.mapper.js +1 -1
  810. package/dist_ts/integrations/wled/index.d.ts +1 -0
  811. package/dist_ts/integrations/wled/index.js +2 -1
  812. package/dist_ts/integrations/wled/wled.classes.client.d.ts +27 -4
  813. package/dist_ts/integrations/wled/wled.classes.client.js +231 -6
  814. package/dist_ts/integrations/wled/wled.classes.configflow.d.ts +3 -3
  815. package/dist_ts/integrations/wled/wled.classes.configflow.js +33 -6
  816. package/dist_ts/integrations/wled/wled.classes.integration.d.ts +24 -4
  817. package/dist_ts/integrations/wled/wled.classes.integration.js +171 -7
  818. package/dist_ts/integrations/wled/wled.classes.subscription.d.ts +37 -0
  819. package/dist_ts/integrations/wled/wled.classes.subscription.js +116 -0
  820. package/dist_ts/integrations/wled/wled.commands.d.ts +4 -0
  821. package/dist_ts/integrations/wled/wled.commands.js +65 -0
  822. package/dist_ts/integrations/wled/wled.discovery.d.ts +17 -1
  823. package/dist_ts/integrations/wled/wled.discovery.js +68 -4
  824. package/dist_ts/integrations/wled/wled.errors.d.ts +5 -0
  825. package/dist_ts/integrations/wled/wled.errors.js +9 -0
  826. package/dist_ts/integrations/wled/wled.mapper.d.ts +8 -8
  827. package/dist_ts/integrations/wled/wled.mapper.js +40 -16
  828. package/dist_ts/integrations/wled/wled.types.d.ts +75 -6
  829. package/dist_ts/integrations/wled/wled.types.js +12 -82
  830. package/dist_ts/integrations/wled/wled.validation.d.ts +7 -0
  831. package/dist_ts/integrations/wled/wled.validation.js +85 -0
  832. package/dist_ts/integrations/wolf_smartset/wolf_smartset.classes.client.js +1 -1
  833. package/dist_ts/integrations/wolf_smartset/wolf_smartset.classes.integration.d.ts +1 -1
  834. package/dist_ts/integrations/wolf_smartset/wolf_smartset.discovery.d.ts +1 -1
  835. package/dist_ts/integrations/xiaomi_miio/xiaomi_miio.classes.client.js +1 -1
  836. package/dist_ts/integrations/xiaomi_miio/xiaomi_miio.classes.integration.d.ts +1 -1
  837. package/dist_ts/integrations/xiaomi_miio/xiaomi_miio.classes.integration.js +1 -1
  838. package/dist_ts/integrations/xiaomi_miio/xiaomi_miio.discovery.d.ts +3 -3
  839. package/dist_ts/integrations/xiaomi_miio/xiaomi_miio.mapper.js +1 -1
  840. package/dist_ts/integrations/yamaha_musiccast/yamaha_musiccast.classes.client.js +1 -1
  841. package/dist_ts/integrations/yamaha_musiccast/yamaha_musiccast.classes.integration.d.ts +1 -1
  842. package/dist_ts/integrations/yamaha_musiccast/yamaha_musiccast.classes.integration.js +1 -1
  843. package/dist_ts/integrations/yamaha_musiccast/yamaha_musiccast.discovery.d.ts +3 -3
  844. package/dist_ts/integrations/yeelight/yeelight.classes.client.d.ts +34 -26
  845. package/dist_ts/integrations/yeelight/yeelight.classes.client.js +225 -275
  846. package/dist_ts/integrations/yeelight/yeelight.classes.configflow.d.ts +0 -2
  847. package/dist_ts/integrations/yeelight/yeelight.classes.configflow.js +29 -30
  848. package/dist_ts/integrations/yeelight/yeelight.classes.integration.d.ts +11 -5
  849. package/dist_ts/integrations/yeelight/yeelight.classes.integration.js +140 -80
  850. package/dist_ts/integrations/yeelight/yeelight.discovery.d.ts +11 -13
  851. package/dist_ts/integrations/yeelight/yeelight.discovery.js +90 -128
  852. package/dist_ts/integrations/yeelight/yeelight.mapper.d.ts +2 -10
  853. package/dist_ts/integrations/yeelight/yeelight.mapper.js +57 -178
  854. package/dist_ts/integrations/yeelight/yeelight.types.d.ts +37 -139
  855. package/dist_ts/integrations/yeelight/yeelight.validation.d.ts +10 -0
  856. package/dist_ts/integrations/yeelight/yeelight.validation.js +111 -0
  857. package/dist_ts/integrations/zha/zha.classes.client.js +1 -1
  858. package/dist_ts/integrations/zha/zha.classes.integration.d.ts +1 -1
  859. package/dist_ts/integrations/zha/zha.classes.integration.js +1 -1
  860. package/dist_ts/integrations/zha/zha.discovery.d.ts +3 -12
  861. package/dist_ts/integrations/zha/zha.discovery.js +102 -222
  862. package/dist_ts/integrations/zha/zha.discoveryvalidation.d.ts +10 -0
  863. package/dist_ts/integrations/zha/zha.discoveryvalidation.js +71 -0
  864. package/dist_ts/integrations/zha/zha.mapper.js +1 -1
  865. package/dist_ts/integrations/zigbee2mqtt/index.d.ts +5 -0
  866. package/dist_ts/integrations/zigbee2mqtt/index.js +6 -0
  867. package/dist_ts/integrations/zigbee2mqtt/zigbee2mqtt.classes.configflow.d.ts +5 -0
  868. package/dist_ts/integrations/zigbee2mqtt/zigbee2mqtt.classes.configflow.js +27 -0
  869. package/dist_ts/integrations/zigbee2mqtt/zigbee2mqtt.classes.integration.d.ts +19 -0
  870. package/dist_ts/integrations/zigbee2mqtt/zigbee2mqtt.classes.integration.js +19 -0
  871. package/dist_ts/integrations/zigbee2mqtt/zigbee2mqtt.classes.runtime.d.ts +55 -0
  872. package/dist_ts/integrations/zigbee2mqtt/zigbee2mqtt.classes.runtime.js +464 -0
  873. package/dist_ts/integrations/zigbee2mqtt/zigbee2mqtt.mapper.d.ts +15 -0
  874. package/dist_ts/integrations/zigbee2mqtt/zigbee2mqtt.mapper.js +186 -0
  875. package/dist_ts/integrations/zigbee2mqtt/zigbee2mqtt.types.d.ts +57 -0
  876. package/dist_ts/integrations/zigbee2mqtt/zigbee2mqtt.types.js +2 -0
  877. package/dist_ts/integrations/zigbee2mqtt/zigbee2mqtt.validation.d.ts +5 -0
  878. package/dist_ts/integrations/zigbee2mqtt/zigbee2mqtt.validation.js +66 -0
  879. package/dist_ts/integrations/zwave_js/zwave_js.classes.client.d.ts +19 -21
  880. package/dist_ts/integrations/zwave_js/zwave_js.classes.client.js +303 -134
  881. package/dist_ts/integrations/zwave_js/zwave_js.classes.configflow.d.ts +0 -3
  882. package/dist_ts/integrations/zwave_js/zwave_js.classes.configflow.js +31 -26
  883. package/dist_ts/integrations/zwave_js/zwave_js.classes.integration.d.ts +2 -1
  884. package/dist_ts/integrations/zwave_js/zwave_js.classes.integration.js +71 -76
  885. package/dist_ts/integrations/zwave_js/zwave_js.discovery.d.ts +3 -3
  886. package/dist_ts/integrations/zwave_js/zwave_js.discovery.js +120 -16
  887. package/dist_ts/integrations/zwave_js/zwave_js.mapper.d.ts +13 -14
  888. package/dist_ts/integrations/zwave_js/zwave_js.mapper.js +140 -257
  889. package/dist_ts/integrations/zwave_js/zwave_js.types.d.ts +30 -19
  890. package/dist_ts/integrations/zwave_js/zwave_js.validation.d.ts +15 -0
  891. package/dist_ts/integrations/zwave_js/zwave_js.validation.js +191 -0
  892. package/dist_ts/plugins.d.ts +10 -2
  893. package/dist_ts/plugins.js +11 -3
  894. package/dist_ts_migration/001.import-json-config.d.ts +10 -0
  895. package/dist_ts_migration/001.import-json-config.js +147 -0
  896. package/dist_ts_migration/index.d.ts +1 -0
  897. package/dist_ts_migration/index.js +2 -0
  898. package/package.json +20 -11
  899. package/readme.md +48 -9
  900. package/ts/00_commitinfo_data.ts +1 -1
  901. package/ts/core/classes.configrecord.ts +23 -0
  902. package/ts/core/classes.configstore.ts +324 -25
  903. package/ts/core/classes.discoveryengine.ts +11 -1
  904. package/ts/core/types.ts +15 -4
  905. package/ts/index.ts +6 -0
  906. package/ts/integrations/deconz/deconz.classes.client.ts +243 -190
  907. package/ts/integrations/deconz/deconz.classes.configflow.ts +34 -25
  908. package/ts/integrations/deconz/deconz.classes.integration.ts +105 -22
  909. package/ts/integrations/deconz/deconz.mapper.ts +24 -18
  910. package/ts/integrations/deconz/deconz.types.ts +38 -3
  911. package/ts/integrations/deconz/deconz.validation.ts +261 -0
  912. package/ts/integrations/deconz/readme.md +44 -0
  913. package/ts/integrations/esphome/esphome.classes.client.ts +254 -74
  914. package/ts/integrations/esphome/esphome.classes.configflow.ts +1 -3
  915. package/ts/integrations/esphome/esphome.classes.integration.ts +61 -66
  916. package/ts/integrations/esphome/esphome.discovery.ts +1 -1
  917. package/ts/integrations/esphome/esphome.mapper.ts +71 -37
  918. package/ts/integrations/esphome/esphome.types.ts +2 -0
  919. package/ts/integrations/esphome/readme.md +66 -0
  920. package/ts/integrations/generated/index.ts +4 -6
  921. package/ts/integrations/homeassistant/homeassistant.classes.client.ts +166 -63
  922. package/ts/integrations/homeassistant/homeassistant.classes.runtime.ts +41 -3
  923. package/ts/integrations/homeassistant/homeassistant.mapper.ts +32 -36
  924. package/ts/integrations/homeassistant/homeassistant.types.ts +11 -0
  925. package/ts/integrations/homeassistant/homeassistant.validation.ts +139 -0
  926. package/ts/integrations/homeassistant/readme.md +40 -0
  927. package/ts/integrations/hue/hue.classes.client.ts +251 -21
  928. package/ts/integrations/hue/hue.classes.configflow.ts +26 -13
  929. package/ts/integrations/hue/hue.classes.integration.ts +76 -30
  930. package/ts/integrations/hue/hue.discovery.ts +61 -26
  931. package/ts/integrations/hue/hue.mapper.ts +28 -60
  932. package/ts/integrations/hue/hue.types.ts +12 -18
  933. package/ts/integrations/hue/hue.validation.ts +154 -0
  934. package/ts/integrations/hue/readme.md +71 -0
  935. package/ts/integrations/index.ts +5 -1
  936. package/ts/integrations/lifx/lifx.classes.client.ts +95 -6
  937. package/ts/integrations/lifx/lifx.classes.configflow.ts +32 -5
  938. package/ts/integrations/lifx/lifx.classes.integration.ts +142 -7
  939. package/ts/integrations/lifx/lifx.discovery.ts +26 -3
  940. package/ts/integrations/lifx/lifx.mapper.ts +45 -17
  941. package/ts/integrations/lifx/lifx.types.ts +51 -125
  942. package/ts/integrations/lifx/lifx.validation.ts +86 -0
  943. package/ts/integrations/lifx/readme.md +55 -0
  944. package/ts/integrations/mqtt/mqtt.classes.client.ts +394 -366
  945. package/ts/integrations/mqtt/mqtt.classes.configflow.ts +22 -18
  946. package/ts/integrations/mqtt/mqtt.classes.integration.ts +119 -44
  947. package/ts/integrations/mqtt/mqtt.mapper.ts +139 -47
  948. package/ts/integrations/mqtt/mqtt.types.ts +19 -0
  949. package/ts/integrations/mqtt/readme.md +28 -0
  950. package/ts/integrations/openhome/openhome.classes.client.ts +22 -18
  951. package/ts/integrations/roku/readme.md +95 -0
  952. package/ts/integrations/roku/roku.classes.client.ts +194 -131
  953. package/ts/integrations/roku/roku.classes.configflow.ts +20 -13
  954. package/ts/integrations/roku/roku.classes.integration.ts +69 -98
  955. package/ts/integrations/roku/roku.discovery.ts +68 -71
  956. package/ts/integrations/roku/roku.mapper.ts +17 -52
  957. package/ts/integrations/roku/roku.types.ts +23 -14
  958. package/ts/integrations/roku/roku.validation.ts +79 -0
  959. package/ts/integrations/samsungtv/readme.md +30 -0
  960. package/ts/integrations/samsungtv/samsungtv.classes.client.ts +107 -481
  961. package/ts/integrations/samsungtv/samsungtv.classes.configflow.ts +28 -29
  962. package/ts/integrations/samsungtv/samsungtv.classes.integration.ts +108 -132
  963. package/ts/integrations/samsungtv/samsungtv.discovery.ts +101 -165
  964. package/ts/integrations/samsungtv/samsungtv.mapper.ts +20 -127
  965. package/ts/integrations/samsungtv/samsungtv.types.ts +18 -95
  966. package/ts/integrations/samsungtv/samsungtv.validation.ts +84 -0
  967. package/ts/integrations/shelly/readme.md +34 -0
  968. package/ts/integrations/shelly/shelly.classes.client.ts +275 -137
  969. package/ts/integrations/shelly/shelly.classes.configflow.ts +24 -10
  970. package/ts/integrations/shelly/shelly.classes.integration.ts +109 -32
  971. package/ts/integrations/shelly/shelly.classes.subscription.ts +218 -0
  972. package/ts/integrations/shelly/shelly.discovery.ts +5 -2
  973. package/ts/integrations/shelly/shelly.rpc.ts +190 -0
  974. package/ts/integrations/shelly/shelly.types.ts +16 -4
  975. package/ts/integrations/sonos/index.ts +3 -0
  976. package/ts/integrations/sonos/readme.md +74 -0
  977. package/ts/integrations/sonos/sonos.classes.client.ts +153 -225
  978. package/ts/integrations/sonos/sonos.classes.configflow.ts +21 -8
  979. package/ts/integrations/sonos/sonos.classes.integration.ts +234 -72
  980. package/ts/integrations/sonos/sonos.classes.ssdpprobe.ts +85 -0
  981. package/ts/integrations/sonos/sonos.config.ts +57 -0
  982. package/ts/integrations/sonos/sonos.discovery.ts +5 -123
  983. package/ts/integrations/sonos/sonos.mapper.ts +29 -13
  984. package/ts/integrations/sonos/sonos.matchers.ts +83 -0
  985. package/ts/integrations/sonos/sonos.topology.ts +54 -0
  986. package/ts/integrations/sonos/sonos.types.ts +20 -8
  987. package/ts/integrations/sonos/sonos.xml.ts +19 -0
  988. package/ts/integrations/tasmota/index.ts +4 -0
  989. package/ts/integrations/tasmota/readme.md +33 -0
  990. package/ts/integrations/tasmota/tasmota.classes.integration.ts +27 -24
  991. package/ts/integrations/tasmota/tasmota.classes.runtime.ts +274 -0
  992. package/ts/integrations/tasmota/tasmota.config.ts +69 -0
  993. package/ts/integrations/tasmota/tasmota.discovery.ts +84 -0
  994. package/ts/integrations/tasmota/tasmota.mapper.ts +88 -0
  995. package/ts/integrations/tasmota/tasmota.types.ts +48 -2
  996. package/ts/integrations/tplink/index.ts +3 -0
  997. package/ts/integrations/tplink/readme.md +38 -0
  998. package/ts/integrations/tplink/tplink.classes.client.ts +56 -75
  999. package/ts/integrations/tplink/tplink.classes.configflow.ts +48 -100
  1000. package/ts/integrations/tplink/tplink.classes.integration.ts +118 -40
  1001. package/ts/integrations/tplink/tplink.discovery.ts +106 -235
  1002. package/ts/integrations/tplink/tplink.native.mapper.ts +67 -0
  1003. package/ts/integrations/tplink/tplink.native.types.ts +32 -0
  1004. package/ts/integrations/tplink/tplink.validation.ts +50 -0
  1005. package/ts/integrations/tradfri/tradfri.discovery.ts +52 -26
  1006. package/ts/integrations/tuya/readme.md +106 -0
  1007. package/ts/integrations/tuya/tuya.classes.integration.ts +127 -28
  1008. package/ts/integrations/tuya/tuya.classes.runtime.ts +166 -0
  1009. package/ts/integrations/tuya/tuya.mapper.ts +47 -0
  1010. package/ts/integrations/tuya/tuya.types.ts +47 -2
  1011. package/ts/integrations/tuya/tuya.validation.ts +118 -0
  1012. package/ts/integrations/unifi/unifi.mapper.ts +8 -5
  1013. package/ts/integrations/webostv/readme.md +48 -0
  1014. package/ts/integrations/webostv/webostv.classes.client.ts +297 -6
  1015. package/ts/integrations/webostv/webostv.classes.configflow.ts +18 -5
  1016. package/ts/integrations/webostv/webostv.classes.integration.ts +92 -7
  1017. package/ts/integrations/webostv/webostv.discovery.ts +22 -3
  1018. package/ts/integrations/webostv/webostv.mapper.ts +27 -18
  1019. package/ts/integrations/webostv/webostv.types.ts +47 -101
  1020. package/ts/integrations/webostv/webostv.validation.ts +48 -0
  1021. package/ts/integrations/wled/index.ts +1 -0
  1022. package/ts/integrations/wled/readme.md +83 -0
  1023. package/ts/integrations/wled/wled.classes.client.ts +208 -6
  1024. package/ts/integrations/wled/wled.classes.configflow.ts +26 -5
  1025. package/ts/integrations/wled/wled.classes.integration.ts +142 -7
  1026. package/ts/integrations/wled/wled.classes.subscription.ts +122 -0
  1027. package/ts/integrations/wled/wled.commands.ts +54 -0
  1028. package/ts/integrations/wled/wled.discovery.ts +52 -3
  1029. package/ts/integrations/wled/wled.errors.ts +9 -0
  1030. package/ts/integrations/wled/wled.mapper.ts +39 -19
  1031. package/ts/integrations/wled/wled.types.ts +59 -87
  1032. package/ts/integrations/wled/wled.validation.ts +72 -0
  1033. package/ts/integrations/yeelight/readme.md +47 -0
  1034. package/ts/integrations/yeelight/yeelight.classes.client.ts +201 -302
  1035. package/ts/integrations/yeelight/yeelight.classes.configflow.ts +23 -32
  1036. package/ts/integrations/yeelight/yeelight.classes.integration.ts +115 -87
  1037. package/ts/integrations/yeelight/yeelight.discovery.ts +78 -140
  1038. package/ts/integrations/yeelight/yeelight.mapper.ts +61 -191
  1039. package/ts/integrations/yeelight/yeelight.types.ts +31 -162
  1040. package/ts/integrations/yeelight/yeelight.validation.ts +112 -0
  1041. package/ts/integrations/zha/readme.md +23 -0
  1042. package/ts/integrations/zha/zha.discovery.ts +92 -232
  1043. package/ts/integrations/zha/zha.discoveryvalidation.ts +67 -0
  1044. package/ts/integrations/zigbee2mqtt/index.ts +5 -0
  1045. package/ts/integrations/zigbee2mqtt/readme.md +40 -0
  1046. package/ts/integrations/zigbee2mqtt/zigbee2mqtt.classes.configflow.ts +26 -0
  1047. package/ts/integrations/zigbee2mqtt/zigbee2mqtt.classes.integration.ts +23 -0
  1048. package/ts/integrations/zigbee2mqtt/zigbee2mqtt.classes.runtime.ts +414 -0
  1049. package/ts/integrations/zigbee2mqtt/zigbee2mqtt.mapper.ts +172 -0
  1050. package/ts/integrations/zigbee2mqtt/zigbee2mqtt.types.ts +63 -0
  1051. package/ts/integrations/zigbee2mqtt/zigbee2mqtt.validation.ts +65 -0
  1052. package/ts/integrations/zwave_js/readme.md +23 -0
  1053. package/ts/integrations/zwave_js/zwave_js.classes.client.ts +256 -136
  1054. package/ts/integrations/zwave_js/zwave_js.classes.configflow.ts +26 -28
  1055. package/ts/integrations/zwave_js/zwave_js.classes.integration.ts +65 -81
  1056. package/ts/integrations/zwave_js/zwave_js.discovery.ts +100 -15
  1057. package/ts/integrations/zwave_js/zwave_js.mapper.ts +129 -256
  1058. package/ts/integrations/zwave_js/zwave_js.types.ts +32 -19
  1059. package/ts/integrations/zwave_js/zwave_js.validation.ts +191 -0
  1060. package/ts/plugins.ts +12 -3
  1061. package/ts_migration/001.import-json-config.ts +81 -0
  1062. package/ts_migration/index.ts +1 -0
  1063. package/ts/integrations/tasmota/.generated-by-smarthome-exchange +0 -1
  1064. package/ts/integrations/tuya/.generated-by-smarthome-exchange +0 -1
@@ -1,158 +1,120 @@
1
1
  import { DiscoveryDescriptor } from '../../core/classes.discoverydescriptor.js';
2
- const defaultPort = 55443;
2
+ import { yeelightAddress, yeelightId, yeelightRecord, yeelightText } from './yeelight.validation.js';
3
+ const unmatched = (reasonArg) => ({ matched: false, confidence: 'low', reason: reasonArg });
3
4
  export class YeelightSsdpMatcher {
4
5
  id = 'yeelight-ssdp-match';
5
6
  source = 'ssdp';
6
- description = 'Recognize Yeelight local LAN SSDP wifi_bulb responses.';
7
+ description = 'Recognize vendor wifi_bulb discovery hints; setup performs fresh targeted admission.';
7
8
  async matches(recordArg) {
8
- const headers = this.normalizedHeaders(recordArg);
9
- const location = headers.location;
10
- const support = headers.support || '';
11
- if (!headers.id || !location || !(headers.st === 'wifi_bulb' || support.includes('set_power') || headers.model)) {
12
- return { matched: false, confidence: 'low', reason: 'SSDP response is not a Yeelight wifi_bulb advertisement.' };
13
- }
14
- const endpoint = this.parseLocation(location);
15
- return {
16
- matched: true,
17
- confidence: headers.id && endpoint.host ? 'certain' : 'high',
18
- reason: 'SSDP response contains Yeelight LAN control capabilities.',
19
- normalizedDeviceId: headers.id,
20
- candidate: {
21
- source: 'ssdp',
22
- integrationDomain: 'yeelight',
23
- id: headers.id,
24
- host: endpoint.host,
25
- port: endpoint.port || defaultPort,
26
- name: headers.name,
27
- manufacturer: 'Yeelight',
28
- model: headers.model,
29
- metadata: {
30
- location,
31
- support: support.split(' ').filter(Boolean),
32
- firmwareVersion: headers.fw_ver,
33
- capabilities: headers,
34
- },
35
- },
36
- };
37
- }
38
- normalizedHeaders(recordArg) {
39
- const source = { ...recordArg.headers, ...recordArg.ssdp_headers, ...recordArg };
40
- const normalized = {};
41
- for (const [key, value] of Object.entries(source)) {
42
- if (typeof value === 'string') {
43
- normalized[key.toLowerCase()] = value;
44
- }
45
- }
46
- return normalized;
47
- }
48
- parseLocation(locationArg) {
49
9
  try {
50
- const parsed = new URL(locationArg);
51
- return { host: parsed.hostname, port: parsed.port ? Number(parsed.port) : undefined };
10
+ const record = yeelightRecord(recordArg, ['location', 'id', 'model', 'support', 'st', 'name', 'fw_ver', 'headers', 'ssdp_headers']);
11
+ const headers = {};
12
+ for (const block of [record.headers, record.ssdp_headers, record]) {
13
+ if (block === undefined)
14
+ continue;
15
+ const entries = yeelightRecord(block, Object.getOwnPropertyNames(block));
16
+ for (const [key, value] of Object.entries(entries)) {
17
+ if (key === 'headers' || key === 'ssdp_headers')
18
+ continue;
19
+ if (typeof value !== 'string' || value.length > 1024)
20
+ throw new TypeError('Invalid discovery header.');
21
+ const normalized = key.toLowerCase();
22
+ if (headers[normalized] !== undefined && headers[normalized] !== value)
23
+ throw new TypeError('Conflicting discovery headers.');
24
+ headers[normalized] = value;
25
+ }
26
+ }
27
+ if (headers.st !== 'wifi_bulb')
28
+ return unmatched('Not a vendor wifi_bulb discovery hint.');
29
+ const endpoint = new URL(headers.location);
30
+ if (endpoint.protocol !== 'yeelight:' || endpoint.username || endpoint.password || endpoint.pathname || endpoint.search || endpoint.hash || !endpoint.port) {
31
+ return unmatched('Invalid Yeelight LAN discovery endpoint.');
32
+ }
33
+ const id = yeelightId(headers.id);
34
+ const host = yeelightAddress(endpoint.hostname);
35
+ const model = yeelightText(headers.model, 'discovered model', 128);
36
+ return { matched: true, confidence: 'high', reason: 'Unauthenticated Yeelight setup hint; fresh ID admission is still required.',
37
+ normalizedDeviceId: id, candidate: { source: 'ssdp', integrationDomain: 'yeelight', id, host,
38
+ port: Number(endpoint.port), manufacturer: 'Yeelight', model, name: headers.name,
39
+ metadata: { discoveryHint: true } } };
52
40
  }
53
41
  catch {
54
- const match = locationArg.match(/([0-9a-z.-]+):(\d+)/i);
55
- return match ? { host: match[1], port: Number(match[2]) } : {};
42
+ return unmatched('Invalid Yeelight discovery hint.');
56
43
  }
57
44
  }
58
45
  }
59
46
  export class YeelightMdnsMatcher {
60
47
  id = 'yeelight-mdns-match';
61
48
  source = 'mdns';
62
- description = 'Recognize Yeelight zeroconf records from yeelink names and _miio._udp.local.';
49
+ description = 'Recognize Yeelight metadata without treating generic Xiaomi mDNS as a control capability.';
63
50
  async matches(recordArg) {
64
- const type = (recordArg.type || '').toLowerCase().replace(/\.$/, '');
65
- const name = (recordArg.name || recordArg.hostname || '').toLowerCase();
66
- const txt = recordArg.txt || recordArg.properties || {};
67
- const model = txt.model || txt.modelid || recordArg.txt?.md || undefined;
68
- const matched = name.startsWith('yeelink-') || type === '_miio._udp.local' || Boolean(model?.startsWith('YL'));
69
- if (!matched) {
70
- return { matched: false, confidence: 'low', reason: 'mDNS record is not a Yeelight advertisement.' };
51
+ try {
52
+ const record = yeelightRecord(recordArg, ['type', 'name', 'host', 'hostname', 'addresses', 'port', 'txt', 'properties']);
53
+ const txt = record.txt === undefined && record.properties === undefined ? {} :
54
+ yeelightRecord(record.txt ?? record.properties, ['id', 'mac', 'serial', 'model', 'modelid', 'md']);
55
+ const name = typeof record.name === 'string' ? record.name : '';
56
+ const model = typeof txt.model === 'string' ? txt.model : typeof txt.modelid === 'string' ? txt.modelid : '';
57
+ if (!name.toLowerCase().startsWith('yeelink-') && !/^YL[A-Z0-9]+$/i.test(model)) {
58
+ return unmatched('Generic Xiaomi mDNS does not establish a Yeelight device.');
59
+ }
60
+ let host;
61
+ const addresses = Array.isArray(record.addresses) ? record.addresses : [];
62
+ for (const candidate of [record.host, ...addresses]) {
63
+ try {
64
+ host = yeelightAddress(candidate);
65
+ break;
66
+ }
67
+ catch {
68
+ continue;
69
+ }
70
+ }
71
+ const id = txt.id === undefined ? undefined : yeelightId(txt.id);
72
+ return { matched: true, confidence: 'medium', reason: 'Unauthenticated Yeelight mDNS hint; vendor discovery must admit the exact ID.',
73
+ normalizedDeviceId: id, candidate: { source: 'mdns', integrationDomain: 'yeelight', id, host, name,
74
+ manufacturer: 'Yeelight', model: model || undefined, metadata: { discoveryHint: true } } };
75
+ }
76
+ catch {
77
+ return unmatched('Invalid Yeelight mDNS hint.');
71
78
  }
72
- const host = recordArg.host || recordArg.hostname || recordArg.addresses?.[0];
73
- const deviceId = txt.id || txt.mac || txt.serial || recordArg.name || host;
74
- return {
75
- matched: true,
76
- confidence: host ? 'high' : 'medium',
77
- reason: 'mDNS record matches Yeelight zeroconf metadata.',
78
- normalizedDeviceId: deviceId,
79
- candidate: {
80
- source: 'mdns',
81
- integrationDomain: 'yeelight',
82
- id: deviceId,
83
- host,
84
- port: recordArg.port || defaultPort,
85
- name: recordArg.name,
86
- manufacturer: 'Yeelight',
87
- model,
88
- metadata: {
89
- mdnsName: recordArg.name,
90
- mdnsType: recordArg.type,
91
- txt,
92
- },
93
- },
94
- };
95
79
  }
96
80
  }
97
81
  export class YeelightManualMatcher {
98
82
  id = 'yeelight-manual-match';
99
83
  source = 'manual';
100
- description = 'Recognize manual Yeelight setup entries by host or Yeelight metadata.';
84
+ description = 'Recognize explicitly selected local Yeelight endpoints.';
101
85
  async matches(inputArg) {
102
- const model = inputArg.model?.toLowerCase() || '';
103
- const name = inputArg.name?.toLowerCase() || '';
104
- const manufacturer = inputArg.manufacturer?.toLowerCase() || '';
105
- const matched = Boolean(inputArg.host || inputArg.snapshot || inputArg.capabilities || inputArg.metadata?.yeelight || model.includes('yeelight') || name.includes('yeelight') || manufacturer === 'yeelight');
106
- if (!matched) {
107
- return { matched: false, confidence: 'low', reason: 'Manual entry does not contain Yeelight setup hints.' };
86
+ try {
87
+ const input = yeelightRecord(inputArg, ['host', 'id', 'name', 'model', 'manufacturer']);
88
+ const host = yeelightAddress(input.host);
89
+ const id = yeelightId(input.id);
90
+ return { matched: true, confidence: 'medium', reason: 'Explicit setup hint; fresh targeted vendor discovery is required.', normalizedDeviceId: id,
91
+ candidate: { source: 'manual', integrationDomain: 'yeelight', host, id, manufacturer: 'Yeelight',
92
+ name: input.name === undefined ? undefined : yeelightText(input.name, 'name', 128),
93
+ model: input.model === undefined ? undefined : yeelightText(input.model, 'model', 128) } };
94
+ }
95
+ catch {
96
+ return unmatched('Manual Yeelight setup requires a local IPv4 endpoint and vendor ID.');
108
97
  }
109
- return {
110
- matched: true,
111
- confidence: inputArg.host ? 'high' : 'medium',
112
- reason: 'Manual entry can start Yeelight setup.',
113
- normalizedDeviceId: inputArg.id || inputArg.host,
114
- candidate: {
115
- source: 'manual',
116
- integrationDomain: 'yeelight',
117
- id: inputArg.id,
118
- host: inputArg.host,
119
- port: inputArg.port || defaultPort,
120
- name: inputArg.name,
121
- manufacturer: 'Yeelight',
122
- model: inputArg.model,
123
- metadata: {
124
- ...inputArg.metadata,
125
- properties: inputArg.properties,
126
- capabilities: inputArg.capabilities,
127
- snapshot: inputArg.snapshot,
128
- },
129
- },
130
- };
131
98
  }
132
99
  }
133
100
  export class YeelightCandidateValidator {
134
101
  id = 'yeelight-candidate-validator';
135
- description = 'Validate Yeelight candidates before starting local LAN setup.';
102
+ description = 'Validate setup hints without authorizing network connection or controls.';
136
103
  async validate(candidateArg) {
137
- const manufacturer = candidateArg.manufacturer?.toLowerCase() || '';
138
- const model = candidateArg.model?.toLowerCase() || '';
139
- const name = candidateArg.name?.toLowerCase() || '';
140
- const metadata = candidateArg.metadata || {};
141
- const matched = candidateArg.integrationDomain === 'yeelight' || manufacturer === 'yeelight' || model.includes('yeelight') || name.includes('yeelight') || name.startsWith('yeelink-') || Boolean(metadata.capabilities || metadata.yeelight);
142
- return {
143
- matched,
144
- confidence: matched && candidateArg.host ? 'high' : matched ? 'medium' : 'low',
145
- reason: matched ? 'Candidate has Yeelight metadata.' : 'Candidate is not Yeelight.',
146
- candidate: matched ? { ...candidateArg, port: candidateArg.port || defaultPort } : undefined,
147
- normalizedDeviceId: candidateArg.id || candidateArg.host,
148
- };
104
+ try {
105
+ if (candidateArg.integrationDomain !== 'yeelight')
106
+ return unmatched('Candidate belongs to another integration.');
107
+ const id = yeelightId(candidateArg.id);
108
+ const host = yeelightAddress(candidateArg.host);
109
+ return { matched: true, confidence: 'medium', reason: 'Candidate can start setup; home scope and fresh vendor admission remain mandatory.',
110
+ normalizedDeviceId: id, candidate: { ...candidateArg, id, host } };
111
+ }
112
+ catch {
113
+ return unmatched('Yeelight setup candidate requires a local IPv4 endpoint and vendor ID.');
114
+ }
149
115
  }
150
116
  }
151
- export const createYeelightDiscoveryDescriptor = () => {
152
- return new DiscoveryDescriptor({ integrationDomain: 'yeelight', displayName: 'Yeelight' })
153
- .addMatcher(new YeelightSsdpMatcher())
154
- .addMatcher(new YeelightMdnsMatcher())
155
- .addMatcher(new YeelightManualMatcher())
156
- .addValidator(new YeelightCandidateValidator());
157
- };
158
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieWVlbGlnaHQuZGlzY292ZXJ5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vdHMvaW50ZWdyYXRpb25zL3llZWxpZ2h0L3llZWxpZ2h0LmRpc2NvdmVyeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUloRixNQUFNLFdBQVcsR0FBRyxLQUFLLENBQUM7QUFFMUIsTUFBTSxPQUFPLG1CQUFtQjtJQUN2QixFQUFFLEdBQUcscUJBQXFCLENBQUM7SUFDM0IsTUFBTSxHQUFHLE1BQWUsQ0FBQztJQUN6QixXQUFXLEdBQUcsd0RBQXdELENBQUM7SUFFdkUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxTQUE4QjtRQUNqRCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDbEQsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQztRQUNsQyxNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQztRQUN0QyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsSUFBSSxDQUFDLFFBQVEsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsS0FBSyxXQUFXLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNoSCxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSwwREFBMEQsRUFBRSxDQUFDO1FBQ25ILENBQUM7UUFDRCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzlDLE9BQU87WUFDTCxPQUFPLEVBQUUsSUFBSTtZQUNiLFVBQVUsRUFBRSxPQUFPLENBQUMsRUFBRSxJQUFJLFFBQVEsQ0FBQyxJQUFJ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
117
+ export const createYeelightDiscoveryDescriptor = () => new DiscoveryDescriptor({ integrationDomain: 'yeelight', displayName: 'Yeelight' })
118
+ .addMatcher(new YeelightSsdpMatcher()).addMatcher(new YeelightMdnsMatcher())
119
+ .addMatcher(new YeelightManualMatcher()).addValidator(new YeelightCandidateValidator());
120
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieWVlbGlnaHQuZGlzY292ZXJ5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vdHMvaW50ZWdyYXRpb25zL3llZWxpZ2h0L3llZWxpZ2h0LmRpc2NvdmVyeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUdoRixPQUFPLEVBQUUsZUFBZSxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsWUFBWSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFckcsTUFBTSxTQUFTLEdBQUcsQ0FBQyxTQUFpQixFQUFtQixFQUFFLENBQUMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQztBQUVySCxNQUFNLE9BQU8sbUJBQW1CO0lBQ2QsRUFBRSxHQUFHLHFCQUFxQixDQUFDO0lBQzNCLE1BQU0sR0FBRyxNQUFlLENBQUM7SUFDekIsV0FBVyxHQUFHLHNGQUFzRixDQUFDO0lBRTlHLEtBQUssQ0FBQyxPQUFPLENBQUMsU0FBOEI7UUFDakQsSUFBSSxDQUFDO1lBQ0gsTUFBTSxNQUFNLEdBQUcsY0FBYyxDQUFDLFNBQVMsRUFBRSxDQUFDLFVBQVUsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsY0FBYyxDQUFDLENBQUMsQ0FBQztZQUNwSSxNQUFNLE9BQU8sR0FBMkIsRUFBRSxDQUFDO1lBQzNDLEtBQUssTUFBTSxLQUFLLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxZQUFZLEVBQUUsTUFBTSxDQUFDLEVBQUUsQ0FBQztnQkFDbEUsSUFBSSxLQUFLLEtBQUssU0FBUztvQkFBRSxTQUFTO2dCQUNsQyxNQUFNLE9BQU8sR0FBRyxjQUFjLENBQUMsS0FBSyxFQUFFLE1B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
@@ -2,18 +2,10 @@ import * as plugins from '../../plugins.js';
2
2
  import type { IIntegrationEntity, IIntegrationEvent } from '../../core/types.js';
3
3
  import type { IYeelightEvent, IYeelightSnapshot } from './yeelight.types.js';
4
4
  export declare class YeelightMapper {
5
+ static deviceId(homeIdArg: string, bulbIdArg: string): string;
6
+ static entityId(homeIdArg: string, bulbIdArg: string): string;
5
7
  static toDevices(snapshotArg: IYeelightSnapshot): plugins.shxInterfaces.data.IDeviceDefinition[];
6
8
  static toEntities(snapshotArg: IYeelightSnapshot): IIntegrationEntity[];
7
9
  static toIntegrationEvent(eventArg: IYeelightEvent): IIntegrationEvent;
8
- private static bulbState;
9
- private static supports;
10
- private static deviceId;
11
- private static bulbName;
12
10
  private static rgbValue;
13
- private static hsValue;
14
- private static numberValue;
15
- private static binaryState;
16
- private static propertyValue;
17
- private static deviceStateValue;
18
- private static slug;
19
11
  }
@@ -1,203 +1,82 @@
1
1
  import * as plugins from '../../plugins.js';
2
- const sensorProperties = [
3
- { key: 'ct', name: 'Color temperature', unit: 'K' },
4
- { key: 'rgb', name: 'RGB' },
5
- { key: 'hue', name: 'Hue' },
6
- { key: 'sat', name: 'Saturation', unit: '%' },
7
- { key: 'color_mode', name: 'Color mode' },
8
- { key: 'flowing', name: 'Color flow', binary: true },
9
- { key: 'active_mode', name: 'Active mode' },
10
- { key: 'nl_br', name: 'Nightlight brightness', unit: '%' },
11
- { key: 'bg_power', name: 'Ambient power', binary: true },
12
- { key: 'bg_bright', name: 'Ambient brightness', unit: '%' },
13
- { key: 'bg_ct', name: 'Ambient color temperature', unit: 'K' },
14
- { key: 'bg_rgb', name: 'Ambient RGB' },
15
- ];
16
2
  export class YeelightMapper {
3
+ static deviceId(homeIdArg, bulbIdArg) {
4
+ return `yeelight.bulb.${encodeURIComponent(homeIdArg)}.${bulbIdArg}`;
5
+ }
6
+ static entityId(homeIdArg, bulbIdArg) {
7
+ return `light.yeelight.${encodeURIComponent(homeIdArg)}.${bulbIdArg}`;
8
+ }
17
9
  static toDevices(snapshotArg) {
18
- const updatedAt = new Date().toISOString();
19
10
  return snapshotArg.bulbs.map((bulbArg) => {
20
- const state = this.bulbState(bulbArg);
21
- const properties = bulbArg.properties || {};
22
- const features = [
23
- { id: 'power', capability: 'light', name: 'Power', readable: true, writable: true },
24
- ];
25
- const deviceState = [
26
- { featureId: 'power', value: state.on, updatedAt },
27
- ];
28
- if (state.brightness !== undefined || this.supports(bulbArg, 'set_bright')) {
29
- features.push({ id: 'brightness', capability: 'light', name: 'Brightness', readable: true, writable: true, unit: '%' });
30
- deviceState.push({ featureId: 'brightness', value: state.brightness ?? null, updatedAt });
11
+ const properties = bulbArg.properties;
12
+ const online = snapshotArg.connected && bulbArg.available;
13
+ const features = [];
14
+ const state = [];
15
+ const add = (idArg, nameArg, valueArg, writableArg, unitArg) => {
16
+ features.push({ id: idArg, capability: 'light', name: nameArg, readable: valueArg !== null, writable: online && writableArg, unit: unitArg });
17
+ state.push({ featureId: idArg, value: valueArg, updatedAt: snapshotArg.updatedAt });
18
+ };
19
+ add('power', 'Power', properties.power === 'on', bulbArg.support.includes('set_power'));
20
+ if (properties.bright !== undefined || bulbArg.support.includes('set_bright')) {
21
+ add('brightness', 'Brightness', properties.bright === undefined ? null : Number(properties.bright), bulbArg.support.includes('set_bright'), '%');
31
22
  }
32
- if (state.colorTempKelvin !== undefined || this.supports(bulbArg, 'set_ct_abx')) {
33
- features.push({ id: 'color_temperature', capability: 'light', name: 'Color temperature', readable: true, writable: true, unit: 'K' });
34
- deviceState.push({ featureId: 'color_temperature', value: state.colorTempKelvin ?? null, updatedAt });
23
+ if (properties.color_mode === '1' || bulbArg.support.includes('set_rgb')) {
24
+ const rgb = properties.color_mode === '1' ? this.rgbValue(properties.rgb) : undefined;
25
+ add('rgb', 'RGB color', rgb ? rgb.join(',') : null, bulbArg.support.includes('set_rgb'));
35
26
  }
36
- if (state.rgbColor !== undefined || this.supports(bulbArg, 'set_rgb')) {
37
- features.push({ id: 'rgb', capability: 'light', name: 'RGB color', readable: true, writable: true });
38
- deviceState.push({ featureId: 'rgb', value: state.rgbColor ? state.rgbColor.join(',') : null, updatedAt });
27
+ if (properties.color_mode === '2' && properties.ct !== undefined) {
28
+ add('color_temperature', 'Color temperature', Number(properties.ct), false, 'K');
39
29
  }
40
- for (const sensor of sensorProperties) {
41
- const value = properties[sensor.key];
42
- if (value === undefined || value === null) {
43
- continue;
30
+ for (const [key, name] of [['color_mode', 'Color mode'], ['flowing', 'Color flow']]) {
31
+ const value = properties[key];
32
+ if (value !== undefined) {
33
+ features.push({ id: key, capability: 'sensor', name, readable: true, writable: false });
34
+ state.push({ featureId: key, value: key === 'flowing' ? value === '1' : Number(value), updatedAt: snapshotArg.updatedAt });
44
35
  }
45
- const featureId = String(sensor.key);
46
- if (features.some((featureArg) => featureArg.id === featureId)) {
47
- continue;
48
- }
49
- features.push({ id: featureId, capability: 'sensor', name: sensor.name, readable: true, writable: false, unit: sensor.unit });
50
- deviceState.push({ featureId, value: this.deviceStateValue(sensor.binary ? this.binaryState(value) : this.propertyValue(value)), updatedAt });
51
36
  }
52
37
  return {
53
- id: this.deviceId(bulbArg),
54
- integrationDomain: 'yeelight',
55
- name: this.bulbName(bulbArg),
56
- protocol: 'unknown',
57
- manufacturer: 'Yeelight',
58
- model: bulbArg.model || bulbArg.capabilities?.model,
59
- online: bulbArg.available !== false && (snapshotArg.connected || Boolean(bulbArg.properties)),
60
- features,
61
- state: deviceState,
62
- metadata: {
63
- host: bulbArg.host,
64
- port: bulbArg.port || 55443,
65
- firmwareVersion: bulbArg.fwVersion || bulbArg.capabilities?.fw_ver,
66
- support: bulbArg.support || bulbArg.capabilities?.support?.split(' ').filter(Boolean),
67
- },
38
+ id: this.deviceId(snapshotArg.homeId, bulbArg.id), integrationDomain: 'yeelight', name: bulbArg.name,
39
+ manufacturer: 'Yeelight', model: bulbArg.model, protocol: 'unknown', online, features, state,
40
+ metadata: { homeId: snapshotArg.homeId, vendorDeviceId: bulbArg.id, host: bulbArg.host, port: bulbArg.port,
41
+ firmwareVersion: bulbArg.fwVersion, supportedMethods: [...bulbArg.support],
42
+ observedAt: snapshotArg.updatedAt, transport: 'yeelight-lan-tcp', identityAssurance: 'unauthenticated-lan-identifier' },
68
43
  };
69
44
  });
70
45
  }
71
46
  static toEntities(snapshotArg) {
72
- const entities = [];
73
- for (const bulb of snapshotArg.bulbs) {
74
- const deviceId = this.deviceId(bulb);
75
- const name = this.bulbName(bulb);
76
- const slug = this.slug(name);
77
- const state = this.bulbState(bulb);
78
- entities.push({
79
- id: `light.${slug}`,
80
- uniqueId: `yeelight_${this.slug(bulb.id || bulb.host || name)}_light`,
81
- integrationDomain: 'yeelight',
82
- deviceId,
83
- platform: 'light',
84
- name,
85
- state: state.on ? 'on' : 'off',
47
+ return snapshotArg.bulbs.map((bulbArg) => {
48
+ const properties = bulbArg.properties;
49
+ return {
50
+ id: this.entityId(snapshotArg.homeId, bulbArg.id), uniqueId: this.deviceId(snapshotArg.homeId, bulbArg.id),
51
+ integrationDomain: 'yeelight', deviceId: this.deviceId(snapshotArg.homeId, bulbArg.id), platform: 'light',
52
+ name: bulbArg.name, state: properties.power,
86
53
  attributes: {
87
- brightness: state.brightness,
88
- colorTempKelvin: state.colorTempKelvin,
89
- rgbColor: state.rgbColor,
90
- hsColor: state.hsColor,
91
- colorMode: state.colorMode,
92
- flowing: state.flowing,
93
- nightLight: state.nightLight,
94
- host: bulb.host,
95
- model: bulb.model || bulb.capabilities?.model,
54
+ homeId: snapshotArg.homeId, brightness: properties.bright === undefined ? undefined : Number(properties.bright),
55
+ rgbColor: properties.color_mode === '1' ? this.rgbValue(properties.rgb) : undefined,
56
+ colorTempKelvin: properties.color_mode === '2' && properties.ct !== undefined ? Number(properties.ct) : undefined,
57
+ hsColor: properties.color_mode === '3' && properties.hue !== undefined && properties.sat !== undefined
58
+ ? [Number(properties.hue), Number(properties.sat)] : undefined,
59
+ colorMode: properties.color_mode, flowing: properties.flowing === undefined ? undefined : properties.flowing === '1',
60
+ supportedMethods: [...bulbArg.support], observedAt: snapshotArg.updatedAt,
96
61
  },
97
- available: bulb.available !== false,
98
- });
99
- for (const sensor of sensorProperties) {
100
- const value = bulb.properties?.[sensor.key];
101
- if (value === undefined || value === null) {
102
- continue;
103
- }
104
- const platform = sensor.binary ? 'binary_sensor' : 'sensor';
105
- const sensorSlug = this.slug(`${name} ${sensor.name}`);
106
- entities.push({
107
- id: `${platform}.${sensorSlug}`,
108
- uniqueId: `yeelight_${this.slug(bulb.id || bulb.host || name)}_${String(sensor.key)}`,
109
- integrationDomain: 'yeelight',
110
- deviceId,
111
- platform,
112
- name: `${name} ${sensor.name}`,
113
- state: sensor.binary ? this.binaryState(value) ? 'on' : 'off' : this.propertyValue(value),
114
- attributes: sensor.unit ? { unit: sensor.unit } : undefined,
115
- available: bulb.available !== false,
116
- });
117
- }
118
- }
119
- return entities;
62
+ available: snapshotArg.connected && bulbArg.available,
63
+ };
64
+ });
120
65
  }
121
66
  static toIntegrationEvent(eventArg) {
67
+ const bulb = eventArg.snapshot.bulbs[0];
122
68
  return {
123
- type: eventArg.type === 'error' ? 'error' : 'state_changed',
124
- integrationDomain: 'yeelight',
125
- deviceId: eventArg.bulbId,
126
- entityId: eventArg.entityId,
127
- data: eventArg,
128
- timestamp: eventArg.timestamp || Date.now(),
69
+ type: 'state_changed', integrationDomain: 'yeelight',
70
+ deviceId: bulb ? this.deviceId(eventArg.snapshot.homeId, bulb.id) : undefined,
71
+ entityId: bulb ? this.entityId(eventArg.snapshot.homeId, bulb.id) : undefined,
72
+ data: { snapshot: structuredClone(eventArg.snapshot) }, timestamp: eventArg.timestamp,
129
73
  };
130
74
  }
131
- static bulbState(bulbArg) {
132
- if (bulbArg.state) {
133
- return bulbArg.state;
134
- }
135
- const properties = bulbArg.properties || {};
136
- const power = properties.main_power ?? properties.power;
137
- const brightness = this.numberValue(properties.bright);
138
- return {
139
- on: power === 'on',
140
- brightness,
141
- colorTempKelvin: this.numberValue(properties.ct),
142
- rgbColor: this.rgbValue(properties.rgb),
143
- hsColor: this.hsValue(properties.hue, properties.sat),
144
- colorMode: properties.color_mode === undefined || properties.color_mode === null ? undefined : String(properties.color_mode),
145
- flowing: this.binaryState(properties.flowing),
146
- nightLight: properties.active_mode !== undefined ? String(properties.active_mode) === '1' : this.numberValue(properties.nl_br) ? this.numberValue(properties.nl_br) > 0 : undefined,
147
- };
148
- }
149
- static supports(bulbArg, commandArg) {
150
- const support = bulbArg.support || bulbArg.capabilities?.support?.split(' ').filter(Boolean) || [];
151
- return support.includes(commandArg);
152
- }
153
- static deviceId(bulbArg) {
154
- return `yeelight.bulb.${this.slug(bulbArg.id || bulbArg.host || this.bulbName(bulbArg))}`;
155
- }
156
- static bulbName(bulbArg) {
157
- return bulbArg.name || bulbArg.properties?.name || bulbArg.capabilities?.name || bulbArg.model || bulbArg.host || 'Yeelight Bulb';
158
- }
159
75
  static rgbValue(valueArg) {
160
- const numeric = this.numberValue(valueArg);
161
- if (numeric === undefined) {
76
+ if (valueArg === undefined)
162
77
  return undefined;
163
- }
164
- return [(numeric >> 16) & 0xff, (numeric >> 8) & 0xff, numeric & 0xff];
165
- }
166
- static hsValue(hueArg, satArg) {
167
- const hue = this.numberValue(hueArg);
168
- const sat = this.numberValue(satArg);
169
- return hue === undefined || sat === undefined ? undefined : [hue, sat];
170
- }
171
- static numberValue(valueArg) {
172
- if (typeof valueArg === 'number' && Number.isFinite(valueArg)) {
173
- return valueArg;
174
- }
175
- if (typeof valueArg === 'string' && valueArg.trim() && Number.isFinite(Number(valueArg))) {
176
- return Number(valueArg);
177
- }
178
- return undefined;
179
- }
180
- static binaryState(valueArg) {
181
- return valueArg === true || valueArg === 'on' || valueArg === '1' || valueArg === 1;
182
- }
183
- static propertyValue(valueArg) {
184
- const numeric = this.numberValue(valueArg);
185
- if (numeric !== undefined) {
186
- return numeric;
187
- }
188
- if (typeof valueArg === 'string' || typeof valueArg === 'boolean' || valueArg === null) {
189
- return valueArg;
190
- }
191
- return valueArg === undefined ? null : String(valueArg);
192
- }
193
- static deviceStateValue(valueArg) {
194
- if (typeof valueArg === 'string' || typeof valueArg === 'number' || typeof valueArg === 'boolean' || valueArg === null) {
195
- return valueArg;
196
- }
197
- return String(valueArg);
198
- }
199
- static slug(valueArg) {
200
- return valueArg.toLowerCase().replace(/[^a-z0-9]+/g, '_').replace(/^_+|_+$/g, '') || 'yeelight';
78
+ const value = Number(valueArg);
79
+ return [(value >>> 16) & 255, (value >>> 8) & 255, value & 255];
201
80
  }
202
81
  }
203
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieWVlbGlnaHQubWFwcGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vdHMvaW50ZWdyYXRpb25zL3llZWxpZ2h0L3llZWxpZ2h0Lm1hcHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssT0FBTyxNQUFNLGtCQUFrQixDQUFDO0FBSTVDLE1BQU0sZ0JBQWdCLEdBQWlHO0lBQ3JILEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsbUJBQW1CLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRTtJQUNuRCxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRTtJQUMzQixFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRTtJQUMzQixFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFO0lBQzdDLEVBQUUsR0FBRyxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFO0lBQ3pDLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7SUFDcEQsRUFBRSxHQUFHLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUU7SUFDM0MsRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSx1QkFBdUIsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFO0lBQzFELEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsZUFBZSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7SUFDeEQsRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxvQkFBb0IsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFO0lBQzNELEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsMkJBQTJCLEVBQUUsSUFB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
82
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieWVlbGlnaHQubWFwcGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vdHMvaW50ZWdyYXRpb25zL3llZWxpZ2h0L3llZWxpZ2h0Lm1hcHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssT0FBTyxNQUFNLGtCQUFrQixDQUFDO0FBSTVDLE1BQU0sT0FBTyxjQUFjO0lBQ2xCLE1BQU0sQ0FBQyxRQUFRLENBQUMsU0FBaUIsRUFBRSxTQUFpQjtRQUN6RCxPQUFPLGlCQUFpQixrQkFBa0IsQ0FBQyxTQUFTLENBQUMsSUFBSSxTQUFTLEVBQUUsQ0FBQztJQUN2RSxDQUFDO0lBRU0sTUFBTSxDQUFDLFFBQVEsQ0FBQyxTQUFpQixFQUFFLFNBQWlCO1FBQ3pELE9BQU8sa0JBQWtCLGtCQUFrQixDQUFDLFNBQVMsQ0FBQyxJQUFJLFNBQVMsRUFBRSxDQUFDO0lBQ3hFLENBQUM7SUFFTSxNQUFNLENBQUMsU0FBUyxDQUFDLFdBQThCO1FBQ3BELE9BQU8sV0FBVyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtZQUN2QyxNQUFNLFVBQVUsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDO1lBQ3RDLE1BQU0sTUFBTSxHQUFHLFdBQVcsQ0FBQyxTQUFTLElBQUksT0FBTyxDQUFDLFNBQVMsQ0FBQztZQUMxRCxNQUFNLFFBQVEsR0FBZ0QsRUFBRSxDQUFDO1lBQ2pFLE1BQU0sS0FBSyxHQUE4QyxFQUFFLENBQUM7WUFDNUQsTUFBTSxHQUFHLEdBQUcsQ0FBQyxLQUFhLEVBQUUsT0FBZSxFQUFFLFFBQXNELEVBQ2pHLFdBQW9CLEVBQUUsT0FBZ0IsRUFBUSxFQUFFO2dCQUNoRCxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLFFBQVEsS0FBSyxJQUFJLEVBQUUsUUFB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