mirror of
https://github.com/basnijholt/adaptive-lighting.git
synced 2026-10-30 15:07:53 +01:00
A service that only returns data: for each light, the `light.turn_on` calls Adaptive Lighting would make to adapt it, now or for a given time of day (today), without making them. Each call has its service data and the time to wait before it (between split calls, with `separate_turn_on_commands`). This lets automations use Adaptive Lighting's curves for other times, e.g. to step lights to later or earlier settings from a button: when the automation makes the calls, Adaptive Lighting treats them like any other change (with `take_over_control`, it stops adapting those lights until manual control is reset). - Only the lights and light groups in the switches' `lights` are allowed. Without `entity_id`, each gets the calls of the switch it's in (of several, the one that's on). A light group is replaced by its members when the switch expands light groups, as Adaptive Lighting does. - Omitted options follow the switch (its adapt switches, `prefer_rgb_color` and `initial_transition`), and settings are for when the transition ends, as for the regular adaptation. Manual control and whether the lights are on don't change the calls. - The calls are built by the same code as Adaptive Lighting's own, factored out of `prepare_adaptation_data` (`_build_service_data`) and `adaptation_utils.prepare_adaptation_data` (`plan_service_calls`), without changing their behaviour. `SunLightSettings.get_settings` takes an optional time. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
36 lines
1.6 KiB
Python
36 lines
1.6 KiB
Python
"""Documentation generation utilities for Adaptive Lighting.
|
|
|
|
Provides functions to transform content for the documentation site.
|
|
Used by markdown-code-runner to generate documentation pages from README content.
|
|
"""
|
|
|
|
from __future__ import annotations
|
|
|
|
import re
|
|
|
|
|
|
def _transform_readme_links(content: str) -> str:
|
|
"""Transform README internal links to docs site links."""
|
|
# Map README anchors to doc pages
|
|
link_map = {
|
|
"#gear-configuration": "configuration.md",
|
|
"#memo-options": "configuration.md#all-options",
|
|
"#hammer_and_wrench-services": "services.md",
|
|
"#adaptive_lightingapply": "services.md#adaptive_lightingapply",
|
|
"#adaptive_lightingget_commands": "services.md#adaptive_lightingget_commands",
|
|
"#adaptive_lightingset_manual_control": "services.md#adaptive_lightingset_manual_control",
|
|
"#adaptive_lightingchange_switch_settings": "services.md#adaptive_lightingchange_switch_settings",
|
|
"#robot-automation-examples": "automation-examples.md",
|
|
"#sos-troubleshooting": "troubleshooting.md",
|
|
"#exclamation-common-problems--solutions": "troubleshooting.md#common-problems-solutions",
|
|
"#bar_chart-graphs": "advanced/brightness-modes.md#graphs",
|
|
"#bulb-features": "index.md#features",
|
|
"#control_knobs-regain-manual-control": "advanced/manual-control.md",
|
|
"#eyes-see-also": "see-also.md",
|
|
}
|
|
|
|
for old_link, new_link in link_map.items():
|
|
content = content.replace(f"]({old_link})", f"]({new_link})")
|
|
|
|
# Remove ToC link pattern [[ToC](#...)]
|
|
return re.sub(r"\[\[ToC\]\([^)]+\)\]", "", content)
|