2022-08-07 18:10:43 +00:00
|
|
|
script:
|
|
|
|
#----------------------------------------------------------------------------------#
|
|
|
|
# L/R
|
|
|
|
#----------------------------------------------------------------------------------#
|
|
|
|
# Left
|
|
|
|
pos_left_incr:
|
|
|
|
alias: pos_left_incr
|
|
|
|
sequence:
|
|
|
|
- if:
|
|
|
|
- condition: numeric_state
|
|
|
|
entity_id: input_number.pos_right
|
|
|
|
above: '0'
|
|
|
|
then:
|
|
|
|
- service: input_number.set_value
|
|
|
|
data:
|
|
|
|
value: 0
|
|
|
|
target:
|
|
|
|
entity_id: input_number.pos_right
|
|
|
|
else:
|
|
|
|
- if:
|
|
|
|
- condition: numeric_state
|
|
|
|
entity_id: input_number.pos_left
|
|
|
|
above: '3'
|
|
|
|
then:
|
|
|
|
- service: input_number.set_value
|
|
|
|
data:
|
2022-08-07 18:28:21 +00:00
|
|
|
value: 1
|
2022-08-07 18:10:43 +00:00
|
|
|
target:
|
|
|
|
entity_id: input_number.pos_left
|
|
|
|
else:
|
|
|
|
- service: input_number.increment
|
|
|
|
target:
|
|
|
|
entity_id: input_number.pos_left
|
|
|
|
# Restart/Start the timer
|
|
|
|
- service: timer.cancel
|
|
|
|
target:
|
|
|
|
entity_id: timer.pos_timer
|
|
|
|
- service: timer.start
|
|
|
|
target:
|
|
|
|
entity_id: timer.pos_timer
|
|
|
|
mode: single
|
|
|
|
# Right
|
|
|
|
pos_right_incr:
|
|
|
|
alias: pos_right_incr
|
|
|
|
sequence:
|
|
|
|
- if:
|
|
|
|
- condition: numeric_state
|
|
|
|
entity_id: input_number.pos_left
|
|
|
|
above: '0'
|
|
|
|
then:
|
|
|
|
- service: input_number.set_value
|
|
|
|
data:
|
|
|
|
value: 0
|
|
|
|
target:
|
|
|
|
entity_id: input_number.pos_left
|
|
|
|
else:
|
|
|
|
- if:
|
|
|
|
- condition: numeric_state
|
|
|
|
entity_id: input_number.pos_right
|
|
|
|
above: '2'
|
|
|
|
then:
|
|
|
|
- service: input_number.set_value
|
|
|
|
data:
|
2022-08-07 18:28:21 +00:00
|
|
|
value: 1
|
2022-08-07 18:10:43 +00:00
|
|
|
target:
|
|
|
|
entity_id: input_number.pos_right
|
|
|
|
else:
|
|
|
|
- service: input_number.increment
|
|
|
|
target:
|
|
|
|
entity_id: input_number.pos_right
|
|
|
|
# Restart/Start the timer
|
|
|
|
- service: timer.cancel
|
|
|
|
target:
|
|
|
|
entity_id: timer.pos_timer
|
|
|
|
- service: timer.start
|
|
|
|
target:
|
|
|
|
entity_id: timer.pos_timer
|
|
|
|
mode: single
|
|
|
|
|
|
|
|
#----------------------------------------------------------------------------------#
|
|
|
|
# Up/Down
|
|
|
|
#----------------------------------------------------------------------------------#
|
|
|
|
# Up
|
|
|
|
pos_up:
|
|
|
|
alias: pos_up
|
|
|
|
sequence:
|
|
|
|
# 0,0
|
|
|
|
- if:
|
|
|
|
- condition: and
|
|
|
|
conditions:
|
|
|
|
- condition: state
|
|
|
|
entity_id: input_number.pos_left
|
|
|
|
state: "0.0"
|
|
|
|
- condition: state
|
|
|
|
entity_id: input_number.pos_right
|
|
|
|
state: "0.0"
|
|
|
|
then:
|
|
|
|
- service: light.turn_on
|
|
|
|
target:
|
|
|
|
entity_id: light.all_lights
|
|
|
|
# 1,0 Ceiling
|
|
|
|
- if:
|
|
|
|
- condition:
|
|
|
|
- condition: state
|
|
|
|
entity_id: input_number.pos_left
|
|
|
|
state: "1.0"
|
|
|
|
then:
|
|
|
|
- service: light.turn_on
|
|
|
|
target:
|
|
|
|
entity_id: light.ceiling
|
|
|
|
# 2,0 Bed
|
|
|
|
- if:
|
|
|
|
- condition:
|
|
|
|
- condition: state
|
|
|
|
entity_id: input_number.pos_left
|
|
|
|
state: "2.0"
|
|
|
|
then:
|
|
|
|
- service: light.turn_on
|
|
|
|
target:
|
|
|
|
entity_id: light.bed_ceiling
|
|
|
|
# 3,0 Indirect
|
|
|
|
- if:
|
|
|
|
- condition:
|
|
|
|
- condition: state
|
|
|
|
entity_id: input_number.pos_left
|
|
|
|
state: "3.0"
|
|
|
|
then:
|
|
|
|
- service: light.turn_on
|
|
|
|
target:
|
|
|
|
entity_id: light.all_indirect
|
|
|
|
# 4,0 All Lights
|
|
|
|
- if:
|
|
|
|
- condition:
|
|
|
|
- condition: state
|
|
|
|
entity_id: input_number.pos_left
|
|
|
|
state: "4.0"
|
|
|
|
then:
|
|
|
|
- service: light.turn_on
|
|
|
|
target:
|
|
|
|
entity_id: light.all_lights
|
|
|
|
# 0,1 Adaptive
|
|
|
|
- if:
|
|
|
|
- condition:
|
|
|
|
- condition: state
|
|
|
|
entity_id: input_number.pos_right
|
|
|
|
state: "1.0"
|
|
|
|
then:
|
|
|
|
- service: scene.turn_on
|
|
|
|
target:
|
|
|
|
entity_id: scene.light_adaptive
|
|
|
|
# 0,2 Night
|
|
|
|
- if:
|
|
|
|
- condition:
|
|
|
|
- condition: state
|
|
|
|
entity_id: input_number.pos_right
|
|
|
|
state: "2.0"
|
|
|
|
then:
|
|
|
|
- service: scene.turn_on
|
|
|
|
target:
|
|
|
|
entity_id: scene.light_night
|
|
|
|
# 0,3 Bright
|
|
|
|
- if:
|
|
|
|
- condition:
|
|
|
|
- condition: state
|
|
|
|
entity_id: input_number.pos_right
|
|
|
|
state: "3.0"
|
|
|
|
then:
|
|
|
|
- service: scene.turn_on
|
|
|
|
target:
|
|
|
|
entity_id: scene.light_bright
|
|
|
|
mode: single
|
|
|
|
# Down
|
|
|
|
pos_down:
|
|
|
|
alias: pos_down
|
|
|
|
sequence:
|
|
|
|
# 0,0
|
|
|
|
- if:
|
|
|
|
- condition: and
|
|
|
|
conditions:
|
|
|
|
- condition: state
|
|
|
|
entity_id: input_number.pos_left
|
|
|
|
state: "0.0"
|
|
|
|
- condition: state
|
|
|
|
entity_id: input_number.pos_right
|
|
|
|
state: "0.0"
|
|
|
|
then:
|
|
|
|
- service: light.turn_off
|
|
|
|
target:
|
|
|
|
entity_id: light.all_lights
|
|
|
|
# 1,0 Ceiling
|
|
|
|
- if:
|
|
|
|
- condition:
|
|
|
|
- condition: state
|
|
|
|
entity_id: input_number.pos_left
|
|
|
|
state: "1.0"
|
|
|
|
then:
|
|
|
|
- service: light.turn_off
|
|
|
|
target:
|
|
|
|
entity_id: light.ceiling
|
|
|
|
# 2,0 Bed
|
|
|
|
- if:
|
|
|
|
- condition:
|
|
|
|
- condition: state
|
|
|
|
entity_id: input_number.pos_left
|
|
|
|
state: "2.0"
|
|
|
|
then:
|
|
|
|
- service: light.turn_off
|
|
|
|
target:
|
|
|
|
entity_id: light.bed_ceiling
|
|
|
|
# 3,0 Indirect
|
|
|
|
- if:
|
|
|
|
- condition:
|
|
|
|
- condition: state
|
|
|
|
entity_id: input_number.pos_left
|
|
|
|
state: "3.0"
|
|
|
|
then:
|
|
|
|
- service: light.turn_off
|
|
|
|
target:
|
|
|
|
entity_id: light.all_indirect
|
|
|
|
# 4,0 All Lights
|
|
|
|
- if:
|
|
|
|
- condition:
|
|
|
|
- condition: state
|
|
|
|
entity_id: input_number.pos_left
|
|
|
|
state: "4.0"
|
|
|
|
then:
|
|
|
|
- service: light.turn_off
|
|
|
|
target:
|
|
|
|
entity_id: light.all_lights
|
|
|
|
mode: single
|
|
|
|
|
|
|
|
|
|
|
|
#----------------------------------------------------------------------------------#
|
|
|
|
# Dimming
|
|
|
|
#----------------------------------------------------------------------------------#
|
|
|
|
button_brightness_up:
|
|
|
|
sequence:
|
|
|
|
- service: light.turn_on
|
|
|
|
data_template:
|
|
|
|
entity_id: light.direct
|
|
|
|
brightness: >-
|
|
|
|
{% set current = states.light.direct.attributes.brightness|default(0)|int %}
|
|
|
|
{% set step = 100 %}
|
|
|
|
{% set next = current + step %}
|
|
|
|
{% if next > 255 %}
|
|
|
|
{% set next = 255 %}
|
|
|
|
{% endif %}
|
|
|
|
{{ next }}
|
|
|
|
- delay:
|
|
|
|
milliseconds: 1
|
|
|
|
- service: script.turn_on
|
|
|
|
data:
|
|
|
|
entity_id: script.button_brightness_up_loop
|
|
|
|
|
|
|
|
button_brightness_up_loop:
|
|
|
|
sequence:
|
|
|
|
- service: script.turn_on
|
|
|
|
data:
|
|
|
|
entity_id: script.button_brightness_up
|
|
|
|
|
|
|
|
button_brightness_down:
|
|
|
|
sequence:
|
|
|
|
- service: light.turn_on
|
|
|
|
data_template:
|
|
|
|
entity_id: light.direct
|
|
|
|
brightness: >-
|
|
|
|
{% set current = states.light.direct.attributes.brightness|default(0)|int %}
|
|
|
|
{% set step = 100 %}
|
|
|
|
{% set next = current - step %}
|
|
|
|
{% if next < 1 %}
|
|
|
|
{% set next = 1 %}
|
|
|
|
{% endif %}
|
|
|
|
{{ next }}
|
|
|
|
- delay:
|
|
|
|
milliseconds: 1
|
|
|
|
- service: script.turn_on
|
|
|
|
data:
|
|
|
|
entity_id: script.button_brightness_down_loop
|
|
|
|
|
|
|
|
button_brightness_down_loop:
|
|
|
|
sequence:
|
|
|
|
- service: script.turn_on
|
|
|
|
data:
|
|
|
|
entity_id: script.button_brightness_down
|
|
|
|
|
|
|
|
|
|
|
|
#------------------------------------------------------------------------------------#
|
|
|
|
# Automations
|
|
|
|
#------------------------------------------------------------------------------------#
|
|
|
|
automation:
|
|
|
|
# Timer
|
|
|
|
- alias: pos_timer_reset
|
|
|
|
mode: single
|
|
|
|
trigger:
|
|
|
|
- platform: event
|
|
|
|
event_type: timer.finished
|
|
|
|
event_data:
|
|
|
|
entity_id: timer.pos_timer
|
|
|
|
action:
|
|
|
|
- service: input_number.set_value
|
|
|
|
data:
|
|
|
|
value: 0
|
|
|
|
target:
|
|
|
|
entity_id:
|
|
|
|
- input_number.pos_left
|
|
|
|
- input_number.pos_right
|
|
|
|
# Pos 1,0 Ceiling
|
|
|
|
- alias: pos_1_0_flash
|
|
|
|
mode: single
|
|
|
|
trigger:
|
|
|
|
- platform: state
|
|
|
|
entity_id:
|
|
|
|
- input_number.pos_left
|
|
|
|
to: "1.0"
|
|
|
|
action:
|
|
|
|
- service: script.light_ceiling_save
|
|
|
|
- delay:
|
|
|
|
hours: 0
|
|
|
|
minutes: 0
|
|
|
|
seconds: 0
|
|
|
|
milliseconds: 500
|
|
|
|
- service: light.turn_on
|
|
|
|
data:
|
|
|
|
effect: Twitter
|
|
|
|
target:
|
|
|
|
entity_id: light.ceiling
|
|
|
|
- delay:
|
|
|
|
hours: 0
|
|
|
|
minutes: 0
|
|
|
|
seconds: 1
|
|
|
|
milliseconds: 0
|
|
|
|
- service: script.light_ceiling_restore
|
|
|
|
# Pos 2,0 Ceiling Bed
|
|
|
|
- alias: pos_2_0_flash
|
|
|
|
mode: single
|
|
|
|
trigger:
|
|
|
|
- platform: state
|
|
|
|
entity_id:
|
|
|
|
- input_number.pos_left
|
|
|
|
to: "2.0"
|
|
|
|
action:
|
|
|
|
- service: script.light_ceiling_bed_save
|
|
|
|
- delay:
|
|
|
|
hours: 0
|
|
|
|
minutes: 0
|
|
|
|
seconds: 0
|
|
|
|
milliseconds: 500
|
|
|
|
- service: light.turn_on
|
|
|
|
data:
|
|
|
|
effect: Twitter
|
|
|
|
target:
|
|
|
|
entity_id: light.bed_ceiling
|
|
|
|
- delay:
|
|
|
|
hours: 0
|
|
|
|
minutes: 0
|
|
|
|
seconds: 1
|
|
|
|
milliseconds: 0
|
|
|
|
- service: script.light_ceiling_bed_restore
|
|
|
|
# Pos 3,0 Indirect
|
|
|
|
- alias: pos_3_0_flash
|
|
|
|
mode: single
|
|
|
|
trigger:
|
|
|
|
- platform: state
|
|
|
|
entity_id:
|
|
|
|
- input_number.pos_left
|
|
|
|
to: "3.0"
|
|
|
|
action:
|
|
|
|
- service: script.light_indirect_save
|
|
|
|
- delay:
|
|
|
|
hours: 0
|
|
|
|
minutes: 0
|
|
|
|
seconds: 0
|
|
|
|
milliseconds: 500
|
|
|
|
- service: light.turn_on
|
|
|
|
data:
|
|
|
|
effect: Twitter
|
|
|
|
target:
|
|
|
|
entity_id: light.all_indirect
|
|
|
|
- delay:
|
|
|
|
hours: 0
|
|
|
|
minutes: 0
|
|
|
|
seconds: 1
|
|
|
|
milliseconds: 0
|
|
|
|
- service: script.light_indirect_restore
|
|
|
|
# Pos 4,0 All Lights
|
|
|
|
- alias: pos_4_0_flash
|
|
|
|
mode: single
|
|
|
|
trigger:
|
|
|
|
- platform: state
|
|
|
|
entity_id:
|
|
|
|
- input_number.pos_left
|
|
|
|
to: "4.0"
|
|
|
|
action:
|
|
|
|
- service: script.light_store_save
|
|
|
|
- delay:
|
|
|
|
hours: 0
|
|
|
|
minutes: 0
|
|
|
|
seconds: 0
|
|
|
|
milliseconds: 500
|
|
|
|
- service: light.turn_on
|
|
|
|
data:
|
|
|
|
effect: Twitter
|
|
|
|
target:
|
|
|
|
entity_id: light.all_lights
|
|
|
|
- delay:
|
|
|
|
hours: 0
|
|
|
|
minutes: 0
|
|
|
|
seconds: 1
|
|
|
|
milliseconds: 0
|
|
|
|
- service: script.light_store_restore
|
|
|
|
# Pos 0,1 Adaptive
|
|
|
|
- alias: pos_0_1_flash
|
|
|
|
mode: single
|
|
|
|
trigger:
|
|
|
|
- platform: state
|
|
|
|
entity_id:
|
|
|
|
- input_number.pos_right
|
|
|
|
to: "1.0"
|
|
|
|
action:
|
|
|
|
- service: scene.turn_on
|
|
|
|
target:
|
|
|
|
entity_id: scene.light_adaptive
|
|
|
|
# Pos 0,2
|
|
|
|
- alias: pos_0_2_flash
|
|
|
|
mode: single
|
|
|
|
trigger:
|
|
|
|
- platform: state
|
|
|
|
entity_id:
|
|
|
|
- input_number.pos_right
|
|
|
|
to: "2.0"
|
|
|
|
action:
|
|
|
|
- service: scene.turn_on
|
|
|
|
target:
|
|
|
|
entity_id: scene.light_night
|
|
|
|
# Pos 0,3
|
|
|
|
- alias: pos_0_3_flash
|
|
|
|
mode: single
|
|
|
|
trigger:
|
|
|
|
- platform: state
|
|
|
|
entity_id:
|
|
|
|
- input_number.pos_right
|
|
|
|
to: "3.0"
|
|
|
|
action:
|
|
|
|
- service: scene.turn_on
|
|
|
|
target:
|
|
|
|
entity_id: scene.light_bright
|