Skip to content

Instantly share code, notes, and snippets.

@farridav
Last active January 8, 2024 13:03
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save farridav/3f5bf486a858574c34198f12f26d79c4 to your computer and use it in GitHub Desktop.
Save farridav/3f5bf486a858574c34198f12f26d79c4 to your computer and use it in GitHub Desktop.
cube
blueprint:
name: Aqara Magic Cube (Z2M)
description: Control anything using Aqara Magic Cube (Z2M) - V1.1
domain: automation
input:
topic:
name: MQTT topic for device
description: device name e.g zigbee2mqtt/cube_1
selector:
text:
slide_face_0:
name: Slide the cube with face 0 up
default: []
selector:
action: {}
tap_face_0:
name: Double tap the cube with face 0 up
default: []
selector:
action: {}
flipped90_face_0:
name: Flip the cube 90 degrees to face 0
default: []
selector:
action: {}
flipped180_face_0:
name: Flip the cube 180 degrees to face 0
default: []
selector:
action: {}
rotate_cw_face_0:
name: Rotate cube clockwise with face 0 up
default: []
selector:
action: {}
rotate_ccw_face_0:
name: Rotate cube counter clockwise with face 0 up
default: []
selector:
action: {}
slide_face_1:
name: Slide the cube with face 1 up
default: []
selector:
action: {}
tap_face_1:
name: Double tap the cube with face 1 up
default: []
selector:
action: {}
flipped90_face_1:
name: Flip the cube 90 degrees to face 1
default: []
selector:
action: {}
flipped180_face_1:
name: Flip the cube 180 degrees to face 1
default: []
selector:
action: {}
rotate_cw_face_1:
name: Rotate cube clockwise with face 1 up
default: []
selector:
action: {}
rotate_ccw_face_1:
name: Rotate cube counter clockwise with face 1 up
default: []
selector:
action: {}
slide_face_2:
name: Slide the cube with face 2 up
default: []
selector:
action: {}
tap_face_2:
name: Double tap the cube with face 2 up
default: []
selector:
action: {}
flipped90_face_2:
name: Flip the cube 90 degrees to face 2
default: []
selector:
action: {}
flipped180_face_2:
name: Flip the cube 180 degrees to face 2
default: []
selector:
action: {}
rotate_cw_face_2:
name: Rotate cube clockwise with face 2 up
default: []
selector:
action: {}
rotate_ccw_face_2:
name: Rotate cube counter clockwise with face 2 up
default: []
selector:
action: {}
slide_face_3:
name: Slide the cube with face 3 up
default: []
selector:
action: {}
tap_face_3:
name: Double tap the cube with face 3 up
default: []
selector:
action: {}
flipped90_face_3:
name: Flip the cube 90 degrees to face 3
default: []
selector:
action: {}
flipped180_face_3:
name: Flip the cube 180 degrees to face 3
default: []
selector:
action: {}
rotate_cw_face_3:
name: Rotate cube clockwise with face 3 up
default: []
selector:
action: {}
rotate_ccw_face_3:
name: Rotate cube counter clockwise with face 3 up
default: []
selector:
action: {}
slide_face_4:
name: Slide the cube with face 4 up
default: []
selector:
action: {}
tap_face_4:
name: Double tap the cube with face 4 up
default: []
selector:
action: {}
flipped90_face_4:
name: Flip the cube 90 degrees to face 4
default: []
selector:
action: {}
flipped180_face_4:
name: Flip the cube 180 degrees to face 4
default: []
selector:
action: {}
rotate_cw_face_4:
name: Rotate cube clockwise with face 4 up
default: []
selector:
action: {}
rotate_ccw_face_4:
name: Rotate cube counter clockwise with face 4 up
default: []
selector:
action: {}
slide_face_5:
name: Slide the cube with face 5 up
default: []
selector:
action: {}
tap_face_5:
name: Double tap the cube with face 5 up
default: []
selector:
action: {}
flipped90_face_5:
name: Flip the cube 90 degrees to face 5
default: []
selector:
action: {}
flipped180_face_5:
name: Flip the cube 180 degrees to face 5
default: []
selector:
action: {}
rotate_cw_face_5:
name: Rotate cube clockwise with face 5 up
default: []
selector:
action: {}
rotate_ccw_face_5:
name: Rotate cube counter clockwise with face 5 up
default: []
selector:
action: {}
shake:
name: Shake the cube
default: []
selector:
action: {}
fall:
name: Drop the cube
default: []
selector:
action: {}
source_url: https://gist.github.com/farridav/3f5bf486a858574c34198f12f26d79c4
mode: queued
max: 5
max_exceeded: silent
trigger:
- platform: mqtt
topic: !input topic
condition:
- condition: template
value_template: '{{ trigger.payload_json.action in ("shake", "throw", "wakeup", "fall", "tap", "slide", "flip180", "flip90", "rotate_left", "rotate_right") }}'
action:
- variables:
action: "{{ trigger.payload_json.action }}"
action_angle: "{{ trigger.payload_json.action_angle }}"
action_from_side: "{{ trigger.payload_json.action_from_side }}"
action_side: "{{ trigger.payload_json.action_side }}"
action_to_side: "{{ trigger.payload_json.action_to_side }}"
angle: "{{ trigger.payload_json.angle }}"
current: "{{ trigger.payload_json.current }}"
side: "{{ trigger.payload_json.side }}"
- choose:
- conditions: '{{ action == "slide" }}'
sequence:
- choose:
- conditions: "{{ side == 0 }}"
sequence: !input slide_face_0
- conditions: "{{ side == 1 }}"
sequence: !input slide_face_1
- conditions: "{{ side == 2 }}"
sequence: !input slide_face_2
- conditions: "{{ side == 3 }}"
sequence: !input slide_face_3
- conditions: "{{ side == 4 }}"
sequence: !input slide_face_4
- conditions: "{{ side == 5 }}"
sequence: !input slide_face_5
- conditions: '{{ action == "tap" }}'
sequence:
- choose:
- conditions: "{{ side == 0 }}"
sequence: !input tap_face_0
- conditions: "{{ side == 1 }}"
sequence: !input tap_face_1
- conditions: "{{ side == 2 }}"
sequence: !input tap_face_2
- conditions: "{{ side == 3 }}"
sequence: !input tap_face_3
- conditions: "{{ side == 4 }}"
sequence: !input tap_face_4
- conditions: "{{ side == 5 }}"
sequence: !input tap_face_5
- conditions: '{{ action == "flip90" }}'
sequence:
- choose:
- conditions: "{{ side == 0 }}"
sequence: !input flipped90_face_0
- conditions: "{{ side == 1 }}"
sequence: !input flipped90_face_1
- conditions: "{{ side == 2 }}"
sequence: !input flipped90_face_2
- conditions: "{{ side == 3 }}"
sequence: !input flipped90_face_3
- conditions: "{{ side == 4 }}"
sequence: !input flipped90_face_4
- conditions: "{{ side == 5 }}"
sequence: !input flipped90_face_5
- conditions: '{{ action == "flip180" }}'
sequence:
- choose:
- conditions: "{{ side == 0 }}"
sequence: !input flipped180_face_0
- conditions: "{{ side == 1 }}"
sequence: !input flipped180_face_1
- conditions: "{{ side == 2 }}"
sequence: !input flipped180_face_2
- conditions: "{{ side == 3 }}"
sequence: !input flipped180_face_3
- conditions: "{{ side == 4 }}"
sequence: !input flipped180_face_4
- conditions: "{{ side == 5 }}"
sequence: !input flipped180_face_5
- conditions: '{{ action == "rotate_right" }}'
sequence:
- choose:
- conditions: "{{ side == 0 }}"
sequence: !input rotate_cw_face_0
- conditions: "{{ side == 1 }}"
sequence: !input rotate_cw_face_1
- conditions: "{{ side == 2 }}"
sequence: !input rotate_cw_face_2
- conditions: "{{ side == 3 }}"
sequence: !input rotate_cw_face_3
- conditions: "{{ side == 4 }}"
sequence: !input rotate_cw_face_4
- conditions: "{{ side == 5 }}"
sequence: !input rotate_cw_face_5
- conditions: '{{ action == "rotate_left" }}'
sequence:
- choose:
- conditions: "{{ side == 0 }}"
sequence: !input rotate_ccw_face_0
- conditions: "{{ side == 1 }}"
sequence: !input rotate_ccw_face_1
- conditions: "{{ side == 2 }}"
sequence: !input rotate_ccw_face_2
- conditions: "{{ side == 3 }}"
sequence: !input rotate_ccw_face_3
- conditions: "{{ side == 4 }}"
sequence: !input rotate_ccw_face_4
- conditions: "{{ side == 5 }}"
sequence: !input rotate_ccw_face_5
- conditions: '{{ action == "shake" }}'
sequence: !input shake
- conditions: '{{ action == "fall" }}'
sequence: !input fall
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment