From d3b2d00bf1568853fc963880a1203ef606cc5f88 Mon Sep 17 00:00:00 2001 From: MizterB <5458030+MizterB@users.noreply.github.com> Date: Sun, 25 Aug 2024 12:00:14 -0400 Subject: [PATCH 1/6] Treat Hue groups as individual lights (#1037) --- custom_components/adaptive_lighting/switch.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/custom_components/adaptive_lighting/switch.py b/custom_components/adaptive_lighting/switch.py index b4af97ed..3b9448a9 100644 --- a/custom_components/adaptive_lighting/switch.py +++ b/custom_components/adaptive_lighting/switch.py @@ -638,7 +638,9 @@ def _expand_light_groups( def _is_light_group(state: State) -> bool: - return "entity_id" in state.attributes + return "entity_id" in state.attributes and not state.attributes.get( + "is_hue_group", False + ) @bind_hass From 318d921b91706b2513b4aa2074af2f30e3f6d2f3 Mon Sep 17 00:00:00 2001 From: "allcontributors[bot]" <46447321+allcontributors[bot]@users.noreply.github.com> Date: Sun, 25 Aug 2024 09:00:56 -0700 Subject: [PATCH 2/6] docs: add MizterB as a contributor for code (#1039) --- .all-contributorsrc | 9 +++++++++ README.md | 3 ++- custom_components/adaptive_lighting/switch.py | 3 ++- 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/.all-contributorsrc b/.all-contributorsrc index 7ac2c652..55053f56 100644 --- a/.all-contributorsrc +++ b/.all-contributorsrc @@ -873,6 +873,15 @@ "contributions": [ "translation" ] + }, + { + "login": "MizterB", + "name": "MizterB", + "avatar_url": "https://avatars.githubusercontent.com/u/5458030?v=4", + "profile": "https://github.com/MizterB", + "contributions": [ + "code" + ] } ], "contributorsPerLine": 7, diff --git a/README.md b/README.md index 37b29dc3..4b4031ec 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ [![hacs_badge](https://img.shields.io/badge/HACS-Default-orange.svg?style=for-the-badge)](https://github.com/hacs/integration) ![Version](https://img.shields.io/github/v/release/basnijholt/adaptive-lighting?style=for-the-badge) -[![All Contributors](https://img.shields.io/badge/all_contributors-95-orange.svg?style=flat-square)](#contributors-) +[![All Contributors](https://img.shields.io/badge/all_contributors-96-orange.svg?style=flat-square)](#contributors-) # 🌞 Adaptive Lighting: Enhance Your Home's Atmosphere with Smart, Sun-Synchronized Lighting πŸŒ™ @@ -587,6 +587,7 @@ Notice the values of `brightness_mode_time_light` and `brightness_mode_time_dark BjΓΆrn Ebbinghaus
BjΓΆrn Ebbinghaus

πŸ’» Marck
Marck

πŸ’» Lucho Gizdov
Lucho Gizdov

🌍 + MizterB
MizterB

πŸ’» diff --git a/custom_components/adaptive_lighting/switch.py b/custom_components/adaptive_lighting/switch.py index 3b9448a9..98a33021 100644 --- a/custom_components/adaptive_lighting/switch.py +++ b/custom_components/adaptive_lighting/switch.py @@ -639,7 +639,8 @@ def _expand_light_groups( def _is_light_group(state: State) -> bool: return "entity_id" in state.attributes and not state.attributes.get( - "is_hue_group", False + "is_hue_group", + False, ) From fc46ed73b68f12146a9782b867e32d4cfe72b813 Mon Sep 17 00:00:00 2001 From: rwjack <59068073+rwjack@users.noreply.github.com> Date: Sun, 25 Aug 2024 20:03:13 +0200 Subject: [PATCH 3/6] Fix #1017 (#1038) --- custom_components/adaptive_lighting/switch.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/custom_components/adaptive_lighting/switch.py b/custom_components/adaptive_lighting/switch.py index 98a33021..893e7565 100644 --- a/custom_components/adaptive_lighting/switch.py +++ b/custom_components/adaptive_lighting/switch.py @@ -72,6 +72,7 @@ callback, ) from homeassistant.helpers import entity_platform, entity_registry +from homeassistant.helpers.entity_component import async_update_entity if [MAJOR_VERSION, MINOR_VERSION] < [2023, 9]: from homeassistant.helpers.entity import DeviceInfo @@ -2492,7 +2493,7 @@ async def significant_change( # Ensure HASS is correctly updating your light's state with # light.turn_on calls if any problems arise. This # can happen e.g. using zigbee2mqtt with 'report: false' in device settings. - await self.hass.helpers.entity_component.async_update_entity(light) + await async_update_entity(self.hass, light) refreshed_state = self.hass.states.get(light) assert refreshed_state is not None From 7d265e9928fa6b2a223146ac81cdafa20735df5f Mon Sep 17 00:00:00 2001 From: Bas Nijholt Date: Sun, 25 Aug 2024 11:21:01 -0700 Subject: [PATCH 4/6] Add more versions to testing matrix (#1040) * Add more versions to testing matrix * Update mypy-dev dep * fix sed --- .github/workflows/pytest.yaml | 10 +++- README.md | 102 +++++++++++++++++----------------- scripts/setup-dependencies | 5 ++ 3 files changed, 65 insertions(+), 52 deletions(-) diff --git a/.github/workflows/pytest.yaml b/.github/workflows/pytest.yaml index ed5de50c..b03f0023 100644 --- a/.github/workflows/pytest.yaml +++ b/.github/workflows/pytest.yaml @@ -49,7 +49,15 @@ jobs: - python-version: "3.12" core-version: "2024.3.3" - python-version: "3.12" - core-version: "2024.4.1" + core-version: "2024.4.4" + - python-version: "3.12" + core-version: "2024.5.5" + - python-version: "3.12" + core-version: "2024.6.4" + - python-version: "3.12" + core-version: "2024.7.4" + - python-version: "3.12" + core-version: "2024.8.3" - python-version: "3.12" core-version: "dev" steps: diff --git a/README.md b/README.md index 4b4031ec..94393aab 100644 --- a/README.md +++ b/README.md @@ -103,46 +103,46 @@ The YAML and frontend configuration methods support all of the options listed be -| Variable name | Description | Default | Type | -|:-------------------------------|:-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|:---------------|:---------------------------------------| -| `lights` | List of light entity_ids to be controlled (may be empty). 🌟 | `[]` | list of `entity_id`s | -| `interval` | Frequency to adapt the lights, in seconds. πŸ”„ | `90` | `int > 0` | -| `transition` | Duration of transition when lights change, in seconds. πŸ•‘ | `45` | `float` 0-6553 | -| `initial_transition` | Duration of the first transition when lights turn from `off` to `on` in seconds. ⏲️ | `1` | `float` 0-6553 | -| `min_brightness` | Minimum brightness percentage. πŸ’‘ | `1` | `int` 1-100 | -| `max_brightness` | Maximum brightness percentage. πŸ’‘ | `100` | `int` 1-100 | -| `min_color_temp` | Warmest color temperature in Kelvin. πŸ”₯ | `2000` | `int` 1000-10000 | -| `max_color_temp` | Coldest color temperature in Kelvin. ❄️ | `5500` | `int` 1000-10000 | -| `prefer_rgb_color` | Whether to prefer RGB color adjustment over light color temperature when possible. 🌈 | `False` | `bool` | -| `sleep_brightness` | Brightness percentage of lights in sleep mode. 😴 | `1` | `int` 1-100 | -| `sleep_rgb_or_color_temp` | Use either `"rgb_color"` or `"color_temp"` in sleep mode. πŸŒ™ | `color_temp` | one of `['color_temp', 'rgb_color']` | -| `sleep_color_temp` | Color temperature in sleep mode (used when `sleep_rgb_or_color_temp` is `color_temp`) in Kelvin. 😴 | `1000` | `int` 1000-10000 | -| `sleep_rgb_color` | RGB color in sleep mode (used when `sleep_rgb_or_color_temp` is "rgb_color"). 🌈 | `[255, 56, 0]` | RGB color | -| `sleep_transition` | Duration of transition when "sleep mode" is toggled in seconds. 😴 | `1` | `float` 0-6553 | -| `transition_until_sleep` | When enabled, Adaptive Lighting will treat sleep settings as the minimum, transitioning to these values after sunset. πŸŒ™ | `False` | `bool` | -| `sunrise_time` | Set a fixed time (HH:MM:SS) for sunrise. πŸŒ… | `None` | `str` | -| `min_sunrise_time` | Set the earliest virtual sunrise time (HH:MM:SS), allowing for later sunrises. πŸŒ… | `None` | `str` | -| `max_sunrise_time` | Set the latest virtual sunrise time (HH:MM:SS), allowing for earlier sunrises. πŸŒ… | `None` | `str` | -| `sunrise_offset` | Adjust sunrise time with a positive or negative offset in seconds. ⏰ | `0` | `int` | -| `sunset_time` | Set a fixed time (HH:MM:SS) for sunset. πŸŒ‡ | `None` | `str` | -| `min_sunset_time` | Set the earliest virtual sunset time (HH:MM:SS), allowing for later sunsets. πŸŒ‡ | `None` | `str` | -| `max_sunset_time` | Set the latest virtual sunset time (HH:MM:SS), allowing for earlier sunsets. πŸŒ‡ | `None` | `str` | -| `sunset_offset` | Adjust sunset time with a positive or negative offset in seconds. ⏰ | `0` | `int` | -| `brightness_mode` | Brightness mode to use. Possible values are `default`, `linear`, and `tanh` (uses `brightness_mode_time_dark` and `brightness_mode_time_light`). πŸ“ˆ | `default` | one of `['default', 'linear', 'tanh']` | +| Variable name | Description | Default | Type | +|:-------------------------------|:---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|:---------------|:---------------------------------------| +| `lights` | List of light entity_ids to be controlled (may be empty). 🌟 | `[]` | list of `entity_id`s | +| `interval` | Frequency to adapt the lights, in seconds. πŸ”„ | `90` | `int > 0` | +| `transition` | Duration of transition when lights change, in seconds. πŸ•‘ | `45` | `float` 0-6553 | +| `initial_transition` | Duration of the first transition when lights turn from `off` to `on` in seconds. ⏲️ | `1` | `float` 0-6553 | +| `min_brightness` | Minimum brightness percentage. πŸ’‘ | `1` | `int` 1-100 | +| `max_brightness` | Maximum brightness percentage. πŸ’‘ | `100` | `int` 1-100 | +| `min_color_temp` | Warmest color temperature in Kelvin. πŸ”₯ | `2000` | `int` 1000-10000 | +| `max_color_temp` | Coldest color temperature in Kelvin. ❄️ | `5500` | `int` 1000-10000 | +| `prefer_rgb_color` | Whether to prefer RGB color adjustment over light color temperature when possible. 🌈 | `False` | `bool` | +| `sleep_brightness` | Brightness percentage of lights in sleep mode. 😴 | `1` | `int` 1-100 | +| `sleep_rgb_or_color_temp` | Use either `"rgb_color"` or `"color_temp"` in sleep mode. πŸŒ™ | `color_temp` | one of `['color_temp', 'rgb_color']` | +| `sleep_color_temp` | Color temperature in sleep mode (used when `sleep_rgb_or_color_temp` is `color_temp`) in Kelvin. 😴 | `1000` | `int` 1000-10000 | +| `sleep_rgb_color` | RGB color in sleep mode (used when `sleep_rgb_or_color_temp` is "rgb_color"). 🌈 | `[255, 56, 0]` | RGB color | +| `sleep_transition` | Duration of transition when "sleep mode" is toggled in seconds. 😴 | `1` | `float` 0-6553 | +| `transition_until_sleep` | When enabled, Adaptive Lighting will treat sleep settings as the minimum, transitioning to these values after sunset. πŸŒ™ | `False` | `bool` | +| `sunrise_time` | Set a fixed time (HH:MM:SS) for sunrise. πŸŒ… | `None` | `str` | +| `min_sunrise_time` | Set the earliest virtual sunrise time (HH:MM:SS), allowing for later sunrises. πŸŒ… | `None` | `str` | +| `max_sunrise_time` | Set the latest virtual sunrise time (HH:MM:SS), allowing for earlier sunrises. πŸŒ… | `None` | `str` | +| `sunrise_offset` | Adjust sunrise time with a positive or negative offset in seconds. ⏰ | `0` | `int` | +| `sunset_time` | Set a fixed time (HH:MM:SS) for sunset. πŸŒ‡ | `None` | `str` | +| `min_sunset_time` | Set the earliest virtual sunset time (HH:MM:SS), allowing for later sunsets. πŸŒ‡ | `None` | `str` | +| `max_sunset_time` | Set the latest virtual sunset time (HH:MM:SS), allowing for earlier sunsets. πŸŒ‡ | `None` | `str` | +| `sunset_offset` | Adjust sunset time with a positive or negative offset in seconds. ⏰ | `0` | `int` | +| `brightness_mode` | Brightness mode to use. Possible values are `default`, `linear`, and `tanh` (uses `brightness_mode_time_dark` and `brightness_mode_time_light`). πŸ“ˆ | `default` | one of `['default', 'linear', 'tanh']` | | `brightness_mode_time_dark` | (Ignored if `brightness_mode='default'`) The duration in seconds to ramp up/down the brightness before/after sunrise/sunset. πŸ“ˆπŸ“‰ | `900` | `int` | | `brightness_mode_time_light` | (Ignored if `brightness_mode='default'`) The duration in seconds to ramp up/down the brightness after/before sunrise/sunset. πŸ“ˆπŸ“‰. | `3600` | `int` | -| `take_over_control` | Disable Adaptive Lighting if another source calls `light.turn_on` while lights are on and being adapted. Note that this calls `homeassistant.update_entity` every `interval`! πŸ”’ | `True` | `bool` | -| `detect_non_ha_changes` | 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. Disable this feature if you encounter such issues. | `False` | `bool` | -| `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` | +| `take_over_control` | Disable Adaptive Lighting if another source calls `light.turn_on` while lights are on and being adapted. Note that this calls `homeassistant.update_entity` every `interval`! πŸ”’ | `True` | `bool` | +| `detect_non_ha_changes` | 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. Disable this feature if you encounter such issues. | `False` | `bool` | +| `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. If `false`, AL adapts regardless of the presence of color or brightness in the initial `service_data`. Needs `take_over_control` enabled. πŸ•΅οΈ | `False` | `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 | -| `adapt_delay` | Wait time (seconds) between light turn on and Adaptive Lighting applying changes. Might help to avoid flickering. ⏲️ | `0` | `float > 0` | -| `skip_redundant_commands` | Skip sending adaptation commands whose target state already equals the light's known state. Minimizes network traffic and improves the adaptation responsivity in some situations. πŸ“‰Disable if physical light states get out of sync with HA's recorded state. | `False` | `bool` | -| `intercept` | Intercept and adapt `light.turn_on` calls to enabling instantaneous color and brightness adaptation. 🏎️ Disable for lights that do not support `light.turn_on` with color and brightness. | `True` | `bool` | -| `multi_light_intercept` | Intercept and adapt `light.turn_on` calls that target multiple lights. βž—βš οΈ This might result in splitting up a single `light.turn_on` call into multiple calls, e.g., when lights are in different switches. Requires `intercept` to be enabled. | `True` | `bool` | -| `include_config_in_attributes` | Show all options as attributes on the switch in Home Assistant when set to `true`. πŸ“ | `False` | `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 | +| `adapt_delay` | Wait time (seconds) between light turn on and Adaptive Lighting applying changes. Might help to avoid flickering. ⏲️ | `0` | `float > 0` | +| `skip_redundant_commands` | Skip sending adaptation commands whose target state already equals the light's known state. Minimizes network traffic and improves the adaptation responsivity in some situations. πŸ“‰Disable if physical light states get out of sync with HA's recorded state. | `False` | `bool` | +| `intercept` | Intercept and adapt `light.turn_on` calls to enabling instantaneous color and brightness adaptation. 🏎️ Disable for lights that do not support `light.turn_on` with color and brightness. | `True` | `bool` | +| `multi_light_intercept` | Intercept and adapt `light.turn_on` calls that target multiple lights. βž—βš οΈ This might result in splitting up a single `light.turn_on` call into multiple calls, e.g., when lights are in different switches. Requires `intercept` to be enabled. | `True` | `bool` | +| `include_config_in_attributes` | Show all options as attributes on the switch in Home Assistant when set to `true`. πŸ“ | `False` | `bool` | @@ -186,15 +186,15 @@ adaptive_lighting: -| Service data attribute | Description | Required | Type | -|:-------------------------|:-------------------------------------------------------------------------------------|:-----------|:---------------------| -| `entity_id` | The `entity_id` of the switch with the settings to apply. πŸ“ | βœ… | list of `entity_id`s | -| `lights` | A light (or list of lights) to apply the settings to. πŸ’‘ | ❌ | list of `entity_id`s | -| `transition` | Duration of transition when lights change, in seconds. πŸ•‘ | ❌ | `float` 0-6553 | -| `adapt_brightness` | Whether to adapt the brightness of the light. 🌞 | ❌ | bool | -| `adapt_color` | Whether to adapt the color on supporting lights. 🌈 | ❌ | bool | -| `prefer_rgb_color` | Whether to prefer RGB color adjustment over light color temperature when possible. 🌈 | ❌ | bool | -| `turn_on_lights` | Whether to turn on lights that are currently off. πŸ”† | ❌ | bool | +| Service data attribute | Description | Required | Type | +|:-------------------------|:--------------------------------------------------------------------------------------|:-----------|:---------------------| +| `entity_id` | The `entity_id` of the switch with the settings to apply. πŸ“ | βœ… | list of `entity_id`s | +| `lights` | A light (or list of lights) to apply the settings to. πŸ’‘ | ❌ | list of `entity_id`s | +| `transition` | Duration of transition when lights change, in seconds. πŸ•‘ | ❌ | `float` 0-6553 | +| `adapt_brightness` | Whether to adapt the brightness of the light. 🌞 | ❌ | bool | +| `adapt_color` | Whether to adapt the color on supporting lights. 🌈 | ❌ | bool | +| `prefer_rgb_color` | Whether to prefer RGB color adjustment over light color temperature when possible. 🌈 | ❌ | bool | +| `turn_on_lights` | Whether to turn on lights that are currently off. πŸ”† | ❌ | bool | #### `adaptive_lighting.set_manual_control` @@ -208,11 +208,11 @@ adaptive_lighting: -| Service data attribute | Description | Required | Type | -|:-------------------------|:-----------------------------------------------------------------------------------------------|:-----------|:---------------------| -| `entity_id` | The `entity_id` of the switch in which to (un)mark the light as being `manually controlled`. πŸ“ | βœ… | list of `entity_id`s | -| `lights` | entity_id(s) of lights, if not specified, all lights in the switch are selected. πŸ’‘ | ❌ | list of `entity_id`s | -| `manual_control` | Whether to add ("true") or remove ("false") the light from the "manual_control" list. πŸ”’ | ❌ | bool | +| Service data attribute | Description | Required | Type | +|:-------------------------|:------------------------------------------------------------------------------------------------|:-----------|:---------------------| +| `entity_id` | The `entity_id` of the switch in which to (un)mark the light as being `manually controlled`. πŸ“ | βœ… | list of `entity_id`s | +| `lights` | entity_id(s) of lights, if not specified, all lights in the switch are selected. πŸ’‘ | ❌ | list of `entity_id`s | +| `manual_control` | Whether to add ("true") or remove ("false") the light from the "manual_control" list. πŸ”’ | ❌ | bool | #### `adaptive_lighting.change_switch_settings` diff --git a/scripts/setup-dependencies b/scripts/setup-dependencies index efe0bd25..ca14045d 100755 --- a/scripts/setup-dependencies +++ b/scripts/setup-dependencies @@ -9,6 +9,11 @@ if grep -q 'codecov' core/requirements_test.txt; then # however it is removed from PyPI, so we cannot install it sed -i '/codecov/d' core/requirements_test.txt fi + +if grep -q 'mypy-dev==1.10.0a3' core/requirements_test.txt; then + # mypy-dev==1.10.0a3 seems to not be available anymore, HA 2024.4 and 2024.5 are affected + sed -i 's/mypy-dev==1.10.0a3/mypy-dev==1.10.0b1/' core/requirements_test.txt +fi pip install -r core/requirements_test.txt pip install -e core/ From ac37b50330c87016bb6a50b7089c7511aa30acc3 Mon Sep 17 00:00:00 2001 From: Bas Nijholt Date: Sun, 25 Aug 2024 11:34:34 -0700 Subject: [PATCH 5/6] Update manifest.json with version --- custom_components/adaptive_lighting/manifest.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/custom_components/adaptive_lighting/manifest.json b/custom_components/adaptive_lighting/manifest.json index 6d8c0f5f..bd92e6bd 100644 --- a/custom_components/adaptive_lighting/manifest.json +++ b/custom_components/adaptive_lighting/manifest.json @@ -8,5 +8,5 @@ "iot_class": "calculated", "issue_tracker": "https://github.com/basnijholt/adaptive-lighting/issues", "requirements": ["ulid-transform"], - "version": "1.22.0" + "version": "1.23.0" } From 981cc420ecf35fdfeed23fe40142545e629e4afb Mon Sep 17 00:00:00 2001 From: "allcontributors[bot]" <46447321+allcontributors[bot]@users.noreply.github.com> Date: Sun, 25 Aug 2024 12:24:23 -0700 Subject: [PATCH 6/6] docs: add brietman as a contributor for translation (#1042) --- .all-contributorsrc | 9 +++++++++ README.md | 3 ++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/.all-contributorsrc b/.all-contributorsrc index 55053f56..d8934e03 100644 --- a/.all-contributorsrc +++ b/.all-contributorsrc @@ -882,6 +882,15 @@ "contributions": [ "code" ] + }, + { + "login": "brietman", + "name": "brietman", + "avatar_url": "https://avatars.githubusercontent.com/u/17436537?v=4", + "profile": "https://github.com/brietman", + "contributions": [ + "translation" + ] } ], "contributorsPerLine": 7, diff --git a/README.md b/README.md index 94393aab..296b4aca 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ [![hacs_badge](https://img.shields.io/badge/HACS-Default-orange.svg?style=for-the-badge)](https://github.com/hacs/integration) ![Version](https://img.shields.io/github/v/release/basnijholt/adaptive-lighting?style=for-the-badge) -[![All Contributors](https://img.shields.io/badge/all_contributors-96-orange.svg?style=flat-square)](#contributors-) +[![All Contributors](https://img.shields.io/badge/all_contributors-97-orange.svg?style=flat-square)](#contributors-) # 🌞 Adaptive Lighting: Enhance Your Home's Atmosphere with Smart, Sun-Synchronized Lighting πŸŒ™ @@ -588,6 +588,7 @@ Notice the values of `brightness_mode_time_light` and `brightness_mode_time_dark Marck
Marck

πŸ’» Lucho Gizdov
Lucho Gizdov

🌍 MizterB
MizterB

πŸ’» + brietman
brietman

🌍