mirror of
https://github.com/thejeffreystone/home-assistant-configuration.git
synced 2025-02-09 00:55:08 +00:00
Lots of updates here. Updated my Readme - Added Affiliate Links, added some more information, better organized devices Updated gitignore with paths realtive to my hassio config Combined my switches and lights into single yaml files instead of the directory structure previously Added zigbee2mqtt.yaml to packages - contains automations and such for zigbee2mqtt Archived my previous version in the V4-config branch.
66 lines
2.3 KiB
Python
Executable File
66 lines
2.3 KiB
Python
Executable File
#
|
|
# Script to fade lights in slowly
|
|
# Takes the following inputs
|
|
# entity_id = The light you want to fade in
|
|
# transition: = # Seconds to go from current to end brightness
|
|
# brightness: = # Brightness to end at
|
|
# brightness_pct: = # Brightness to end at as a percentage
|
|
#
|
|
entity_id = data.get('entity_id')
|
|
brightness = data.get('brightness', None)
|
|
brightness_pct = data.get('brightness_pct', None)
|
|
|
|
if entity_id is not None and (brightness is not None or brightness_pct is not None):
|
|
light = hass.states.get(entity_id)
|
|
|
|
start_level = light.attributes.get('brightness', 0)
|
|
transition = int(data.get('transition', 0))
|
|
|
|
""" Use brightness or convert brightness_pct """
|
|
end_level = int(brightness) if brightness is not None else math.ceil(
|
|
float(brightness_pct) * 2.55)
|
|
|
|
""" Calculate number of steps """
|
|
steps = int(math.fabs((start_level - end_level)))
|
|
fadeout = True if start_level > end_level else False
|
|
|
|
""" Calculate the delay time """
|
|
delay = round(transition / steps, 3)
|
|
|
|
""" Disable delay and increase stepping if delay < 3/4 second """
|
|
if (delay < .750):
|
|
delay = 0
|
|
steps = int(steps / 5)
|
|
step_by = 5
|
|
else:
|
|
step_by = 1
|
|
|
|
logger.info('Setting brightness of ' + str(entity_id) +
|
|
' from ' + str(start_level) + ' to ' + str(end_level) +
|
|
' steps ' + str(steps) + ' delay ' + str(delay))
|
|
|
|
new_level = start_level
|
|
for x in range(steps):
|
|
current_level = light.attributes.get('brightness', 0)
|
|
if (fadeout and current_level < new_level):
|
|
break
|
|
elif (not fadeout and current_level > new_level):
|
|
break
|
|
else:
|
|
data = {"entity_id": entity_id, "brightness": new_level}
|
|
hass.services.call('light', 'turn_on', data)
|
|
if (fadeout):
|
|
new_level = new_level - step_by
|
|
else:
|
|
new_level = new_level + step_by
|
|
""" Do not sleep for 0 delay """
|
|
if (delay > 0):
|
|
time.sleep(delay)
|
|
|
|
""" Ensure light ends at the final state """
|
|
if (end_level > 0):
|
|
data = {"entity_id": entity_id, "brightness": end_level}
|
|
hass.services.call('light', 'turn_on', data)
|
|
else:
|
|
data = {"entity_id": entity_id}
|
|
hass.services.call('light', 'turn_off', data) |