Skip to content

Instantly share code, notes, and snippets.

@alexrashed
Last active October 26, 2021 13:53
Show Gist options
  • Save alexrashed/1e1327a2a5cebc62b3c838c3cbbadcb5 to your computer and use it in GitHub Desktop.
Save alexrashed/1e1327a2a5cebc62b3c838c3cbbadcb5 to your computer and use it in GitHub Desktop.
Ikea Five Button Remote Blueprint - Fixed Light Toggle
blueprint:
name: Z2M - IKEA five button remote for lights - Fixed toggle
description: |
Control lights with an IKEA five button remote (the round ones).
The middle "on" button, toggle the lights on/off to the last set brightness
(unless the force brightness is toggled on in the blueprint).
If any light in the target is turned on it will be turned off, otherwise it will be turned on.
Dim up/down buttons will change the brightness smoothly and can be pressed
and hold until the brightness is satisfactory.
The "left" and "right" buttons can be assigned to a short and long button
press action. This allows you to assign, e.g., a scene or anything else.
This is a fork of @starbuck93's blueprint for ZHA found here https://community.home-assistant.io/t/zigbee2mqtt-ikea-five-button-remote/255308
domain: automation
input:
remote:
name: Remote
description: IKEA remote to use
selector:
entity:
domain: sensor
light:
name: Light(s)
description: The light(s) to control
selector:
target:
entity:
domain: light
force_brightness:
name: Force turn on brightness
description: >
Force the brightness to the set level below, when the "on" button on
the remote is pushed and lights turn on.
default: false
selector:
boolean:
brightness:
name: Brightness
description: Brightness of the light(s) when turning on
default: 50
selector:
number:
min: 0
max: 100
mode: slider
step: 1
unit_of_measurement: "%"
button_left_short:
name: Left button - short press
description: Action to run on short left button press
default: []
selector:
action:
button_left_long:
name: Left button - long press
description: Action to run on long left button press
default: []
selector:
action:
button_right_short:
name: Right button - short press
description: Action to run on short right button press
default: []
selector:
action:
button_right_long:
name: Right button - long press
description: Action to run on long right button press
default: []
selector:
action:
mode: restart
max_exceeded: silent
variables:
force_brightness: !input force_brightness
trigger:
- platform: state
entity_id: !input remote
attribute: action
action:
- variables:
command: "{{ trigger.to_state.state }}"
- choose:
- conditions:
- "{{ command == 'toggle' }}"
sequence:
- choose:
- conditions:
- condition: template
value_template: '{% set domain = ''light'' %}
{% set state = ''on'' %}
{{ states[domain] | selectattr(''state'',''eq'', state) | list | count >
0 }}'
sequence:
- service: light.turn_off
target: !input light
data:
transition: 1
default:
- choose:
- conditions: "{{ force_brightness }}"
sequence:
- service: light.turn_on
target: !input light
data:
transition: 1
brightness_pct: !input brightness
default:
- service: light.turn_on
target: !input light
data:
transition: 1
- conditions:
- "{{ command == 'brightness_up_click' }}"
sequence:
- service: light.turn_on
target: !input light
data:
brightness_step_pct: 10
transition: 1
- conditions:
- "{{ command == 'brightness_up_hold' }}"
sequence:
- repeat:
until:
- condition: state
entity_id: !input remote
state: brightness_up_release
attribute: action
sequence:
- service: light.turn_on
data:
brightness_step_pct: 10
transition: 1
target: !input light
- delay: '1'
- conditions:
- "{{ command == 'brightness_down_click' }}"
sequence:
- service: light.turn_on
target: !input light
data:
brightness_step_pct: -10
transition: 1
- conditions:
- "{{ command == 'brightness_down_hold' }}"
sequence:
- repeat:
until:
- condition: state
entity_id: !input remote
state: brightness_down_release
attribute: action
sequence:
- service: light.turn_on
data:
brightness_step_pct: -10
transition: 1
target: !input light
- delay: '1'
- conditions:
- "{{ command == 'arrow_left_click' }}"
sequence: !input button_left_short
- conditions:
- "{{ command == 'arrow_left_hold' }}"
sequence: !input button_left_long
- conditions:
- "{{ command == 'arrow_right_click' }}"
sequence: !input button_right_short
- conditions:
- "{{ command == 'arrow_right_hold' }}"
sequence: !input button_right_long
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment