mirror of
https://github.com/basnijholt/adaptive-lighting.git
synced 2026-09-12 06:44:04 +02:00
Name external turn-on policy after manual-control behavior
This commit is contained in:
parent
b34db1261c
commit
c88e444529
11 changed files with 57 additions and 47 deletions
|
|
@ -157,7 +157,7 @@ The YAML and frontend configuration methods support all of the options listed be
|
|||
| `autoreset_control_seconds` | Automatically reset the manual control after a number of seconds. Set to 0 to disable. ⏲️ | `0` | `int` 0-31536000 |
|
||||
| `only_once` | Adapt lights only when they are turned on (`true`) or keep adapting them (`false`). 🔄 | `False` | `bool` |
|
||||
| `adapt_only_on_bare_turn_on` | When turning lights on initially. If set to `true`, AL adapts only if `light.turn_on` is invoked without specifying color or brightness. ❌🌈 This e.g., prevents adaptation when activating a scene and marks the light as manually controlled. If `false`, AL adapts regardless of the presence of color or brightness in the initial `service_data`. Needs `take_over_control` enabled. 🕵️ | `False` | `bool` |
|
||||
| `adapt_only_on_ha_turn_on` | Only adapt an `off` to `on` event when its context exactly matches the latest recorded Home Assistant `light.turn_on` context for that light. Unmatched turn-ons are marked as manually controlled and left unchanged. This still allows `detect_non_ha_changes` for lights that are already on. Needs `take_over_control` enabled. 🕵️ | `False` | `bool` |
|
||||
| `manual_control_on_external_turn_on` | Treat turn-ons without a matching Home Assistant `light.turn_on` context as manual control. Normal manual-control resets apply. Still allows `detect_non_ha_changes` for already-on lights. Needs `take_over_control` enabled. 🕵️ | `False` | `bool` |
|
||||
| `reset_manual_control_on_sleep_mode_change` | Reset manual control when the sleep mode switch is toggled. Set to `false` to preserve manual control across sleep mode changes. 😴 | `True` | `bool` |
|
||||
| `separate_turn_on_commands` | Use separate `light.turn_on` calls for color and brightness, needed for some light types. 🔀 | `False` | `bool` |
|
||||
| `send_split_delay` | Delay (ms) between `separate_turn_on_commands` for lights that don't support simultaneous brightness and color setting. ⏲️ | `0` | `int` 0-10000 |
|
||||
|
|
@ -770,7 +770,7 @@ Addressing these issues will significantly improve your Home Assistant experienc
|
|||
In case lights are suddenly turning on by themselves, this is most likely due to the light incorrectly reporting an "on" state to Home Assistant, leading to an undesired Adaptive Lighting action.
|
||||
To prevent adapting in cases *where the state of the light is suddenly "on" and only adapt if there is an associated `light.turn_on` service call*, set `detect_non_ha_changes: false`.
|
||||
|
||||
To keep detecting manual changes to lights that are already on while leaving unmatched `off` to `on` state events unchanged, enable `adapt_only_on_ha_turn_on`. Matching uses the exact context of the most recently recorded `light.turn_on` call. Some integrations replace or omit that context, so Adaptive Lighting cannot distinguish every physical versus Home Assistant turn-on source.
|
||||
To keep detecting manual changes to lights that are already on while leaving unmatched `off` to `on` state events unchanged, enable `manual_control_on_external_turn_on`. Matching uses the exact context of the most recently recorded `light.turn_on` call. Some integrations replace or omit that context, so Adaptive Lighting cannot distinguish every physical versus Home Assistant turn-on source.
|
||||
|
||||
#### :signal_strength: WiFi Networks
|
||||
|
||||
|
|
|
|||
|
|
@ -100,16 +100,14 @@ DOCS[CONF_ADAPT_ONLY_ON_BARE_TURN_ON] = (
|
|||
"Needs `take_over_control` enabled. 🕵️"
|
||||
)
|
||||
|
||||
CONF_ADAPT_ONLY_ON_HA_TURN_ON, DEFAULT_ADAPT_ONLY_ON_HA_TURN_ON = (
|
||||
"adapt_only_on_ha_turn_on",
|
||||
CONF_MANUAL_CONTROL_ON_EXTERNAL_TURN_ON, DEFAULT_MANUAL_CONTROL_ON_EXTERNAL_TURN_ON = (
|
||||
"manual_control_on_external_turn_on",
|
||||
False,
|
||||
)
|
||||
DOCS[CONF_ADAPT_ONLY_ON_HA_TURN_ON] = (
|
||||
"Only adapt an `off` to `on` event when its context exactly matches the latest "
|
||||
"recorded Home Assistant `light.turn_on` context for that light. Unmatched turn-ons "
|
||||
"are marked as manually controlled and left unchanged. This still allows "
|
||||
"`detect_non_ha_changes` for lights that are already on. Needs `take_over_control` "
|
||||
"enabled. 🕵️"
|
||||
DOCS[CONF_MANUAL_CONTROL_ON_EXTERNAL_TURN_ON] = (
|
||||
"Treat turn-ons without a matching Home Assistant `light.turn_on` context as "
|
||||
"manual control. Normal manual-control resets apply. Still allows "
|
||||
"`detect_non_ha_changes` for already-on lights. Needs `take_over_control` enabled. 🕵️"
|
||||
)
|
||||
|
||||
CONF_PREFER_RGB_COLOR, DEFAULT_PREFER_RGB_COLOR = "prefer_rgb_color", False
|
||||
|
|
@ -428,7 +426,11 @@ VALIDATION_TUPLES: list[tuple[str, Any, Any]] = [
|
|||
),
|
||||
(CONF_ONLY_ONCE, DEFAULT_ONLY_ONCE, bool),
|
||||
(CONF_ADAPT_ONLY_ON_BARE_TURN_ON, DEFAULT_ADAPT_ONLY_ON_BARE_TURN_ON, bool),
|
||||
(CONF_ADAPT_ONLY_ON_HA_TURN_ON, DEFAULT_ADAPT_ONLY_ON_HA_TURN_ON, bool),
|
||||
(
|
||||
CONF_MANUAL_CONTROL_ON_EXTERNAL_TURN_ON,
|
||||
DEFAULT_MANUAL_CONTROL_ON_EXTERNAL_TURN_ON,
|
||||
bool,
|
||||
),
|
||||
(
|
||||
CONF_RESET_MANUAL_CONTROL_ON_SLEEP_MODE_CHANGE,
|
||||
DEFAULT_RESET_MANUAL_CONTROL_ON_SLEEP_MODE_CHANGE,
|
||||
|
|
|
|||
|
|
@ -238,8 +238,8 @@ change_switch_settings:
|
|||
example: false
|
||||
selector:
|
||||
boolean: null
|
||||
adapt_only_on_ha_turn_on:
|
||||
description: Only adapt an `off` to `on` event when its context exactly matches the latest recorded Home Assistant `light.turn_on` context for that light. Unmatched turn-ons are marked as manually controlled and left unchanged. This still allows `detect_non_ha_changes` for lights that are already on. Needs `take_over_control` enabled. 🕵️
|
||||
manual_control_on_external_turn_on:
|
||||
description: Treat turn-ons without a matching Home Assistant `light.turn_on` context as manual control. Normal manual-control resets apply. Still allows `detect_non_ha_changes` for already-on lights. Needs `take_over_control` enabled. 🕵️
|
||||
required: false
|
||||
example: false
|
||||
selector:
|
||||
|
|
|
|||
|
|
@ -70,7 +70,7 @@
|
|||
"autoreset_control_seconds": "autoreset_control_seconds",
|
||||
"only_once": "only_once: Adapt lights only when they are turned on (`true`) or keep adapting them (`false`). 🔄",
|
||||
"adapt_only_on_bare_turn_on": "adapt_only_on_bare_turn_on: When turning lights on initially. If set to `true`, AL adapts only if `light.turn_on` is invoked without specifying color or brightness. ❌🌈 This e.g., prevents adaptation when activating a scene and marks the light as manually controlled. If `false`, AL adapts regardless of the presence of color or brightness in the initial `service_data`. Needs `take_over_control` enabled. 🕵️",
|
||||
"adapt_only_on_ha_turn_on": "adapt_only_on_ha_turn_on: Only adapt an `off` to `on` event when its context exactly matches the latest recorded Home Assistant `light.turn_on` context for that light. Unmatched turn-ons are marked as manually controlled and left unchanged. This still allows `detect_non_ha_changes` for lights that are already on. Needs `take_over_control` enabled. 🕵️",
|
||||
"manual_control_on_external_turn_on": "manual_control_on_external_turn_on: Treat turn-ons without a matching Home Assistant `light.turn_on` context as manual control. Normal manual-control resets apply. Still allows `detect_non_ha_changes` for already-on lights. Needs `take_over_control` enabled. 🕵️",
|
||||
"reset_manual_control_on_sleep_mode_change": "reset_manual_control_on_sleep_mode_change: Reset manual control when the sleep mode switch is toggled. Set to `false` to preserve manual control across sleep mode changes. 😴",
|
||||
"separate_turn_on_commands": "separate_turn_on_commands: Use separate `light.turn_on` calls for color and brightness, needed for some light types. 🔀",
|
||||
"send_split_delay": "send_split_delay",
|
||||
|
|
@ -271,9 +271,9 @@
|
|||
"description": "Detects and halts adaptations for non-`light.turn_on` state changes. Needs `take_over_control` enabled. 🕵️ Caution: ⚠️ Some lights might falsely indicate an 'on' state, which could result in lights turning on unexpectedly. Note that this calls `homeassistant.update_entity` every `interval`! Disable this feature if you encounter such issues.",
|
||||
"name": "detect_non_ha_changes"
|
||||
},
|
||||
"adapt_only_on_ha_turn_on": {
|
||||
"description": "Only adapt an `off` to `on` event when its context exactly matches the latest recorded Home Assistant `light.turn_on` context for that light. Unmatched turn-ons are marked as manually controlled and left unchanged. This still allows `detect_non_ha_changes` for lights that are already on. Needs `take_over_control` enabled. 🕵️",
|
||||
"name": "adapt_only_on_ha_turn_on"
|
||||
"manual_control_on_external_turn_on": {
|
||||
"description": "Treat turn-ons without a matching Home Assistant `light.turn_on` context as manual control. Normal manual-control resets apply. Still allows `detect_non_ha_changes` for already-on lights. Needs `take_over_control` enabled. 🕵️",
|
||||
"name": "manual_control_on_external_turn_on"
|
||||
},
|
||||
"transition": {
|
||||
"description": "Duration of transition when lights change, in seconds. 🕑",
|
||||
|
|
|
|||
|
|
@ -92,7 +92,6 @@ from .const import (
|
|||
ATTR_ADAPTIVE_LIGHTING_MANAGER,
|
||||
CONF_ADAPT_DELAY,
|
||||
CONF_ADAPT_ONLY_ON_BARE_TURN_ON,
|
||||
CONF_ADAPT_ONLY_ON_HA_TURN_ON,
|
||||
CONF_ADAPT_UNTIL_SLEEP,
|
||||
CONF_AUTORESET_CONTROL,
|
||||
CONF_BRIGHTNESS_MODE,
|
||||
|
|
@ -105,6 +104,7 @@ from .const import (
|
|||
CONF_INTERVAL,
|
||||
CONF_LIGHTS,
|
||||
CONF_MANUAL_CONTROL,
|
||||
CONF_MANUAL_CONTROL_ON_EXTERNAL_TURN_ON,
|
||||
CONF_MAX_BRIGHTNESS,
|
||||
CONF_MAX_COLOR_TEMP,
|
||||
CONF_MAX_SUNRISE_TIME,
|
||||
|
|
@ -958,11 +958,11 @@ class AdaptiveSwitch(SwitchEntity, RestoreEntity):
|
|||
if not data[CONF_TAKE_OVER_CONTROL] and (
|
||||
data[CONF_DETECT_NON_HA_CHANGES]
|
||||
or data[CONF_ADAPT_ONLY_ON_BARE_TURN_ON]
|
||||
or data[CONF_ADAPT_ONLY_ON_HA_TURN_ON]
|
||||
or data[CONF_MANUAL_CONTROL_ON_EXTERNAL_TURN_ON]
|
||||
):
|
||||
_LOGGER.warning(
|
||||
"%s: Config mismatch: `detect_non_ha_changes`, `adapt_only_on_bare_turn_on`, "
|
||||
"or `adapt_only_on_ha_turn_on` set to `true` requires `take_over_control` to be "
|
||||
"or `manual_control_on_external_turn_on` set to `true` requires `take_over_control` to be "
|
||||
"enabled. Adjusting config and continuing setup with `take_over_control: true`.",
|
||||
self._name,
|
||||
)
|
||||
|
|
@ -972,7 +972,9 @@ class AdaptiveSwitch(SwitchEntity, RestoreEntity):
|
|||
)
|
||||
self._detect_non_ha_changes = data[CONF_DETECT_NON_HA_CHANGES]
|
||||
self._adapt_only_on_bare_turn_on = data[CONF_ADAPT_ONLY_ON_BARE_TURN_ON]
|
||||
self._adapt_only_on_ha_turn_on = data[CONF_ADAPT_ONLY_ON_HA_TURN_ON]
|
||||
self._manual_control_on_external_turn_on = data[
|
||||
CONF_MANUAL_CONTROL_ON_EXTERNAL_TURN_ON
|
||||
]
|
||||
self._auto_reset_manual_control_time = data[CONF_AUTORESET_CONTROL]
|
||||
self._reset_manual_control_on_sleep_mode_change = data[
|
||||
CONF_RESET_MANUAL_CONTROL_ON_SLEEP_MODE_CHANGE
|
||||
|
|
@ -1607,7 +1609,10 @@ class AdaptiveSwitch(SwitchEntity, RestoreEntity):
|
|||
)
|
||||
if (
|
||||
self._take_over_control
|
||||
and (not self._detect_non_ha_changes or self._adapt_only_on_ha_turn_on)
|
||||
and (
|
||||
not self._detect_non_ha_changes
|
||||
or self._manual_control_on_external_turn_on
|
||||
)
|
||||
and not from_turn_on
|
||||
):
|
||||
# There is an edge case where 2 switches control the same light, e.g.,
|
||||
|
|
@ -1618,12 +1623,12 @@ class AdaptiveSwitch(SwitchEntity, RestoreEntity):
|
|||
# `light.turn_on` context for the entity. Hand control over when either:
|
||||
# - `detect_non_ha_changes` is False (we can't reliably track manual changes
|
||||
# to already-on lights anyway), or
|
||||
# - `adapt_only_on_ha_turn_on` is True (the user explicitly wants external
|
||||
# - `manual_control_on_external_turn_on` is True (the user explicitly wants external
|
||||
# turn-ons left untouched, even while `detect_non_ha_changes` is enabled).
|
||||
_LOGGER.debug(
|
||||
"%s: Ignoring 'off' → 'on' event for '%s' with context.id='%s'"
|
||||
" because it does not match a tracked 'light.turn_on' context and"
|
||||
" ('detect_non_ha_changes' is False or 'adapt_only_on_ha_turn_on' is True)",
|
||||
" ('detect_non_ha_changes' is False or 'manual_control_on_external_turn_on' is True)",
|
||||
self._name,
|
||||
entity_id,
|
||||
event.context.id,
|
||||
|
|
|
|||
|
|
@ -71,7 +71,7 @@
|
|||
"autoreset_control_seconds": "autoreset_control_seconds",
|
||||
"only_once": "only_once: Adapt lights only when they are turned on (`true`) or keep adapting them (`false`). 🔄",
|
||||
"adapt_only_on_bare_turn_on": "adapt_only_on_bare_turn_on: When turning lights on initially. If set to `true`, AL adapts only if `light.turn_on` is invoked without specifying color or brightness. ❌🌈 This e.g., prevents adaptation when activating a scene and marks the light as manually controlled. If `false`, AL adapts regardless of the presence of color or brightness in the initial `service_data`. Needs `take_over_control` enabled. 🕵️",
|
||||
"adapt_only_on_ha_turn_on": "adapt_only_on_ha_turn_on: Only adapt an `off` to `on` event when its context exactly matches the latest recorded Home Assistant `light.turn_on` context for that light. Unmatched turn-ons are marked as manually controlled and left unchanged. This still allows `detect_non_ha_changes` for lights that are already on. Needs `take_over_control` enabled. 🕵️",
|
||||
"manual_control_on_external_turn_on": "manual_control_on_external_turn_on: Treat turn-ons without a matching Home Assistant `light.turn_on` context as manual control. Normal manual-control resets apply. Still allows `detect_non_ha_changes` for already-on lights. Needs `take_over_control` enabled. 🕵️",
|
||||
"reset_manual_control_on_sleep_mode_change": "reset_manual_control_on_sleep_mode_change: Reset manual control when the sleep mode switch is toggled. Set to `false` to preserve manual control across sleep mode changes. 😴",
|
||||
"separate_turn_on_commands": "separate_turn_on_commands: Use separate `light.turn_on` calls for color and brightness, needed for some light types. 🔀",
|
||||
"send_split_delay": "send_split_delay",
|
||||
|
|
@ -272,9 +272,9 @@
|
|||
"description": "Detects and halts adaptations for non-`light.turn_on` state changes. Needs `take_over_control` enabled. 🕵️ Caution: ⚠️ Some lights might falsely indicate an 'on' state, which could result in lights turning on unexpectedly. Note that this calls `homeassistant.update_entity` every `interval`! Disable this feature if you encounter such issues.",
|
||||
"name": "detect_non_ha_changes"
|
||||
},
|
||||
"adapt_only_on_ha_turn_on": {
|
||||
"description": "Only adapt an `off` to `on` event when its context exactly matches the latest recorded Home Assistant `light.turn_on` context for that light. Unmatched turn-ons are marked as manually controlled and left unchanged. This still allows `detect_non_ha_changes` for lights that are already on. Needs `take_over_control` enabled. 🕵️",
|
||||
"name": "adapt_only_on_ha_turn_on"
|
||||
"manual_control_on_external_turn_on": {
|
||||
"description": "Treat turn-ons without a matching Home Assistant `light.turn_on` context as manual control. Normal manual-control resets apply. Still allows `detect_non_ha_changes` for already-on lights. Needs `take_over_control` enabled. 🕵️",
|
||||
"name": "manual_control_on_external_turn_on"
|
||||
},
|
||||
"transition": {
|
||||
"description": "Duration of transition when lights change, in seconds. 🕑",
|
||||
|
|
|
|||
|
|
@ -112,13 +112,13 @@ adaptive_lighting:
|
|||
adapt_only_on_bare_turn_on: true
|
||||
```
|
||||
|
||||
### adapt_only_on_ha_turn_on
|
||||
### manual_control_on_external_turn_on
|
||||
|
||||
When enabled, a light that turns on from `off` is only adapted if the state-change context exactly matches the most recent Home Assistant `light.turn_on` context recorded for that light. An unmatched turn-on is marked as manually controlled and left at its reported brightness and color.
|
||||
When enabled, a turn-on without a state-change context matching the latest recorded Home Assistant `light.turn_on` is treated as manual control. This pauses brightness and color adaptation until manual control resets, rather than skipping just the first adjustment. The usual off/on, explicit reset, and configured timeout rules apply. A later unmatched turn-on marks the light manually controlled again.
|
||||
|
||||
Manual-control flags are shared by profiles controlling the same light. Use the same turn-on policy on those profiles; mixed policies can allow an earlier profile to adapt before another marks the light manually controlled.
|
||||
|
||||
This is the option to reach for when turning a light on with its local switch (or a native Lutron/Caséta scene) makes Adaptive Lighting override your brightness a moment later, forcing you to set it twice.
|
||||
Enable this if you want turn-ons from physical controls or native scenes to preserve their brightness and color. Leave it disabled if those controls should start normal adaptation.
|
||||
|
||||
Its advantage over simply disabling `detect_non_ha_changes` is that the two behaviors are decoupled: you can keep `detect_non_ha_changes: true` to catch manual dimming of lights that are *already on*, while leaving unmatched turn-ons untouched.
|
||||
|
||||
|
|
@ -131,7 +131,7 @@ adaptive_lighting:
|
|||
- light.living_room
|
||||
take_over_control: true
|
||||
detect_non_ha_changes: true # still catch manual changes to already-on lights
|
||||
adapt_only_on_ha_turn_on: true # leave unmatched off→on events unchanged
|
||||
manual_control_on_external_turn_on: true # leave unmatched off→on events unchanged
|
||||
```
|
||||
|
||||
## Checking Manual Control Status
|
||||
|
|
|
|||
|
|
@ -66,7 +66,7 @@ All configuration options are listed below with their default values. These opti
|
|||
| `autoreset_control_seconds` | Automatically reset the manual control after a number of seconds. Set to 0 to disable. ⏲️ | `0` | `int` 0-31536000 |
|
||||
| `only_once` | Adapt lights only when they are turned on (`true`) or keep adapting them (`false`). 🔄 | `False` | `bool` |
|
||||
| `adapt_only_on_bare_turn_on` | When turning lights on initially. If set to `true`, AL adapts only if `light.turn_on` is invoked without specifying color or brightness. ❌🌈 This e.g., prevents adaptation when activating a scene and marks the light as manually controlled. If `false`, AL adapts regardless of the presence of color or brightness in the initial `service_data`. Needs `take_over_control` enabled. 🕵️ | `False` | `bool` |
|
||||
| `adapt_only_on_ha_turn_on` | Only adapt an `off` to `on` event when its context exactly matches the latest recorded Home Assistant `light.turn_on` context for that light. Unmatched turn-ons are marked as manually controlled and left unchanged. This still allows `detect_non_ha_changes` for lights that are already on. Needs `take_over_control` enabled. 🕵️ | `False` | `bool` |
|
||||
| `manual_control_on_external_turn_on` | Treat turn-ons without a matching Home Assistant `light.turn_on` context as manual control. Normal manual-control resets apply. Still allows `detect_non_ha_changes` for already-on lights. Needs `take_over_control` enabled. 🕵️ | `False` | `bool` |
|
||||
| `reset_manual_control_on_sleep_mode_change` | Reset manual control when the sleep mode switch is toggled. Set to `false` to preserve manual control across sleep mode changes. 😴 | `True` | `bool` |
|
||||
| `separate_turn_on_commands` | Use separate `light.turn_on` calls for color and brightness, needed for some light types. 🔀 | `False` | `bool` |
|
||||
| `send_split_delay` | Delay (ms) between `separate_turn_on_commands` for lights that don't support simultaneous brightness and color setting. ⏲️ | `0` | `int` 0-10000 |
|
||||
|
|
|
|||
|
|
@ -59,7 +59,7 @@ Addressing these issues will significantly improve your Home Assistant experienc
|
|||
In case lights are suddenly turning on by themselves, this is most likely due to the light incorrectly reporting an "on" state to Home Assistant, leading to an undesired Adaptive Lighting action.
|
||||
To prevent adapting in cases *where the state of the light is suddenly "on" and only adapt if there is an associated `light.turn_on` service call*, set `detect_non_ha_changes: false`.
|
||||
|
||||
To keep detecting manual changes to lights that are already on while leaving unmatched `off` to `on` state events unchanged, enable `adapt_only_on_ha_turn_on`. Matching uses the exact context of the most recently recorded `light.turn_on` call. Some integrations replace or omit that context, so Adaptive Lighting cannot distinguish every physical versus Home Assistant turn-on source.
|
||||
To keep detecting manual changes to lights that are already on while leaving unmatched `off` to `on` state events unchanged, enable `manual_control_on_external_turn_on`. Matching uses the exact context of the most recently recorded `light.turn_on` call. Some integrations replace or omit that context, so Adaptive Lighting cannot distinguish every physical versus Home Assistant turn-on source.
|
||||
|
||||
#### :signal_strength: WiFi Networks
|
||||
|
||||
|
|
|
|||
|
|
@ -11,11 +11,11 @@ except ImportError:
|
|||
from voluptuous_serialize import convert as to_field_list
|
||||
from homeassistant.components.adaptive_lighting.const import (
|
||||
BASIC_OPTIONS,
|
||||
CONF_ADAPT_ONLY_ON_HA_TURN_ON,
|
||||
CONF_INITIAL_TRANSITION,
|
||||
CONF_MANUAL_CONTROL_ON_EXTERNAL_TURN_ON,
|
||||
CONF_SUNRISE_TIME,
|
||||
CONF_SUNSET_TIME,
|
||||
DEFAULT_ADAPT_ONLY_ON_HA_TURN_ON,
|
||||
DEFAULT_MANUAL_CONTROL_ON_EXTERNAL_TURN_ON,
|
||||
DEFAULT_NAME,
|
||||
DOMAIN,
|
||||
NONE_STR,
|
||||
|
|
@ -152,8 +152,8 @@ async def test_options_schema_has_each_setting_once(hass):
|
|||
|
||||
assert advanced.options == {"collapsed": True}
|
||||
assert (
|
||||
_schema_defaults(advanced.schema)[CONF_ADAPT_ONLY_ON_HA_TURN_ON]
|
||||
is DEFAULT_ADAPT_ONLY_ON_HA_TURN_ON
|
||||
_schema_defaults(advanced.schema)[CONF_MANUAL_CONTROL_ON_EXTERNAL_TURN_ON]
|
||||
is DEFAULT_MANUAL_CONTROL_ON_EXTERNAL_TURN_ON
|
||||
)
|
||||
assert {key.schema for key in schema if key.schema != "advanced"} == BASIC_OPTIONS
|
||||
assert {key.schema for key in advanced.schema.schema} == set(
|
||||
|
|
|
|||
|
|
@ -31,7 +31,6 @@ from homeassistant.components.adaptive_lighting.const import (
|
|||
ATTR_ADAPT_COLOR,
|
||||
ATTR_ADAPTIVE_LIGHTING_MANAGER,
|
||||
CONF_ADAPT_ONLY_ON_BARE_TURN_ON,
|
||||
CONF_ADAPT_ONLY_ON_HA_TURN_ON,
|
||||
CONF_ADAPT_UNTIL_SLEEP,
|
||||
CONF_AUTORESET_CONTROL,
|
||||
CONF_BRIGHTNESS_MODE,
|
||||
|
|
@ -40,6 +39,7 @@ from homeassistant.components.adaptive_lighting.const import (
|
|||
CONF_DETECT_NON_HA_CHANGES,
|
||||
CONF_INITIAL_TRANSITION,
|
||||
CONF_MANUAL_CONTROL,
|
||||
CONF_MANUAL_CONTROL_ON_EXTERNAL_TURN_ON,
|
||||
CONF_MAX_BRIGHTNESS,
|
||||
CONF_MAX_COLOR_TEMP,
|
||||
CONF_MIN_BRIGHTNESS,
|
||||
|
|
@ -4475,12 +4475,15 @@ async def test_automation_turn_on_from_off_not_marked_as_manual_control(hass):
|
|||
|
||||
|
||||
@pytest.mark.parametrize("intercept", [True, False])
|
||||
async def test_adapt_only_on_ha_turn_on_allows_tracked_service_call(hass, intercept):
|
||||
async def test_manual_control_on_external_turn_on_allows_tracked_service_call(
|
||||
hass,
|
||||
intercept,
|
||||
):
|
||||
"""Test a real HA turn-on remains eligible for initial adaptation."""
|
||||
switch, _ = await setup_lights_and_switch(
|
||||
hass,
|
||||
{
|
||||
CONF_ADAPT_ONLY_ON_HA_TURN_ON: True,
|
||||
CONF_MANUAL_CONTROL_ON_EXTERNAL_TURN_ON: True,
|
||||
CONF_DETECT_NON_HA_CHANGES: True,
|
||||
CONF_INTERCEPT: intercept,
|
||||
CONF_MIN_BRIGHTNESS: 50,
|
||||
|
|
@ -4515,7 +4518,7 @@ async def test_adapt_only_on_ha_turn_on_allows_tracked_service_call(hass, interc
|
|||
@pytest.mark.parametrize("intercept", [True, False])
|
||||
@pytest.mark.parametrize(
|
||||
(
|
||||
"adapt_only_on_ha_turn_on",
|
||||
"manual_control_on_external_turn_on",
|
||||
"detect_non_ha_changes",
|
||||
"expected_manual_control",
|
||||
"expected_adaptation",
|
||||
|
|
@ -4527,11 +4530,11 @@ async def test_adapt_only_on_ha_turn_on_allows_tracked_service_call(hass, interc
|
|||
(False, False, LightControlAttributes.ALL, False),
|
||||
],
|
||||
)
|
||||
async def test_adapt_only_on_ha_turn_on_external_state_change(
|
||||
async def test_manual_control_on_external_turn_on_external_state_change(
|
||||
hass,
|
||||
freezer,
|
||||
intercept,
|
||||
adapt_only_on_ha_turn_on,
|
||||
manual_control_on_external_turn_on,
|
||||
detect_non_ha_changes,
|
||||
expected_manual_control,
|
||||
expected_adaptation,
|
||||
|
|
@ -4540,7 +4543,7 @@ async def test_adapt_only_on_ha_turn_on_external_state_change(
|
|||
switch, _ = await setup_lights_and_switch(
|
||||
hass,
|
||||
{
|
||||
CONF_ADAPT_ONLY_ON_HA_TURN_ON: adapt_only_on_ha_turn_on,
|
||||
"manual_control_on_external_turn_on": manual_control_on_external_turn_on,
|
||||
CONF_DETECT_NON_HA_CHANGES: detect_non_ha_changes,
|
||||
CONF_INTERCEPT: intercept,
|
||||
CONF_MIN_BRIGHTNESS: 50,
|
||||
|
|
@ -4580,7 +4583,7 @@ async def test_adapt_only_on_ha_turn_on_external_state_change(
|
|||
|
||||
|
||||
@pytest.mark.parametrize("intercept", [True, False])
|
||||
async def test_adapt_only_on_ha_turn_on_keeps_non_ha_change_detection(
|
||||
async def test_manual_control_on_external_turn_on_keeps_non_ha_change_detection(
|
||||
hass,
|
||||
intercept,
|
||||
):
|
||||
|
|
@ -4588,7 +4591,7 @@ async def test_adapt_only_on_ha_turn_on_keeps_non_ha_change_detection(
|
|||
switch, (light, *_) = await setup_lights_and_switch(
|
||||
hass,
|
||||
{
|
||||
CONF_ADAPT_ONLY_ON_HA_TURN_ON: True,
|
||||
CONF_MANUAL_CONTROL_ON_EXTERNAL_TURN_ON: True,
|
||||
CONF_DETECT_NON_HA_CHANGES: True,
|
||||
CONF_INTERCEPT: intercept,
|
||||
CONF_MIN_BRIGHTNESS: 50,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue