adaptive-lighting/custom_components/adaptive_lighting/services.yaml
Casey bb3b8b81f4 Groups 8 + 9: strings, services.yaml, README, CHANGELOG (37/53)
strings.json + translations/en.json:
- Rewritten from scratch with plain-language labels and one-sentence
  framers per section (Targets / Daytime curve / Sun schedule / Light
  control / Advanced / Diagnostics).
- Per-field `data_description` for every visible option in the options
  flow.
- New translations for `yaml_managed` abort and the version-incompatible
  error.
- Removed every key for the 21 dropped fields and the sleep switch.
- Services section updated for the trimmed surface: dropped
  `set_manual_control` entirely, removed all sleep / take-over /
  sunrise-sunset-time keys from `change_switch_settings`.

services.yaml: rewritten by hand (was auto-generated upstream). Now
matches the fork's actual service surface: `apply` and
`change_switch_settings` only, with native HA selectors and units.

README: added a CDiT preamble at the top covering the five core
differences from upstream, the strict-version-break warning, the
recommended Sun2 companion, and the minimum HA version pin. Crucially,
also added a "🙏 Huge thanks to the upstream team" block that names
@basnijholt and the 130+ upstream contributors, points users at the
upstream repo for the canonical install, and routes core-curve / light-
handling bugs to upstream's tracker. Open-source credit done right.

CHANGELOG.md: new file. Header credits upstream up front; v2.0.0-cdit.1
section lists every Added / Changed / Removed item by name, the
migration / upgrade steps in numbered form, internal refactors, and
known limitations (Manager bridge stubs, locale drift, astral as
transitive dep).

tasks.md: 8.1-8.6 and 9.1-9.3 marked complete; 9.4 (GitHub repo
description) deferred to a separate `gh repo edit` step.

openspec validate cdit-config-redesign --strict: green.
JSON + YAML syntax: validated.
Module import: clean.
2026-05-16 14:59:09 +02:00

186 lines
5.3 KiB
YAML

# CDiT Adaptive Lighting service surface.
# Hand-written for the fork — upstream's services.yaml was auto-generated
# from a wider config schema. See design.md decisions 7 + 8.
apply:
name: Apply settings
description: Apply this profile's current curve values to its lights immediately.
fields:
entity_id:
description: The master switch entity whose profile settings to apply.
selector:
entity:
integration: adaptive_lighting
domain: switch
multiple: false
lights:
description: Lights to apply the settings to. If empty, applies to all lights the profile controls.
selector:
entity:
domain: light
multiple: true
transition:
description: Fade time for this one application, in seconds.
example: 10
selector:
number:
min: 0
max: 300
unit_of_measurement: s
mode: box
adapt_brightness:
description: Adjust brightness on supporting lights.
default: true
selector:
boolean:
adapt_color:
description: Adjust color temperature on supporting lights.
default: true
selector:
boolean:
prefer_rgb_color:
description: Send RGB when the light supports both color temperature and RGB.
default: false
selector:
boolean:
turn_on_lights:
description: Also turn on lights that are currently off before applying.
default: false
selector:
boolean:
change_switch_settings:
name: Change profile settings
description: Change one or more of this profile's settings at runtime. The change persists until the next options-flow save or HA restart.
fields:
entity_id:
description: The master switch entity whose profile to update.
required: true
selector:
entity:
integration: adaptive_lighting
domain: switch
use_defaults:
description: 'Where to pull unsupplied values from: "current" keeps existing values, "factory" resets to documented defaults, "configuration" reverts to the profile''s configured defaults.'
default: current
selector:
select:
options:
- current
- configuration
- factory
include_config_in_attributes:
description: Expose all options as attributes on the master switch.
selector:
boolean:
turn_on_lights:
description: Also turn on lights that are currently off before applying.
selector:
boolean:
initial_transition:
description: Fade time when a light first turns on.
example: 1
selector:
number:
min: 0
max: 300
unit_of_measurement: s
mode: box
transition:
description: Fade time for each scheduled curve update.
example: 45
selector:
number:
min: 0
max: 300
unit_of_measurement: s
mode: box
interval:
description: How often to recompute and re-apply the curve.
example: 90
selector:
number:
min: 1
max: 3600
unit_of_measurement: s
mode: box
adapt_delay:
description: Wait this long after a light reports 'on' before applying.
example: 0
selector:
number:
min: 0
max: 300
unit_of_measurement: s
mode: box
min_brightness:
description: Brightness during the night.
selector:
number:
min: 1
max: 100
unit_of_measurement: "%"
mode: slider
max_brightness:
description: Brightness at the peak of the day.
selector:
number:
min: 1
max: 100
unit_of_measurement: "%"
mode: slider
min_color_temp:
description: The night-time tone (warmer = lower).
selector:
number:
min: 1000
max: 10000
unit_of_measurement: K
mode: box
max_color_temp:
description: The mid-day tone (cooler = higher).
selector:
number:
min: 1000
max: 10000
unit_of_measurement: K
mode: box
prefer_rgb_color:
description: When a light supports both color temperature and RGB, send RGB.
selector:
boolean:
sunrise_entity:
description: Any sensor that returns the next sunrise timestamp.
selector:
entity:
domain: sensor
device_class: timestamp
sunset_entity:
description: Any sensor that returns the next sunset timestamp.
selector:
entity:
domain: sensor
device_class: timestamp
separate_turn_on_commands:
description: Required by some lights.
selector:
boolean:
send_split_delay:
description: Only used when separate_turn_on_commands is true.
selector:
number:
min: 0
max: 10000
unit_of_measurement: ms
mode: box
skip_redundant_commands:
description: Don't send a command if the light is already at the target state.
selector:
boolean:
intercept:
description: Apply the curve the moment a light turns on.
selector:
boolean:
multi_light_intercept:
description: Also intercept calls that target several lights at once.
selector:
boolean: