mirror of
https://github.com/home-assistant/core.git
synced 2025-07-19 11:17:21 +00:00
light.transition now supports float instead of int in order to be able to perform faster transitions (#6163)
This commit is contained in:
parent
65d255a626
commit
d5bdf7783e
@ -86,7 +86,7 @@ PROP_TO_ATTR = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
# Service call validation schemas
|
# Service call validation schemas
|
||||||
VALID_TRANSITION = vol.All(vol.Coerce(int), vol.Clamp(min=0, max=900))
|
VALID_TRANSITION = vol.All(vol.Coerce(float), vol.Clamp(min=0, max=900))
|
||||||
VALID_BRIGHTNESS = vol.All(vol.Coerce(int), vol.Clamp(min=0, max=255))
|
VALID_BRIGHTNESS = vol.All(vol.Coerce(int), vol.Clamp(min=0, max=255))
|
||||||
|
|
||||||
LIGHT_TURN_ON_SCHEMA = vol.Schema({
|
LIGHT_TURN_ON_SCHEMA = vol.Schema({
|
||||||
|
@ -376,7 +376,7 @@ class HueLight(Light):
|
|||||||
command = {'on': True}
|
command = {'on': True}
|
||||||
|
|
||||||
if ATTR_TRANSITION in kwargs:
|
if ATTR_TRANSITION in kwargs:
|
||||||
command['transitiontime'] = kwargs[ATTR_TRANSITION] * 10
|
command['transitiontime'] = int(kwargs[ATTR_TRANSITION] * 10)
|
||||||
|
|
||||||
if ATTR_XY_COLOR in kwargs:
|
if ATTR_XY_COLOR in kwargs:
|
||||||
command['xy'] = kwargs[ATTR_XY_COLOR]
|
command['xy'] = kwargs[ATTR_XY_COLOR]
|
||||||
@ -422,7 +422,10 @@ class HueLight(Light):
|
|||||||
if ATTR_TRANSITION in kwargs:
|
if ATTR_TRANSITION in kwargs:
|
||||||
# Transition time is in 1/10th seconds and cannot exceed
|
# Transition time is in 1/10th seconds and cannot exceed
|
||||||
# 900 seconds.
|
# 900 seconds.
|
||||||
command['transitiontime'] = min(9000, kwargs[ATTR_TRANSITION] * 10)
|
command['transitiontime'] = min(
|
||||||
|
9000,
|
||||||
|
int(kwargs[ATTR_TRANSITION] * 10)
|
||||||
|
)
|
||||||
|
|
||||||
flash = kwargs.get(ATTR_FLASH)
|
flash = kwargs.get(ATTR_FLASH)
|
||||||
|
|
||||||
|
@ -202,7 +202,7 @@ class LIFXLight(Light):
|
|||||||
def turn_on(self, **kwargs):
|
def turn_on(self, **kwargs):
|
||||||
"""Turn the device on."""
|
"""Turn the device on."""
|
||||||
if ATTR_TRANSITION in kwargs:
|
if ATTR_TRANSITION in kwargs:
|
||||||
fade = kwargs[ATTR_TRANSITION] * 1000
|
fade = int(kwargs[ATTR_TRANSITION] * 1000)
|
||||||
else:
|
else:
|
||||||
fade = 0
|
fade = 0
|
||||||
|
|
||||||
@ -238,7 +238,7 @@ class LIFXLight(Light):
|
|||||||
def turn_off(self, **kwargs):
|
def turn_off(self, **kwargs):
|
||||||
"""Turn the device off."""
|
"""Turn the device off."""
|
||||||
if ATTR_TRANSITION in kwargs:
|
if ATTR_TRANSITION in kwargs:
|
||||||
fade = kwargs[ATTR_TRANSITION] * 1000
|
fade = int(kwargs[ATTR_TRANSITION] * 1000)
|
||||||
else:
|
else:
|
||||||
fade = 0
|
fade = 0
|
||||||
|
|
||||||
|
@ -143,7 +143,7 @@ def state(new_state):
|
|||||||
pipeline.on()
|
pipeline.on()
|
||||||
# Set transition time.
|
# Set transition time.
|
||||||
if ATTR_TRANSITION in kwargs:
|
if ATTR_TRANSITION in kwargs:
|
||||||
transition_time = kwargs[ATTR_TRANSITION]
|
transition_time = int(kwargs[ATTR_TRANSITION])
|
||||||
# Do group type-specific work.
|
# Do group type-specific work.
|
||||||
function(self, transition_time, pipeline, **kwargs)
|
function(self, transition_time, pipeline, **kwargs)
|
||||||
# Update state.
|
# Update state.
|
||||||
|
@ -215,7 +215,7 @@ class MqttJson(Light):
|
|||||||
message['flash'] = self._flash_times[CONF_FLASH_TIME_SHORT]
|
message['flash'] = self._flash_times[CONF_FLASH_TIME_SHORT]
|
||||||
|
|
||||||
if ATTR_TRANSITION in kwargs:
|
if ATTR_TRANSITION in kwargs:
|
||||||
message['transition'] = kwargs[ATTR_TRANSITION]
|
message['transition'] = int(kwargs[ATTR_TRANSITION])
|
||||||
|
|
||||||
if ATTR_BRIGHTNESS in kwargs:
|
if ATTR_BRIGHTNESS in kwargs:
|
||||||
message['brightness'] = int(kwargs[ATTR_BRIGHTNESS])
|
message['brightness'] = int(kwargs[ATTR_BRIGHTNESS])
|
||||||
@ -245,7 +245,7 @@ class MqttJson(Light):
|
|||||||
message = {'state': 'OFF'}
|
message = {'state': 'OFF'}
|
||||||
|
|
||||||
if ATTR_TRANSITION in kwargs:
|
if ATTR_TRANSITION in kwargs:
|
||||||
message['transition'] = kwargs[ATTR_TRANSITION]
|
message['transition'] = int(kwargs[ATTR_TRANSITION])
|
||||||
|
|
||||||
mqtt.async_publish(
|
mqtt.async_publish(
|
||||||
self.hass, self._topic[CONF_COMMAND_TOPIC], json.dumps(message),
|
self.hass, self._topic[CONF_COMMAND_TOPIC], json.dumps(message),
|
||||||
|
@ -269,7 +269,7 @@ class MqttTemplate(Light):
|
|||||||
|
|
||||||
# transition
|
# transition
|
||||||
if ATTR_TRANSITION in kwargs:
|
if ATTR_TRANSITION in kwargs:
|
||||||
values['transition'] = kwargs[ATTR_TRANSITION]
|
values['transition'] = int(kwargs[ATTR_TRANSITION])
|
||||||
|
|
||||||
mqtt.async_publish(
|
mqtt.async_publish(
|
||||||
self.hass, self._topics[CONF_COMMAND_TOPIC],
|
self.hass, self._topics[CONF_COMMAND_TOPIC],
|
||||||
@ -293,7 +293,7 @@ class MqttTemplate(Light):
|
|||||||
|
|
||||||
# transition
|
# transition
|
||||||
if ATTR_TRANSITION in kwargs:
|
if ATTR_TRANSITION in kwargs:
|
||||||
values['transition'] = kwargs[ATTR_TRANSITION]
|
values['transition'] = int(kwargs[ATTR_TRANSITION])
|
||||||
|
|
||||||
mqtt.async_publish(
|
mqtt.async_publish(
|
||||||
self.hass, self._topics[CONF_COMMAND_TOPIC],
|
self.hass, self._topics[CONF_COMMAND_TOPIC],
|
||||||
|
@ -145,7 +145,7 @@ class OsramLightifyLight(Light):
|
|||||||
self._state = self._light.on()
|
self._state = self._light.on()
|
||||||
|
|
||||||
if ATTR_TRANSITION in kwargs:
|
if ATTR_TRANSITION in kwargs:
|
||||||
transition = kwargs[ATTR_TRANSITION] * 10
|
transition = int(kwargs[ATTR_TRANSITION] * 10)
|
||||||
_LOGGER.debug("turn_on requested transition time for light:"
|
_LOGGER.debug("turn_on requested transition time for light:"
|
||||||
" %s is: %s ",
|
" %s is: %s ",
|
||||||
self._name, transition)
|
self._name, transition)
|
||||||
@ -196,7 +196,7 @@ class OsramLightifyLight(Light):
|
|||||||
_LOGGER.debug("turn_off Attempting to turn off light: %s ",
|
_LOGGER.debug("turn_off Attempting to turn off light: %s ",
|
||||||
self._name)
|
self._name)
|
||||||
if ATTR_TRANSITION in kwargs:
|
if ATTR_TRANSITION in kwargs:
|
||||||
transition = kwargs[ATTR_TRANSITION] * 10
|
transition = int(kwargs[ATTR_TRANSITION] * 10)
|
||||||
_LOGGER.debug("turn_off requested transition time for light:"
|
_LOGGER.debug("turn_off requested transition time for light:"
|
||||||
" %s is: %s ",
|
" %s is: %s ",
|
||||||
self._name, transition)
|
self._name, transition)
|
||||||
|
@ -259,7 +259,7 @@ class YeelightLight(Light):
|
|||||||
_LOGGER.error("Flash supported currently only in RGB mode.")
|
_LOGGER.error("Flash supported currently only in RGB mode.")
|
||||||
return
|
return
|
||||||
|
|
||||||
transition = self.config[CONF_TRANSITION]
|
transition = int(self.config[CONF_TRANSITION])
|
||||||
if flash == FLASH_LONG:
|
if flash == FLASH_LONG:
|
||||||
count = 1
|
count = 1
|
||||||
duration = transition * 5
|
duration = transition * 5
|
||||||
@ -288,9 +288,9 @@ class YeelightLight(Light):
|
|||||||
rgb = kwargs.get(ATTR_RGB_COLOR)
|
rgb = kwargs.get(ATTR_RGB_COLOR)
|
||||||
flash = kwargs.get(ATTR_FLASH)
|
flash = kwargs.get(ATTR_FLASH)
|
||||||
|
|
||||||
duration = self.config[CONF_TRANSITION] # in ms
|
duration = int(self.config[CONF_TRANSITION]) # in ms
|
||||||
if ATTR_TRANSITION in kwargs: # passed kwarg overrides config
|
if ATTR_TRANSITION in kwargs: # passed kwarg overrides config
|
||||||
duration = kwargs.get(ATTR_TRANSITION) * 1000 # kwarg in s
|
duration = int(kwargs.get(ATTR_TRANSITION) * 1000) # kwarg in s
|
||||||
|
|
||||||
self._bulb.turn_on(duration=duration)
|
self._bulb.turn_on(duration=duration)
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user