adaptive-lighting/custom_components/adaptive_lighting
Casey 1b21228b30 Implement add-output-sensors: 36/41 tasks complete
Three sensor entities per AL profile expose the curve's current outputs
plus actual sun elevation as graphable numerics with
SensorStateClass.MEASUREMENT, so HA's recorder + apexcharts-card chart
them natively:

- sensor.<profile>_output_brightness   (% — from self._settings)
- sensor.<profile>_output_color_temp   (K — from self._settings)
- sensor.<profile>_sun_elevation       (° — from sun.sun.attributes.elevation)

Architecture: master switch publishes computed outputs to
hass.data[DOMAIN][entry_id]["outputs"] after each curve tick, then fires
a per-entry dispatcher signal. Sensors subscribe and read from the cache.
Single computation path, push-based updates, no polling.

The existing master switch attributes (brightness_pct, color_temp_kelvin,
synthetic sun_position in [-1,+1]) are unchanged — sensors are purely
additive. Manifest bumped to 2.2.0-cdit.1 (minor; no breaking changes).

Artifact realignment along the way: Q2 answer assumed sun_position was
Sun2 elevation degrees, but reading color_and_brightness.py revealed
it's a synthetic float in [-1,+1] derived from the brightness curve.
Switched to pulling actual elevation from sun.sun (Decision 8 added),
renamed sensor from sun_position to sun_elevation. Friendly names use
asymmetric "Output" prefix to dodge collision with the adapt-brightness
switch and Min/Max color-temp numbers.

Remaining: group 6 (manual live-HA verification on
homeassistant.onca-blenny.ts.net) — requires HACS deploy.

15 new sensor tests pass; full suite green (123/123). openspec
validate --strict green. ruff clean on new files.
2026-05-21 10:11:52 +02:00
..
translations Implement add-output-sensors: 36/41 tasks complete 2026-05-21 10:11:52 +02:00
__init__.py Implement add-output-sensors: 36/41 tasks complete 2026-05-21 10:11:52 +02:00
_docs_helpers.py Implement cdit-config-redesign groups 1-6 (30/53 tasks) 2026-05-16 14:27:39 +02:00
adaptation_utils.py Individual manual control of brightness and color (#1356) 2025-12-22 22:55:16 -08:00
color_and_brightness.py Implement cdit-config-redesign groups 1-6 (30/53 tasks) 2026-05-16 14:27:39 +02:00
config_flow.py Implement add-runtime-range-controls 2026-05-16 22:24:39 +02:00
const.py Implement add-output-sensors: 36/41 tasks complete 2026-05-21 10:11:52 +02:00
docs_gen.py Migrate to markdown-code-runner's built-in include_section() (#1417) 2026-01-26 09:01:50 +01:00
hass_utils.py Friendly names (#1258) 2025-11-27 12:01:05 -08:00
helpers.py Friendly names (#1258) 2025-11-27 12:01:05 -08:00
manifest.json Implement add-output-sensors: 36/41 tasks complete 2026-05-21 10:11:52 +02:00
number.py Implement add-output-sensors: 36/41 tasks complete 2026-05-21 10:11:52 +02:00
sensor.py Implement add-output-sensors: 36/41 tasks complete 2026-05-21 10:11:52 +02:00
services.yaml Groups 8 + 9: strings, services.yaml, README, CHANGELOG (37/53) 2026-05-16 14:59:09 +02:00
strings.json Implement add-output-sensors: 36/41 tasks complete 2026-05-21 10:11:52 +02:00
switch.py Implement add-output-sensors: 36/41 tasks complete 2026-05-21 10:11:52 +02:00