61 lines
2.1 KiB
Python
61 lines
2.1 KiB
Python
import argparse
|
|
from pathlib import Path
|
|
import sys
|
|
|
|
ROOT = Path(__file__).resolve().parents[1]
|
|
if str(ROOT) not in sys.path:
|
|
sys.path.insert(0, str(ROOT))
|
|
|
|
from localcast.sensor_fusion.active_illumination import (
|
|
ActiveIlluminationController,
|
|
IlluminationPulsePlan,
|
|
TinytuyaLightPort,
|
|
)
|
|
|
|
|
|
def main() -> None:
|
|
parser = argparse.ArgumentParser(description="Pulse a local Tuya light as active vision calibration telemetry.")
|
|
parser.add_argument("--device-id", required=True)
|
|
parser.add_argument("--address", required=True)
|
|
parser.add_argument("--local-key", required=True)
|
|
parser.add_argument("--version", default="3.3")
|
|
parser.add_argument("--count", type=int, default=6)
|
|
parser.add_argument("--bright-ms", type=int, default=90)
|
|
parser.add_argument("--settle-ms", type=int, default=210)
|
|
parser.add_argument("--brightness", type=int, default=100)
|
|
parser.add_argument("--idle-brightness", type=int, default=18)
|
|
parser.add_argument("--color-temp", type=int, default=50)
|
|
parser.add_argument("--dps-power", default="20")
|
|
parser.add_argument("--dps-brightness", default="22")
|
|
parser.add_argument("--dps-color-temp", default="23")
|
|
args = parser.parse_args()
|
|
|
|
light = TinytuyaLightPort(
|
|
device_id=args.device_id,
|
|
address=args.address,
|
|
local_key=args.local_key,
|
|
version=args.version,
|
|
dps_power=args.dps_power,
|
|
dps_brightness=args.dps_brightness,
|
|
dps_color_temp=args.dps_color_temp,
|
|
)
|
|
plan = IlluminationPulsePlan(
|
|
pulse_count=args.count,
|
|
bright_ms=args.bright_ms,
|
|
settle_ms=args.settle_ms,
|
|
brightness_percent=args.brightness,
|
|
idle_brightness_percent=args.idle_brightness,
|
|
color_temp_percent=args.color_temp,
|
|
)
|
|
pulses = ActiveIlluminationController(light, plan).run()
|
|
for pulse in pulses:
|
|
print(
|
|
f"pulse={pulse.pulse_index} "
|
|
f"start_ns={pulse.start_monotonic_ns} "
|
|
f"bright_until_ns={pulse.bright_until_monotonic_ns} "
|
|
f"settle_until_ns={pulse.settle_until_monotonic_ns}"
|
|
)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|