Instantly share code, notes, and snippets.
Last active
January 30, 2022 01:04
-
Star
(4)
4
You must be signed in to star a gist -
Fork
(2)
2
You must be signed in to fork a gist
-
Save niro1987/ec1eecf6340cfd8f31a2b34e1e094c1e to your computer and use it in GitHub Desktop.
Home Assistant - Blueprint - ZHA - IKEA TRADFRI - 5 Button Remote - Color Lights
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
--- | |
# This automation simulates the use of the IKEA TRADFRI Remote control | |
# connected through ZHA. | |
# | Button | Action | | |
# | -------- | ------------------- | | |
# | Power | Toggle the light | | |
# | Dim-Up | Increase brightness | | |
# | Dim-Down | Decrease brightness | | |
# | Right | Change color | | |
# | Left | Change saturation | | |
blueprint: | |
source_url: https://github.com/niro1987/homeassistant-config/blob/main/blueprints/automation/niro1987/zha_ikea_tradfri_5button_remote_color.yaml | |
name: ZHA - IKEA TRADFRI - 5 Button Remote - Color Lights | |
description: >- | |
This automation simulates the use of the IKEA TRADFRI remote control | |
connected through ZHA. | |
domain: automation | |
input: | |
remote: | |
name: IKEA TRADFRI remote control | |
description: Select the remote control you wish to use. | |
selector: | |
device: | |
integration: zha | |
manufacturer: IKEA of Sweden | |
model: TRADFRI remote control | |
light: | |
name: Light | |
description: Select the light entity you wish to control. | |
selector: | |
entity: | |
domain: light | |
mode: restart | |
max_exceeded: silent | |
variables: | |
var_light: !input light | |
trigger: | |
- platform: event | |
event_type: zha_event | |
event_data: | |
device_id: !input remote | |
action: | |
- choose: | |
# Short-Press on the power button. | |
- conditions: | |
- condition: template | |
value_template: '{{ trigger.event.data.command == "toggle" }}' | |
sequence: | |
- service: light.toggle | |
target: | |
entity_id: !input light | |
# Long-Press on the power button. | |
- conditions: | |
- condition: template | |
value_template: '{{ trigger.event.data.command == "move_to_level_with_on_off" }}' | |
sequence: | |
- service: light.turn_on | |
target: | |
entity_id: !input light | |
data: | |
brightness: 254 | |
hs_color: | |
- 38.222 | |
- 52.941 | |
# Short-Press on the dim-up button. | |
- conditions: | |
- condition: template | |
value_template: '{{ trigger.event.data.command == "step_with_on_off" }}' | |
sequence: | |
- service: light.turn_on | |
target: | |
entity_id: !input light | |
data: | |
brightness_step_pct: 20 | |
transition: 0.5 | |
# Long-Press on the dim-up button. | |
- conditions: | |
- condition: template | |
value_template: '{{ trigger.event.data.command == "move_with_on_off" }}' | |
sequence: | |
- repeat: | |
while: [] | |
sequence: | |
- service: light.turn_on | |
target: | |
entity_id: !input light | |
data: | |
brightness_step_pct: 10 | |
transition: 0.5 | |
- delay: | |
milliseconds: 500 | |
# Short-Press on the dim-down button. | |
- conditions: | |
- condition: template | |
value_template: '{{ trigger.event.data.command == "step" }}' | |
sequence: | |
- service: light.turn_on | |
target: | |
entity_id: !input light | |
data: | |
brightness_step_pct: -20 | |
transition: 0.5 | |
# Long-Press on the dim-down button. | |
- conditions: | |
- condition: template | |
value_template: '{{ trigger.event.data.command == "move" }}' | |
sequence: | |
- repeat: | |
while: [] | |
sequence: | |
- service: light.turn_on | |
target: | |
entity_id: !input light | |
data: | |
brightness_step_pct: -10 | |
transition: 0.5 | |
- delay: | |
milliseconds: 500 | |
# Short-Press on the color-up button. | |
- conditions: | |
- condition: template | |
value_template: '{{ trigger.event.data.command == "press" }}' | |
- condition: template | |
value_template: "{{ trigger.event.data.args == [256,13,0] }}" | |
sequence: | |
- service: light.turn_on | |
target: | |
entity_id: !input light | |
data: | |
hs_color: | |
- >- | |
{% if state_attr(var_light, "hs_color")[0] + 18 > 360 %} | |
{{ state_attr(var_light, "hs_color")[0] + 18 - 360 }} | |
{% else %} | |
{{ state_attr(var_light, "hs_color")[0] + 18 }} | |
{% endif %} | |
- '{{ state_attr(var_light, "hs_color")[1] }}' | |
transition: 0.5 | |
# Long-Press on the color-up button. | |
- conditions: | |
- condition: template | |
value_template: '{{ trigger.event.data.command == "hold" }}' | |
- condition: template | |
value_template: "{{ trigger.event.data.args == [3328,0] }}" | |
sequence: | |
- repeat: | |
while: [] | |
sequence: | |
- service: light.turn_on | |
target: | |
entity_id: !input light | |
data: | |
hs_color: | |
- >- | |
{% if state_attr(var_light, "hs_color")[0] + 18 > 360 %} | |
{{ state_attr(var_light, "hs_color")[0] + 18 - 360 }} | |
{% else %} | |
{{ state_attr(var_light, "hs_color")[0] + 18 }} | |
{% endif %} | |
- '{{ state_attr(var_light, "hs_color")[1] }}' | |
transition: 0.5 | |
- delay: | |
milliseconds: 500 | |
# Short-Press on the color-down button. | |
- conditions: | |
- condition: template | |
value_template: '{{ trigger.event.data.command == "press" }}' | |
- condition: template | |
value_template: "{{ trigger.event.data.args == [257,13,0] }}" | |
sequence: | |
- service: light.turn_on | |
target: | |
entity_id: !input light | |
data: | |
hs_color: | |
- '{{ state_attr(var_light, "hs_color")[0] }}' | |
- >- | |
{% if state_attr(var_light, "hs_color")[1] - 20 < 0 %} | |
{{ state_attr(var_light, "hs_color")[1] - 20 + 100 }} | |
{% else %} | |
{{ state_attr(var_light, "hs_color")[1] - 20 }} | |
{% endif %} | |
transition: 0.5 | |
# Long-Press on the color-down button. | |
- conditions: | |
- condition: template | |
value_template: '{{ trigger.event.data.command == "hold" }}' | |
- condition: template | |
value_template: "{{ trigger.event.data.args == [3329,0] }}" | |
sequence: | |
- repeat: | |
while: [] | |
sequence: | |
- service: light.turn_on | |
target: | |
entity_id: !input light | |
data: | |
hs_color: | |
- '{{ state_attr(var_light, "hs_color")[0] }}' | |
- >- | |
{% if state_attr(var_light, "hs_color")[1] - 10 < 0 %} | |
{{ state_attr(var_light, "hs_color")[1] - 10 + 100 }} | |
{% else %} | |
{{ state_attr(var_light, "hs_color")[1] - 10 }} | |
{% endif %} | |
transition: 0.5 | |
- delay: | |
milliseconds: 500 | |
# Any other event will cancel the repeat loops. | |
default: [] |
you're my hero of the day mate, awesome job!
What is the "IEEE" value?? What does IEEE stand for? Why does it look like a MAC adress - If so, what is the MAC adress of the IKEA remote??
This is where you fill in the unique ID of your remote, its kinda the same principal as a mac adres.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
What is the "IEEE" value?? What does IEEE stand for? Why does it look like a MAC adress - If so, what is the MAC adress of the IKEA remote??