Skip to content

Instantly share code, notes, and snippets.

@niro1987
Last active January 30, 2022 01:04
Show Gist options
  • Star 4 You must be signed in to star a gist
  • Fork 2 You must be signed in to fork a gist
  • Save niro1987/ec1eecf6340cfd8f31a2b34e1e094c1e to your computer and use it in GitHub Desktop.
Save niro1987/ec1eecf6340cfd8f31a2b34e1e094c1e to your computer and use it in GitHub Desktop.
Home Assistant - Blueprint - ZHA - IKEA TRADFRI - 5 Button Remote - Color Lights
---
# 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: []
@MSJocke
Copy link

MSJocke commented Feb 10, 2021

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??

@RoyTeunissen
Copy link

you're my hero of the day mate, awesome job!

@RoyTeunissen
Copy link

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