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.
- package/README.md +108 -14
- package/dist/__tests__/autoCct.test.js +27 -0
- package/dist/__tests__/autoCct.test.js.map +1 -1
- package/dist/__tests__/bleHttpControl.test.d.ts +2 -0
- package/dist/__tests__/bleHttpControl.test.d.ts.map +1 -0
- package/dist/__tests__/bleHttpControl.test.js +230 -0
- package/dist/__tests__/bleHttpControl.test.js.map +1 -0
- package/dist/__tests__/bleStack.test.d.ts +2 -0
- package/dist/__tests__/bleStack.test.d.ts.map +1 -0
- package/dist/__tests__/bleStack.test.js +1239 -0
- package/dist/__tests__/bleStack.test.js.map +1 -0
- package/dist/__tests__/cctUtil.test.js +9 -4
- package/dist/__tests__/cctUtil.test.js.map +1 -1
- package/dist/__tests__/circadianDashboardSettings.test.d.ts +2 -0
- package/dist/__tests__/circadianDashboardSettings.test.d.ts.map +1 -0
- package/dist/__tests__/circadianDashboardSettings.test.js +82 -0
- package/dist/__tests__/circadianDashboardSettings.test.js.map +1 -0
- package/dist/__tests__/circadianIsolation.test.d.ts +2 -0
- package/dist/__tests__/circadianIsolation.test.d.ts.map +1 -0
- package/dist/__tests__/circadianIsolation.test.js +30 -0
- package/dist/__tests__/circadianIsolation.test.js.map +1 -0
- package/dist/__tests__/cli.config.test.js +49 -0
- package/dist/__tests__/cli.config.test.js.map +1 -1
- package/dist/__tests__/cli.smoke.test.js +34 -0
- package/dist/__tests__/cli.smoke.test.js.map +1 -1
- package/dist/__tests__/currentCct.test.d.ts +2 -0
- package/dist/__tests__/currentCct.test.d.ts.map +1 -0
- package/dist/__tests__/currentCct.test.js +29 -0
- package/dist/__tests__/currentCct.test.js.map +1 -0
- package/dist/__tests__/dashboard.test.d.ts +2 -0
- package/dist/__tests__/dashboard.test.d.ts.map +1 -0
- package/dist/__tests__/dashboard.test.js +126 -0
- package/dist/__tests__/dashboard.test.js.map +1 -0
- package/dist/__tests__/daylightSimulationParseUtils.test.d.ts +2 -0
- package/dist/__tests__/daylightSimulationParseUtils.test.d.ts.map +1 -0
- package/dist/__tests__/daylightSimulationParseUtils.test.js +16 -0
- package/dist/__tests__/daylightSimulationParseUtils.test.js.map +1 -0
- package/dist/__tests__/desktopImport.test.d.ts +2 -0
- package/dist/__tests__/desktopImport.test.d.ts.map +1 -0
- package/dist/__tests__/desktopImport.test.js +234 -0
- package/dist/__tests__/desktopImport.test.js.map +1 -0
- package/dist/__tests__/lightControl.basic.test.d.ts +2 -0
- package/dist/__tests__/lightControl.basic.test.d.ts.map +1 -0
- package/dist/__tests__/lightControl.basic.test.js +119 -0
- package/dist/__tests__/lightControl.basic.test.js.map +1 -0
- package/dist/__tests__/lightControl.colorEffects.test.d.ts +2 -0
- package/dist/__tests__/lightControl.colorEffects.test.d.ts.map +1 -0
- package/dist/__tests__/lightControl.colorEffects.test.js +170 -0
- package/dist/__tests__/lightControl.colorEffects.test.js.map +1 -0
- package/dist/__tests__/lightControl.management.test.d.ts +2 -0
- package/dist/__tests__/lightControl.management.test.d.ts.map +1 -0
- package/dist/__tests__/lightControl.management.test.js +90 -0
- package/dist/__tests__/lightControl.management.test.js.map +1 -0
- package/dist/__tests__/lightControlTestUtils.d.ts +10 -0
- package/dist/__tests__/lightControlTestUtils.d.ts.map +1 -0
- package/dist/__tests__/lightControlTestUtils.js +57 -0
- package/dist/__tests__/lightControlTestUtils.js.map +1 -0
- package/dist/__tests__/meshConfiguration.test.d.ts +2 -0
- package/dist/__tests__/meshConfiguration.test.d.ts.map +1 -0
- package/dist/__tests__/meshConfiguration.test.js +78 -0
- package/dist/__tests__/meshConfiguration.test.js.map +1 -0
- package/dist/__tests__/nativeGroups.test.d.ts +2 -0
- package/dist/__tests__/nativeGroups.test.d.ts.map +1 -0
- package/dist/__tests__/nativeGroups.test.js +104 -0
- package/dist/__tests__/nativeGroups.test.js.map +1 -0
- package/dist/__tests__/programApi.test.d.ts +2 -0
- package/dist/__tests__/programApi.test.d.ts.map +1 -0
- package/dist/__tests__/programApi.test.js +73 -0
- package/dist/__tests__/programApi.test.js.map +1 -0
- package/dist/__tests__/programs.test.d.ts +2 -0
- package/dist/__tests__/programs.test.d.ts.map +1 -0
- package/dist/__tests__/programs.test.js +176 -0
- package/dist/__tests__/programs.test.js.map +1 -0
- package/dist/__tests__/scheduleMaker.test.d.ts +2 -0
- package/dist/__tests__/scheduleMaker.test.d.ts.map +1 -0
- package/dist/__tests__/scheduleMaker.test.js +25 -0
- package/dist/__tests__/scheduleMaker.test.js.map +1 -0
- package/dist/ble/async.d.ts +2 -0
- package/dist/ble/async.d.ts.map +1 -0
- package/dist/ble/async.js +15 -0
- package/dist/ble/async.js.map +1 -0
- package/dist/ble/colors.d.ts +5 -0
- package/dist/ble/colors.d.ts.map +1 -0
- package/dist/ble/colors.js +44 -0
- package/dist/ble/colors.js.map +1 -0
- package/dist/ble/configuration.d.ts +22 -0
- package/dist/ble/configuration.d.ts.map +1 -0
- package/dist/ble/configuration.js +122 -0
- package/dist/ble/configuration.js.map +1 -0
- package/dist/ble/controller.d.ts +118 -0
- package/dist/ble/controller.d.ts.map +1 -0
- package/dist/ble/controller.js +931 -0
- package/dist/ble/controller.js.map +1 -0
- package/dist/ble/crypto.d.ts +34 -0
- package/dist/ble/crypto.d.ts.map +1 -0
- package/dist/ble/crypto.js +178 -0
- package/dist/ble/crypto.js.map +1 -0
- package/dist/ble/daemon.d.ts +2 -0
- package/dist/ble/daemon.d.ts.map +1 -0
- package/dist/ble/daemon.js +76 -0
- package/dist/ble/daemon.js.map +1 -0
- package/dist/ble/dashboard.d.ts +331 -0
- package/dist/ble/dashboard.d.ts.map +1 -0
- package/dist/ble/dashboard.js +280 -0
- package/dist/ble/dashboard.js.map +1 -0
- package/dist/ble/desktop.d.ts +4 -0
- package/dist/ble/desktop.d.ts.map +1 -0
- package/dist/ble/desktop.js +33 -0
- package/dist/ble/desktop.js.map +1 -0
- package/dist/ble/desktopLibrary.d.ts +12 -0
- package/dist/ble/desktopLibrary.d.ts.map +1 -0
- package/dist/ble/desktopLibrary.js +346 -0
- package/dist/ble/desktopLibrary.js.map +1 -0
- package/dist/ble/effects.d.ts +34 -0
- package/dist/ble/effects.d.ts.map +1 -0
- package/dist/ble/effects.js +138 -0
- package/dist/ble/effects.js.map +1 -0
- package/dist/ble/fan.d.ts +244 -0
- package/dist/ble/fan.d.ts.map +1 -0
- package/dist/ble/fan.js +46 -0
- package/dist/ble/fan.js.map +1 -0
- package/dist/ble/library.d.ts +341 -0
- package/dist/ble/library.d.ts.map +1 -0
- package/dist/ble/library.js +201 -0
- package/dist/ble/library.js.map +1 -0
- package/dist/ble/media.d.ts +133 -0
- package/dist/ble/media.d.ts.map +1 -0
- package/dist/ble/media.js +186 -0
- package/dist/ble/media.js.map +1 -0
- package/dist/ble/nativeGroups.d.ts +22 -0
- package/dist/ble/nativeGroups.d.ts.map +1 -0
- package/dist/ble/nativeGroups.js +114 -0
- package/dist/ble/nativeGroups.js.map +1 -0
- package/dist/ble/packets.d.ts +3 -0
- package/dist/ble/packets.d.ts.map +1 -0
- package/dist/ble/packets.js +15 -0
- package/dist/ble/packets.js.map +1 -0
- package/dist/ble/programs.d.ts +318 -0
- package/dist/ble/programs.d.ts.map +1 -0
- package/dist/ble/programs.js +329 -0
- package/dist/ble/programs.js.map +1 -0
- package/dist/ble/provisioning.d.ts +13 -0
- package/dist/ble/provisioning.d.ts.map +1 -0
- package/dist/ble/provisioning.js +39 -0
- package/dist/ble/provisioning.js.map +1 -0
- package/dist/ble/server.d.ts +18 -0
- package/dist/ble/server.d.ts.map +1 -0
- package/dist/ble/server.js +548 -0
- package/dist/ble/server.js.map +1 -0
- package/dist/ble/service.d.ts +2 -0
- package/dist/ble/service.d.ts.map +1 -0
- package/dist/ble/service.js +77 -0
- package/dist/ble/service.js.map +1 -0
- package/dist/ble/settings.d.ts +18 -0
- package/dist/ble/settings.d.ts.map +1 -0
- package/dist/ble/settings.js +25 -0
- package/dist/ble/settings.js.map +1 -0
- package/dist/ble/setup.d.ts +2 -0
- package/dist/ble/setup.d.ts.map +1 -0
- package/dist/ble/setup.js +31 -0
- package/dist/ble/setup.js.map +1 -0
- package/dist/ble/storage.d.ts +94 -0
- package/dist/ble/storage.d.ts.map +1 -0
- package/dist/ble/storage.js +132 -0
- package/dist/ble/storage.js.map +1 -0
- package/dist/ble/telink.d.ts +63 -0
- package/dist/ble/telink.d.ts.map +1 -0
- package/dist/ble/telink.js +108 -0
- package/dist/ble/telink.js.map +1 -0
- package/dist/ble/transitions.d.ts +3 -0
- package/dist/ble/transitions.d.ts.map +1 -0
- package/dist/ble/transitions.js +28 -0
- package/dist/ble/transitions.js.map +1 -0
- package/dist/ble/transport.d.ts +48 -0
- package/dist/ble/transport.d.ts.map +1 -0
- package/dist/ble/transport.js +370 -0
- package/dist/ble/transport.js.map +1 -0
- package/dist/circadian.d.ts +3 -0
- package/dist/circadian.d.ts.map +1 -1
- package/dist/circadian.js +2 -0
- package/dist/circadian.js.map +1 -1
- package/dist/cli.d.ts +3 -2
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +125 -6
- package/dist/cli.js.map +1 -1
- package/dist/commands/__tests__/newCommands.test.js +3 -4
- package/dist/commands/__tests__/newCommands.test.js.map +1 -1
- package/dist/commands/cmdUtils.d.ts +5 -2
- package/dist/commands/cmdUtils.d.ts.map +1 -1
- package/dist/commands/cmdUtils.js +29 -10
- package/dist/commands/cmdUtils.js.map +1 -1
- package/dist/commands/daylightSimulation/autoCct.d.ts.map +1 -1
- package/dist/commands/daylightSimulation/autoCct.js +67 -197
- package/dist/commands/daylightSimulation/autoCct.js.map +1 -1
- package/dist/commands/daylightSimulation/graphSchedule.d.ts +1 -1
- package/dist/commands/daylightSimulation/graphSchedule.d.ts.map +1 -1
- package/dist/commands/daylightSimulation/printSchedule.d.ts +1 -1
- package/dist/commands/daylightSimulation/printSchedule.d.ts.map +1 -1
- package/dist/commands/daylightSimulation/printSchedule.js +2 -2
- package/dist/commands/daylightSimulation/printSchedule.js.map +1 -1
- package/dist/commands/daylightSimulation/service.d.ts +1 -1
- package/dist/commands/daylightSimulation/service.d.ts.map +1 -1
- package/dist/commands/daylightSimulation/service.js +5 -3
- package/dist/commands/daylightSimulation/service.js.map +1 -1
- package/dist/commands/daylightSimulation/simulateSchedule.d.ts +1 -1
- package/dist/commands/daylightSimulation/simulateSchedule.d.ts.map +1 -1
- package/dist/commands/daylightSimulation/simulateSchedule.js +5 -4
- package/dist/commands/daylightSimulation/simulateSchedule.js.map +1 -1
- package/dist/commands/deviceControl/ble.d.ts +4 -0
- package/dist/commands/deviceControl/ble.d.ts.map +1 -0
- package/dist/commands/deviceControl/ble.js +214 -0
- package/dist/commands/deviceControl/ble.js.map +1 -0
- package/dist/commands/deviceControl/cct.d.ts.map +1 -1
- package/dist/commands/deviceControl/cct.js +41 -11
- package/dist/commands/deviceControl/cct.js.map +1 -1
- package/dist/commands/deviceControl/color.d.ts.map +1 -1
- package/dist/commands/deviceControl/color.js +13 -3
- package/dist/commands/deviceControl/color.js.map +1 -1
- package/dist/commands/deviceControl/config.d.ts.map +1 -1
- package/dist/commands/deviceControl/config.js +26 -3
- package/dist/commands/deviceControl/config.js.map +1 -1
- package/dist/commands/deviceControl/{discover.d.ts → desktop.d.ts} +3 -2
- package/dist/commands/deviceControl/desktop.d.ts.map +1 -0
- package/dist/commands/deviceControl/desktop.js +66 -0
- package/dist/commands/deviceControl/desktop.js.map +1 -0
- package/dist/commands/deviceControl/effect.d.ts.map +1 -1
- package/dist/commands/deviceControl/effect.js +90 -159
- package/dist/commands/deviceControl/effect.js.map +1 -1
- package/dist/commands/deviceControl/fan.d.ts.map +1 -1
- package/dist/commands/deviceControl/fan.js +77 -95
- package/dist/commands/deviceControl/fan.js.map +1 -1
- package/dist/commands/deviceControl/group.d.ts.map +1 -1
- package/dist/commands/deviceControl/group.js +43 -6
- package/dist/commands/deviceControl/group.js.map +1 -1
- package/dist/commands/deviceControl/hsi.d.ts.map +1 -1
- package/dist/commands/deviceControl/hsi.js +3 -1
- package/dist/commands/deviceControl/hsi.js.map +1 -1
- package/dist/commands/deviceControl/info.d.ts.map +1 -1
- package/dist/commands/deviceControl/info.js +0 -50
- package/dist/commands/deviceControl/info.js.map +1 -1
- package/dist/commands/deviceControl/intensity.d.ts.map +1 -1
- package/dist/commands/deviceControl/intensity.js +32 -8
- package/dist/commands/deviceControl/intensity.js.map +1 -1
- package/dist/commands/deviceControl/list.d.ts.map +1 -1
- package/dist/commands/deviceControl/list.js +3 -2
- package/dist/commands/deviceControl/list.js.map +1 -1
- package/dist/commands/deviceControl/power.d.ts.map +1 -1
- package/dist/commands/deviceControl/power.js +9 -3
- package/dist/commands/deviceControl/power.js.map +1 -1
- package/dist/commands/deviceControl/preset.d.ts.map +1 -1
- package/dist/commands/deviceControl/preset.js +56 -19
- package/dist/commands/deviceControl/preset.js.map +1 -1
- package/dist/commands/deviceControl/program.d.ts +4 -0
- package/dist/commands/deviceControl/program.d.ts.map +1 -0
- package/dist/commands/deviceControl/program.js +199 -0
- package/dist/commands/deviceControl/program.js.map +1 -0
- package/dist/commands/deviceControl/quickshot.d.ts.map +1 -1
- package/dist/commands/deviceControl/quickshot.js +75 -13
- package/dist/commands/deviceControl/quickshot.js.map +1 -1
- package/dist/commands/deviceControl/scene.d.ts.map +1 -1
- package/dist/commands/deviceControl/scene.js +72 -9
- package/dist/commands/deviceControl/scene.js.map +1 -1
- package/dist/commands/deviceControl/status.d.ts.map +1 -1
- package/dist/commands/deviceControl/status.js +26 -3
- package/dist/commands/deviceControl/status.js.map +1 -1
- package/dist/commands/parseUtils.d.ts +1 -1
- package/dist/commands/parseUtils.d.ts.map +1 -1
- package/dist/commands/parseUtils.js +1 -11
- package/dist/commands/parseUtils.js.map +1 -1
- package/dist/commands-api.d.ts +1 -1
- package/dist/commands-api.d.ts.map +1 -1
- package/dist/commands-api.js +1 -1
- package/dist/commands-api.js.map +1 -1
- package/dist/commands.d.ts.map +1 -1
- package/dist/commands.js +4 -2
- package/dist/commands.js.map +1 -1
- package/dist/config.d.ts +82 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +13 -2
- package/dist/config.js.map +1 -1
- package/dist/daylightSimulation/cctUtil.d.ts.map +1 -1
- package/dist/daylightSimulation/cctUtil.js +2 -2
- package/dist/daylightSimulation/cctUtil.js.map +1 -1
- package/dist/daylightSimulation/constants.d.ts +10 -0
- package/dist/daylightSimulation/constants.d.ts.map +1 -1
- package/dist/daylightSimulation/constants.js +4 -0
- package/dist/daylightSimulation/constants.js.map +1 -1
- package/dist/daylightSimulation/currentCct.d.ts +42 -0
- package/dist/daylightSimulation/currentCct.d.ts.map +1 -0
- package/dist/daylightSimulation/currentCct.js +217 -0
- package/dist/daylightSimulation/currentCct.js.map +1 -0
- package/dist/daylightSimulation/dashboardSettings.d.ts +47 -0
- package/dist/daylightSimulation/dashboardSettings.d.ts.map +1 -0
- package/dist/daylightSimulation/dashboardSettings.js +95 -0
- package/dist/daylightSimulation/dashboardSettings.js.map +1 -0
- package/dist/daylightSimulation/dashboardStatus.d.ts +72 -0
- package/dist/daylightSimulation/dashboardStatus.d.ts.map +1 -0
- package/dist/daylightSimulation/dashboardStatus.js +191 -0
- package/dist/daylightSimulation/dashboardStatus.js.map +1 -0
- package/dist/daylightSimulation/parseUtils.d.ts +3 -0
- package/dist/daylightSimulation/parseUtils.d.ts.map +1 -0
- package/dist/daylightSimulation/parseUtils.js +25 -0
- package/dist/daylightSimulation/parseUtils.js.map +1 -0
- package/dist/daylightSimulation/scheduleMaker.d.ts +2 -2
- package/dist/daylightSimulation/scheduleMaker.d.ts.map +1 -1
- package/dist/daylightSimulation/scheduleMaker.js +6 -6
- package/dist/daylightSimulation/scheduleMaker.js.map +1 -1
- package/dist/daylightSimulation/types.d.ts +13 -2
- package/dist/daylightSimulation/types.d.ts.map +1 -1
- package/dist/daylightSimulation/types.js +0 -2
- package/dist/daylightSimulation/types.js.map +1 -1
- package/dist/device-control.d.ts +1 -0
- package/dist/device-control.d.ts.map +1 -1
- package/dist/device-control.js +1 -0
- package/dist/device-control.js.map +1 -1
- package/dist/deviceControl/bleHttpControl.d.ts +129 -0
- package/dist/deviceControl/bleHttpControl.d.ts.map +1 -0
- package/dist/deviceControl/bleHttpControl.js +753 -0
- package/dist/deviceControl/bleHttpControl.js.map +1 -0
- package/dist/deviceControl/lightControl.d.ts +8 -68
- package/dist/deviceControl/lightControl.d.ts.map +1 -1
- package/dist/deviceControl/lightControl.js +6 -246
- package/dist/deviceControl/lightControl.js.map +1 -1
- package/dist/deviceControl/lightControlCommands.d.ts +68 -0
- package/dist/deviceControl/lightControlCommands.d.ts.map +1 -0
- package/dist/deviceControl/lightControlCommands.js +244 -0
- package/dist/deviceControl/lightControlCommands.js.map +1 -0
- package/dist/deviceControl/types.d.ts +75 -4
- package/dist/deviceControl/types.d.ts.map +1 -1
- package/dist/deviceControl/types.js +1 -0
- package/dist/deviceControl/types.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/test/MockLightServer.d.ts +1 -0
- package/dist/test/MockLightServer.d.ts.map +1 -1
- package/dist/test/MockLightServer.js +5 -0
- package/dist/test/MockLightServer.js.map +1 -1
- package/docs/CHANGELOG.md +37 -0
- package/docs/DIRECT_BLE.md +359 -0
- package/package.json +8 -4
- package/scripts/ble-cli-check.ts +129 -0
- package/scripts/ble-config-probe.ts +109 -0
- package/scripts/ble-effects-check.ts +82 -0
- package/scripts/ble-extended-probe.ts +44 -0
- package/scripts/ble-fan-check.ts +129 -0
- package/scripts/ble-feature-probe.ts +37 -0
- package/scripts/ble-followup-check.ts +165 -0
- package/scripts/ble-hardware-check.ts +99 -0
- package/scripts/ble-live-extended-check.ts +205 -0
- package/scripts/ble-non-ota-check.ts +193 -0
- package/scripts/ble-probe.ts +45 -0
- package/scripts/calibrate-webcam.ts +152 -0
- package/scripts/desktop-reference.ts +85 -0
- package/scripts/webcam.ts +129 -0
- package/dist/__tests__/lightControl.test.d.ts +0 -2
- package/dist/__tests__/lightControl.test.d.ts.map +0 -1
- package/dist/__tests__/lightControl.test.js +0 -424
- package/dist/__tests__/lightControl.test.js.map +0 -1
- package/dist/commands/deviceControl/discover.d.ts.map +0 -1
- package/dist/commands/deviceControl/discover.js +0 -29
- package/dist/commands/deviceControl/discover.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"intensity.js","sourceRoot":"","sources":["../../../src/commands/deviceControl/intensity.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,
|
|
1
|
+
{"version":3,"file":"intensity.js","sourceRoot":"","sources":["../../../src/commands/deviceControl/intensity.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../src/commands/deviceControl/list.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,WAAW,EAAkB,MAAM,8BAA8B,CAAC;AAGhF,wBAAgB,YAAY,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,
|
|
1
|
+
{"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../src/commands/deviceControl/list.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,WAAW,EAAkB,MAAM,8BAA8B,CAAC;AAGhF,wBAAgB,YAAY,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,QAc/D;AA6BD,eAAe,YAAY,CAAC"}
|
|
@@ -8,7 +8,8 @@ export function registerList(program, deps) {
|
|
|
8
8
|
.usage('[options]')
|
|
9
9
|
.alias('ls')
|
|
10
10
|
.description('List all available lights')
|
|
11
|
-
.option('-
|
|
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
|
.action(asyncCommand(handleList(deps)));
|
|
@@ -16,7 +17,7 @@ export function registerList(program, deps) {
|
|
|
16
17
|
function handleList(deps) {
|
|
17
18
|
const { createController } = deps;
|
|
18
19
|
return async (options) => {
|
|
19
|
-
const controller = await createController(options.url, options.clientId, options.debug);
|
|
20
|
+
const controller = await createController(options.url, options.clientId, options.debug, options.backend);
|
|
20
21
|
try {
|
|
21
22
|
const devices = getLightDevices(controller.getDevices());
|
|
22
23
|
if (devices.length === 0) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/commands/deviceControl/list.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEjD,MAAM,UAAU,YAAY,CAAC,OAAgB,EAAE,IAAiB;IAC9D,MAAM,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC;IAE9B,OAAO;SACJ,OAAO,CAAC,MAAM,CAAC;SACf,IAAI,CAAC,MAAM,CAAC;SACZ,KAAK,CAAC,WAAW,CAAC;SAClB,KAAK,CAAC,IAAI,CAAC;SACX,WAAW,CAAC,2BAA2B,CAAC;SACxC,MAAM,CAAC,iBAAiB,EAAE,
|
|
1
|
+
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/commands/deviceControl/list.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEjD,MAAM,UAAU,YAAY,CAAC,OAAgB,EAAE,IAAiB;IAC9D,MAAM,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC;IAE9B,OAAO;SACJ,OAAO,CAAC,MAAM,CAAC;SACf,IAAI,CAAC,MAAM,CAAC;SACZ,KAAK,CAAC,WAAW,CAAC;SAClB,KAAK,CAAC,IAAI,CAAC;SACX,WAAW,CAAC,2BAA2B,CAAC;SACxC,MAAM,CAAC,yBAAyB,EAAE,gEAAgE,CAAC;SACnG,MAAM,CAAC,iBAAiB,EAAE,6CAA6C,CAAC;SACxE,MAAM,CAAC,sBAAsB,EAAE,WAAW,CAAC;SAC3C,MAAM,CAAC,aAAa,EAAE,mBAAmB,CAAC;SAC1C,MAAM,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC5C,CAAC;AAED,SAAS,UAAU,CAAC,IAAiB;IACnC,MAAM,EAAE,gBAAgB,EAAE,GAAG,IAAI,CAAC;IAClC,OAAO,KAAK,EAAE,OAAuB,EAAE,EAAE;QACvC,MAAM,UAAU,GAAG,MAAM,gBAAgB,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;QAEzG,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,eAAe,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC,CAAC;YAEzD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACzB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,wBAAwB,CAAC,CAAC,CAAC;gBACpD,OAAO;YACT,CAAC;YAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC;YAC7C,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,KAAa,EAAE,EAAE;gBACxC,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,EAAE,IAAI,MAAM,CAAC,OAAO,IAAI,SAAS,CAAC;gBAClG,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,GAAG,CAAC,KAAK,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,EAAE,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;gBAC7G,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;oBACvB,OAAO,CAAC,GAAG,CAAC,YAAY,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;gBAChD,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC;gBAAS,CAAC;YACT,MAAM,UAAU,CAAC,UAAU,EAAE,CAAC;QAChC,CAAC;IACH,CAAC,CAAC;AACJ,CAAC;AAED,eAAe,YAAY,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"power.d.ts","sourceRoot":"","sources":["../../../src/commands/deviceControl/power.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,QAqBhE;
|
|
1
|
+
{"version":3,"file":"power.d.ts","sourceRoot":"","sources":["../../../src/commands/deviceControl/power.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,QAqBhE;AAkLD,eAAe,aAAa,CAAC"}
|
|
@@ -107,8 +107,10 @@ function handleOn(deps) {
|
|
|
107
107
|
return commandCallbackPromise((callback) => controller.turnLightOn(device.node_id, callback));
|
|
108
108
|
}, async (controller) => {
|
|
109
109
|
await controller.turnOnAllLights((success, message) => {
|
|
110
|
-
if (!success)
|
|
110
|
+
if (!success) {
|
|
111
|
+
process.exitCode = 1;
|
|
111
112
|
console.error(`✗ Failed to turn on light: ${message}`);
|
|
113
|
+
}
|
|
112
114
|
});
|
|
113
115
|
});
|
|
114
116
|
};
|
|
@@ -128,8 +130,10 @@ function handleOff(deps) {
|
|
|
128
130
|
return commandCallbackPromise((callback) => controller.turnLightOff(device.node_id, callback));
|
|
129
131
|
}, async (controller) => {
|
|
130
132
|
await controller.turnOffAllLights((success, message) => {
|
|
131
|
-
if (!success)
|
|
133
|
+
if (!success) {
|
|
134
|
+
process.exitCode = 1;
|
|
132
135
|
console.error(`✗ Failed to turn off light: ${message}`);
|
|
136
|
+
}
|
|
133
137
|
});
|
|
134
138
|
});
|
|
135
139
|
};
|
|
@@ -145,8 +149,10 @@ function handleToggle(deps) {
|
|
|
145
149
|
return commandCallbackPromise((callback) => controller.toggleLight(device.node_id, callback));
|
|
146
150
|
}, async (controller) => {
|
|
147
151
|
await controller.toggleAllLights((success, message) => {
|
|
148
|
-
if (!success)
|
|
152
|
+
if (!success) {
|
|
153
|
+
process.exitCode = 1;
|
|
149
154
|
console.error(`✗ Failed to toggle light: ${message}`);
|
|
155
|
+
}
|
|
150
156
|
});
|
|
151
157
|
});
|
|
152
158
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"power.js","sourceRoot":"","sources":["../../../src/commands/deviceControl/power.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"power.js","sourceRoot":"","sources":["../../../src/commands/deviceControl/power.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"preset.d.ts","sourceRoot":"","sources":["../../../src/commands/deviceControl/preset.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,WAAW,EAA0B,MAAM,8BAA8B,CAAC;AAGxF,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,
|
|
1
|
+
{"version":3,"file":"preset.d.ts","sourceRoot":"","sources":["../../../src/commands/deviceControl/preset.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,WAAW,EAA0B,MAAM,8BAA8B,CAAC;AAGxF,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,QAqGjE;AA0DD,eAAe,cAAc,CAAC"}
|
|
@@ -1,16 +1,60 @@
|
|
|
1
1
|
import chalk from 'chalk';
|
|
2
|
-
import { addStandardOptions, runDeviceAction } from '../cmdUtils.js';
|
|
2
|
+
import { addStandardOptions, commandCallbackResult, requireBleController, runDeviceAction } from '../cmdUtils.js';
|
|
3
3
|
export function registerPreset(program, deps) {
|
|
4
4
|
const { asyncCommand } = deps;
|
|
5
5
|
const preset = program.command('preset').description('Manage and recall presets');
|
|
6
|
+
addStandardOptions(preset
|
|
7
|
+
.command('update <id>')
|
|
8
|
+
.option('--name <name>', 'New name')
|
|
9
|
+
.description('Replace a local preset with its fixture current state')).action(asyncCommand(async (id, options) => {
|
|
10
|
+
const controller = await deps.createController(options.url, options.clientId, options.debug, options.backend);
|
|
11
|
+
try {
|
|
12
|
+
console.log(JSON.stringify(await commandCallbackResult((cb) => requireBleController(controller).updateSaved('presets', id, typeof options.name === 'string' ? options.name : undefined, cb)), null, 2));
|
|
13
|
+
}
|
|
14
|
+
finally {
|
|
15
|
+
await controller.disconnect();
|
|
16
|
+
}
|
|
17
|
+
}));
|
|
6
18
|
addStandardOptions(preset.command('list').description('List all available presets')).action(asyncCommand(handlePresetList(deps)));
|
|
7
|
-
addStandardOptions(preset.command('
|
|
8
|
-
|
|
19
|
+
addStandardOptions(preset.command('show <id>').description('Show the stored fixture, fan and effect state')).action(asyncCommand(async (id, options) => {
|
|
20
|
+
const controller = await deps.createController(options.url, options.clientId, options.debug, options.backend);
|
|
21
|
+
try {
|
|
22
|
+
console.log(JSON.stringify(await commandCallbackResult((cb) => requireBleController(controller).getSaved('presets', id, cb)), null, 2));
|
|
23
|
+
}
|
|
24
|
+
finally {
|
|
25
|
+
await controller.disconnect();
|
|
26
|
+
}
|
|
27
|
+
}));
|
|
28
|
+
addStandardOptions(preset
|
|
29
|
+
.command('recall <device> <preset_id>')
|
|
30
|
+
.option('--fade <seconds>', 'Transition to a steady preset over 0.5-20 seconds')
|
|
31
|
+
.description('Recall a preset on a device')).action(asyncCommand(handlePresetRecall(deps)));
|
|
32
|
+
addStandardOptions(preset
|
|
33
|
+
.command('set <device> <preset_id>')
|
|
34
|
+
.option('--fade <seconds>', 'Transition to a steady preset over 0.5-20 seconds')
|
|
35
|
+
.description('Set a preset on a device (alias for recall)')).action(asyncCommand(handlePresetRecall(deps)));
|
|
36
|
+
addStandardOptions(preset.command('save <device> <name>').description('Save a single-fixture local BLE preset')).action(asyncCommand(async (deviceQuery, name, options) => {
|
|
37
|
+
await runDeviceAction({ deps, options, deviceQuery, actionName: 'save preset' }, async (device, controller) => {
|
|
38
|
+
console.log(JSON.stringify(await commandCallbackResult((callback) => requireBleController(controller).savePreset(device.node_id, name, callback)), null, 2));
|
|
39
|
+
}, async () => {
|
|
40
|
+
throw new Error('A preset stores one fixture; use scene save for all lights');
|
|
41
|
+
});
|
|
42
|
+
}));
|
|
43
|
+
addStandardOptions(preset.command('delete <id>').description('Delete a local BLE preset')).action(asyncCommand(async (id, options) => {
|
|
44
|
+
const controller = await deps.createController(options.url, options.clientId, options.debug, options.backend);
|
|
45
|
+
try {
|
|
46
|
+
await commandCallbackResult((callback) => requireBleController(controller).deleteSaved('presets', id, callback));
|
|
47
|
+
console.log(`Preset ${id} deleted`);
|
|
48
|
+
}
|
|
49
|
+
finally {
|
|
50
|
+
await controller.disconnect();
|
|
51
|
+
}
|
|
52
|
+
}));
|
|
9
53
|
}
|
|
10
54
|
function handlePresetList(deps) {
|
|
11
55
|
const { createController } = deps;
|
|
12
56
|
return async (options) => {
|
|
13
|
-
const controller = await createController(options.url, options.clientId, options.debug);
|
|
57
|
+
const controller = await createController(options.url, options.clientId, options.debug, options.backend);
|
|
14
58
|
controller.getPresetList((success, message, data) => {
|
|
15
59
|
if (success) {
|
|
16
60
|
// biome-ignore lint/suspicious/noExplicitAny: API response data structure varies
|
|
@@ -19,6 +63,7 @@ function handlePresetList(deps) {
|
|
|
19
63
|
console.log(JSON.stringify(presets, null, 2));
|
|
20
64
|
}
|
|
21
65
|
else {
|
|
66
|
+
process.exitCode = 1;
|
|
22
67
|
console.error(chalk.red(`Error getting preset list: ${message}`));
|
|
23
68
|
}
|
|
24
69
|
controller.disconnect();
|
|
@@ -32,22 +77,14 @@ function handlePresetRecall(deps) {
|
|
|
32
77
|
options,
|
|
33
78
|
deviceQuery,
|
|
34
79
|
actionName: `recall preset ${presetId}`,
|
|
35
|
-
}, (device, controller) => {
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
controller.recallPreset(nodeId, presetId,
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
}
|
|
42
|
-
else {
|
|
43
|
-
console.error(chalk.red(`✗ Failed to recall preset: ${message}`));
|
|
44
|
-
}
|
|
45
|
-
resolve();
|
|
46
|
-
});
|
|
47
|
-
});
|
|
80
|
+
}, async (device, controller) => {
|
|
81
|
+
const nodeId = device.node_id;
|
|
82
|
+
await commandCallbackResult((callback) => options.fade === undefined
|
|
83
|
+
? controller.recallPreset(nodeId, presetId, callback)
|
|
84
|
+
: requireBleController(controller).recallSaved('presets', presetId, { target: nodeId, seconds: Number(options.fade) }, callback));
|
|
85
|
+
console.log(chalk.green(`✓ Preset ${presetId} ${options.fade === undefined ? 'recalled' : 'transitioned'} on ${device.device_name || 'device'}`));
|
|
48
86
|
}, () => {
|
|
49
|
-
|
|
50
|
-
return Promise.resolve();
|
|
87
|
+
throw new Error('Preset recall for "all" is not supported; use a saved scene');
|
|
51
88
|
});
|
|
52
89
|
};
|
|
53
90
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"preset.js","sourceRoot":"","sources":["../../../src/commands/deviceControl/preset.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"preset.js","sourceRoot":"","sources":["../../../src/commands/deviceControl/preset.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"program.d.ts","sourceRoot":"","sources":["../../../src/commands/deviceControl/program.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGzC,OAAO,KAAK,EAAE,WAAW,EAAkB,MAAM,8BAA8B,CAAC;AAwGhF,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,QAmH/D"}
|
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
import { readFileSync, realpathSync } from 'node:fs';
|
|
2
|
+
import { setTimeout as delay } from 'node:timers/promises';
|
|
3
|
+
import { z } from 'zod';
|
|
4
|
+
import { MediaSourceSchema, mediaSamples } from '../../ble/media.js';
|
|
5
|
+
import { addStandardOptions, commandCallbackResult, requireBleController } from '../cmdUtils.js';
|
|
6
|
+
const Status = z
|
|
7
|
+
.object({
|
|
8
|
+
id: z.string(),
|
|
9
|
+
state: z.enum(['preparing', 'running', 'restoring', 'completed', 'cancelled', 'failed']),
|
|
10
|
+
error: z.string().optional(),
|
|
11
|
+
})
|
|
12
|
+
.passthrough();
|
|
13
|
+
const targets = (value) => value === undefined || value === 'all'
|
|
14
|
+
? 'all'
|
|
15
|
+
: String(value)
|
|
16
|
+
.split(',')
|
|
17
|
+
.map((key) => key.trim());
|
|
18
|
+
async function run(deps, options, body) {
|
|
19
|
+
const source = body.source === undefined ? undefined : MediaSourceSchema.parse(body.source);
|
|
20
|
+
const localSource = source && (source.kind === 'camera' || source.kind === 'microphone') ? source : undefined;
|
|
21
|
+
if (localSource && options.background)
|
|
22
|
+
throw new Error('Live camera/microphone capture stays with this CLI; use files or timelines for background jobs');
|
|
23
|
+
const capture = new AbortController();
|
|
24
|
+
const controller = await deps.createController(options.url, options.clientId, options.debug, 'ble');
|
|
25
|
+
const ble = requireBleController(controller);
|
|
26
|
+
let interrupted = false;
|
|
27
|
+
const interrupt = () => {
|
|
28
|
+
interrupted = true;
|
|
29
|
+
capture.abort(new Error('CLI capture interrupted'));
|
|
30
|
+
};
|
|
31
|
+
process.once('SIGINT', interrupt);
|
|
32
|
+
process.once('SIGTERM', interrupt);
|
|
33
|
+
try {
|
|
34
|
+
const request = localSource
|
|
35
|
+
? { ...body, source: { kind: 'samples', media: localSource.kind === 'camera' ? 'image' : 'audio' } }
|
|
36
|
+
: body;
|
|
37
|
+
let status = z
|
|
38
|
+
.object({ data: Status })
|
|
39
|
+
.parse(await commandCallbackResult((cb) => ble.startProgram(request, cb))).data;
|
|
40
|
+
if (interrupted) {
|
|
41
|
+
await commandCallbackResult((cb) => ble.stopProgram(status.id, cb));
|
|
42
|
+
process.exitCode = 130;
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
if (options.background) {
|
|
46
|
+
console.log(JSON.stringify(status, null, 2));
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
if (localSource) {
|
|
50
|
+
try {
|
|
51
|
+
for await (const sample of mediaSamples(localSource, capture.signal)) {
|
|
52
|
+
status = z
|
|
53
|
+
.object({ data: Status })
|
|
54
|
+
.parse(await commandCallbackResult((cb) => ble.getPrograms(status.id, cb))).data;
|
|
55
|
+
if (!['preparing', 'running'].includes(status.state))
|
|
56
|
+
break;
|
|
57
|
+
try {
|
|
58
|
+
await commandCallbackResult((cb) => ble.programSample(status.id, sample, cb));
|
|
59
|
+
}
|
|
60
|
+
catch (error) {
|
|
61
|
+
status = z
|
|
62
|
+
.object({ data: Status })
|
|
63
|
+
.parse(await commandCallbackResult((cb) => ble.getPrograms(status.id, cb))).data;
|
|
64
|
+
if (!['preparing', 'running'].includes(status.state))
|
|
65
|
+
break;
|
|
66
|
+
throw error;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
catch (error) {
|
|
71
|
+
if (!interrupted) {
|
|
72
|
+
await commandCallbackResult((cb) => ble.stopProgram(status.id, cb));
|
|
73
|
+
throw error;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
while (['preparing', 'running', 'restoring'].includes(status.state)) {
|
|
78
|
+
if (interrupted) {
|
|
79
|
+
status = z
|
|
80
|
+
.object({ data: Status })
|
|
81
|
+
.parse(await commandCallbackResult((cb) => ble.stopProgram(status.id, cb))).data;
|
|
82
|
+
break;
|
|
83
|
+
}
|
|
84
|
+
await delay(500);
|
|
85
|
+
status = z
|
|
86
|
+
.object({ data: Status })
|
|
87
|
+
.parse(await commandCallbackResult((cb) => ble.getPrograms(status.id, cb))).data;
|
|
88
|
+
}
|
|
89
|
+
console.log(JSON.stringify(status, null, 2));
|
|
90
|
+
if (status.state === 'failed')
|
|
91
|
+
throw new Error(status.error ?? 'Program failed');
|
|
92
|
+
if (status.state === 'cancelled')
|
|
93
|
+
process.exitCode = interrupted ? 130 : 1;
|
|
94
|
+
}
|
|
95
|
+
finally {
|
|
96
|
+
capture.abort(new Error('CLI capture ended'));
|
|
97
|
+
process.removeListener('SIGINT', interrupt);
|
|
98
|
+
process.removeListener('SIGTERM', interrupt);
|
|
99
|
+
await controller.disconnect();
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
function common(command) {
|
|
103
|
+
if (!command.options.some((option) => option.long === '--targets'))
|
|
104
|
+
command.option('--targets <keys>', 'Comma-separated fixture keys/group IDs or all');
|
|
105
|
+
return addStandardOptions(command
|
|
106
|
+
.option('--background', 'Return the daemon-owned job ID without waiting')
|
|
107
|
+
.option('--no-restore', 'Keep final settings instead of restoring the initial state'));
|
|
108
|
+
}
|
|
109
|
+
export function registerPrograms(ble, deps) {
|
|
110
|
+
common(ble.command('program <file>').description('Run a validated JSON lighting timeline; at most two cues per second')).action(deps.asyncCommand(async (file, options) => {
|
|
111
|
+
const data = z.record(z.unknown()).parse(JSON.parse(readFileSync(file, 'utf8')));
|
|
112
|
+
await run(deps, options, {
|
|
113
|
+
...data,
|
|
114
|
+
kind: 'timeline',
|
|
115
|
+
targets: options.targets === undefined ? (data.targets ?? 'all') : targets(options.targets),
|
|
116
|
+
restore: options.restore === false ? false : (data.restore ?? true),
|
|
117
|
+
});
|
|
118
|
+
}));
|
|
119
|
+
common(ble
|
|
120
|
+
.command('audio <file>')
|
|
121
|
+
.description('Drive brightness from a local audio file, without uploading audio')
|
|
122
|
+
.option('--seconds <seconds>', 'Maximum run duration, 1-1200 seconds', '30')
|
|
123
|
+
.option('--max <percent>', 'Maximum brightness', '100')
|
|
124
|
+
.option('--gain <gain>', 'Audio sensitivity', '3')).action(deps.asyncCommand(async (file, options) => {
|
|
125
|
+
await run(deps, options, {
|
|
126
|
+
kind: 'audio',
|
|
127
|
+
targets: targets(options.targets),
|
|
128
|
+
source: { kind: 'audio-file', file: realpathSync(file) },
|
|
129
|
+
duration: Number(options.seconds),
|
|
130
|
+
maxBrightness: Number(options.max),
|
|
131
|
+
gain: Number(options.gain),
|
|
132
|
+
restore: options.restore,
|
|
133
|
+
});
|
|
134
|
+
}));
|
|
135
|
+
common(ble
|
|
136
|
+
.command('microphone [device]')
|
|
137
|
+
.description('Explicitly capture local microphone audio to drive brightness; macOS permission required')
|
|
138
|
+
.option('--seconds <seconds>', 'Maximum run duration, 1-1200 seconds', '30')
|
|
139
|
+
.option('--max <percent>', 'Maximum brightness', '100')
|
|
140
|
+
.option('--gain <gain>', 'Audio sensitivity', '3')).action(deps.asyncCommand(async (device, options) => {
|
|
141
|
+
await run(deps, options, {
|
|
142
|
+
kind: 'audio',
|
|
143
|
+
targets: targets(options.targets),
|
|
144
|
+
source: { kind: 'microphone', device: Number(device ?? 0) },
|
|
145
|
+
duration: Number(options.seconds),
|
|
146
|
+
maxBrightness: Number(options.max),
|
|
147
|
+
gain: Number(options.gain),
|
|
148
|
+
restore: options.restore,
|
|
149
|
+
});
|
|
150
|
+
}));
|
|
151
|
+
common(ble
|
|
152
|
+
.command('picker')
|
|
153
|
+
.description('Drive HSI from a local image or live camera; no images are uploaded')
|
|
154
|
+
.requiredOption('--targets <keys>', 'HSI-capable fixture keys/group IDs')
|
|
155
|
+
.option('--image <file>', 'Use a local image instead of the camera')
|
|
156
|
+
.option('--camera <index>', 'Live camera index (default 0)')
|
|
157
|
+
.option('--region <x,y,width,height>', 'Optional pixel crop')
|
|
158
|
+
.option('--seconds <seconds>', 'Maximum run duration, 1-1200 seconds', '30')
|
|
159
|
+
.option('--max <percent>', 'Output brightness', '100')).action(deps.asyncCommand(async (options) => {
|
|
160
|
+
if (options.image && options.camera)
|
|
161
|
+
throw new Error('Choose an image or a camera, not both');
|
|
162
|
+
let region;
|
|
163
|
+
if (options.region !== undefined) {
|
|
164
|
+
const values = String(options.region)
|
|
165
|
+
.split(',')
|
|
166
|
+
.map((value) => value.trim());
|
|
167
|
+
if (values.length !== 4 || values.some((value) => !/^\d+$/.test(value)))
|
|
168
|
+
throw new Error('Region must be x,y,width,height integers');
|
|
169
|
+
const [x, y, width, height] = values.map(Number);
|
|
170
|
+
region = { x, y, width, height };
|
|
171
|
+
}
|
|
172
|
+
const source = options.image
|
|
173
|
+
? { kind: 'image-file', file: realpathSync(String(options.image)), region }
|
|
174
|
+
: { kind: 'camera', device: Number(options.camera ?? 0), region };
|
|
175
|
+
await run(deps, options, {
|
|
176
|
+
kind: 'picker',
|
|
177
|
+
targets: targets(options.targets),
|
|
178
|
+
source,
|
|
179
|
+
duration: Number(options.seconds),
|
|
180
|
+
maxBrightness: Number(options.max),
|
|
181
|
+
restore: options.restore,
|
|
182
|
+
});
|
|
183
|
+
}));
|
|
184
|
+
addStandardOptions(ble.command('jobs <action> [id]').description('List, inspect or stop a running lighting program')).action(deps.asyncCommand(async (action, id, options) => {
|
|
185
|
+
if (!['list', 'status', 'stop'].includes(action) || (action !== 'list' && !id))
|
|
186
|
+
throw new Error('Use jobs list, jobs status ID, or jobs stop ID');
|
|
187
|
+
const controller = await deps.createController(options.url, options.clientId, options.debug, 'ble');
|
|
188
|
+
try {
|
|
189
|
+
const api = requireBleController(controller);
|
|
190
|
+
console.log(JSON.stringify(await commandCallbackResult((cb) => action === 'stop'
|
|
191
|
+
? api.stopProgram(id ?? '', cb)
|
|
192
|
+
: api.getPrograms(action === 'list' ? undefined : id, cb)), null, 2));
|
|
193
|
+
}
|
|
194
|
+
finally {
|
|
195
|
+
await controller.disconnect();
|
|
196
|
+
}
|
|
197
|
+
}));
|
|
198
|
+
}
|
|
199
|
+
//# sourceMappingURL=program.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"program.js","sourceRoot":"","sources":["../../../src/commands/deviceControl/program.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"quickshot.d.ts","sourceRoot":"","sources":["../../../src/commands/deviceControl/quickshot.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,WAAW,EAAkB,MAAM,8BAA8B,CAAC;AAGhF,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,
|
|
1
|
+
{"version":3,"file":"quickshot.d.ts","sourceRoot":"","sources":["../../../src/commands/deviceControl/quickshot.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,WAAW,EAAkB,MAAM,8BAA8B,CAAC;AAGhF,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,QAsFpE;AA2DD,eAAe,iBAAiB,CAAC"}
|
|
@@ -1,15 +1,63 @@
|
|
|
1
1
|
import chalk from 'chalk';
|
|
2
|
-
import { addStandardOptions } from '../cmdUtils.js';
|
|
2
|
+
import { addStandardOptions, commandCallbackResult, requireBleController } from '../cmdUtils.js';
|
|
3
3
|
export function registerQuickshot(program, deps) {
|
|
4
4
|
const { asyncCommand } = deps;
|
|
5
5
|
const quickshot = program.command('quickshot').description('Manage quickshots');
|
|
6
|
+
addStandardOptions(quickshot
|
|
7
|
+
.command('update <id>')
|
|
8
|
+
.option('--name <name>', 'New name')
|
|
9
|
+
.option('--targets <keys>', 'Replace with these fixture keys/group IDs')
|
|
10
|
+
.description('Replace a local quickshot with current fixture states')).action(asyncCommand(async (id, options) => {
|
|
11
|
+
const controller = await deps.createController(options.url, options.clientId, options.debug, options.backend);
|
|
12
|
+
try {
|
|
13
|
+
console.log(JSON.stringify(await commandCallbackResult((cb) => {
|
|
14
|
+
const ble = requireBleController(controller);
|
|
15
|
+
return options.targets === undefined
|
|
16
|
+
? ble.updateSaved('quickshots', id, typeof options.name === 'string' ? options.name : undefined, cb)
|
|
17
|
+
: ble.replaceSaved('quickshots', id, typeof options.name === 'string' ? options.name : undefined, targetList(options.targets), cb);
|
|
18
|
+
}), null, 2));
|
|
19
|
+
}
|
|
20
|
+
finally {
|
|
21
|
+
await controller.disconnect();
|
|
22
|
+
}
|
|
23
|
+
}));
|
|
6
24
|
addStandardOptions(quickshot.command('list').description('List all available quickshots')).action(asyncCommand(handleQuickshotList(deps)));
|
|
7
|
-
addStandardOptions(quickshot.command('
|
|
25
|
+
addStandardOptions(quickshot.command('show <id>').description('Show every stored fixture, fan and effect state')).action(asyncCommand(async (id, options) => {
|
|
26
|
+
const controller = await deps.createController(options.url, options.clientId, options.debug, options.backend);
|
|
27
|
+
try {
|
|
28
|
+
console.log(JSON.stringify(await commandCallbackResult((cb) => requireBleController(controller).getSaved('quickshots', id, cb)), null, 2));
|
|
29
|
+
}
|
|
30
|
+
finally {
|
|
31
|
+
await controller.disconnect();
|
|
32
|
+
}
|
|
33
|
+
}));
|
|
34
|
+
addStandardOptions(quickshot
|
|
35
|
+
.command('set <id>')
|
|
36
|
+
.option('--fade <seconds>', 'Transition to a steady quickshot over 0.5-20 seconds')
|
|
37
|
+
.description('Apply a quickshot')).action(asyncCommand(handleQuickshotSet(deps)));
|
|
38
|
+
for (const action of ['save', 'delete']) {
|
|
39
|
+
const command = quickshot.command(`${action} <name-or-id>`).description(`${action} a local BLE quickshot`);
|
|
40
|
+
if (action === 'save')
|
|
41
|
+
command.option('--targets <keys>', 'Comma-separated fixture keys/group IDs; defaults to all');
|
|
42
|
+
addStandardOptions(command).action(asyncCommand(async (value, options) => {
|
|
43
|
+
const controller = await deps.createController(options.url, options.clientId, options.debug, options.backend);
|
|
44
|
+
try {
|
|
45
|
+
const ble = requireBleController(controller);
|
|
46
|
+
const result = await commandCallbackResult((callback) => action === 'save'
|
|
47
|
+
? ble.saveSaved('quickshots', value, targetList(options.targets), callback)
|
|
48
|
+
: ble.deleteSaved('quickshots', value, callback));
|
|
49
|
+
console.log(JSON.stringify(result, null, 2));
|
|
50
|
+
}
|
|
51
|
+
finally {
|
|
52
|
+
await controller.disconnect();
|
|
53
|
+
}
|
|
54
|
+
}));
|
|
55
|
+
}
|
|
8
56
|
}
|
|
9
57
|
function handleQuickshotList(deps) {
|
|
10
58
|
const { createController } = deps;
|
|
11
59
|
return async (options) => {
|
|
12
|
-
const controller = await createController(options.url, options.clientId, options.debug);
|
|
60
|
+
const controller = await createController(options.url, options.clientId, options.debug, options.backend);
|
|
13
61
|
controller.getQuickshotList((success, message, data) => {
|
|
14
62
|
if (success) {
|
|
15
63
|
// biome-ignore lint/suspicious/noExplicitAny: API response data structure varies
|
|
@@ -26,6 +74,7 @@ function handleQuickshotList(deps) {
|
|
|
26
74
|
}
|
|
27
75
|
}
|
|
28
76
|
else {
|
|
77
|
+
process.exitCode = 1;
|
|
29
78
|
console.error(chalk.red(`Error getting quickshot list: ${message}`));
|
|
30
79
|
}
|
|
31
80
|
controller.disconnect();
|
|
@@ -35,17 +84,30 @@ function handleQuickshotList(deps) {
|
|
|
35
84
|
function handleQuickshotSet(deps) {
|
|
36
85
|
const { createController } = deps;
|
|
37
86
|
return async (id, options) => {
|
|
38
|
-
const controller = await createController(options.url, options.clientId, options.debug);
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
controller.disconnect();
|
|
47
|
-
}
|
|
87
|
+
const controller = await createController(options.url, options.clientId, options.debug, options.backend);
|
|
88
|
+
try {
|
|
89
|
+
await commandCallbackResult((callback) => options.fade === undefined
|
|
90
|
+
? controller.setQuickshot(id, callback)
|
|
91
|
+
: requireBleController(controller).recallSaved('quickshots', id, { seconds: Number(options.fade) }, callback));
|
|
92
|
+
console.log(chalk.green(`Quickshot ${id} ${options.fade === undefined ? 'applied' : 'transitioned'} successfully`));
|
|
93
|
+
}
|
|
94
|
+
finally {
|
|
95
|
+
await controller.disconnect();
|
|
96
|
+
}
|
|
48
97
|
};
|
|
49
98
|
}
|
|
99
|
+
function targetList(value) {
|
|
100
|
+
if (value === undefined)
|
|
101
|
+
return undefined;
|
|
102
|
+
if (String(value).trim().toLowerCase() === 'all')
|
|
103
|
+
return 'all';
|
|
104
|
+
const keys = String(value)
|
|
105
|
+
.split(',')
|
|
106
|
+
.map((key) => key.trim())
|
|
107
|
+
.filter(Boolean);
|
|
108
|
+
if (!keys.length)
|
|
109
|
+
throw new Error('Targets must contain at least one fixture or group');
|
|
110
|
+
return keys;
|
|
111
|
+
}
|
|
50
112
|
export default registerQuickshot;
|
|
51
113
|
//# sourceMappingURL=quickshot.js.map
|