mirror of
https://github.com/basnijholt/adaptive-lighting.git
synced 2026-09-16 16:54:04 +02:00
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.
247 lines
11 KiB
JSON
247 lines
11 KiB
JSON
{
|
|
"config": {
|
|
"step": {
|
|
"user": {
|
|
"title": "Name this Adaptive Lighting profile",
|
|
"description": "Each profile controls one set of lights. You'll be able to add more profiles later for other rooms or scenes.",
|
|
"data": {
|
|
"name": "Profile name"
|
|
},
|
|
"data_description": {
|
|
"name": "A short label like \"Kitchen\" or \"Living room\"."
|
|
}
|
|
}
|
|
},
|
|
"abort": {
|
|
"already_configured": "[%key:common::config_flow::abort::already_configured_device%]",
|
|
"no_data": "Cannot import without configuration data."
|
|
},
|
|
"error": {
|
|
"incompatible_version": "This entry was created with an older, incompatible version of Adaptive Lighting. Delete the entry and create a new one."
|
|
}
|
|
},
|
|
"options": {
|
|
"step": {
|
|
"init": {
|
|
"title": "Adaptive Lighting options",
|
|
"description": "Tune how this profile adjusts its lights through the day. Hover labels for more detail; the Advanced and Diagnostics sections are collapsed because most households never need to touch them.",
|
|
"sections": {
|
|
"targets": {
|
|
"name": "Targets",
|
|
"description": "Which lights this profile controls.",
|
|
"data": {
|
|
"lights": "Lights"
|
|
},
|
|
"data_description": {
|
|
"lights": "Pick every light that should follow this profile's curve."
|
|
}
|
|
},
|
|
"daytime_curve": {
|
|
"name": "Daytime curve",
|
|
"description": "How bright these lights get, and how warm or cool they feel, between sunrise and sunset.",
|
|
"data": {
|
|
"min_brightness": "Minimum brightness",
|
|
"max_brightness": "Maximum brightness",
|
|
"min_color_temp": "Warmest color temperature",
|
|
"max_color_temp": "Coolest color temperature",
|
|
"prefer_rgb_color": "Prefer RGB color"
|
|
},
|
|
"data_description": {
|
|
"min_brightness": "Brightness at the lowest point of the day (deep night).",
|
|
"max_brightness": "Brightness at the peak of the day (mid-day).",
|
|
"min_color_temp": "The night-time tone — lower numbers are warmer (more orange).",
|
|
"max_color_temp": "The mid-day tone — higher numbers are cooler (more blue).",
|
|
"prefer_rgb_color": "When a light supports both color temperature and RGB, send RGB."
|
|
}
|
|
},
|
|
"sun_schedule": {
|
|
"name": "Sun schedule",
|
|
"description": "When morning and evening start. Defaults to your home's sunrise and sunset; point these at Sun2 sensors for civil, nautical, or astronomical twilight.",
|
|
"data": {
|
|
"sunrise_entity": "Sunrise entity",
|
|
"sunset_entity": "Sunset entity"
|
|
},
|
|
"data_description": {
|
|
"sunrise_entity": "Any sensor that returns the next sunrise timestamp.",
|
|
"sunset_entity": "Any sensor that returns the next sunset timestamp."
|
|
}
|
|
},
|
|
"light_control": {
|
|
"name": "Light control",
|
|
"description": "How this integration talks to your lights when you turn them on by hand or by voice.",
|
|
"data": {
|
|
"intercept": "Intercept light.turn_on calls",
|
|
"multi_light_intercept": "Intercept multi-light calls"
|
|
},
|
|
"data_description": {
|
|
"intercept": "Apply the curve the moment a light turns on, instead of waiting up to one interval.",
|
|
"multi_light_intercept": "Also intercept calls that target several lights at once. Requires the option above."
|
|
}
|
|
},
|
|
"advanced": {
|
|
"name": "Advanced",
|
|
"description": "Timing knobs. Most households never need to touch these.",
|
|
"data": {
|
|
"interval": "Update interval (s)",
|
|
"transition": "Transition time (s)",
|
|
"initial_transition": "First-on fade (s)",
|
|
"adapt_delay": "Delay before adapting (s)",
|
|
"separate_turn_on_commands": "Split brightness and color into separate calls",
|
|
"send_split_delay": "Pause between split calls (ms)",
|
|
"skip_redundant_commands": "Skip redundant commands"
|
|
},
|
|
"data_description": {
|
|
"interval": "How often to recompute and re-apply the curve.",
|
|
"transition": "Fade time for each scheduled curve update.",
|
|
"initial_transition": "Fade time when a light first turns on.",
|
|
"adapt_delay": "Wait this long after a light reports 'on' before applying the curve. Helps lights that report state before they have settled.",
|
|
"separate_turn_on_commands": "Required by lights that cannot accept brightness and color in the same call.",
|
|
"send_split_delay": "Only used when the option above is on.",
|
|
"skip_redundant_commands": "Don't send a command if the light is already at the target state."
|
|
}
|
|
},
|
|
"diagnostics": {
|
|
"name": "Diagnostics",
|
|
"description": "Verbose entity attributes for debugging.",
|
|
"data": {
|
|
"include_config_in_attributes": "Expose all options as switch attributes"
|
|
},
|
|
"data_description": {
|
|
"include_config_in_attributes": "Useful for templating and dashboards that read the integration's state."
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"abort": {
|
|
"yaml_managed": "This Adaptive Lighting profile is managed by YAML. To change its options, edit configuration.yaml."
|
|
},
|
|
"error": {
|
|
"option_error": "One of the options has an invalid value.",
|
|
"entity_missing": "One or more of the selected light entities are not currently registered in Home Assistant."
|
|
}
|
|
},
|
|
"services": {
|
|
"apply": {
|
|
"name": "Apply settings",
|
|
"description": "Apply this profile's current curve values to its lights immediately, without waiting for the next scheduled update.",
|
|
"fields": {
|
|
"entity_id": {
|
|
"name": "Master switch",
|
|
"description": "The master switch entity whose profile settings to apply."
|
|
},
|
|
"lights": {
|
|
"name": "Lights",
|
|
"description": "Lights to apply the settings to. If empty, applies to all lights the profile controls."
|
|
},
|
|
"transition": {
|
|
"name": "Transition time (s)",
|
|
"description": "Fade time for this one application."
|
|
},
|
|
"adapt_brightness": {
|
|
"name": "Adapt brightness",
|
|
"description": "Adjust brightness on supporting lights."
|
|
},
|
|
"adapt_color": {
|
|
"name": "Adapt color",
|
|
"description": "Adjust color temperature on supporting lights."
|
|
},
|
|
"prefer_rgb_color": {
|
|
"name": "Prefer RGB",
|
|
"description": "Send RGB when the light supports both color temperature and RGB."
|
|
},
|
|
"turn_on_lights": {
|
|
"name": "Turn on lights that are off",
|
|
"description": "If true, also turn on lights that are currently off before applying."
|
|
}
|
|
}
|
|
},
|
|
"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": {
|
|
"name": "Master switch",
|
|
"description": "The master switch entity whose profile to update."
|
|
},
|
|
"use_defaults": {
|
|
"name": "Defaults source",
|
|
"description": "Where to pull unsupplied values from: 'current' keeps existing values, 'factory' resets to documented defaults, 'configuration' reverts to the profile's configured defaults."
|
|
},
|
|
"include_config_in_attributes": {
|
|
"name": "Expose config in attributes",
|
|
"description": "Show all options as attributes on the master switch."
|
|
},
|
|
"turn_on_lights": {
|
|
"name": "Turn on lights that are off",
|
|
"description": "If true, also turn on lights that are currently off before applying."
|
|
},
|
|
"initial_transition": {
|
|
"name": "First-on fade (s)",
|
|
"description": "Fade time when a light first turns on."
|
|
},
|
|
"max_brightness": {
|
|
"name": "Maximum brightness",
|
|
"description": "Brightness at the peak of the day."
|
|
},
|
|
"max_color_temp": {
|
|
"name": "Coolest color temperature",
|
|
"description": "The mid-day tone."
|
|
},
|
|
"min_brightness": {
|
|
"name": "Minimum brightness",
|
|
"description": "Brightness during the night."
|
|
},
|
|
"min_color_temp": {
|
|
"name": "Warmest color temperature",
|
|
"description": "The night-time tone."
|
|
},
|
|
"prefer_rgb_color": {
|
|
"name": "Prefer RGB",
|
|
"description": "When a light supports both, send RGB."
|
|
},
|
|
"separate_turn_on_commands": {
|
|
"name": "Split brightness and color into separate calls",
|
|
"description": "Required by some lights."
|
|
},
|
|
"send_split_delay": {
|
|
"name": "Pause between split calls (ms)",
|
|
"description": "Only used when the option above is on."
|
|
},
|
|
"sunrise_entity": {
|
|
"name": "Sunrise entity",
|
|
"description": "Any sensor that returns the next sunrise timestamp."
|
|
},
|
|
"sunset_entity": {
|
|
"name": "Sunset entity",
|
|
"description": "Any sensor that returns the next sunset timestamp."
|
|
},
|
|
"transition": {
|
|
"name": "Transition time (s)",
|
|
"description": "Fade time for each scheduled curve update."
|
|
},
|
|
"adapt_delay": {
|
|
"name": "Delay before adapting (s)",
|
|
"description": "Wait this long after a light reports 'on' before applying."
|
|
},
|
|
"skip_redundant_commands": {
|
|
"name": "Skip redundant commands",
|
|
"description": "Don't send a command if the light is already at the target state."
|
|
},
|
|
"intercept": {
|
|
"name": "Intercept light.turn_on calls",
|
|
"description": "Apply the curve the moment a light turns on."
|
|
},
|
|
"multi_light_intercept": {
|
|
"name": "Intercept multi-light calls",
|
|
"description": "Also intercept calls that target several lights at once."
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"exceptions": {
|
|
"incompatible_version": {
|
|
"message": "Adaptive Lighting v{current_version} (CDiT fork) is incompatible with the existing config entry (version {entry_version}). Delete the entry from Settings → Devices & Services and create a new one."
|
|
}
|
|
}
|
|
}
|