Skip to content

Instantly share code, notes, and snippets.

@niro1987
Last active January 15, 2022 09:03
Show Gist options
  • Save niro1987/3c1934129f41ffe646832c3a30caee13 to your computer and use it in GitHub Desktop.
Save niro1987/3c1934129f41ffe646832c3a30caee13 to your computer and use it in GitHub Desktop.
Home Assistant - Blueprint - ZHA - IKEA TRADFRI - 5 Button Remote - Warm White 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 | Increase temperature |
# | Left | Decrease temperature |
blueprint:
source_url: https://github.com/niro1987/homeassistant-config/blob/main/blueprints/automation/niro1987/zha_ikea_tradfri_5button_remote_white.yaml
name: ZHA - IKEA TRADFRI - 5 Button Remote - Warm White 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
color_temp: 400
# 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:
color_temp: >-
{% if state_attr(var_light, "color_temp") - 18 < 153 %}
{{ 153 }}
{% else %}
{{ state_attr(var_light, "color_temp") - 18 }}
{% endif %}
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:
color_temp: >-
{% if state_attr(var_light, "color_temp") - 18 < 153 %}
{{ 153 }}
{% else %}
{{ state_attr(var_light, "color_temp") - 18 }}
{% endif %}
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:
color_temp: >-
{% if state_attr(var_light, "color_temp") + 18 > 500 %}
{{ 500 }}
{% else %}
{{ state_attr(var_light, "color_temp") + 18 }}
{% 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:
color_temp: >-
{% if state_attr(var_light, "color_temp") + 18 > 500 %}
{{ 500 }}
{% else %}
{{ state_attr(var_light, "color_temp") + 18 }}
{% endif %}
transition: 0.5
- delay:
milliseconds: 500
# Any other event will cancel the repeat loops.
default: []
@tabaza-1
Copy link

Hi Niels,

I found your blueprint excellently fitting my needs!
Not overcomplicated, yet perfectly emulating 5-button IKEA remote.
Easy for me to change the way some evants are automatized.

Great work! Thank you.

Marek

@niro1987
Copy link
Author

Thank you, happy to help!

@dbara
Copy link

dbara commented Apr 27, 2021

Hey, I'd like to use this Blueprint for zigbee2mqtt, as it works perfectly with zha.
I cannot use ZHA unfortunately, as my heating system is not compatible to ZHA.

@niro1987
Copy link
Author

I got the same question on the HomeAssistant forum, same person?

@dbara
Copy link

dbara commented Apr 28, 2021

Hey Niro, you're right, same Person. Didn't know if you'd read it here or in the forum first, sorry for that.

@dbara
Copy link

dbara commented Apr 28, 2021

Oh, and thank you a lot. This blueprint is so awesome

@dbara
Copy link

dbara commented Apr 28, 2021

Wow, that was fast.
Short press power works
Short press up & dow works
Short press left & right seems to do nothing.

@dbara
Copy link

dbara commented Apr 28, 2021

Oh, long press up & down also works, first time nothing happened (my fault)

@niro1987
Copy link
Author

niro1987 commented Apr 28, 2021

@dbara Please add your feedback to the related code, it hard to keep track otherwise.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment