amaran-light-cli 1.11.0 → 1.12.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 (363) hide show
  1. package/README.md +108 -14
  2. package/dist/__tests__/autoCct.test.js +27 -0
  3. package/dist/__tests__/autoCct.test.js.map +1 -1
  4. package/dist/__tests__/bleHttpControl.test.d.ts +2 -0
  5. package/dist/__tests__/bleHttpControl.test.d.ts.map +1 -0
  6. package/dist/__tests__/bleHttpControl.test.js +230 -0
  7. package/dist/__tests__/bleHttpControl.test.js.map +1 -0
  8. package/dist/__tests__/bleStack.test.d.ts +2 -0
  9. package/dist/__tests__/bleStack.test.d.ts.map +1 -0
  10. package/dist/__tests__/bleStack.test.js +1239 -0
  11. package/dist/__tests__/bleStack.test.js.map +1 -0
  12. package/dist/__tests__/cctUtil.test.js +9 -4
  13. package/dist/__tests__/cctUtil.test.js.map +1 -1
  14. package/dist/__tests__/circadianDashboardSettings.test.d.ts +2 -0
  15. package/dist/__tests__/circadianDashboardSettings.test.d.ts.map +1 -0
  16. package/dist/__tests__/circadianDashboardSettings.test.js +82 -0
  17. package/dist/__tests__/circadianDashboardSettings.test.js.map +1 -0
  18. package/dist/__tests__/circadianIsolation.test.d.ts +2 -0
  19. package/dist/__tests__/circadianIsolation.test.d.ts.map +1 -0
  20. package/dist/__tests__/circadianIsolation.test.js +30 -0
  21. package/dist/__tests__/circadianIsolation.test.js.map +1 -0
  22. package/dist/__tests__/cli.config.test.js +49 -0
  23. package/dist/__tests__/cli.config.test.js.map +1 -1
  24. package/dist/__tests__/cli.smoke.test.js +34 -0
  25. package/dist/__tests__/cli.smoke.test.js.map +1 -1
  26. package/dist/__tests__/currentCct.test.d.ts +2 -0
  27. package/dist/__tests__/currentCct.test.d.ts.map +1 -0
  28. package/dist/__tests__/currentCct.test.js +29 -0
  29. package/dist/__tests__/currentCct.test.js.map +1 -0
  30. package/dist/__tests__/dashboard.test.d.ts +2 -0
  31. package/dist/__tests__/dashboard.test.d.ts.map +1 -0
  32. package/dist/__tests__/dashboard.test.js +126 -0
  33. package/dist/__tests__/dashboard.test.js.map +1 -0
  34. package/dist/__tests__/daylightSimulationParseUtils.test.d.ts +2 -0
  35. package/dist/__tests__/daylightSimulationParseUtils.test.d.ts.map +1 -0
  36. package/dist/__tests__/daylightSimulationParseUtils.test.js +16 -0
  37. package/dist/__tests__/daylightSimulationParseUtils.test.js.map +1 -0
  38. package/dist/__tests__/desktopImport.test.d.ts +2 -0
  39. package/dist/__tests__/desktopImport.test.d.ts.map +1 -0
  40. package/dist/__tests__/desktopImport.test.js +234 -0
  41. package/dist/__tests__/desktopImport.test.js.map +1 -0
  42. package/dist/__tests__/lightControl.basic.test.d.ts +2 -0
  43. package/dist/__tests__/lightControl.basic.test.d.ts.map +1 -0
  44. package/dist/__tests__/lightControl.basic.test.js +119 -0
  45. package/dist/__tests__/lightControl.basic.test.js.map +1 -0
  46. package/dist/__tests__/lightControl.colorEffects.test.d.ts +2 -0
  47. package/dist/__tests__/lightControl.colorEffects.test.d.ts.map +1 -0
  48. package/dist/__tests__/lightControl.colorEffects.test.js +170 -0
  49. package/dist/__tests__/lightControl.colorEffects.test.js.map +1 -0
  50. package/dist/__tests__/lightControl.management.test.d.ts +2 -0
  51. package/dist/__tests__/lightControl.management.test.d.ts.map +1 -0
  52. package/dist/__tests__/lightControl.management.test.js +90 -0
  53. package/dist/__tests__/lightControl.management.test.js.map +1 -0
  54. package/dist/__tests__/lightControlTestUtils.d.ts +10 -0
  55. package/dist/__tests__/lightControlTestUtils.d.ts.map +1 -0
  56. package/dist/__tests__/lightControlTestUtils.js +57 -0
  57. package/dist/__tests__/lightControlTestUtils.js.map +1 -0
  58. package/dist/__tests__/meshConfiguration.test.d.ts +2 -0
  59. package/dist/__tests__/meshConfiguration.test.d.ts.map +1 -0
  60. package/dist/__tests__/meshConfiguration.test.js +78 -0
  61. package/dist/__tests__/meshConfiguration.test.js.map +1 -0
  62. package/dist/__tests__/nativeGroups.test.d.ts +2 -0
  63. package/dist/__tests__/nativeGroups.test.d.ts.map +1 -0
  64. package/dist/__tests__/nativeGroups.test.js +104 -0
  65. package/dist/__tests__/nativeGroups.test.js.map +1 -0
  66. package/dist/__tests__/programApi.test.d.ts +2 -0
  67. package/dist/__tests__/programApi.test.d.ts.map +1 -0
  68. package/dist/__tests__/programApi.test.js +73 -0
  69. package/dist/__tests__/programApi.test.js.map +1 -0
  70. package/dist/__tests__/programs.test.d.ts +2 -0
  71. package/dist/__tests__/programs.test.d.ts.map +1 -0
  72. package/dist/__tests__/programs.test.js +176 -0
  73. package/dist/__tests__/programs.test.js.map +1 -0
  74. package/dist/__tests__/scheduleMaker.test.d.ts +2 -0
  75. package/dist/__tests__/scheduleMaker.test.d.ts.map +1 -0
  76. package/dist/__tests__/scheduleMaker.test.js +25 -0
  77. package/dist/__tests__/scheduleMaker.test.js.map +1 -0
  78. package/dist/ble/async.d.ts +2 -0
  79. package/dist/ble/async.d.ts.map +1 -0
  80. package/dist/ble/async.js +15 -0
  81. package/dist/ble/async.js.map +1 -0
  82. package/dist/ble/colors.d.ts +5 -0
  83. package/dist/ble/colors.d.ts.map +1 -0
  84. package/dist/ble/colors.js +44 -0
  85. package/dist/ble/colors.js.map +1 -0
  86. package/dist/ble/configuration.d.ts +22 -0
  87. package/dist/ble/configuration.d.ts.map +1 -0
  88. package/dist/ble/configuration.js +122 -0
  89. package/dist/ble/configuration.js.map +1 -0
  90. package/dist/ble/controller.d.ts +118 -0
  91. package/dist/ble/controller.d.ts.map +1 -0
  92. package/dist/ble/controller.js +931 -0
  93. package/dist/ble/controller.js.map +1 -0
  94. package/dist/ble/crypto.d.ts +34 -0
  95. package/dist/ble/crypto.d.ts.map +1 -0
  96. package/dist/ble/crypto.js +178 -0
  97. package/dist/ble/crypto.js.map +1 -0
  98. package/dist/ble/daemon.d.ts +2 -0
  99. package/dist/ble/daemon.d.ts.map +1 -0
  100. package/dist/ble/daemon.js +76 -0
  101. package/dist/ble/daemon.js.map +1 -0
  102. package/dist/ble/dashboard.d.ts +331 -0
  103. package/dist/ble/dashboard.d.ts.map +1 -0
  104. package/dist/ble/dashboard.js +280 -0
  105. package/dist/ble/dashboard.js.map +1 -0
  106. package/dist/ble/desktop.d.ts +4 -0
  107. package/dist/ble/desktop.d.ts.map +1 -0
  108. package/dist/ble/desktop.js +33 -0
  109. package/dist/ble/desktop.js.map +1 -0
  110. package/dist/ble/desktopLibrary.d.ts +12 -0
  111. package/dist/ble/desktopLibrary.d.ts.map +1 -0
  112. package/dist/ble/desktopLibrary.js +346 -0
  113. package/dist/ble/desktopLibrary.js.map +1 -0
  114. package/dist/ble/effects.d.ts +34 -0
  115. package/dist/ble/effects.d.ts.map +1 -0
  116. package/dist/ble/effects.js +138 -0
  117. package/dist/ble/effects.js.map +1 -0
  118. package/dist/ble/fan.d.ts +244 -0
  119. package/dist/ble/fan.d.ts.map +1 -0
  120. package/dist/ble/fan.js +46 -0
  121. package/dist/ble/fan.js.map +1 -0
  122. package/dist/ble/library.d.ts +341 -0
  123. package/dist/ble/library.d.ts.map +1 -0
  124. package/dist/ble/library.js +201 -0
  125. package/dist/ble/library.js.map +1 -0
  126. package/dist/ble/media.d.ts +133 -0
  127. package/dist/ble/media.d.ts.map +1 -0
  128. package/dist/ble/media.js +186 -0
  129. package/dist/ble/media.js.map +1 -0
  130. package/dist/ble/nativeGroups.d.ts +22 -0
  131. package/dist/ble/nativeGroups.d.ts.map +1 -0
  132. package/dist/ble/nativeGroups.js +114 -0
  133. package/dist/ble/nativeGroups.js.map +1 -0
  134. package/dist/ble/packets.d.ts +3 -0
  135. package/dist/ble/packets.d.ts.map +1 -0
  136. package/dist/ble/packets.js +15 -0
  137. package/dist/ble/packets.js.map +1 -0
  138. package/dist/ble/programs.d.ts +318 -0
  139. package/dist/ble/programs.d.ts.map +1 -0
  140. package/dist/ble/programs.js +329 -0
  141. package/dist/ble/programs.js.map +1 -0
  142. package/dist/ble/provisioning.d.ts +13 -0
  143. package/dist/ble/provisioning.d.ts.map +1 -0
  144. package/dist/ble/provisioning.js +39 -0
  145. package/dist/ble/provisioning.js.map +1 -0
  146. package/dist/ble/server.d.ts +18 -0
  147. package/dist/ble/server.d.ts.map +1 -0
  148. package/dist/ble/server.js +548 -0
  149. package/dist/ble/server.js.map +1 -0
  150. package/dist/ble/service.d.ts +2 -0
  151. package/dist/ble/service.d.ts.map +1 -0
  152. package/dist/ble/service.js +77 -0
  153. package/dist/ble/service.js.map +1 -0
  154. package/dist/ble/settings.d.ts +18 -0
  155. package/dist/ble/settings.d.ts.map +1 -0
  156. package/dist/ble/settings.js +25 -0
  157. package/dist/ble/settings.js.map +1 -0
  158. package/dist/ble/setup.d.ts +2 -0
  159. package/dist/ble/setup.d.ts.map +1 -0
  160. package/dist/ble/setup.js +31 -0
  161. package/dist/ble/setup.js.map +1 -0
  162. package/dist/ble/storage.d.ts +94 -0
  163. package/dist/ble/storage.d.ts.map +1 -0
  164. package/dist/ble/storage.js +132 -0
  165. package/dist/ble/storage.js.map +1 -0
  166. package/dist/ble/telink.d.ts +63 -0
  167. package/dist/ble/telink.d.ts.map +1 -0
  168. package/dist/ble/telink.js +108 -0
  169. package/dist/ble/telink.js.map +1 -0
  170. package/dist/ble/transitions.d.ts +3 -0
  171. package/dist/ble/transitions.d.ts.map +1 -0
  172. package/dist/ble/transitions.js +28 -0
  173. package/dist/ble/transitions.js.map +1 -0
  174. package/dist/ble/transport.d.ts +48 -0
  175. package/dist/ble/transport.d.ts.map +1 -0
  176. package/dist/ble/transport.js +370 -0
  177. package/dist/ble/transport.js.map +1 -0
  178. package/dist/circadian.d.ts +3 -0
  179. package/dist/circadian.d.ts.map +1 -1
  180. package/dist/circadian.js +2 -0
  181. package/dist/circadian.js.map +1 -1
  182. package/dist/cli.d.ts +3 -2
  183. package/dist/cli.d.ts.map +1 -1
  184. package/dist/cli.js +125 -6
  185. package/dist/cli.js.map +1 -1
  186. package/dist/commands/__tests__/newCommands.test.js +3 -4
  187. package/dist/commands/__tests__/newCommands.test.js.map +1 -1
  188. package/dist/commands/cmdUtils.d.ts +5 -2
  189. package/dist/commands/cmdUtils.d.ts.map +1 -1
  190. package/dist/commands/cmdUtils.js +29 -10
  191. package/dist/commands/cmdUtils.js.map +1 -1
  192. package/dist/commands/daylightSimulation/autoCct.d.ts.map +1 -1
  193. package/dist/commands/daylightSimulation/autoCct.js +67 -197
  194. package/dist/commands/daylightSimulation/autoCct.js.map +1 -1
  195. package/dist/commands/daylightSimulation/graphSchedule.d.ts +1 -1
  196. package/dist/commands/daylightSimulation/graphSchedule.d.ts.map +1 -1
  197. package/dist/commands/daylightSimulation/printSchedule.d.ts +1 -1
  198. package/dist/commands/daylightSimulation/printSchedule.d.ts.map +1 -1
  199. package/dist/commands/daylightSimulation/printSchedule.js +2 -2
  200. package/dist/commands/daylightSimulation/printSchedule.js.map +1 -1
  201. package/dist/commands/daylightSimulation/service.d.ts +1 -1
  202. package/dist/commands/daylightSimulation/service.d.ts.map +1 -1
  203. package/dist/commands/daylightSimulation/service.js +5 -3
  204. package/dist/commands/daylightSimulation/service.js.map +1 -1
  205. package/dist/commands/daylightSimulation/simulateSchedule.d.ts +1 -1
  206. package/dist/commands/daylightSimulation/simulateSchedule.d.ts.map +1 -1
  207. package/dist/commands/daylightSimulation/simulateSchedule.js +5 -4
  208. package/dist/commands/daylightSimulation/simulateSchedule.js.map +1 -1
  209. package/dist/commands/deviceControl/ble.d.ts +4 -0
  210. package/dist/commands/deviceControl/ble.d.ts.map +1 -0
  211. package/dist/commands/deviceControl/ble.js +214 -0
  212. package/dist/commands/deviceControl/ble.js.map +1 -0
  213. package/dist/commands/deviceControl/cct.d.ts.map +1 -1
  214. package/dist/commands/deviceControl/cct.js +41 -11
  215. package/dist/commands/deviceControl/cct.js.map +1 -1
  216. package/dist/commands/deviceControl/color.d.ts.map +1 -1
  217. package/dist/commands/deviceControl/color.js +13 -3
  218. package/dist/commands/deviceControl/color.js.map +1 -1
  219. package/dist/commands/deviceControl/config.d.ts.map +1 -1
  220. package/dist/commands/deviceControl/config.js +26 -3
  221. package/dist/commands/deviceControl/config.js.map +1 -1
  222. package/dist/commands/deviceControl/{discover.d.ts → desktop.d.ts} +3 -2
  223. package/dist/commands/deviceControl/desktop.d.ts.map +1 -0
  224. package/dist/commands/deviceControl/desktop.js +66 -0
  225. package/dist/commands/deviceControl/desktop.js.map +1 -0
  226. package/dist/commands/deviceControl/effect.d.ts.map +1 -1
  227. package/dist/commands/deviceControl/effect.js +90 -159
  228. package/dist/commands/deviceControl/effect.js.map +1 -1
  229. package/dist/commands/deviceControl/fan.d.ts.map +1 -1
  230. package/dist/commands/deviceControl/fan.js +77 -95
  231. package/dist/commands/deviceControl/fan.js.map +1 -1
  232. package/dist/commands/deviceControl/group.d.ts.map +1 -1
  233. package/dist/commands/deviceControl/group.js +43 -6
  234. package/dist/commands/deviceControl/group.js.map +1 -1
  235. package/dist/commands/deviceControl/hsi.d.ts.map +1 -1
  236. package/dist/commands/deviceControl/hsi.js +3 -1
  237. package/dist/commands/deviceControl/hsi.js.map +1 -1
  238. package/dist/commands/deviceControl/info.d.ts.map +1 -1
  239. package/dist/commands/deviceControl/info.js +0 -50
  240. package/dist/commands/deviceControl/info.js.map +1 -1
  241. package/dist/commands/deviceControl/intensity.d.ts.map +1 -1
  242. package/dist/commands/deviceControl/intensity.js +32 -8
  243. package/dist/commands/deviceControl/intensity.js.map +1 -1
  244. package/dist/commands/deviceControl/list.d.ts.map +1 -1
  245. package/dist/commands/deviceControl/list.js +3 -2
  246. package/dist/commands/deviceControl/list.js.map +1 -1
  247. package/dist/commands/deviceControl/power.d.ts.map +1 -1
  248. package/dist/commands/deviceControl/power.js +9 -3
  249. package/dist/commands/deviceControl/power.js.map +1 -1
  250. package/dist/commands/deviceControl/preset.d.ts.map +1 -1
  251. package/dist/commands/deviceControl/preset.js +56 -19
  252. package/dist/commands/deviceControl/preset.js.map +1 -1
  253. package/dist/commands/deviceControl/program.d.ts +4 -0
  254. package/dist/commands/deviceControl/program.d.ts.map +1 -0
  255. package/dist/commands/deviceControl/program.js +199 -0
  256. package/dist/commands/deviceControl/program.js.map +1 -0
  257. package/dist/commands/deviceControl/quickshot.d.ts.map +1 -1
  258. package/dist/commands/deviceControl/quickshot.js +75 -13
  259. package/dist/commands/deviceControl/quickshot.js.map +1 -1
  260. package/dist/commands/deviceControl/scene.d.ts.map +1 -1
  261. package/dist/commands/deviceControl/scene.js +72 -9
  262. package/dist/commands/deviceControl/scene.js.map +1 -1
  263. package/dist/commands/deviceControl/status.d.ts.map +1 -1
  264. package/dist/commands/deviceControl/status.js +26 -3
  265. package/dist/commands/deviceControl/status.js.map +1 -1
  266. package/dist/commands/parseUtils.d.ts +1 -1
  267. package/dist/commands/parseUtils.d.ts.map +1 -1
  268. package/dist/commands/parseUtils.js +1 -11
  269. package/dist/commands/parseUtils.js.map +1 -1
  270. package/dist/commands-api.d.ts +1 -1
  271. package/dist/commands-api.d.ts.map +1 -1
  272. package/dist/commands-api.js +1 -1
  273. package/dist/commands-api.js.map +1 -1
  274. package/dist/commands.d.ts.map +1 -1
  275. package/dist/commands.js +4 -2
  276. package/dist/commands.js.map +1 -1
  277. package/dist/config.d.ts +82 -0
  278. package/dist/config.d.ts.map +1 -1
  279. package/dist/config.js +13 -2
  280. package/dist/config.js.map +1 -1
  281. package/dist/daylightSimulation/cctUtil.d.ts.map +1 -1
  282. package/dist/daylightSimulation/cctUtil.js +2 -2
  283. package/dist/daylightSimulation/cctUtil.js.map +1 -1
  284. package/dist/daylightSimulation/constants.d.ts +10 -0
  285. package/dist/daylightSimulation/constants.d.ts.map +1 -1
  286. package/dist/daylightSimulation/constants.js +4 -0
  287. package/dist/daylightSimulation/constants.js.map +1 -1
  288. package/dist/daylightSimulation/currentCct.d.ts +42 -0
  289. package/dist/daylightSimulation/currentCct.d.ts.map +1 -0
  290. package/dist/daylightSimulation/currentCct.js +217 -0
  291. package/dist/daylightSimulation/currentCct.js.map +1 -0
  292. package/dist/daylightSimulation/dashboardSettings.d.ts +47 -0
  293. package/dist/daylightSimulation/dashboardSettings.d.ts.map +1 -0
  294. package/dist/daylightSimulation/dashboardSettings.js +95 -0
  295. package/dist/daylightSimulation/dashboardSettings.js.map +1 -0
  296. package/dist/daylightSimulation/dashboardStatus.d.ts +72 -0
  297. package/dist/daylightSimulation/dashboardStatus.d.ts.map +1 -0
  298. package/dist/daylightSimulation/dashboardStatus.js +191 -0
  299. package/dist/daylightSimulation/dashboardStatus.js.map +1 -0
  300. package/dist/daylightSimulation/parseUtils.d.ts +3 -0
  301. package/dist/daylightSimulation/parseUtils.d.ts.map +1 -0
  302. package/dist/daylightSimulation/parseUtils.js +25 -0
  303. package/dist/daylightSimulation/parseUtils.js.map +1 -0
  304. package/dist/daylightSimulation/scheduleMaker.d.ts +2 -2
  305. package/dist/daylightSimulation/scheduleMaker.d.ts.map +1 -1
  306. package/dist/daylightSimulation/scheduleMaker.js +6 -6
  307. package/dist/daylightSimulation/scheduleMaker.js.map +1 -1
  308. package/dist/daylightSimulation/types.d.ts +13 -2
  309. package/dist/daylightSimulation/types.d.ts.map +1 -1
  310. package/dist/daylightSimulation/types.js +0 -2
  311. package/dist/daylightSimulation/types.js.map +1 -1
  312. package/dist/device-control.d.ts +1 -0
  313. package/dist/device-control.d.ts.map +1 -1
  314. package/dist/device-control.js +1 -0
  315. package/dist/device-control.js.map +1 -1
  316. package/dist/deviceControl/bleHttpControl.d.ts +129 -0
  317. package/dist/deviceControl/bleHttpControl.d.ts.map +1 -0
  318. package/dist/deviceControl/bleHttpControl.js +753 -0
  319. package/dist/deviceControl/bleHttpControl.js.map +1 -0
  320. package/dist/deviceControl/lightControl.d.ts +8 -68
  321. package/dist/deviceControl/lightControl.d.ts.map +1 -1
  322. package/dist/deviceControl/lightControl.js +6 -246
  323. package/dist/deviceControl/lightControl.js.map +1 -1
  324. package/dist/deviceControl/lightControlCommands.d.ts +68 -0
  325. package/dist/deviceControl/lightControlCommands.d.ts.map +1 -0
  326. package/dist/deviceControl/lightControlCommands.js +244 -0
  327. package/dist/deviceControl/lightControlCommands.js.map +1 -0
  328. package/dist/deviceControl/types.d.ts +75 -4
  329. package/dist/deviceControl/types.d.ts.map +1 -1
  330. package/dist/deviceControl/types.js +1 -0
  331. package/dist/deviceControl/types.js.map +1 -1
  332. package/dist/index.d.ts +2 -1
  333. package/dist/index.d.ts.map +1 -1
  334. package/dist/index.js +1 -0
  335. package/dist/index.js.map +1 -1
  336. package/dist/test/MockLightServer.d.ts +1 -0
  337. package/dist/test/MockLightServer.d.ts.map +1 -1
  338. package/dist/test/MockLightServer.js +5 -0
  339. package/dist/test/MockLightServer.js.map +1 -1
  340. package/docs/CHANGELOG.md +37 -0
  341. package/docs/DIRECT_BLE.md +359 -0
  342. package/package.json +8 -4
  343. package/scripts/ble-cli-check.ts +129 -0
  344. package/scripts/ble-config-probe.ts +109 -0
  345. package/scripts/ble-effects-check.ts +82 -0
  346. package/scripts/ble-extended-probe.ts +44 -0
  347. package/scripts/ble-fan-check.ts +129 -0
  348. package/scripts/ble-feature-probe.ts +37 -0
  349. package/scripts/ble-followup-check.ts +165 -0
  350. package/scripts/ble-hardware-check.ts +99 -0
  351. package/scripts/ble-live-extended-check.ts +205 -0
  352. package/scripts/ble-non-ota-check.ts +193 -0
  353. package/scripts/ble-probe.ts +45 -0
  354. package/scripts/calibrate-webcam.ts +152 -0
  355. package/scripts/desktop-reference.ts +85 -0
  356. package/scripts/webcam.ts +129 -0
  357. package/dist/__tests__/lightControl.test.d.ts +0 -2
  358. package/dist/__tests__/lightControl.test.d.ts.map +0 -1
  359. package/dist/__tests__/lightControl.test.js +0 -424
  360. package/dist/__tests__/lightControl.test.js.map +0 -1
  361. package/dist/commands/deviceControl/discover.d.ts.map +0 -1
  362. package/dist/commands/deviceControl/discover.js +0 -29
  363. package/dist/commands/deviceControl/discover.js.map +0 -1
@@ -1,5 +1,5 @@
1
1
  import chalk from 'chalk';
2
- import { CURVE_HELP_TEXT } from '../../daylightSimulation/constants.js';
2
+ import { CURVE_HELP_TEXT, DEFAULT_CURVE } from '../../daylightSimulation/constants.js';
3
3
  import { ScheduleMaker } from '../../daylightSimulation/scheduleMaker.js';
4
4
  import { commandCallbackPromise, getLightDevices } from '../cmdUtils.js';
5
5
  export function registerSimulateSchedule(program, deps) {
@@ -8,12 +8,13 @@ export function registerSimulateSchedule(program, deps) {
8
8
  .command('simulate')
9
9
  .description('Simulate a CCT schedule curve in real-time on a specific device')
10
10
  .argument('<device>', 'Device name, ID, or node_id to control')
11
- .option('-u, --url <url>', 'WebSocket URL')
11
+ .option('-b, --backend <backend>', 'Light backend: ble (default) or desktop; websocket is an alias')
12
+ .option('-u, --url <url>', 'Backend URL (BLE HTTP or Desktop WebSocket)')
12
13
  .option('-c, --client-id <id>', 'Client ID')
13
14
  .option('-d, --debug', 'Enable debug mode')
14
15
  .option('--lat <latitude>', 'Manual latitude (-90 to 90)')
15
16
  .option('--lon <longitude>', 'Manual longitude (-180 to 180)')
16
- .option('-C, --curve <curve>', CURVE_HELP_TEXT, 'hann')
17
+ .option('-C, --curve <curve>', CURVE_HELP_TEXT, DEFAULT_CURVE)
17
18
  .option('-L, --max-lux <value>', 'Simulation peak in lux (scales the whole day)')
18
19
  .option('--duration <seconds>', 'Simulation duration to compress full day (default: 10 seconds)', '10')
19
20
  .option('--cloud-cover <value>', 'Cloud cover (0-1)')
@@ -70,7 +71,7 @@ function handleSimulateSchedule(deps) {
70
71
  process.exit(1);
71
72
  }
72
73
  // 2. Connect to controller and find device
73
- const controller = await createController(options.url, options.clientId, options.debug);
74
+ const controller = await createController(options.url, options.clientId, options.debug, options.backend);
74
75
  let devices;
75
76
  if (deviceQuery.toLowerCase() === 'all') {
76
77
  devices = getLightDevices(controller.getDevices());
@@ -1 +1 @@
1
- {"version":3,"file":"simulateSchedule.js","sourceRoot":"","sources":["../../../src/commands/daylightSimulation/simulateSchedule.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"simulateSchedule.js","sourceRoot":"","sources":["../../../src/commands/daylightSimulation/simulateSchedule.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { Command } from 'commander';
2
+ import type { CommandDeps } from '../../deviceControl/types.js';
3
+ export default function registerBle(program: Command, deps: CommandDeps): void;
4
+ //# sourceMappingURL=ble.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ble.d.ts","sourceRoot":"","sources":["../../../src/commands/deviceControl/ble.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEzC,OAAO,KAAK,EAAE,WAAW,EAAkB,MAAM,8BAA8B,CAAC;AAIhF,MAAM,CAAC,OAAO,UAAU,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,GAAG,IAAI,CAmW7E"}
@@ -0,0 +1,214 @@
1
+ import { spawn } from 'node:child_process';
2
+ import { realpathSync } from 'node:fs';
3
+ import { z } from 'zod';
4
+ import { addStandardOptions, commandCallbackResult, requireBleController, runDeviceAction } from '../cmdUtils.js';
5
+ import { registerPrograms } from './program.js';
6
+ export default function registerBle(program, deps) {
7
+ const { asyncCommand } = deps;
8
+ const ble = program.command('ble').description('Direct Bluetooth Mesh setup and verified local daemon');
9
+ registerPrograms(ble, deps);
10
+ addStandardOptions(ble.command('health').description('Show daemon connectivity, feature flags and fixture capabilities')).action(asyncCommand(async (options) => {
11
+ const controller = await deps.createController(options.url, options.clientId, options.debug, 'ble');
12
+ try {
13
+ console.log(JSON.stringify(await commandCallbackResult((cb) => requireBleController(controller).getHealth(cb)), null, 2));
14
+ }
15
+ finally {
16
+ await controller.disconnect();
17
+ }
18
+ }));
19
+ addStandardOptions(ble
20
+ .command('dashboard')
21
+ .description('Print or open the local direct-BLE web dashboard')
22
+ .option('--open', 'Open the dashboard in the default browser')).action(asyncCommand(async (options) => {
23
+ const controller = await deps.createController(options.url, options.clientId, options.debug, 'ble');
24
+ try {
25
+ await commandCallbackResult((cb) => requireBleController(controller).getHealth(cb));
26
+ }
27
+ finally {
28
+ await controller.disconnect();
29
+ }
30
+ const configured = deps.loadConfig?.();
31
+ const baseUrl = String(options.url || configured?.bleUrl || 'http://localhost:2708').replace(/\/+$/, '');
32
+ const url = `${baseUrl}/dashboard`;
33
+ if (options.open === true) {
34
+ const command = process.platform === 'darwin' ? 'open' : process.platform === 'win32' ? 'explorer.exe' : 'xdg-open';
35
+ spawn(command, [url], { detached: true, stdio: 'ignore' }).unref();
36
+ }
37
+ console.log(url);
38
+ }));
39
+ addStandardOptions(ble
40
+ .command('import-desktop <database>')
41
+ .description('Preview or import Desktop effect presets, quickshots, and workspace groups; never applies lighting')
42
+ .option('--apply', 'Apply the validated import plan')
43
+ .option('--replace', 'Allow replacement of previously imported records')
44
+ .option('--allow-partial', 'Explicitly import valid entries despite reported unsupported records')
45
+ .option('--prefix <prefix>', 'Imported record name prefix', 'Desktop')).action(asyncCommand(async (database, options) => {
46
+ const controller = await deps.createController(options.url, options.clientId, options.debug, 'ble');
47
+ try {
48
+ console.log(JSON.stringify(await commandCallbackResult((cb) => requireBleController(controller).importDesktop(realpathSync(database), {
49
+ apply: options.apply === true,
50
+ replace: options.replace === true,
51
+ allowPartial: options.allowPartial === true,
52
+ prefix: String(options.prefix),
53
+ }, cb)), null, 2));
54
+ }
55
+ finally {
56
+ await controller.disconnect();
57
+ }
58
+ }));
59
+ const mesh = ble.command('mesh').description('Native mesh configuration (no OTA or key rotation)');
60
+ addStandardOptions(mesh
61
+ .command('discover')
62
+ .description('Read-only scan for unprovisioned Mesh devices; does not pair or reset anything')).action(asyncCommand(async (options) => {
63
+ const controller = await deps.createController(options.url, options.clientId, options.debug, 'ble');
64
+ try {
65
+ console.log(JSON.stringify(await commandCallbackResult((cb) => requireBleController(controller).discoverUnprovisioned(cb)), null, 2));
66
+ }
67
+ finally {
68
+ await controller.disconnect();
69
+ }
70
+ }));
71
+ addStandardOptions(mesh.command('inspect').description('Read live composition, app bindings, subscriptions and key-refresh phase')).action(asyncCommand(async (options) => {
72
+ const controller = await deps.createController(options.url, options.clientId, options.debug, 'ble');
73
+ try {
74
+ console.log(JSON.stringify(await commandCallbackResult((cb) => requireBleController(controller).inspectMesh(cb)), null, 2));
75
+ }
76
+ finally {
77
+ await controller.disconnect();
78
+ }
79
+ }));
80
+ addStandardOptions(mesh
81
+ .command('import-keys <database>')
82
+ .description('Import matching Device Keys privately after authenticated read-only verification')).action(asyncCommand(async (database, options) => {
83
+ const controller = await deps.createController(options.url, options.clientId, options.debug, 'ble');
84
+ try {
85
+ console.log(JSON.stringify(await commandCallbackResult((cb) => requireBleController(controller).importDeviceKeys(realpathSync(database), cb)), null, 2));
86
+ }
87
+ finally {
88
+ await controller.disconnect();
89
+ }
90
+ }));
91
+ addStandardOptions(ble
92
+ .command('transition <action> <seconds>')
93
+ .description('Fade CCT, HSI or brightness; cross-mode fades pass through zero output')
94
+ .option('--targets <keys>', 'Comma-separated fixture keys/group IDs or all', 'all')
95
+ .option('--args <json>', 'Target settings (same arguments as the corresponding BLE action)', '{}')).action(asyncCommand(async (action, seconds, options) => {
96
+ const controller = await deps.createController(options.url, options.clientId, options.debug, 'ble');
97
+ try {
98
+ const targets = options.targets === 'all'
99
+ ? 'all'
100
+ : String(options.targets)
101
+ .split(',')
102
+ .map((key) => key.trim());
103
+ console.log(JSON.stringify(await commandCallbackResult((cb) => requireBleController(controller).transition(targets, action, z.record(z.unknown()).parse(JSON.parse(String(options.args))), Number(seconds), cb)), null, 2));
104
+ }
105
+ finally {
106
+ await controller.disconnect();
107
+ }
108
+ }));
109
+ addStandardOptions(ble
110
+ .command('override <action>')
111
+ .description('Hold, resume or inspect circadian control for selected fixtures')
112
+ .option('--targets <keys>', 'Comma-separated fixture keys/group IDs or all', 'all')
113
+ .option('--minutes <minutes>', 'Manual hold duration, 1-1440 minutes', '30')).action(asyncCommand(async (action, options) => {
114
+ if (!['hold', 'resume', 'status'].includes(action))
115
+ throw new Error('Override action must be hold, resume or status');
116
+ const controller = await deps.createController(options.url, options.clientId, options.debug, 'ble');
117
+ try {
118
+ const targets = options.targets === 'all'
119
+ ? 'all'
120
+ : String(options.targets)
121
+ .split(',')
122
+ .map((key) => key.trim());
123
+ const minutes = action === 'status' ? undefined : action === 'resume' ? 0 : Number(options.minutes);
124
+ if (action === 'hold' && (minutes === undefined || !Number.isFinite(minutes) || minutes < 1 || minutes > 1440))
125
+ throw new Error('Hold duration must be between 1 and 1440 minutes');
126
+ console.log(JSON.stringify(await commandCallbackResult((cb) => requireBleController(controller).overrides(targets, minutes, cb)), null, 2));
127
+ }
128
+ finally {
129
+ await controller.disconnect();
130
+ }
131
+ }));
132
+ addStandardOptions(ble
133
+ .command('info [device]')
134
+ .description('Read native firmware/protocol identifiers and reported product capabilities')).action(asyncCommand(async (deviceQuery, options) => {
135
+ await runDeviceAction({ deps, options: { ...options, backend: 'ble' }, deviceQuery, actionName: 'read product information' }, async (device, controller) => {
136
+ console.log(JSON.stringify(await commandCallbackResult((cb) => requireBleController(controller).getProductInfo(device.node_id, cb)), null, 2));
137
+ }, async (controller) => {
138
+ for (const device of controller.getDevices().filter((item) => item.device_type === 'ble-light'))
139
+ console.log(device.node_id, JSON.stringify(await commandCallbackResult((cb) => requireBleController(controller).getProductInfo(device.node_id, cb)), null, 2));
140
+ });
141
+ }));
142
+ addStandardOptions(ble.command('gm <device> <value>').description('150c CCT tint: -100 magenta to +100 green, steps of 10')).action(asyncCommand(async (deviceQuery, value, options) => {
143
+ await runDeviceAction({ deps, options: { ...options, backend: 'ble' }, deviceQuery, actionName: 'adjust G/M' }, async (device, controller) => {
144
+ console.log(JSON.stringify(await commandCallbackResult((callback) => requireBleController(controller).setGM(device.node_id, Number(value), callback)), null, 2));
145
+ }, async () => {
146
+ throw new Error('Select the 150c; the 200x S fixtures do not support G/M');
147
+ });
148
+ }));
149
+ addStandardOptions(ble
150
+ .command('batch <action>')
151
+ .description('Prevalidated group control; explicit broadcast reaches the entire provisioned mesh')
152
+ .option('--targets <keys>', 'Comma-separated fixture keys or all', 'all')
153
+ .option('--args <json>', 'Action arguments; brightness is percent', '{}')
154
+ .option('--broadcast', 'Use mesh-wide broadcast instead of burst unicast')).action(asyncCommand(async (action, options) => {
155
+ const controller = await deps.createController(options.url, options.clientId, options.debug, 'ble');
156
+ try {
157
+ const targets = String(options.targets) === 'all'
158
+ ? 'all'
159
+ : String(options.targets)
160
+ .split(',')
161
+ .map((key) => key.trim());
162
+ const args = z.record(z.unknown()).parse(JSON.parse(String(options.args)));
163
+ console.log(JSON.stringify(await commandCallbackResult((callback) => requireBleController(controller).batch(targets, action, args, options.broadcast === true, callback)), null, 2));
164
+ }
165
+ finally {
166
+ await controller.disconnect();
167
+ }
168
+ }));
169
+ addStandardOptions(ble
170
+ .command('fade <brightness> <seconds>')
171
+ .description('Host-paced 0.5-20s brightness fade; preserves power state and verifies endpoints')
172
+ .option('--targets <keys>', 'Comma-separated fixture keys or all', 'all')).action(asyncCommand(async (brightness, seconds, options) => {
173
+ const controller = await deps.createController(options.url, options.clientId, options.debug, 'ble');
174
+ try {
175
+ const targets = String(options.targets) === 'all'
176
+ ? 'all'
177
+ : String(options.targets)
178
+ .split(',')
179
+ .map((key) => key.trim());
180
+ console.log(JSON.stringify(await commandCallbackResult((callback) => requireBleController(controller).fade(targets, Number(brightness), Number(seconds), callback)), null, 2));
181
+ }
182
+ finally {
183
+ await controller.disconnect();
184
+ }
185
+ }));
186
+ ble
187
+ .command('service <action>')
188
+ .description('Manage the macOS user daemon: install, start, stop or status')
189
+ .action(asyncCommand(async (action) => {
190
+ const { manageBleService } = await import('../../ble/service.js');
191
+ await manageBleService(action);
192
+ }));
193
+ ble
194
+ .command('import <config>')
195
+ .description('Import a private lights.json from the previous BLE project (once)')
196
+ .option('--source <address>', 'Dedicated unused controller unicast address (never the desktop source)', '32766')
197
+ .action(asyncCommand(async (config, options) => {
198
+ const { importMesh } = await import('../../ble/setup.js');
199
+ importMesh(config, Number(options.source));
200
+ }));
201
+ ble
202
+ .command('serve')
203
+ .description('Run a foreground, loopback-only BLE daemon; quit Amaran Desktop first')
204
+ .option('--port <port>', 'Local HTTP port', '2708')
205
+ .option('-d, --debug', 'Log authenticated protocol traffic (no mesh keys)')
206
+ .action(asyncCommand(async (options) => {
207
+ const port = Number(options.port);
208
+ if (!Number.isInteger(port) || port < 1 || port > 65535)
209
+ throw new Error('Port must be an integer from 1 to 65535');
210
+ const { serveBle } = await import('../../ble/daemon.js');
211
+ await serveBle(port, options.debug);
212
+ }));
213
+ }
214
+ //# sourceMappingURL=ble.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ble.js","sourceRoot":"","sources":["../../../src/commands/deviceControl/ble.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"cct.d.ts","sourceRoot":"","sources":["../../../src/commands/deviceControl/cct.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEzC,OAAO,KAAK,EAAE,WAAW,EAA0B,MAAM,8BAA8B,CAAC;AAGxF,wBAAgB,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,QAiB9D;AAqKD,eAAe,WAAW,CAAC"}
1
+ {"version":3,"file":"cct.d.ts","sourceRoot":"","sources":["../../../src/commands/deviceControl/cct.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEzC,OAAO,KAAK,EAAE,WAAW,EAA0B,MAAM,8BAA8B,CAAC;AASxF,wBAAgB,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,QAkB9D;AAkMD,eAAe,WAAW,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import chalk from 'chalk';
2
2
  import { VALIDATION_RANGES } from '../../deviceControl/constants.js';
3
- import { addStandardOptions, commandCallbackPromise, getLightDevices, runDeviceAction } from '../cmdUtils.js';
3
+ import { addStandardOptions, commandCallbackPromise, getAppliedNumber, getLightDevices, runDeviceAction, } from '../cmdUtils.js';
4
4
  export function registerCct(program, deps) {
5
5
  const { asyncCommand } = deps;
6
6
  addStandardOptions(program
@@ -9,6 +9,7 @@ export function registerCct(program, deps) {
9
9
  .description(`Set or get color temperature in Kelvin (${VALIDATION_RANGES.cct.min}-${VALIDATION_RANGES.cct.max}). Omit device or use "all" for all lights.`))
10
10
  .option('-i, --intensity <value>', `Also set intensity (${VALIDATION_RANGES.intensity.min}-${VALIDATION_RANGES.intensity.max})`)
11
11
  .option('-g, --get', 'Get current CCT and intensity instead of setting')
12
+ .option('--relative', 'Apply a signed Kelvin change within each fixture range (requires CCT mode)')
12
13
  .action(asyncCommand(handleCct(deps)));
13
14
  }
14
15
  function handleCct(deps) {
@@ -104,11 +105,13 @@ function handleCct(deps) {
104
105
  console.error(chalk.red('Error: temperature is required unless using --get'));
105
106
  process.exit(1);
106
107
  }
107
- const temperature = parseInt(tempStr, 10);
108
- if (Number.isNaN(temperature) ||
109
- temperature < VALIDATION_RANGES.cct.min ||
110
- temperature > VALIDATION_RANGES.cct.max) {
111
- console.error(chalk.red(`Temperature must be between ${VALIDATION_RANGES.cct.min}K and ${VALIDATION_RANGES.cct.max}K`));
108
+ const temperature = Number(tempStr);
109
+ if (!Number.isFinite(temperature) ||
110
+ temperature < (options.relative ? -7500 : VALIDATION_RANGES.cct.min) ||
111
+ temperature > (options.relative ? 7500 : VALIDATION_RANGES.cct.max)) {
112
+ console.error(chalk.red(options.relative
113
+ ? 'Relative CCT must be between -7500K and 7500K'
114
+ : `Temperature must be between ${VALIDATION_RANGES.cct.min}K and ${VALIDATION_RANGES.cct.max}K`));
112
115
  process.exit(1);
113
116
  }
114
117
  let intensity;
@@ -122,6 +125,9 @@ function handleCct(deps) {
122
125
  }
123
126
  intensity = intensity * 10;
124
127
  }
128
+ let appliedTemperature = temperature;
129
+ let appliedIntensity = intensity;
130
+ let observedTemperature = false;
125
131
  return runDeviceAction({
126
132
  deps,
127
133
  options,
@@ -129,18 +135,42 @@ function handleCct(deps) {
129
135
  actionName: 'set temperature',
130
136
  onSuccess: (device) => {
131
137
  const displayName = device.device_name || device.name || device.id || device.node_id || 'Unknown';
132
- let msg = `✓ ${displayName} temperature set to ${temperature}K`;
138
+ let msg = options.relative
139
+ ? `✓ ${displayName} temperature adjusted${observedTemperature ? ` to ${appliedTemperature}K` : ''} (relative request ${temperature}K)`
140
+ : `✓ ${displayName} temperature set to ${appliedTemperature}K`;
141
+ if (!options.relative && appliedTemperature !== temperature)
142
+ msg += ` (rounded from ${temperature}K)`;
133
143
  if (intensity !== undefined) {
134
- msg += ` at ${intensity / 10}% intensity`;
144
+ msg += ` at ${(appliedIntensity ?? intensity) / 10}% intensity`;
135
145
  }
136
146
  return msg;
137
147
  },
138
148
  }, (device, controller) => {
139
- return commandCallbackPromise((callback) => controller.setCCT(device.node_id, temperature, intensity, callback));
149
+ return commandCallbackPromise((callback) => {
150
+ const apply = options.relative
151
+ ? controller.incrementCCT.bind(controller)
152
+ : controller.setCCT.bind(controller);
153
+ apply(device.node_id, temperature, intensity, (success, message, data) => {
154
+ if (success && device.backend === 'ble' && data && typeof data === 'object') {
155
+ const cct = getAppliedNumber(data, 'cct');
156
+ if (cct !== undefined) {
157
+ appliedTemperature = cct;
158
+ observedTemperature = true;
159
+ }
160
+ appliedIntensity = getAppliedNumber(data, 'intensity') ?? appliedIntensity;
161
+ }
162
+ callback(success, message, data);
163
+ });
164
+ });
140
165
  }, async (controller) => {
141
- await controller.setCCTAndIntensityForAllLights(temperature, intensity, (success, message) => {
142
- if (!success)
166
+ const apply = options.relative
167
+ ? controller.incrementCCTForAllLights.bind(controller)
168
+ : controller.setCCTAndIntensityForAllLights.bind(controller);
169
+ await apply(temperature, intensity, (success, message) => {
170
+ if (!success) {
171
+ process.exitCode = 1;
143
172
  console.error(`✗ Failed to set temperature: ${message}`);
173
+ }
144
174
  });
145
175
  });
146
176
  };
@@ -1 +1 @@
1
- {"version":3,"file":"cct.js","sourceRoot":"","sources":["../../../src/commands/deviceControl/cct.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cct.js","sourceRoot":"","sources":["../../../src/commands/deviceControl/cct.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"color.d.ts","sourceRoot":"","sources":["../../../src/commands/deviceControl/color.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,WAAW,EAA0B,MAAM,8BAA8B,CAAC;AAGxF,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,QAahE;AA+OD,eAAe,aAAa,CAAC"}
1
+ {"version":3,"file":"color.d.ts","sourceRoot":"","sources":["../../../src/commands/deviceControl/color.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,WAAW,EAA0B,MAAM,8BAA8B,CAAC;AAGxF,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,QAahE;AA0PD,eAAe,aAAa,CAAC"}
@@ -30,8 +30,12 @@ function handleColor(deps) {
30
30
  actionName: 'get color',
31
31
  }, async (device, controller) => {
32
32
  // We use getNodeConfig initially
33
- return new Promise((resolve) => {
33
+ return new Promise((resolve, reject) => {
34
34
  controller.getNodeConfig(device.node_id, async (_success, _messagee, data) => {
35
+ if (!_success && device.backend === 'ble') {
36
+ reject(new Error(_messagee));
37
+ return;
38
+ }
35
39
  const displayName = device.device_name || device.name || device.id || device.node_id || 'Unknown';
36
40
  const config = data?.data ||
37
41
  data ||
@@ -110,8 +114,12 @@ function handleColor(deps) {
110
114
  }
111
115
  for (const device of lightDevices) {
112
116
  if (device.node_id) {
113
- await new Promise((resolve) => {
117
+ await new Promise((resolve, reject) => {
114
118
  controller.getNodeConfig(device.node_id, async (_success, _messagee, data) => {
119
+ if (!_success && device.backend === 'ble') {
120
+ reject(new Error(_messagee));
121
+ return;
122
+ }
115
123
  const displayName = device.device_name || device.name || device.id || device.node_id || 'Unknown';
116
124
  const config = data?.data ||
117
125
  data ||
@@ -204,8 +212,10 @@ function handleColor(deps) {
204
212
  return commandCallbackPromise((callback) => controller.setColor(device.node_id, color, intensity, callback));
205
213
  }, async (controller) => {
206
214
  await controller.setColorForAllLights(color, intensity, (success, message) => {
207
- if (!success)
215
+ if (!success) {
216
+ process.exitCode = 1;
208
217
  console.error(`✗ Failed to set color: ${message}`);
218
+ }
209
219
  });
210
220
  });
211
221
  };
@@ -1 +1 @@
1
- {"version":3,"file":"color.js","sourceRoot":"","sources":["../../../src/commands/deviceControl/color.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"color.js","sourceRoot":"","sources":["../../../src/commands/deviceControl/color.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/commands/deviceControl/config.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIzC,OAAO,KAAK,EAAE,WAAW,EAAU,MAAM,8BAA8B,CAAC;AAqBxE,MAAM,CAAC,OAAO,UAAU,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,QAyBzE"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/commands/deviceControl/config.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIzC,OAAO,KAAK,EAAE,WAAW,EAAU,MAAM,8BAA8B,CAAC;AAwBxE,MAAM,CAAC,OAAO,UAAU,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,QA4BzE"}
@@ -7,8 +7,11 @@ export default function registerConfig(program, deps) {
7
7
  const { asyncCommand } = deps;
8
8
  program
9
9
  .command('config')
10
- .description('Configure WebSocket URL and other settings')
10
+ .description('Configure light backend and other settings')
11
+ .option('-b, --backend <backend>', 'Default backend: ble or desktop; websocket is a desktop alias')
11
12
  .option('-u, --url <url>', 'WebSocket URL (default: ws://localhost:60124)')
13
+ .option('--ble-url <url>', 'BLE HTTP daemon URL (default: http://localhost:2708)')
14
+ .option('--ble-api-key <key>', 'BLE HTTP daemon API key')
12
15
  .option('-c, --client-id <id>', 'Client ID (default: amaran-cli)')
13
16
  .option('-d, --debug <boolean>', 'Enable debug mode')
14
17
  .option('--lat <latitude>', 'Default latitude for auto-cct (overrides geoip)')
@@ -19,7 +22,7 @@ export default function registerConfig(program, deps) {
19
22
  .option('--intensity-max <percent>', 'Maximum intensity for auto-cct in percent (default: 100)')
20
23
  .option('--default-curve <curve>', CURVE_HELP_TEXT)
21
24
  .option('--auto-start-app <boolean>', 'Automatically start Amaran desktop app on connection failure (default: true)')
22
- .option('--max-lux <number>', 'Maximum lux output of the setup (for auto-cct scaling)')
25
+ .option('--max-lux <value>', 'Maximum lux number or Kelvin map, e.g. 2700:8000,5600:10000')
23
26
  .option('--weather <boolean>', 'Enable automatic weather fetching for auto-cct (default: false)')
24
27
  .option('--privacy-off', 'Show full coordinates and sensitive data', false)
25
28
  .option('--show', 'Show current configuration')
@@ -31,7 +34,10 @@ function handleConfig(deps) {
31
34
  throw new Error('loadConfig dependency is required');
32
35
  }
33
36
  return async (options) => {
34
- const hasSetOptions = options.url !== undefined ||
37
+ const hasSetOptions = options.backend !== undefined ||
38
+ options.url !== undefined ||
39
+ options.bleUrl !== undefined ||
40
+ options.bleApiKey !== undefined ||
35
41
  options.clientId !== undefined ||
36
42
  options.debug !== undefined ||
37
43
  options.lat !== undefined ||
@@ -65,10 +71,27 @@ function handleConfig(deps) {
65
71
  }
66
72
  const config = loadConfig() || {};
67
73
  const changes = [];
74
+ if (options.backend !== undefined) {
75
+ const backend = options.backend.trim().toLowerCase();
76
+ if (backend !== 'ble' && backend !== 'desktop' && backend !== 'websocket') {
77
+ console.error(chalk.red('Backend must be "ble" or "desktop" ("websocket" remains an alias)'));
78
+ process.exit(1);
79
+ }
80
+ config.backend = backend;
81
+ changes.push(`Backend: ${backend}`);
82
+ }
68
83
  if (options.url) {
69
84
  config.wsUrl = options.url;
70
85
  changes.push(`WebSocket URL: ${options.url}`);
71
86
  }
87
+ if (options.bleUrl) {
88
+ config.bleUrl = options.bleUrl;
89
+ changes.push(`BLE HTTP URL: ${options.bleUrl}`);
90
+ }
91
+ if (options.bleApiKey !== undefined) {
92
+ config.bleApiKey = options.bleApiKey;
93
+ changes.push('BLE HTTP API key: configured');
94
+ }
72
95
  if (options.clientId) {
73
96
  config.clientId = options.clientId;
74
97
  changes.push(`Client ID: ${options.clientId}`);