Switch lamps to internal IDs; EAN becomes optional metadata

Directories rename from bare EANs to L0001..L0010 (measurement order).
metrics.json gains an ean field, and a rated block with advertised
values (flux, CCT, power, lifetime) where already documented, so the
site can show advertised-vs-measured deltas. One EAN can now cover
several lamp versions (variant field) and unbranded lamps need no
barcode.
This commit is contained in:
2026-07-09 12:03:05 +07:00
parent 6672dce92d
commit c7d480bfcf
31 changed files with 49 additions and 16 deletions
+12 -6
View File
@@ -11,16 +11,22 @@ renaming a directory here requires updating the matching page in the web repo.
## Layout
```
lamps/<EAN>/spd.csv SPD 380-1050 nm: wavelength_nm,value
lamps/<EAN>/tm30.csv ANSI/IES TM-30-18 per-hue-bin data (16 bins): Rcs, Rhs, Rf_h, ...
lamps/<EAN>/metrics.json Summary: TM-30 Rf/Rg, CRI Ra + R1-R15, CCT, flux, instrument metadata
lamps/<ID>/spd.csv SPD 380-1050 nm: wavelength_nm,value
lamps/<ID>/tm30.csv ANSI/IES TM-30-18 per-hue-bin data (16 bins): Rcs, Rhs, Rf_h, ...
lamps/<ID>/metrics.json Summary: TM-30 Rf/Rg, CRI Ra + R1-R15, CCT, flux, instrument metadata
solar-charge-controllers/<device>.csv Efficiency sweep: set/measured Vin, Iin, Pin, Vout,
Iout, Pout, eff_pct, heatsink and board temperature
```
Lamps are identified by their EAN barcode so results stay unambiguous across brands and
packaging variants. EANs starting with 2 are retailer-internal barcodes that cannot be
resolved publicly.
Every lamp has an internal ID (`L0001`, `L0002`, ...) as its primary key, assigned in
measurement order by `lamp_station.py`. The EAN barcode is optional metadata in
`metrics.json` (`ean`): one barcode can cover several versions of a lamp (daylight and
warm white sharing box art get distinct IDs and a `variant` field), unbranded lamps have
no barcode at all, and EANs starting with 2 are retailer-internal codes that cannot be
resolved publicly. `metrics.json` may also carry a `rated` block with the advertised
values from the packaging (`Phi_lm`, `CCT_K`, `Power_W`, `Ra`, `lifetime_h`, `W_equiv`),
keyed like their measured counterparts so consumers can render
advertised-vs-measured comparisons.
## Provenance
@@ -1,8 +1,16 @@
{
"name": "8718696822708",
"name": "L0001",
"ean": "8718696822708",
"manufacturer": "Philips",
"model": "LEDBulb 8W E27 3000K (68W equivalent, 770 lm)",
"notes": "",
"rated": {
"Phi_lm": 770,
"CCT_K": 3000,
"Power_W": 8,
"lifetime_h": 15000,
"W_equiv": 68
},
"instrument": "HPCS6500",
"measured_at": "2026-07-08T12:01:34+07:00",
"instrument_date": "2026-07-08",
@@ -1,8 +1,14 @@
{
"name": "8850646092349",
"name": "L0002",
"ean": "8850646092349",
"manufacturer": "LAMPTAN",
"model": "LED Bulb Gloss V2 9W E27 Daylight 6500K",
"notes": "",
"rated": {
"CCT_K": 6500,
"Power_W": 9,
"lifetime_h": 10000
},
"instrument": "HPCS6500",
"measured_at": "2026-07-08T12:09:22+07:00",
"instrument_date": "2026-07-08",
@@ -1,8 +1,14 @@
{
"name": "8850646092905",
"name": "L0003",
"ean": "8850646092905",
"manufacturer": "LAMPTAN",
"model": "LED Bulb Gloss V2 9W E27 Warm White 2700K",
"notes": "Gloss V2 series attribution from retailer listings; verify against packaging.",
"rated": {
"CCT_K": 2700,
"Power_W": 9,
"lifetime_h": 10000
},
"instrument": "HPCS6500",
"measured_at": "2026-07-08T12:11:17+07:00",
"instrument_date": "2026-07-08",
@@ -1,5 +1,6 @@
{
"name": "2897624480138",
"name": "L0004",
"ean": "2897624480138",
"manufacturer": "",
"model": "",
"notes": "Retailer-internal barcode (GS1 restricted range 20-29); brand and model not publicly resolvable.",
@@ -1,5 +1,6 @@
{
"name": "8718696821909",
"name": "L0005",
"ean": "8718696821909",
"manufacturer": "",
"model": "",
"notes": "",
@@ -1,5 +1,6 @@
{
"name": "8718696844984",
"name": "L0006",
"ean": "8718696844984",
"manufacturer": "Philips",
"model": "MyCare 9.5W",
"notes": "",
@@ -1,5 +1,6 @@
{
"name": "8718696844960",
"name": "L0007",
"ean": "8718696844960",
"manufacturer": "Philips",
"model": "MyCare 9.5W",
"notes": "",
@@ -1,5 +1,6 @@
{
"name": "6988766215712",
"name": "L0008",
"ean": "6988766215712",
"manufacturer": "ST",
"model": "ST-009",
"notes": "",
@@ -1,5 +1,6 @@
{
"name": "3897624480137",
"name": "L0009",
"ean": "3897624480137",
"manufacturer": "TKL",
"model": "TK-A013",
"notes": "",
@@ -1,5 +1,6 @@
{
"name": "6988766215705",
"name": "L0010",
"ean": "6988766215705",
"manufacturer": "ST",
"model": "ST-012",
"notes": "daylight",