@switchbot/homebridge-switchbot 4.3.2-beta.9 → 5.0.0-beta.1

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 (416) hide show
  1. package/.github/copilot-instructions.md +328 -0
  2. package/.github/workflows/beta-release.yml +8 -12
  3. package/.github/workflows/release.yml +57 -21
  4. package/README.md +13 -10
  5. package/config.schema.json +1 -12
  6. package/coverage/base.css +224 -0
  7. package/coverage/block-navigation.js +87 -0
  8. package/coverage/clover.xml +15847 -0
  9. package/coverage/coverage-final.json +42 -0
  10. package/coverage/docs/assets/dmt/dmt-component-data.js.html +85 -0
  11. package/coverage/docs/assets/dmt/dmt-components.js.html +286 -0
  12. package/coverage/docs/assets/dmt/index.html +131 -0
  13. package/coverage/docs/assets/hierarchy.js.html +85 -0
  14. package/coverage/docs/assets/icons.js.html +136 -0
  15. package/coverage/docs/assets/index.html +146 -0
  16. package/coverage/docs/assets/main.js.html +265 -0
  17. package/coverage/favicon.png +0 -0
  18. package/coverage/index.html +191 -0
  19. package/coverage/prettify.css +1 -0
  20. package/coverage/prettify.js +2 -0
  21. package/coverage/sort-arrow-sprite.png +0 -0
  22. package/coverage/sorter.js +196 -0
  23. package/coverage/src/device/blindtilt.ts.html +3238 -0
  24. package/coverage/src/device/bot.ts.html +2803 -0
  25. package/coverage/src/device/ceilinglight.ts.html +2338 -0
  26. package/coverage/src/device/colorbulb.ts.html +2824 -0
  27. package/coverage/src/device/contact.ts.html +1465 -0
  28. package/coverage/src/device/curtain.ts.html +2869 -0
  29. package/coverage/src/device/device.ts.html +2500 -0
  30. package/coverage/src/device/fan.ts.html +2242 -0
  31. package/coverage/src/device/hub.ts.html +1408 -0
  32. package/coverage/src/device/humidifier.ts.html +2116 -0
  33. package/coverage/src/device/index.html +416 -0
  34. package/coverage/src/device/iosensor.ts.html +1375 -0
  35. package/coverage/src/device/lightstrip.ts.html +2617 -0
  36. package/coverage/src/device/lock.ts.html +1963 -0
  37. package/coverage/src/device/meter.ts.html +1372 -0
  38. package/coverage/src/device/meterplus.ts.html +1384 -0
  39. package/coverage/src/device/meterpro.ts.html +1618 -0
  40. package/coverage/src/device/motion.ts.html +1264 -0
  41. package/coverage/src/device/plug.ts.html +1372 -0
  42. package/coverage/src/device/relayswitch.ts.html +2284 -0
  43. package/coverage/src/device/robotvacuumcleaner.ts.html +1810 -0
  44. package/coverage/src/device/waterdetector.ts.html +1294 -0
  45. package/coverage/src/homebridge-ui/index.html +116 -0
  46. package/coverage/src/homebridge-ui/server.ts.html +229 -0
  47. package/coverage/src/index.html +161 -0
  48. package/coverage/src/index.ts.html +124 -0
  49. package/coverage/src/irdevice/airconditioner.ts.html +1687 -0
  50. package/coverage/src/irdevice/airpurifier.ts.html +844 -0
  51. package/coverage/src/irdevice/camera.ts.html +475 -0
  52. package/coverage/src/irdevice/fan.ts.html +766 -0
  53. package/coverage/src/irdevice/index.html +251 -0
  54. package/coverage/src/irdevice/irdevice.ts.html +1117 -0
  55. package/coverage/src/irdevice/light.ts.html +826 -0
  56. package/coverage/src/irdevice/other.ts.html +2458 -0
  57. package/coverage/src/irdevice/tv.ts.html +1222 -0
  58. package/coverage/src/irdevice/vacuumcleaner.ts.html +466 -0
  59. package/coverage/src/irdevice/waterheater.ts.html +469 -0
  60. package/coverage/src/platform.ts.html +8776 -0
  61. package/coverage/src/settings.ts.html +934 -0
  62. package/coverage/src/utils.ts.html +2092 -0
  63. package/dist/{device → devices-hap}/airpurifier.d.ts +3 -3
  64. package/dist/devices-hap/airpurifier.d.ts.map +1 -0
  65. package/dist/devices-hap/airpurifier.js.map +1 -0
  66. package/dist/{device → devices-hap}/blindtilt.d.ts +3 -3
  67. package/dist/devices-hap/blindtilt.d.ts.map +1 -0
  68. package/dist/{device → devices-hap}/blindtilt.js +6 -1
  69. package/dist/devices-hap/blindtilt.js.map +1 -0
  70. package/dist/{device → devices-hap}/bot.d.ts +3 -3
  71. package/dist/devices-hap/bot.d.ts.map +1 -0
  72. package/dist/devices-hap/bot.js.map +1 -0
  73. package/dist/{device → devices-hap}/ceilinglight.d.ts +3 -3
  74. package/dist/devices-hap/ceilinglight.d.ts.map +1 -0
  75. package/dist/devices-hap/ceilinglight.js.map +1 -0
  76. package/dist/{device → devices-hap}/colorbulb.d.ts +3 -3
  77. package/dist/devices-hap/colorbulb.d.ts.map +1 -0
  78. package/dist/devices-hap/colorbulb.js.map +1 -0
  79. package/dist/{device → devices-hap}/contact.d.ts +3 -3
  80. package/dist/devices-hap/contact.d.ts.map +1 -0
  81. package/dist/devices-hap/contact.js.map +1 -0
  82. package/dist/{device → devices-hap}/curtain.d.ts +3 -3
  83. package/dist/devices-hap/curtain.d.ts.map +1 -0
  84. package/dist/{device → devices-hap}/curtain.js +32 -8
  85. package/dist/devices-hap/curtain.js.map +1 -0
  86. package/dist/{device → devices-hap}/device.d.ts +3 -3
  87. package/dist/devices-hap/device.d.ts.map +1 -0
  88. package/dist/{device → devices-hap}/device.js +10 -4
  89. package/dist/devices-hap/device.js.map +1 -0
  90. package/dist/{device → devices-hap}/fan.d.ts +3 -3
  91. package/dist/devices-hap/fan.d.ts.map +1 -0
  92. package/dist/devices-hap/fan.js.map +1 -0
  93. package/dist/{device → devices-hap}/hub.d.ts +5 -5
  94. package/dist/devices-hap/hub.d.ts.map +1 -0
  95. package/dist/{device → devices-hap}/hub.js +2 -1
  96. package/dist/devices-hap/hub.js.map +1 -0
  97. package/dist/{device → devices-hap}/humidifier.d.ts +3 -3
  98. package/dist/devices-hap/humidifier.d.ts.map +1 -0
  99. package/dist/devices-hap/humidifier.js.map +1 -0
  100. package/dist/{device → devices-hap}/iosensor.d.ts +3 -3
  101. package/dist/devices-hap/iosensor.d.ts.map +1 -0
  102. package/dist/devices-hap/iosensor.js.map +1 -0
  103. package/dist/{device → devices-hap}/lightstrip.d.ts +3 -3
  104. package/dist/devices-hap/lightstrip.d.ts.map +1 -0
  105. package/dist/devices-hap/lightstrip.js.map +1 -0
  106. package/dist/{device → devices-hap}/lock.d.ts +3 -3
  107. package/dist/devices-hap/lock.d.ts.map +1 -0
  108. package/dist/devices-hap/lock.js.map +1 -0
  109. package/dist/{device → devices-hap}/meter.d.ts +3 -3
  110. package/dist/devices-hap/meter.d.ts.map +1 -0
  111. package/dist/devices-hap/meter.js.map +1 -0
  112. package/dist/{device → devices-hap}/meterplus.d.ts +3 -3
  113. package/dist/devices-hap/meterplus.d.ts.map +1 -0
  114. package/dist/devices-hap/meterplus.js.map +1 -0
  115. package/dist/{device → devices-hap}/meterpro.d.ts +3 -3
  116. package/dist/devices-hap/meterpro.d.ts.map +1 -0
  117. package/dist/{device → devices-hap}/meterpro.js +16 -3
  118. package/dist/devices-hap/meterpro.js.map +1 -0
  119. package/dist/{device → devices-hap}/motion.d.ts +3 -3
  120. package/dist/devices-hap/motion.d.ts.map +1 -0
  121. package/dist/devices-hap/motion.js.map +1 -0
  122. package/dist/{device → devices-hap}/plug.d.ts +3 -3
  123. package/dist/devices-hap/plug.d.ts.map +1 -0
  124. package/dist/devices-hap/plug.js.map +1 -0
  125. package/dist/{device → devices-hap}/relayswitch.d.ts +3 -3
  126. package/dist/devices-hap/relayswitch.d.ts.map +1 -0
  127. package/dist/devices-hap/relayswitch.js.map +1 -0
  128. package/dist/{device → devices-hap}/robotvacuumcleaner.d.ts +3 -3
  129. package/dist/devices-hap/robotvacuumcleaner.d.ts.map +1 -0
  130. package/dist/devices-hap/robotvacuumcleaner.js.map +1 -0
  131. package/dist/{device → devices-hap}/waterdetector.d.ts +3 -3
  132. package/dist/devices-hap/waterdetector.d.ts.map +1 -0
  133. package/dist/devices-hap/waterdetector.js.map +1 -0
  134. package/dist/devices-matter/BaseMatterAccessory.d.ts +63 -0
  135. package/dist/devices-matter/BaseMatterAccessory.d.ts.map +1 -0
  136. package/dist/devices-matter/BaseMatterAccessory.js +100 -0
  137. package/dist/devices-matter/BaseMatterAccessory.js.map +1 -0
  138. package/dist/devices-matter/ColorLightAccessory.d.ts +18 -0
  139. package/dist/devices-matter/ColorLightAccessory.d.ts.map +1 -0
  140. package/dist/devices-matter/ColorLightAccessory.js +96 -0
  141. package/dist/devices-matter/ColorLightAccessory.js.map +1 -0
  142. package/dist/devices-matter/ColorTemperatureLightAccessory.d.ts +16 -0
  143. package/dist/devices-matter/ColorTemperatureLightAccessory.d.ts.map +1 -0
  144. package/dist/devices-matter/ColorTemperatureLightAccessory.js +83 -0
  145. package/dist/devices-matter/ColorTemperatureLightAccessory.js.map +1 -0
  146. package/dist/devices-matter/ContactSensorAccessory.d.ts +10 -0
  147. package/dist/devices-matter/ContactSensorAccessory.d.ts.map +1 -0
  148. package/dist/devices-matter/ContactSensorAccessory.js +31 -0
  149. package/dist/devices-matter/ContactSensorAccessory.js.map +1 -0
  150. package/dist/devices-matter/DimmableLightAccessory.d.ts +56 -0
  151. package/dist/devices-matter/DimmableLightAccessory.d.ts.map +1 -0
  152. package/dist/devices-matter/DimmableLightAccessory.js +170 -0
  153. package/dist/devices-matter/DimmableLightAccessory.js.map +1 -0
  154. package/dist/devices-matter/DoorLockAccessory.d.ts +12 -0
  155. package/dist/devices-matter/DoorLockAccessory.d.ts.map +1 -0
  156. package/dist/devices-matter/DoorLockAccessory.js +47 -0
  157. package/dist/devices-matter/DoorLockAccessory.js.map +1 -0
  158. package/dist/devices-matter/ExtendedColorLightAccessory.d.ts +19 -0
  159. package/dist/devices-matter/ExtendedColorLightAccessory.d.ts.map +1 -0
  160. package/dist/devices-matter/ExtendedColorLightAccessory.js +108 -0
  161. package/dist/devices-matter/ExtendedColorLightAccessory.js.map +1 -0
  162. package/dist/devices-matter/FanAccessory.d.ts +14 -0
  163. package/dist/devices-matter/FanAccessory.d.ts.map +1 -0
  164. package/dist/devices-matter/FanAccessory.js +73 -0
  165. package/dist/devices-matter/FanAccessory.js.map +1 -0
  166. package/dist/devices-matter/HumiditySensorAccessory.d.ts +10 -0
  167. package/dist/devices-matter/HumiditySensorAccessory.d.ts.map +1 -0
  168. package/dist/devices-matter/HumiditySensorAccessory.js +33 -0
  169. package/dist/devices-matter/HumiditySensorAccessory.js.map +1 -0
  170. package/dist/devices-matter/LeakSensorAccessory.d.ts +10 -0
  171. package/dist/devices-matter/LeakSensorAccessory.d.ts.map +1 -0
  172. package/dist/devices-matter/LeakSensorAccessory.js +30 -0
  173. package/dist/devices-matter/LeakSensorAccessory.js.map +1 -0
  174. package/dist/devices-matter/LightSensorAccessory.d.ts +10 -0
  175. package/dist/devices-matter/LightSensorAccessory.d.ts.map +1 -0
  176. package/dist/devices-matter/LightSensorAccessory.js +33 -0
  177. package/dist/devices-matter/LightSensorAccessory.js.map +1 -0
  178. package/dist/devices-matter/OccupancySensorAccessory.d.ts +10 -0
  179. package/dist/devices-matter/OccupancySensorAccessory.d.ts.map +1 -0
  180. package/dist/devices-matter/OccupancySensorAccessory.js +43 -0
  181. package/dist/devices-matter/OccupancySensorAccessory.js.map +1 -0
  182. package/dist/devices-matter/OnOffLightAccessory.d.ts +36 -0
  183. package/dist/devices-matter/OnOffLightAccessory.d.ts.map +1 -0
  184. package/dist/devices-matter/OnOffLightAccessory.js +117 -0
  185. package/dist/devices-matter/OnOffLightAccessory.js.map +1 -0
  186. package/dist/devices-matter/OnOffOutletAccessory.d.ts +12 -0
  187. package/dist/devices-matter/OnOffOutletAccessory.d.ts.map +1 -0
  188. package/dist/devices-matter/OnOffOutletAccessory.js +43 -0
  189. package/dist/devices-matter/OnOffOutletAccessory.js.map +1 -0
  190. package/dist/devices-matter/OnOffSwitchAccessory.d.ts +12 -0
  191. package/dist/devices-matter/OnOffSwitchAccessory.d.ts.map +1 -0
  192. package/dist/devices-matter/OnOffSwitchAccessory.js +43 -0
  193. package/dist/devices-matter/OnOffSwitchAccessory.js.map +1 -0
  194. package/dist/devices-matter/RoboticVacuumAccessory.d.ts +66 -0
  195. package/dist/devices-matter/RoboticVacuumAccessory.d.ts.map +1 -0
  196. package/dist/devices-matter/RoboticVacuumAccessory.js +402 -0
  197. package/dist/devices-matter/RoboticVacuumAccessory.js.map +1 -0
  198. package/dist/devices-matter/SmokeCOAlarmAccessory.d.ts +11 -0
  199. package/dist/devices-matter/SmokeCOAlarmAccessory.d.ts.map +1 -0
  200. package/dist/devices-matter/SmokeCOAlarmAccessory.js +49 -0
  201. package/dist/devices-matter/SmokeCOAlarmAccessory.js.map +1 -0
  202. package/dist/devices-matter/TemperatureSensorAccessory.d.ts +10 -0
  203. package/dist/devices-matter/TemperatureSensorAccessory.d.ts.map +1 -0
  204. package/dist/devices-matter/TemperatureSensorAccessory.js +33 -0
  205. package/dist/devices-matter/TemperatureSensorAccessory.js.map +1 -0
  206. package/dist/devices-matter/ThermostatAccessory.d.ts +17 -0
  207. package/dist/devices-matter/ThermostatAccessory.d.ts.map +1 -0
  208. package/dist/devices-matter/ThermostatAccessory.js +87 -0
  209. package/dist/devices-matter/ThermostatAccessory.js.map +1 -0
  210. package/dist/devices-matter/VenetianBlindAccessory.d.ts +17 -0
  211. package/dist/devices-matter/VenetianBlindAccessory.d.ts.map +1 -0
  212. package/dist/devices-matter/VenetianBlindAccessory.js +100 -0
  213. package/dist/devices-matter/VenetianBlindAccessory.js.map +1 -0
  214. package/dist/devices-matter/WindowBlindAccessory.d.ts +15 -0
  215. package/dist/devices-matter/WindowBlindAccessory.d.ts.map +1 -0
  216. package/dist/devices-matter/WindowBlindAccessory.js +81 -0
  217. package/dist/devices-matter/WindowBlindAccessory.js.map +1 -0
  218. package/dist/devices-matter/custom/PowerStripAccessory.d.ts +97 -0
  219. package/dist/devices-matter/custom/PowerStripAccessory.d.ts.map +1 -0
  220. package/dist/devices-matter/custom/PowerStripAccessory.js +265 -0
  221. package/dist/devices-matter/custom/PowerStripAccessory.js.map +1 -0
  222. package/dist/devices-matter/custom/index.d.ts +8 -0
  223. package/dist/devices-matter/custom/index.d.ts.map +1 -0
  224. package/dist/devices-matter/custom/index.js +8 -0
  225. package/dist/devices-matter/custom/index.js.map +1 -0
  226. package/dist/devices-matter/index.d.ts +29 -0
  227. package/dist/devices-matter/index.d.ts.map +1 -0
  228. package/dist/devices-matter/index.js +28 -0
  229. package/dist/devices-matter/index.js.map +1 -0
  230. package/dist/homebridge-ui/public/index.html +1 -1
  231. package/dist/index.d.ts.map +1 -1
  232. package/dist/index.js +7 -2
  233. package/dist/index.js.map +1 -1
  234. package/dist/index.test.js +2 -2
  235. package/dist/index.test.js.map +1 -1
  236. package/dist/irdevice/airconditioner.d.ts +3 -3
  237. package/dist/irdevice/airconditioner.d.ts.map +1 -1
  238. package/dist/irdevice/airconditioner.js.map +1 -1
  239. package/dist/irdevice/airpurifier.d.ts +3 -3
  240. package/dist/irdevice/airpurifier.d.ts.map +1 -1
  241. package/dist/irdevice/airpurifier.js.map +1 -1
  242. package/dist/irdevice/camera.d.ts +3 -3
  243. package/dist/irdevice/camera.d.ts.map +1 -1
  244. package/dist/irdevice/camera.js.map +1 -1
  245. package/dist/irdevice/fan.d.ts +3 -3
  246. package/dist/irdevice/fan.d.ts.map +1 -1
  247. package/dist/irdevice/fan.js.map +1 -1
  248. package/dist/irdevice/irdevice.d.ts +3 -3
  249. package/dist/irdevice/irdevice.d.ts.map +1 -1
  250. package/dist/irdevice/irdevice.js.map +1 -1
  251. package/dist/irdevice/light.d.ts +3 -3
  252. package/dist/irdevice/light.d.ts.map +1 -1
  253. package/dist/irdevice/light.js.map +1 -1
  254. package/dist/irdevice/other.d.ts +3 -3
  255. package/dist/irdevice/other.d.ts.map +1 -1
  256. package/dist/irdevice/other.js.map +1 -1
  257. package/dist/irdevice/tv.d.ts +3 -3
  258. package/dist/irdevice/tv.d.ts.map +1 -1
  259. package/dist/irdevice/tv.js.map +1 -1
  260. package/dist/irdevice/vacuumcleaner.d.ts +3 -3
  261. package/dist/irdevice/vacuumcleaner.d.ts.map +1 -1
  262. package/dist/irdevice/vacuumcleaner.js.map +1 -1
  263. package/dist/irdevice/waterheater.d.ts +3 -3
  264. package/dist/irdevice/waterheater.d.ts.map +1 -1
  265. package/dist/irdevice/waterheater.js.map +1 -1
  266. package/dist/{platform.d.ts → platform-hap.d.ts} +2 -2
  267. package/dist/platform-hap.d.ts.map +1 -0
  268. package/dist/{platform.js → platform-hap.js} +50 -32
  269. package/dist/platform-hap.js.map +1 -0
  270. package/dist/platform-matter.d.ts +75 -0
  271. package/dist/platform-matter.d.ts.map +1 -0
  272. package/dist/platform-matter.js +379 -0
  273. package/dist/platform-matter.js.map +1 -0
  274. package/dist/utils.d.ts +5 -0
  275. package/dist/utils.d.ts.map +1 -1
  276. package/dist/utils.js +43 -0
  277. package/dist/utils.js.map +1 -1
  278. package/dist/verifyconfig.test.d.ts +2 -0
  279. package/dist/verifyconfig.test.d.ts.map +1 -0
  280. package/dist/verifyconfig.test.js +167 -0
  281. package/dist/verifyconfig.test.js.map +1 -0
  282. package/docs/index.html +20 -11
  283. package/docs/variables/default.html +1 -1
  284. package/package.json +7 -7
  285. package/src/{device → devices-hap}/airpurifier.ts +2 -2
  286. package/src/{device → devices-hap}/blindtilt.ts +7 -3
  287. package/src/{device → devices-hap}/bot.ts +2 -2
  288. package/src/{device → devices-hap}/ceilinglight.ts +2 -2
  289. package/src/{device → devices-hap}/colorbulb.ts +2 -2
  290. package/src/{device → devices-hap}/contact.ts +2 -2
  291. package/src/{device → devices-hap}/curtain.ts +32 -10
  292. package/src/{device → devices-hap}/device.ts +12 -6
  293. package/src/{device → devices-hap}/fan.ts +2 -2
  294. package/src/{device → devices-hap}/hub.ts +7 -6
  295. package/src/{device → devices-hap}/humidifier.ts +2 -2
  296. package/src/{device → devices-hap}/iosensor.ts +2 -2
  297. package/src/{device → devices-hap}/lightstrip.ts +2 -2
  298. package/src/{device → devices-hap}/lock.ts +2 -2
  299. package/src/{device → devices-hap}/meter.ts +2 -2
  300. package/src/{device → devices-hap}/meterplus.ts +2 -2
  301. package/src/{device → devices-hap}/meterpro.ts +18 -5
  302. package/src/{device → devices-hap}/motion.ts +2 -2
  303. package/src/{device → devices-hap}/plug.ts +2 -2
  304. package/src/{device → devices-hap}/relayswitch.ts +2 -2
  305. package/src/{device → devices-hap}/robotvacuumcleaner.ts +2 -2
  306. package/src/{device → devices-hap}/waterdetector.ts +2 -2
  307. package/src/devices-matter/BaseMatterAccessory.ts +131 -0
  308. package/src/devices-matter/ColorLightAccessory.ts +113 -0
  309. package/src/devices-matter/ColorTemperatureLightAccessory.ts +98 -0
  310. package/src/devices-matter/ContactSensorAccessory.ts +37 -0
  311. package/src/devices-matter/DimmableLightAccessory.ts +196 -0
  312. package/src/devices-matter/DoorLockAccessory.ts +56 -0
  313. package/src/devices-matter/ExtendedColorLightAccessory.ts +127 -0
  314. package/src/devices-matter/FanAccessory.ts +87 -0
  315. package/src/devices-matter/HumiditySensorAccessory.ts +39 -0
  316. package/src/devices-matter/LeakSensorAccessory.ts +36 -0
  317. package/src/devices-matter/LightSensorAccessory.ts +39 -0
  318. package/src/devices-matter/OccupancySensorAccessory.ts +52 -0
  319. package/src/devices-matter/OnOffLightAccessory.ts +133 -0
  320. package/src/devices-matter/OnOffOutletAccessory.ts +52 -0
  321. package/src/devices-matter/OnOffSwitchAccessory.ts +52 -0
  322. package/src/devices-matter/RoboticVacuumAccessory.ts +484 -0
  323. package/src/devices-matter/SmokeCOAlarmAccessory.ts +59 -0
  324. package/src/devices-matter/TemperatureSensorAccessory.ts +39 -0
  325. package/src/devices-matter/ThermostatAccessory.ts +105 -0
  326. package/src/devices-matter/VenetianBlindAccessory.ts +118 -0
  327. package/src/devices-matter/WindowBlindAccessory.ts +94 -0
  328. package/src/devices-matter/custom/PowerStripAccessory.ts +309 -0
  329. package/src/devices-matter/custom/index.ts +8 -0
  330. package/src/devices-matter/index.ts +29 -0
  331. package/src/homebridge-ui/public/index.html +1 -1
  332. package/src/index.test.ts +2 -2
  333. package/src/index.ts +7 -2
  334. package/src/irdevice/airconditioner.ts +2 -2
  335. package/src/irdevice/airpurifier.ts +2 -2
  336. package/src/irdevice/camera.ts +2 -2
  337. package/src/irdevice/fan.ts +2 -2
  338. package/src/irdevice/irdevice.ts +2 -2
  339. package/src/irdevice/light.ts +2 -2
  340. package/src/irdevice/other.ts +2 -2
  341. package/src/irdevice/tv.ts +2 -2
  342. package/src/irdevice/vacuumcleaner.ts +2 -2
  343. package/src/irdevice/waterheater.ts +2 -2
  344. package/src/{platform.ts → platform-hap.ts} +47 -31
  345. package/src/platform-matter.ts +465 -0
  346. package/src/utils.ts +49 -0
  347. package/src/verifyconfig.test.ts +197 -0
  348. package/tsconfig.json +2 -1
  349. package/typedoc.json +1 -0
  350. package/.github/workflows/build.yml +0 -18
  351. package/.github/workflows/changerelease.yml +0 -11
  352. package/.github/workflows/labeler.yml +0 -16
  353. package/.github/workflows/release-drafter.yml +0 -14
  354. package/dist/device/airpurifier.d.ts.map +0 -1
  355. package/dist/device/airpurifier.js.map +0 -1
  356. package/dist/device/blindtilt.d.ts.map +0 -1
  357. package/dist/device/blindtilt.js.map +0 -1
  358. package/dist/device/bot.d.ts.map +0 -1
  359. package/dist/device/bot.js.map +0 -1
  360. package/dist/device/ceilinglight.d.ts.map +0 -1
  361. package/dist/device/ceilinglight.js.map +0 -1
  362. package/dist/device/colorbulb.d.ts.map +0 -1
  363. package/dist/device/colorbulb.js.map +0 -1
  364. package/dist/device/contact.d.ts.map +0 -1
  365. package/dist/device/contact.js.map +0 -1
  366. package/dist/device/curtain.d.ts.map +0 -1
  367. package/dist/device/curtain.js.map +0 -1
  368. package/dist/device/device.d.ts.map +0 -1
  369. package/dist/device/device.js.map +0 -1
  370. package/dist/device/fan.d.ts.map +0 -1
  371. package/dist/device/fan.js.map +0 -1
  372. package/dist/device/hub.d.ts.map +0 -1
  373. package/dist/device/hub.js.map +0 -1
  374. package/dist/device/humidifier.d.ts.map +0 -1
  375. package/dist/device/humidifier.js.map +0 -1
  376. package/dist/device/iosensor.d.ts.map +0 -1
  377. package/dist/device/iosensor.js.map +0 -1
  378. package/dist/device/lightstrip.d.ts.map +0 -1
  379. package/dist/device/lightstrip.js.map +0 -1
  380. package/dist/device/lock.d.ts.map +0 -1
  381. package/dist/device/lock.js.map +0 -1
  382. package/dist/device/meter.d.ts.map +0 -1
  383. package/dist/device/meter.js.map +0 -1
  384. package/dist/device/meterplus.d.ts.map +0 -1
  385. package/dist/device/meterplus.js.map +0 -1
  386. package/dist/device/meterpro.d.ts.map +0 -1
  387. package/dist/device/meterpro.js.map +0 -1
  388. package/dist/device/motion.d.ts.map +0 -1
  389. package/dist/device/motion.js.map +0 -1
  390. package/dist/device/plug.d.ts.map +0 -1
  391. package/dist/device/plug.js.map +0 -1
  392. package/dist/device/relayswitch.d.ts.map +0 -1
  393. package/dist/device/relayswitch.js.map +0 -1
  394. package/dist/device/robotvacuumcleaner.d.ts.map +0 -1
  395. package/dist/device/robotvacuumcleaner.js.map +0 -1
  396. package/dist/device/waterdetector.d.ts.map +0 -1
  397. package/dist/device/waterdetector.js.map +0 -1
  398. package/dist/platform.d.ts.map +0 -1
  399. package/dist/platform.js.map +0 -1
  400. /package/dist/{device → devices-hap}/airpurifier.js +0 -0
  401. /package/dist/{device → devices-hap}/bot.js +0 -0
  402. /package/dist/{device → devices-hap}/ceilinglight.js +0 -0
  403. /package/dist/{device → devices-hap}/colorbulb.js +0 -0
  404. /package/dist/{device → devices-hap}/contact.js +0 -0
  405. /package/dist/{device → devices-hap}/fan.js +0 -0
  406. /package/dist/{device → devices-hap}/humidifier.js +0 -0
  407. /package/dist/{device → devices-hap}/iosensor.js +0 -0
  408. /package/dist/{device → devices-hap}/lightstrip.js +0 -0
  409. /package/dist/{device → devices-hap}/lock.js +0 -0
  410. /package/dist/{device → devices-hap}/meter.js +0 -0
  411. /package/dist/{device → devices-hap}/meterplus.js +0 -0
  412. /package/dist/{device → devices-hap}/motion.js +0 -0
  413. /package/dist/{device → devices-hap}/plug.js +0 -0
  414. /package/dist/{device → devices-hap}/relayswitch.js +0 -0
  415. /package/dist/{device → devices-hap}/robotvacuumcleaner.js +0 -0
  416. /package/dist/{device → devices-hap}/waterdetector.js +0 -0
@@ -5,7 +5,7 @@
5
5
  import type { API, CharacteristicValue, HAP, Logging, PlatformAccessory, Service } from 'homebridge'
6
6
  import type { bodyChange, irdevice } from 'node-switchbot'
7
7
 
8
- import type { SwitchBotPlatform } from '../platform.js'
8
+ import type { SwitchBotHAPPlatform } from '../platform-hap.js'
9
9
  import type { irAirConfig, irDevicesConfig, irFanConfig, irLightConfig, irOtherConfig, SwitchBotPlatformConfig } from '../settings.js'
10
10
 
11
11
  export abstract class irdeviceBase {
@@ -26,7 +26,7 @@ export abstract class irdeviceBase {
26
26
  protected deviceDisablePushDetail?: boolean
27
27
 
28
28
  constructor(
29
- protected readonly platform: SwitchBotPlatform,
29
+ protected readonly platform: SwitchBotHAPPlatform,
30
30
  protected accessory: PlatformAccessory,
31
31
  protected device: irdevice & irDevicesConfig,
32
32
  ) {
@@ -5,7 +5,7 @@
5
5
  import type { CharacteristicValue, PlatformAccessory, Service } from 'homebridge'
6
6
  import type { bodyChange, irdevice } from 'node-switchbot'
7
7
 
8
- import type { SwitchBotPlatform } from '../platform.js'
8
+ import type { SwitchBotHAPPlatform } from '../platform-hap.js'
9
9
  import type { irDevicesConfig, irLightConfig } from '../settings.js'
10
10
 
11
11
  import { irdeviceBase } from './irdevice.js'
@@ -38,7 +38,7 @@ export class Light extends irdeviceBase {
38
38
  }
39
39
 
40
40
  constructor(
41
- readonly platform: SwitchBotPlatform,
41
+ readonly platform: SwitchBotHAPPlatform,
42
42
  accessory: PlatformAccessory,
43
43
  device: irdevice & irDevicesConfig,
44
44
  ) {
@@ -5,7 +5,7 @@
5
5
  import type { CharacteristicValue, PlatformAccessory, Service } from 'homebridge'
6
6
  import type { bodyChange, irdevice } from 'node-switchbot'
7
7
 
8
- import type { SwitchBotPlatform } from '../platform.js'
8
+ import type { SwitchBotHAPPlatform } from '../platform-hap.js'
9
9
  import type { irDevicesConfig, irOtherConfig } from '../settings.js'
10
10
 
11
11
  import { irdeviceBase } from './irdevice.js'
@@ -73,7 +73,7 @@ export class Others extends irdeviceBase {
73
73
  otherDeviceType?: string
74
74
 
75
75
  constructor(
76
- readonly platform: SwitchBotPlatform,
76
+ readonly platform: SwitchBotHAPPlatform,
77
77
  accessory: PlatformAccessory,
78
78
  device: irdevice & irDevicesConfig,
79
79
  ) {
@@ -5,7 +5,7 @@
5
5
  import type { CharacteristicValue, PlatformAccessory, Service } from 'homebridge'
6
6
  import type { bodyChange, irdevice } from 'node-switchbot'
7
7
 
8
- import type { SwitchBotPlatform } from '../platform.js'
8
+ import type { SwitchBotHAPPlatform } from '../platform-hap.js'
9
9
  import type { irDevicesConfig } from '../settings.js'
10
10
 
11
11
  import { irdeviceBase } from './irdevice.js'
@@ -38,7 +38,7 @@ export class TV extends irdeviceBase {
38
38
  // Characteristic Values
39
39
 
40
40
  constructor(
41
- readonly platform: SwitchBotPlatform,
41
+ readonly platform: SwitchBotHAPPlatform,
42
42
  accessory: PlatformAccessory,
43
43
  device: irdevice & irDevicesConfig,
44
44
  ) {
@@ -5,7 +5,7 @@
5
5
  import type { CharacteristicValue, PlatformAccessory, Service } from 'homebridge'
6
6
  import type { bodyChange, irdevice } from 'node-switchbot'
7
7
 
8
- import type { SwitchBotPlatform } from '../platform.js'
8
+ import type { SwitchBotHAPPlatform } from '../platform-hap.js'
9
9
  import type { irDevicesConfig } from '../settings.js'
10
10
 
11
11
  import { irdeviceBase } from './irdevice.js'
@@ -24,7 +24,7 @@ export class VacuumCleaner extends irdeviceBase {
24
24
  }
25
25
 
26
26
  constructor(
27
- readonly platform: SwitchBotPlatform,
27
+ readonly platform: SwitchBotHAPPlatform,
28
28
  accessory: PlatformAccessory,
29
29
  device: irdevice & irDevicesConfig,
30
30
  ) {
@@ -5,7 +5,7 @@
5
5
  import type { CharacteristicValue, PlatformAccessory, Service } from 'homebridge'
6
6
  import type { bodyChange, irdevice } from 'node-switchbot'
7
7
 
8
- import type { SwitchBotPlatform } from '../platform.js'
8
+ import type { SwitchBotHAPPlatform } from '../platform-hap.js'
9
9
  import type { irDevicesConfig } from '../settings.js'
10
10
 
11
11
  import { irdeviceBase } from './irdevice.js'
@@ -24,7 +24,7 @@ export class WaterHeater extends irdeviceBase {
24
24
  }
25
25
 
26
26
  constructor(
27
- readonly platform: SwitchBotPlatform,
27
+ readonly platform: SwitchBotHAPPlatform,
28
28
  accessory: PlatformAccessory,
29
29
  device: irdevice & irDevicesConfig,
30
30
  ) {
@@ -24,27 +24,27 @@ import { EveHomeKitTypes } from 'homebridge-lib/EveHomeKitTypes'
24
24
  import { LogLevel, SwitchBotBLE, SwitchBotModel, SwitchBotOpenAPI } from 'node-switchbot'
25
25
  import { queueScheduler } from 'rxjs'
26
26
 
27
- import { AirPurifier } from './device/airpurifier.js'
28
- import { BlindTilt } from './device/blindtilt.js'
29
- import { Bot } from './device/bot.js'
30
- import { CeilingLight } from './device/ceilinglight.js'
31
- import { ColorBulb } from './device/colorbulb.js'
32
- import { Contact } from './device/contact.js'
33
- import { Curtain } from './device/curtain.js'
34
- import { Fan } from './device/fan.js'
35
- import { Hub } from './device/hub.js'
36
- import { Humidifier } from './device/humidifier.js'
37
- import { IOSensor } from './device/iosensor.js'
38
- import { StripLight } from './device/lightstrip.js'
39
- import { Lock } from './device/lock.js'
40
- import { Meter } from './device/meter.js'
41
- import { MeterPlus } from './device/meterplus.js'
42
- import { MeterPro } from './device/meterpro.js'
43
- import { Motion } from './device/motion.js'
44
- import { Plug } from './device/plug.js'
45
- import { RelaySwitch } from './device/relayswitch.js'
46
- import { RobotVacuumCleaner } from './device/robotvacuumcleaner.js'
47
- import { WaterDetector } from './device/waterdetector.js'
27
+ import { AirPurifier } from './devices-hap/airpurifier.js'
28
+ import { BlindTilt } from './devices-hap/blindtilt.js'
29
+ import { Bot } from './devices-hap/bot.js'
30
+ import { CeilingLight } from './devices-hap/ceilinglight.js'
31
+ import { ColorBulb } from './devices-hap/colorbulb.js'
32
+ import { Contact } from './devices-hap/contact.js'
33
+ import { Curtain } from './devices-hap/curtain.js'
34
+ import { Fan } from './devices-hap/fan.js'
35
+ import { Hub } from './devices-hap/hub.js'
36
+ import { Humidifier } from './devices-hap/humidifier.js'
37
+ import { IOSensor } from './devices-hap/iosensor.js'
38
+ import { StripLight } from './devices-hap/lightstrip.js'
39
+ import { Lock } from './devices-hap/lock.js'
40
+ import { Meter } from './devices-hap/meter.js'
41
+ import { MeterPlus } from './devices-hap/meterplus.js'
42
+ import { MeterPro } from './devices-hap/meterpro.js'
43
+ import { Motion } from './devices-hap/motion.js'
44
+ import { Plug } from './devices-hap/plug.js'
45
+ import { RelaySwitch } from './devices-hap/relayswitch.js'
46
+ import { RobotVacuumCleaner } from './devices-hap/robotvacuumcleaner.js'
47
+ import { WaterDetector } from './devices-hap/waterdetector.js'
48
48
  import { AirConditioner } from './irdevice/airconditioner.js'
49
49
  import { AirPurifierIR } from './irdevice/airpurifier.js'
50
50
  import { Camera } from './irdevice/camera.js'
@@ -55,14 +55,14 @@ import { TV } from './irdevice/tv.js'
55
55
  import { VacuumCleaner } from './irdevice/vacuumcleaner.js'
56
56
  import { WaterHeater } from './irdevice/waterheater.js'
57
57
  import { PLATFORM_NAME, PLUGIN_NAME } from './settings.js'
58
- import { formatDeviceIdAsMac, isBlindTiltDevice, isCurtainDevice, safeStringify, sleep } from './utils.js'
58
+ import { cleanDeviceConfig, formatDeviceIdAsMac, isBlindTiltDevice, isCurtainDevice, safeStringify, sleep } from './utils.js'
59
59
 
60
60
  /**
61
61
  * HomebridgePlatform
62
62
  * This class is the main constructor for your plugin, this is where you should
63
63
  * parse the user config and discover/register accessories with Homebridge.
64
64
  */
65
- export class SwitchBotPlatform implements DynamicPlatformPlugin {
65
+ export class SwitchBotHAPPlatform implements DynamicPlatformPlugin {
66
66
  // Platform properties
67
67
  public accessories: PlatformAccessory[] = []
68
68
  public readonly api: API
@@ -119,6 +119,21 @@ export class SwitchBotPlatform implements DynamicPlatformPlugin {
119
119
  devices: config.devices as { deviceId: string }[],
120
120
  }
121
121
 
122
+ // Normalize deviceConfig to remove UI-inserted defaults (lots of false/empty values)
123
+ try {
124
+ if ((this.config as any).options) {
125
+ const cleaned = cleanDeviceConfig((this.config as any).options.deviceConfig)
126
+ if (cleaned) {
127
+ ;(this.config as any).options.deviceConfig = cleaned
128
+ } else {
129
+ // remove the empty deviceConfig so downstream checks treat it as absent
130
+ delete (this.config as any).options.deviceConfig
131
+ }
132
+ }
133
+ } catch (e) {
134
+ this.debugErrorLog(`Failed to clean deviceConfig: ${e}`)
135
+ }
136
+
122
137
  // Plugin Configuration
123
138
  this.getPlatformLogSettings()
124
139
  this.getPlatformRateSettings()
@@ -233,7 +248,7 @@ export class SwitchBotPlatform implements DynamicPlatformPlugin {
233
248
  const context = JSON.parse(message.toString())
234
249
  this.webhookEventHandler[context.deviceMac]?.(context)
235
250
  } catch (e: any) {
236
- this.errorLog(`Failed to handle webhook event. Error:${e.message ?? e}`)
251
+ this.errorLog(`Failed to handle webhook event. Error: ${e.message ?? e}`)
237
252
  }
238
253
  })
239
254
  }
@@ -260,14 +275,14 @@ export class SwitchBotPlatform implements DynamicPlatformPlugin {
260
275
  this.webhookEventHandler[body.context.deviceMac]?.(body.context)
261
276
  })
262
277
  } catch (e: any) {
263
- this.errorLog(`Failed to setup webhook. Error:${e.message ?? e}`)
278
+ this.errorLog(`Failed to setup webhook. Error: ${e.message ?? e}`)
264
279
  }
265
280
 
266
281
  this.api.on('shutdown', async () => {
267
282
  try {
268
283
  this.switchBotAPI.deleteWebhook(url)
269
284
  } catch (e: any) {
270
- this.errorLog(`Failed to delete webhook. Error:${e.message ?? e}`)
285
+ this.errorLog(`Failed to delete webhook. Error: ${e.message ?? e}`)
271
286
  }
272
287
  })
273
288
  }
@@ -318,14 +333,14 @@ export class SwitchBotPlatform implements DynamicPlatformPlugin {
318
333
  try {
319
334
  await this.switchBotBLE.startScan()
320
335
  } catch (e: any) {
321
- this.errorLog(`Failed to start BLE scanning. Error:${e.message ?? e}`)
336
+ this.errorLog(`Failed to start BLE scanning. Error: ${e.message ?? e}`)
322
337
  }
323
338
  // Set an event handler to monitor advertisement packets
324
339
  this.switchBotBLE.onadvertisement = async (ad: any) => {
325
340
  try {
326
341
  this.bleEventHandler[ad.address]?.(ad.serviceData)
327
342
  } catch (e: any) {
328
- this.errorLog(`Failed to handle BLE event. Error:${e.message ?? e}`)
343
+ this.errorLog(`Failed to handle BLE event. Error: ${e.message ?? e}`)
329
344
  }
330
345
  }
331
346
  })()
@@ -335,7 +350,7 @@ export class SwitchBotPlatform implements DynamicPlatformPlugin {
335
350
  // this.switchBotBLE.stopScan()
336
351
  this.infoLog('Stopped BLE scanning to close listening.')
337
352
  } catch (e: any) {
338
- this.errorLog(`Failed to stop Platform BLE scanning. Error:${e.message ?? e}`)
353
+ this.errorLog(`Failed to stop Platform BLE scanning. Error: ${e.message ?? e}`)
339
354
  }
340
355
  })
341
356
  }
@@ -370,10 +385,10 @@ export class SwitchBotPlatform implements DynamicPlatformPlugin {
370
385
  for (const deviceConfig of this.config.options.devices) {
371
386
  if (!deviceConfig.hide_device) {
372
387
  if (!deviceConfig.deviceId) {
373
- throw new Error('The devices config section is missing the *Device ID* in the config. Please check your config.')
388
+ this.errorLog('The devices config section is missing the *Device ID* in the config. Please check your config.')
374
389
  }
375
390
  if (!deviceConfig.configDeviceType && (deviceConfig as devicesConfig).connectionType) {
376
- throw new Error('The devices config section is missing the *Device Type* in the config. Please check your config.')
391
+ this.errorLog('The devices config section is missing the *Device Type* in the config. Please check your config.')
377
392
  }
378
393
  }
379
394
  }
@@ -583,6 +598,7 @@ export class SwitchBotPlatform implements DynamicPlatformPlugin {
583
598
  'Humidifier': this.createHumidifier.bind(this),
584
599
  'Humidifier2': this.createHumidifier.bind(this),
585
600
  'Hub 2': this.createHub2.bind(this),
601
+ 'Hub 3': this.createHub2.bind(this),
586
602
  'Bot': this.createBot.bind(this),
587
603
  'Relay Switch 1': this.createRelaySwitch.bind(this),
588
604
  'Relay Switch 1PM': this.createRelaySwitch.bind(this),