Make default dim level configurable in Lutron (#137127)
parent
d4dd8fd902
commit
b8b153b87f
|
@ -9,10 +9,21 @@ from urllib.error import HTTPError
|
|||
from pylutron import Lutron
|
||||
import voluptuous as vol
|
||||
|
||||
from homeassistant.config_entries import ConfigFlow, ConfigFlowResult
|
||||
from homeassistant.config_entries import (
|
||||
ConfigEntry,
|
||||
ConfigFlow,
|
||||
ConfigFlowResult,
|
||||
OptionsFlow,
|
||||
)
|
||||
from homeassistant.const import CONF_HOST, CONF_PASSWORD, CONF_USERNAME
|
||||
from homeassistant.core import callback
|
||||
from homeassistant.helpers.selector import (
|
||||
NumberSelector,
|
||||
NumberSelectorConfig,
|
||||
NumberSelectorMode,
|
||||
)
|
||||
|
||||
from .const import DOMAIN
|
||||
from .const import CONF_DEFAULT_DIMMER_LEVEL, DEFAULT_DIMMER_LEVEL, DOMAIN
|
||||
|
||||
_LOGGER = logging.getLogger(__name__)
|
||||
|
||||
|
@ -68,3 +79,36 @@ class LutronConfigFlow(ConfigFlow, domain=DOMAIN):
|
|||
),
|
||||
errors=errors,
|
||||
)
|
||||
|
||||
@staticmethod
|
||||
@callback
|
||||
def async_get_options_flow(
|
||||
config_entry: ConfigEntry,
|
||||
) -> OptionsFlowHandler:
|
||||
"""Get the options flow for this handler."""
|
||||
return OptionsFlowHandler()
|
||||
|
||||
|
||||
class OptionsFlowHandler(OptionsFlow):
|
||||
"""Handle option flow for lutron."""
|
||||
|
||||
async def async_step_init(
|
||||
self, user_input: dict[str, Any] | None = None
|
||||
) -> ConfigFlowResult:
|
||||
"""Handle options flow."""
|
||||
if user_input is not None:
|
||||
return self.async_create_entry(title="", data=user_input)
|
||||
|
||||
data_schema = vol.Schema(
|
||||
{
|
||||
vol.Required(
|
||||
CONF_DEFAULT_DIMMER_LEVEL,
|
||||
default=self.config_entry.options.get(
|
||||
CONF_DEFAULT_DIMMER_LEVEL, DEFAULT_DIMMER_LEVEL
|
||||
),
|
||||
): NumberSelector(
|
||||
NumberSelectorConfig(min=1, max=255, mode=NumberSelectorMode.SLIDER)
|
||||
)
|
||||
}
|
||||
)
|
||||
return self.async_show_form(step_id="init", data_schema=data_schema)
|
||||
|
|
|
@ -1,3 +1,7 @@
|
|||
"""Lutron constants."""
|
||||
|
||||
DOMAIN = "lutron"
|
||||
|
||||
CONF_DEFAULT_DIMMER_LEVEL = "default_dimmer_level"
|
||||
|
||||
DEFAULT_DIMMER_LEVEL = 255 / 2
|
||||
|
|
|
@ -5,7 +5,7 @@ from __future__ import annotations
|
|||
from collections.abc import Mapping
|
||||
from typing import Any
|
||||
|
||||
from pylutron import Output
|
||||
from pylutron import Lutron, LutronEntity, Output
|
||||
|
||||
from homeassistant.components.light import (
|
||||
ATTR_BRIGHTNESS,
|
||||
|
@ -20,6 +20,7 @@ from homeassistant.core import HomeAssistant
|
|||
from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback
|
||||
|
||||
from . import DOMAIN, LutronData
|
||||
from .const import CONF_DEFAULT_DIMMER_LEVEL, DEFAULT_DIMMER_LEVEL
|
||||
from .entity import LutronDevice
|
||||
|
||||
|
||||
|
@ -37,7 +38,7 @@ async def async_setup_entry(
|
|||
|
||||
async_add_entities(
|
||||
(
|
||||
LutronLight(area_name, device, entry_data.client)
|
||||
LutronLight(area_name, device, entry_data.client, config_entry)
|
||||
for area_name, device in entry_data.lights
|
||||
),
|
||||
True,
|
||||
|
@ -64,6 +65,17 @@ class LutronLight(LutronDevice, LightEntity):
|
|||
_prev_brightness: int | None = None
|
||||
_attr_name = None
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
area_name: str,
|
||||
lutron_device: LutronEntity,
|
||||
controller: Lutron,
|
||||
config_entry: ConfigEntry,
|
||||
) -> None:
|
||||
"""Initialize the device."""
|
||||
super().__init__(area_name, lutron_device, controller)
|
||||
self._config_entry = config_entry
|
||||
|
||||
def turn_on(self, **kwargs: Any) -> None:
|
||||
"""Turn the light on."""
|
||||
if flash := kwargs.get(ATTR_FLASH):
|
||||
|
@ -72,7 +84,9 @@ class LutronLight(LutronDevice, LightEntity):
|
|||
if ATTR_BRIGHTNESS in kwargs and self._lutron_device.is_dimmable:
|
||||
brightness = kwargs[ATTR_BRIGHTNESS]
|
||||
elif self._prev_brightness == 0:
|
||||
brightness = 255 / 2
|
||||
brightness = self._config_entry.options.get(
|
||||
CONF_DEFAULT_DIMMER_LEVEL, DEFAULT_DIMMER_LEVEL
|
||||
)
|
||||
else:
|
||||
brightness = self._prev_brightness
|
||||
self._prev_brightness = brightness
|
||||
|
|
|
@ -19,6 +19,15 @@
|
|||
}
|
||||
}
|
||||
},
|
||||
"options": {
|
||||
"step": {
|
||||
"init": {
|
||||
"data": {
|
||||
"default_dimmer_level": "Default light level when first turning on a light from Home Assistant"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"entity": {
|
||||
"event": {
|
||||
"button": {
|
||||
|
|
Loading…
Reference in New Issue