Add lamp comparison export with TM-30 computation

lamp_export.py writes the per-lamp bundle consumed by the buildfor.life
comparison pages: spd.csv (full 380-1050 nm spectrum), tm30.csv (ANSI/IES
TM-30-18 hue-bin data for the color vector graphic), and metrics.json
(photometric, colorimetric, CRI R1-R15, TM-30 Rf/Rg, electrical, supply
settings).

- tm30.py computes TM-30-18 via colour-science from the measured spectrum,
  resampled to a uniform 1 nm grid; validated against CIE FL2 (Rf 70, Rg 86)
- Optional built-in PSU control (--mode/--voltage/--frequency/--current),
  switched on for the measurement and off afterwards, with --settle warm-up
  and --interval between readings
- Readings use the vendor single-shot cycle verified from USB captures:
  test config -> trigger (8C 0E 02) -> poll -> read -> reset per reading
- Also supports --passive and --parse <pcap> sources
This commit is contained in:
2026-07-08 12:04:18 +07:00
parent cfd589b04b
commit 488c9a399c
5 changed files with 432 additions and 0 deletions
+3
View File
@@ -16,5 +16,8 @@ uv.lock
# Captures (binary data, not tracked)
captures/
# Lamp export bundles (published to the website repo instead)
lamps/
# Claude Code
.claude/