Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save blizzrdof77/7a3c7507fd3bdd88fa052d023c737c8c to your computer and use it in GitHub Desktop.
Save blizzrdof77/7a3c7507fd3bdd88fa052d023c737c8c to your computer and use it in GitHub Desktop.
HASS Hue Event - Lutron Aurora Dimmer Controller Advanced Blueprint
blueprint:
name: Hue Event - Lutron Aurora Dimmer Controller Advanced Blueprint (v1.3.0)
description: Control lights with a Lutron Aurora Dimmer Pressing in the dimmer button will toggle lights regardless of dimmer status. Rotating the dimmer will increase and decrease the light brightness.
domain: automation
input:
remote:
name: Lutron Aurora Dimmer Switch
description: Lutron Aurora Z3-1BRL
selector:
device:
integration: hue
manufacturer: Lutron
multiple: false
areaid:
name: Area
description: The area to manage light control.
selector:
area: {}
transition:
name: Transition
description: Transition fade time in seconds.
default: 1
selector:
number:
min: 0.0
max: 5.0
step: 0.1
mode: slider
sensitivity:
name: Sensitivity
description: Reducing sensitivity will reduce rate of brightness change when dimming.
default: 0.50
selector:
number:
min: 0.01
max: 1.00
step: 0.01
mode: slider
source_url: https://gist.github.com/blizzrdof77/7a3c7507fd3bdd88fa052d023c737c8c
mode: restart
max_exceeded: silent
triggers:
- trigger: event
event_type: hue_event
id: decrease
alias: Decrease Brightness
event_data:
subtype: counter_clock_wise
device_id: !input remote
- trigger: event
event_type: hue_event
id: increase
alias: Increase Brightness
event_data:
subtype: clock_wise
device_id: !input remote
- trigger: event
event_type: hue_event
id: hold
alias: Hold Button
event_data:
type: long_release
subtype: 1
device_id: !input remote
- trigger: event
event_type: hue_event
id: toggle
alias: Toggle Lights
event_data:
type: short_release
subtype: 1
device_id: !input remote
# - trigger: event
# event_type: hue_event
# id: hold
# alias: Hold Button
# event_data:
# type: repeat
# subtype: 1
# device_id: !input remote
action:
- variables:
deviceid: !input remote
command: '{{ trigger.event.data.type }}'
presstype: '{{ trigger.event.data.subtype }}'
rate: !input sensitivity
transition: !input transition
areaid: !input areaid
area_slug: >-
{%- set area_slug = area_name(deviceid) | lower | replace(' ', '_') -%}
{{ area_slug }}
multiplier: >-
{%- if (trigger.event.data.subtype is defined and trigger.event.data.subtype|string|contains('counter') ) -%}
{%- set multiplier = -1 -%}
{%- else -%}
{%- set multiplier = 1 -%}
{%- endif -%}
{{ multiplier | int(1) }}
direction: >-
{%- if trigger.id is defined -%}
{%- if trigger.id == 'toggle' -%}
{%- set direction = 'toggle' -%}
{%- elif trigger.id == 'decrease' -%}
{%- set direction = 'down' -%}
{%- elif trigger.id == 'increase' -%}
{%- set direction = 'up' -%}
{%- elif trigger.id == 'hold' -%}
{%- set direction = 'other' -%}
{%- endif -%}
{%- else -%}
{%- set direction = 'none' -%}
{%- endif -%}
{{ direction }}
target_entity: >-
{%- set target_entity = 'light.' + area_slug + '_daytime_lights' -%}
{{ target_entity }}
all_area_entities: >-
{%- set all_area_entities = 'light.' + area_slug + '_lights' -%}
{{ all_area_entities }}
percent: >-
{%- if (trigger.event.data.steps is defined and (trigger.event.data.steps | int(0) > 0)) -%}
{%- set percent = (multiplier|int(1)) * ((trigger.event.data.steps | float(1) / 1.5) * (rate | float(0.5)) | float(1.0)) -%}
{%- elif trigger.id == 'toggle' and is_state(target_entity, 'on') -%}
{%- set percent = 0.0 -%}
{%- elif trigger.id == 'toggle' and is_state(target_entity, 'off') -%}
{%- set percent = states('number.circadian_brightness_percent') -%}
{%- elif trigger.id == 'hold' -%}
{%- set percent = False -%}
{%- endif -%}
{{ percent }}
target_hs_color: >-
{%- set target_hs_color = (state_attr("switch.circadian_lighting_circadian_lights_switch", "hs_color") or ([30, 70])) -%}
{{ target_hs_color }}
proceed: >-
{%- if direction == 'down' -%}
{%- set proceed = (state_attr(target_entity, 'brightness')|int(0)) > 3 -%}
{%- elif direction == 'up' -%}
{%- set proceed = (state_attr(target_entity, 'brightness')|int(0)) < 255 -%}
{%- else -%}
{%- set proceed = True -%}
{%- endif -%}
{{ proceed }}
# -- PROCEED CONDITION
- condition: template
value_template: >-
{{ proceed == True }}
- choose:
# -- HOLD ACTIONS
- alias: Hold Actions
conditions:
- condition: or
conditions:
- condition: template
value_template: "{{ direction == 'other' }}"
- condition: trigger
id:
- hold
sequence:
- action: script.random_area_color
data:
target_area: "{{ areaid }}"
target_mode: all
transition: '{{ (transition|float(0.5) or 0.5) }}'
# -- INCREASE BRIGHTNESS
- alias: Increase Brightness
conditions:
- condition: or
conditions:
- condition: template
value_template: "{{ direction == 'up' }}"
- condition: trigger
id:
- increase
sequence:
- action: light.turn_on
metadata: {}
target:
entity_id: '{{ target_entity }}'
data:
brightness_step: '{{ percent }}'
transition: '{{ transition|float(0.5) or 0.5 }}'
hs_color: '{{ target_hs_color }}'
# -- DECREASE BRIGHTNESS
- alias: Decrease Brightness
conditions:
- condition: or
conditions:
- condition: template
value_template: "{{ direction == 'down' }}"
- condition: trigger
id:
- decrease
sequence:
- action: light.turn_on
metadata: {}
target:
entity_id: '{{ target_entity }}'
data:
brightness_step: '{{ percent }}'
transition: '{{ transition|float(0.5) or 0.5 }}'
hs_color: '{{ target_hs_color }}'
# -- POST-RUN
- condition: template
value_template: >-
{{ (direction is defined and direction != 'other') }}
- if:
- condition: template
value_template: >-
{{ (percent is defined and percent != False and percent|float(0.0) > 0) }}
then:
- action: light.turn_on
metadata: {}
target:
entity_id: '{{ all_area_entities }}'
data:
transition: '{{ (transition|float(0.5) or 0.5) * 1.5 }}'
hs_color: '{{ target_hs_color }}'
else:
- if:
- condition: template
value_template: >-
{{ (percent is defined and percent|string|lower != 'false' and percent|float(0.0) == 0) }}
then:
- action: light.turn_off
metadata: {}
target:
entity_id: '{{ all_area_entities }}'
data:
transition: '{{ (transition|float(0.5) or 0.5) * 1.25 }}'
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment