Created
April 19, 2021 13:35
-
-
Save jasmin-mistry/b9a03cef4e3c092c8c971fdf107dcd6a to your computer and use it in GitHub Desktop.
Aqara Magic Cube Blueprint - Home Assistant
This file contains hidden or 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
blueprint: | |
name: Aqara Magic Cube | |
description: Control anything using Aqara Magic Cube. | |
domain: automation | |
input: | |
remote: | |
name: Magic Cube | |
description: Select the Aqara Magic Cube device | |
selector: | |
device: | |
integration: zha | |
manufacturer: LUMI | |
flip_90: | |
name: Flip 90 degrees | |
description: 'Actions to run when cube flips 90 degrees. | |
This cancels all specific 90 degrees functions. | |
e.g From side 1 to side 2 will be the same as from side 6 to side 2' | |
default: false | |
selector: | |
boolean: {} | |
cube_flip_90: | |
name: Flip cube 90 degrees | |
description: Action to run when cube flips 90 degrees. This only works if 'Flip | |
90 degrees' is toggled | |
default: [] | |
selector: | |
action: {} | |
flip_180: | |
name: Flip 180 degrees | |
description: 'Actions to run when cube flips 180 degrees. | |
This cancels all specific 180 degrees functions | |
e.g From side 1 to side 4 will be the same as from side 5 to side 2' | |
default: false | |
selector: | |
boolean: {} | |
cube_flip_180: | |
name: Flip cube 180 degrees | |
description: Action to run when cube flips 180 degrees. This only works if 'Flip | |
180 degrees' is toggled | |
default: [] | |
selector: | |
action: {} | |
flip_any: | |
name: Flip to any side | |
description: 'Actions to run when cube flips to any side. | |
This cares about the end side, but cancels all specific flip functions. | |
e.g From side 1 to side 2 will be the same as from side 6 to side 2 | |
but different than side 1 to side 5' | |
default: false | |
selector: | |
boolean: {} | |
cube_flip_1: | |
name: Flip cube to side 1 | |
description: Action to run when cube flips to side 1. This only works if 'Flip | |
any' is toggled | |
default: [] | |
selector: | |
action: {} | |
cube_flip_2: | |
name: Flip cube to side 2 | |
description: Action to run when cube flips to side 2. This only works if 'Flip | |
any' is toggled | |
default: [] | |
selector: | |
action: {} | |
cube_flip_3: | |
name: Flip cube to side 3 | |
description: Action to run when cube flips to side 3. This only works if 'Flip | |
any' is toggled | |
default: [] | |
selector: | |
action: {} | |
cube_flip_4: | |
name: Flip cube to side 4 | |
description: Action to run when cube flips to side 4. This only works if 'Flip | |
any' is toggled | |
default: [] | |
selector: | |
action: {} | |
cube_flip_5: | |
name: Flip cube to side 5 | |
description: Action to run when cube flips to side 5. This only works if 'Flip | |
any' is toggled | |
default: [] | |
selector: | |
action: {} | |
cube_flip_6: | |
name: Flip cube to side 6 | |
description: Action to run when cube flips to side 6. This only works if 'Flip | |
any' is toggled | |
default: [] | |
selector: | |
action: {} | |
slide_any_side: | |
name: Slide any side | |
description: 'Actions to run when cube slides on any side. | |
This cancels all specific ''slide'' functions | |
e.g Slide on side 1 will be the same as slide on side 2' | |
default: false | |
selector: | |
boolean: {} | |
cube_slide_any: | |
name: Slide cube on any side | |
description: Action to run when cube slides on any slide. This only works if | |
'Slide any side' is toggled | |
default: [] | |
selector: | |
action: {} | |
knock_any_side: | |
name: Knock on any side | |
description: 'Actions to run when knocking cube regardless of the side. | |
This cancels all specific ''knock'' functions | |
e.g Knock on side 1 will be the same as knocking side 2' | |
default: false | |
selector: | |
boolean: {} | |
cube_knock_any: | |
name: Knock cube on any side | |
description: Action to run when knocking cube on any side. This only works if | |
'Knock on any side' is toggled | |
default: [] | |
selector: | |
action: {} | |
one_to_two: | |
name: From side 1 to side 2 | |
description: Action to run when cube goes from side 1 to side 2 | |
default: [] | |
selector: | |
action: {} | |
one_to_three: | |
name: From side 1 to side 3 | |
description: Action to run when cube goes from side 1 to side 3 | |
default: [] | |
selector: | |
action: {} | |
one_to_four: | |
name: From side 1 to side 4 | |
description: Action to run when cube goes from side 1 to side 4 | |
default: [] | |
selector: | |
action: {} | |
one_to_five: | |
name: From side 1 to side 5 | |
description: Action to run when cube goes from side 1 to side 5 | |
default: [] | |
selector: | |
action: {} | |
one_to_six: | |
name: From side 1 to side 6 | |
description: Action to run when cube goes from side 1 to side 6 | |
default: [] | |
selector: | |
action: {} | |
two_to_one: | |
name: From side 2 to side 1 | |
description: Action to run when cube goes from side 2 to side 1 | |
default: [] | |
selector: | |
action: {} | |
two_to_three: | |
name: From side 2 to side 3 | |
description: Action to run when cube goes from side 2 to side 3 | |
default: [] | |
selector: | |
action: {} | |
two_to_four: | |
name: From side 2 to side 4 | |
description: Action to run when cube goes from side 2 to side 4 | |
default: [] | |
selector: | |
action: {} | |
two_to_five: | |
name: From side 2 to side 5 | |
description: Action to run when cube goes from side 2 to side 5 | |
default: [] | |
selector: | |
action: {} | |
two_to_six: | |
name: From side 2 to side 6 | |
description: Action to run when cube goes from side 2 to side 6 | |
default: [] | |
selector: | |
action: {} | |
three_to_one: | |
name: From side 3 to side 1 | |
description: Action to run when cube goes from side 3 to side 1 | |
default: [] | |
selector: | |
action: {} | |
three_to_two: | |
name: From side 3 to side 2 | |
description: Action to run when cube goes from side 3 to side 2 | |
default: [] | |
selector: | |
action: {} | |
three_to_four: | |
name: From side 3 to side 4 | |
description: Action to run when cube goes from side 3 to side 4 | |
default: [] | |
selector: | |
action: {} | |
three_to_five: | |
name: From side 3 to side 5 | |
description: Action to run when cube goes from side 3 to side 5 | |
default: [] | |
selector: | |
action: {} | |
three_to_six: | |
name: From side 3 to side 6 | |
description: Action to run when cube goes from side 3 to side 6 | |
default: [] | |
selector: | |
action: {} | |
four_to_one: | |
name: From side 4 to side 1 | |
description: Action to run when cube goes from side 4 to side 1 | |
default: [] | |
selector: | |
action: {} | |
four_to_two: | |
name: From side 4 to side 2 | |
description: Action to run when cube goes from side 4 to side 2 | |
default: [] | |
selector: | |
action: {} | |
four_to_three: | |
name: From side 4 to side 3 | |
description: Action to run when cube goes from side 4 to side 3 | |
default: [] | |
selector: | |
action: {} | |
four_to_five: | |
name: From side 4 to side 5 | |
description: Action to run when cube goes from side 4 to side 5 | |
default: [] | |
selector: | |
action: {} | |
four_to_six: | |
name: From side 4 to side 6 | |
description: Action to run when cube goes from side 4 to side 6 | |
default: [] | |
selector: | |
action: {} | |
five_to_one: | |
name: From side 5 to side 1 | |
description: Action to run when cube goes from side 5 to side 1 | |
default: [] | |
selector: | |
action: {} | |
five_to_two: | |
name: From side 5 to side 2 | |
description: Action to run when cube goes from side 5 to side 2 | |
default: [] | |
selector: | |
action: {} | |
five_to_three: | |
name: From side 5 to side 3 | |
description: Action to run when cube goes from side 5 to side 3 | |
default: [] | |
selector: | |
action: {} | |
five_to_four: | |
name: From side 5 to side 4 | |
description: Action to run when cube goes from side 5 to side 4 | |
default: [] | |
selector: | |
action: {} | |
five_to_six: | |
name: From side 5 to side 6 | |
description: Action to run when cube goes from side 5 to side 6 | |
default: [] | |
selector: | |
action: {} | |
six_to_one: | |
name: From side 6 to side 1 | |
description: Action to run when cube goes from side 6 to side 1 | |
default: [] | |
selector: | |
action: {} | |
six_to_two: | |
name: From side 6 to side 2 | |
description: Action to run when cube goes from side 6 to side 2 | |
default: [] | |
selector: | |
action: {} | |
six_to_three: | |
name: From side 6 to side 3 | |
description: Action to run when cube goes from side 6 to side 3 | |
default: [] | |
selector: | |
action: {} | |
six_to_four: | |
name: From side 6 to side 4 | |
description: Action to run when cube goes from side 6 to side 4 | |
default: [] | |
selector: | |
action: {} | |
six_to_five: | |
name: From side 6 to side 5 | |
description: Action to run when cube goes from side 6 to side 5 | |
default: [] | |
selector: | |
action: {} | |
one_to_one: | |
name: Knock - Side 1 | |
description: Action to run when knocking on side 1 | |
default: [] | |
selector: | |
action: {} | |
two_to_two: | |
name: Knock - Side 2 | |
description: Action to run when knocking on side 2 | |
default: [] | |
selector: | |
action: {} | |
three_to_three: | |
name: Knock - Side 3 | |
description: Action to run when knocking on side 3 | |
default: [] | |
selector: | |
action: {} | |
four_to_four: | |
name: Knock - Side 4 | |
description: Action to run when knocking on side 4 | |
default: [] | |
selector: | |
action: {} | |
five_to_five: | |
name: Knock - Side 5 | |
description: Action to run when knocking on side 5 | |
default: [] | |
selector: | |
action: {} | |
six_to_six: | |
name: Knock - Side 6 | |
description: Action to run when knocking on side 6 | |
default: [] | |
selector: | |
action: {} | |
slide_on_one: | |
name: Slide - Side 1 up | |
description: Action to run when slides with Side 1 up | |
default: [] | |
selector: | |
action: {} | |
slide_on_two: | |
name: Slide - Side 2 up | |
description: Action to run when slides with Side 2 up | |
default: [] | |
selector: | |
action: {} | |
slide_on_three: | |
name: Slide - Side 3 up | |
description: Action to run when slides with Side 3 up | |
default: [] | |
selector: | |
action: {} | |
slide_on_four: | |
name: Slide - Side 4 up | |
description: Action to run when slides with Side 4 up | |
default: [] | |
selector: | |
action: {} | |
slide_on_five: | |
name: Slide - Side 5 up | |
description: Action to run when slides with Side 5 up | |
default: [] | |
selector: | |
action: {} | |
slide_on_six: | |
name: Slide - Side 6 up | |
description: Action to run when slides with Side 6 up | |
default: [] | |
selector: | |
action: {} | |
cube_wake: | |
name: Wake up the cube | |
description: Action to run when cube wakes up | |
default: [] | |
selector: | |
action: {} | |
cube_drop: | |
name: Cube drops | |
description: Action to run when cube drops | |
default: [] | |
selector: | |
action: {} | |
cube_shake: | |
name: Shake cube | |
description: Action to run when you shake the cube | |
default: [] | |
selector: | |
action: {} | |
rotate_right: | |
name: Rotate right | |
description: Action to run when cube rotates right | |
default: [] | |
selector: | |
action: {} | |
rotate_left: | |
name: Rotate left | |
description: Action to run when cube rotates left | |
default: [] | |
selector: | |
action: {} | |
source_url: https://community.home-assistant.io/t/aqara-magic-cube-zha-51-actions/270829/1 | |
mode: restart | |
max_exceeded: silent | |
trigger: | |
- platform: event | |
event_type: zha_event | |
event_data: | |
device_id: !input 'remote' | |
action: | |
- variables: | |
command: '{{ trigger.event.data.command }}' | |
value: '{{ trigger.event.data.args.value }}' | |
flip_degrees: '{{ trigger.event.data.args.flip_degrees }}' | |
relative_degrees: '{{ trigger.event.data.args.relative_degrees }}' | |
flip_any: !input 'flip_any' | |
flip_90: !input 'flip_90' | |
flip_180: !input 'flip_180' | |
slide_any_side: !input 'slide_any_side' | |
knock_any_side: !input 'knock_any_side' | |
flip90: 64 | |
flip180: 128 | |
slide: 256 | |
knock: 512 | |
shake: 0 | |
drop: 3 | |
activated_face: "\n{% if command == \"slide\" or command == \"knock\" %}\n\n \ | |
\ {% if trigger.event.data.args.activated_face == 1 %} 1\n\n {% elif trigger.event.data.args.activated_face\ | |
\ == 2 %} 5\n\n {% elif trigger.event.data.args.activated_face == 3 %} 6\n\n\ | |
\ {% elif trigger.event.data.args.activated_face == 4 %} 4\n\n {% elif trigger.event.data.args.activated_face\ | |
\ == 5 %} 2\n\n {% elif trigger.event.data.args.activated_face == 6 %} 3\n\n\ | |
\ {% endif %}\n\n{% elif command == 'flip' %}\n\n {{ trigger.event.data.args.activated_face\ | |
\ | int }}\n\n{% endif %}\n" | |
from_face: "\n{% if command == \"flip\" and flip_degrees == 90 %}\n\n {{ ((value\ | |
\ - flip90 - (trigger.event.data.args.activated_face - 1)) / 8) + 1 | int }}\n\ | |
\n{% endif %}\n" | |
- choose: | |
- conditions: | |
- '{{ command == ''rotate_right'' }}' | |
sequence: !input 'rotate_right' | |
- conditions: | |
- '{{ command == ''rotate_left'' }}' | |
sequence: !input 'rotate_left' | |
- conditions: | |
- '{{ command == ''checkin'' }}' | |
sequence: !input 'cube_wake' | |
- conditions: | |
- '{{ value == shake }}' | |
sequence: !input 'cube_shake' | |
- conditions: | |
- '{{ value == drop }}' | |
sequence: !input 'cube_drop' | |
- conditions: | |
- '{{ command == ''knock'' and knock_any_side }}' | |
sequence: !input 'cube_knock_any' | |
- conditions: | |
- '{{ command == ''slide'' and slide_any_side }}' | |
sequence: !input 'cube_slide_any' | |
- conditions: | |
- '{{ command == ''flip'' and flip_any }}' | |
sequence: | |
- choose: | |
- conditions: '{{ activated_face == 1 }}' | |
sequence: !input 'cube_flip_1' | |
- conditions: '{{ activated_face == 2 }}' | |
sequence: !input 'cube_flip_2' | |
- conditions: '{{ activated_face == 3 }}' | |
sequence: !input 'cube_flip_3' | |
- conditions: '{{ activated_face == 4 }}' | |
sequence: !input 'cube_flip_4' | |
- conditions: '{{ activated_face == 5 }}' | |
sequence: !input 'cube_flip_5' | |
- conditions: '{{ activated_face == 6 }}' | |
sequence: !input 'cube_flip_6' | |
- conditions: | |
- '{{ flip_degrees == 90 and flip_90 }}' | |
sequence: !input 'cube_flip_90' | |
- conditions: | |
- '{{ flip_degrees == 180 and flip_180 }}' | |
sequence: !input 'cube_flip_180' | |
- conditions: | |
- '{{ flip_degrees == 90 and activated_face == 1 }}' | |
sequence: | |
- choose: | |
- conditions: '{{ from_face == 2 }}' | |
sequence: !input 'two_to_one' | |
- conditions: '{{ from_face == 3 }}' | |
sequence: !input 'three_to_one' | |
- conditions: '{{ from_face == 5 }}' | |
sequence: !input 'five_to_one' | |
- conditions: '{{ from_face == 6 }}' | |
sequence: !input 'six_to_one' | |
- conditions: | |
- '{{ flip_degrees == 90 and activated_face == 2 }}' | |
sequence: | |
- choose: | |
- conditions: '{{ from_face == 1 }}' | |
sequence: !input 'one_to_two' | |
- conditions: '{{ from_face == 3 }}' | |
sequence: !input 'three_to_two' | |
- conditions: '{{ from_face == 4 }}' | |
sequence: !input 'four_to_two' | |
- conditions: '{{ from_face == 6 }}' | |
sequence: !input 'six_to_two' | |
- conditions: | |
- '{{ flip_degrees == 90 and activated_face == 3 }}' | |
sequence: | |
- choose: | |
- conditions: '{{ from_face == 1 }}' | |
sequence: !input 'one_to_three' | |
- conditions: '{{ from_face == 2 }}' | |
sequence: !input 'two_to_three' | |
- conditions: '{{ from_face == 4 }}' | |
sequence: !input 'four_to_three' | |
- conditions: '{{ from_face == 5 }}' | |
sequence: !input 'five_to_three' | |
- conditions: | |
- '{{ flip_degrees == 90 and activated_face == 4 }}' | |
sequence: | |
- choose: | |
- conditions: '{{ from_face == 2 }}' | |
sequence: !input 'two_to_four' | |
- conditions: '{{ from_face == 3 }}' | |
sequence: !input 'three_to_four' | |
- conditions: '{{ from_face == 5 }}' | |
sequence: !input 'five_to_four' | |
- conditions: '{{ from_face == 6 }}' | |
sequence: !input 'six_to_four' | |
- conditions: | |
- '{{ flip_degrees == 90 and activated_face == 5 }}' | |
sequence: | |
- choose: | |
- conditions: '{{ from_face == 1 }}' | |
sequence: !input 'one_to_five' | |
- conditions: '{{ from_face == 3 }}' | |
sequence: !input 'three_to_five' | |
- conditions: '{{ from_face == 4 }}' | |
sequence: !input 'four_to_five' | |
- conditions: '{{ from_face == 6 }}' | |
sequence: !input 'six_to_five' | |
- conditions: | |
- '{{ flip_degrees == 90 and activated_face == 6 }}' | |
sequence: | |
- choose: | |
- conditions: '{{ from_face == 1 }}' | |
sequence: !input 'one_to_six' | |
- conditions: '{{ from_face == 2 }}' | |
sequence: !input 'two_to_six' | |
- conditions: '{{ from_face == 4 }}' | |
sequence: !input 'four_to_six' | |
- conditions: '{{ from_face == 5 }}' | |
sequence: !input 'five_to_six' | |
- conditions: | |
- '{{ value == flip180 + activated_face - 1 }}' | |
sequence: | |
- choose: | |
- conditions: '{{ activated_face == 1 }}' | |
sequence: !input 'four_to_one' | |
- conditions: '{{ activated_face == 2 }}' | |
sequence: !input 'five_to_two' | |
- conditions: '{{ activated_face == 3 }}' | |
sequence: !input 'six_to_three' | |
- conditions: '{{ activated_face == 4 }}' | |
sequence: !input 'one_to_four' | |
- conditions: '{{ activated_face == 5 }}' | |
sequence: !input 'two_to_five' | |
- conditions: '{{ activated_face == 6 }}' | |
sequence: !input 'three_to_six' | |
- conditions: | |
- '{{ value == knock + activated_face - 1 }}' | |
sequence: | |
- choose: | |
- conditions: '{{ activated_face == 1 }}' | |
sequence: !input 'one_to_one' | |
- conditions: '{{ activated_face == 2 }}' | |
sequence: !input 'two_to_two' | |
- conditions: '{{ activated_face == 3 }}' | |
sequence: !input 'three_to_three' | |
- conditions: '{{ activated_face == 4 }}' | |
sequence: !input 'four_to_four' | |
- conditions: '{{ activated_face == 5 }}' | |
sequence: !input 'five_to_five' | |
- conditions: '{{ activated_face == 6 }}' | |
sequence: !input 'six_to_six' | |
- conditions: | |
- '{{ value == slide + activated_face - 1 }}' | |
sequence: | |
- choose: | |
- conditions: '{{ activated_face == 1 }}' | |
sequence: !input 'slide_on_one' | |
- conditions: '{{ activated_face == 2 }}' | |
sequence: !input 'slide_on_two' | |
- conditions: '{{ activated_face == 3 }}' | |
sequence: !input 'slide_on_three' | |
- conditions: '{{ activated_face == 4 }}' | |
sequence: !input 'slide_on_four' | |
- conditions: '{{ activated_face == 5 }}' | |
sequence: !input 'slide_on_five' | |
- conditions: '{{ activated_face == 6 }}' | |
sequence: !input 'slide_on_six' |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment