Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- blueprint:
- name: EnOcean PTM215Z Double Click and Dimming, v4
- description: |
- This blueprint provides dimming control for two separate light groups.
- Left buttons (1-2) control the left group, right buttons (3-4) control the right group.
- Hold buttons to dim, short press for other actions.
- Buttons 1+3 and 2+4 combinations support long press actions.
- Double-click support is available for all buttons.
- domain: automation
- input:
- controller_left:
- name: (Zigbee2MQTT) Device Name (Left Group)
- description: The name of the left group device as defined in z2m
- default: ''
- controller_right:
- name: (Zigbee2MQTT) Device Name (Right Group)
- description: The name of the right group device as defined in z2m
- default: ''
- base_topic:
- name: (Zigbee2MQTT) Base mqtt topic
- description: The base topic as configured in z2m
- default: zigbee2mqtt
- switch:
- name: HA device name, action entity
- description: The entity from HA
- selector:
- entity:
- filter:
- - integration: mqtt
- domain: event
- multiple: true
- dim_speed:
- name: Dimming Speed
- description: The speed of the dimming effect
- default: 50
- selector:
- number:
- min: 1
- max: 500
- step: 1
- double_click_threshold:
- name: Double Click Threshold
- description: Maximum time between clicks to register as double-click (in seconds)
- default: 0.5
- selector:
- number:
- min: 0.1
- max: 2.0
- step: 0.1
- unit_of_measurement: s
- button_1_short_release:
- name: Button 1 short release (upper left)
- description: Action to run when button 1 is released after short press
- default: []
- selector:
- action: {}
- button_2_short_release:
- name: Button 2 short release (lower left)
- description: Action to run when button 2 is released after short press
- default: []
- selector:
- action: {}
- button_3_short_release:
- name: Button 3 short release (upper right)
- description: Action to run when button 3 is released after short press
- default: []
- selector:
- action: {}
- button_4_short_release:
- name: Button 4 short release (lower right)
- description: Action to run when button 4 is released after short press
- default: []
- selector:
- action: {}
- button_13_short_release:
- name: Buttons 1+3 short release (both upper)
- description: Action to run when both upper buttons are released after short press
- default: []
- selector:
- action: {}
- button_13_long_release:
- name: Buttons 1+3 long release (both upper)
- description: Action to run when both upper buttons are released after long press
- default: []
- selector:
- action: {}
- button_24_short_release:
- name: Buttons 2+4 short release (both lower)
- description: Action to run when both lower buttons are released after short press
- default: []
- selector:
- action: {}
- button_24_long_release:
- name: Buttons 2+4 long release (both lower)
- description: Action to run when both lower buttons are released after long press
- default: []
- selector:
- action: {}
- button_1_double_click:
- name: Button 1 double click (upper left)
- description: Action to run when button 1 is double-clicked
- default: []
- selector:
- action: {}
- button_2_double_click:
- name: Button 2 double click (lower left)
- description: Action to run when button 2 is double-clicked
- default: []
- selector:
- action: {}
- button_3_double_click:
- name: Button 3 double click (upper right)
- description: Action to run when button 3 is double-clicked
- default: []
- selector:
- action: {}
- button_4_double_click:
- name: Button 4 double click (lower right)
- description: Action to run when button 4 is double-clicked
- default: []
- selector:
- action: {}
- mode: restart
- max_exceeded: silent
- triggers:
- - trigger: state
- entity_id: !input 'switch'
- attribute: event_type
- to:
- - release_1
- - release_2
- - release_3
- - release_4
- - release_1_and_3
- - release_2_and_4
- - press_1
- - press_2
- - press_3
- - press_4
- - press_1_and_3
- - press_2_and_4
- variables:
- base_topic: !input base_topic
- controller_left: !input controller_left
- controller_right: !input controller_right
- dimspeed_p: !input 'dim_speed'
- double_click_threshold: !input 'double_click_threshold'
- keypress: '{{ trigger.to_state.attributes.event_type }}'
- timediff: >-
- {{ (trigger.to_state.last_changed -
- trigger.from_state.last_changed).total_seconds() }}
- last_release: '{{ states("input_text.last_button_release") }}'
- last_press: '{{ states("input_text.last_button_press") }}'
- time_since_last_release: >-
- {% if last_release != "unknown" %}
- {{ (trigger.to_state.last_changed -
- strptime(last_release, "%Y-%m-%d %H:%M:%S")).total_seconds() }}
- {% else %}
- 999
- {% endif %}
- time_since_last_press: >-
- {% if last_press != "unknown" %}
- {{ (trigger.to_state.last_changed -
- strptime(last_press, "%Y-%m-%d %H:%M:%S")).total_seconds() }}
- {% else %}
- 999
- {% endif %}
- is_double_click: >-
- {{ time_since_last_release < double_click_threshold and
- time_since_last_press < double_click_threshold and
- time_since_last_release > 0 }}
- action:
- - variables:
- dimspeed_n: '{{ dimspeed_p | int * -1 }}'
- - choose:
- - conditions: '{{ keypress == ''press_1'' }}'
- sequence:
- - action: input_text.set_value
- data:
- entity_id: input_text.last_button_press
- value: '{{ trigger.to_state.last_changed }}'
- - delay:
- seconds: 1
- - action: mqtt.publish
- data:
- topic: '{{ base_topic ~ ''/'' ~ controller_left ~ ''/set''}}'
- payload: "{\"brightness_move_onoff\": {{ dimspeed_p }} }"
- - conditions: '{{ keypress == ''press_2'' }}'
- sequence:
- - action: input_text.set_value
- data:
- entity_id: input_text.last_button_press
- value: '{{ trigger.to_state.last_changed }}'
- - delay:
- seconds: 1
- - action: mqtt.publish
- data:
- topic: '{{ base_topic ~ ''/'' ~ controller_left ~ ''/set''}}'
- payload: "{\"brightness_move_onoff\": {{ dimspeed_n }} }"
- - conditions: '{{ keypress == ''press_3'' }}'
- sequence:
- - action: input_text.set_value
- data:
- entity_id: input_text.last_button_press
- value: '{{ trigger.to_state.last_changed }}'
- - delay:
- seconds: 1
- - action: mqtt.publish
- data:
- topic: '{{ base_topic ~ ''/'' ~ controller_right ~ ''/set''}}'
- payload: "{\"brightness_move_onoff\": {{ dimspeed_p }} }"
- - conditions: '{{ keypress == ''press_4'' }}'
- sequence:
- - action: input_text.set_value
- data:
- entity_id: input_text.last_button_press
- value: '{{ trigger.to_state.last_changed }}'
- - delay:
- seconds: 1
- - action: mqtt.publish
- data:
- topic: '{{ base_topic ~ ''/'' ~ controller_right ~ ''/set''}}'
- payload: "{\"brightness_move_onoff\": {{ dimspeed_n }} }"
- - conditions: '{{ keypress == ''release_1'' }}'
- sequence:
- - action: input_text.set_value
- data:
- entity_id: input_text.last_button_release
- value: '{{ trigger.to_state.last_changed }}'
- - choose:
- - conditions: '{{ timediff > 1 }}'
- sequence:
- - action: mqtt.publish
- data:
- topic: '{{ base_topic ~ ''/'' ~ controller_left ~ ''/set''}}'
- payload: "{\"brightness_move\": \"stop\"}"
- - conditions: '{{ is_double_click }}'
- sequence: !input button_1_double_click
- default:
- sequence: !input button_1_short_release
- - conditions: '{{ keypress == ''release_2'' }}'
- sequence:
- - action: input_text.set_value
- data:
- entity_id: input_text.last_button_release
- value: '{{ trigger.to_state.last_changed }}'
- - choose:
- - conditions: '{{ timediff > 1 }}'
- sequence:
- - action: mqtt.publish
- data:
- topic: '{{ base_topic ~ ''/'' ~ controller_left ~ ''/set''}}'
- payload: "{\"brightness_move\": \"stop\"}"
- - conditions: '{{ is_double_click }}'
- sequence: !input button_2_double_click
- default:
- sequence: !input button_2_short_release
- - conditions: '{{ keypress == ''release_3'' }}'
- sequence:
- - action: input_text.set_value
- data:
- entity_id: input_text.last_button_release
- value: '{{ trigger.to_state.last_changed }}'
- - choose:
- - conditions: '{{ timediff > 1 }}'
- sequence:
- - action: mqtt.publish
- data:
- topic: '{{ base_topic ~ ''/'' ~ controller_right ~ ''/set''}}'
- payload: "{\"brightness_move\": \"stop\"}"
- - conditions: '{{ is_double_click }}'
- sequence: !input button_3_double_click
- default:
- sequence: !input button_3_short_release
- - conditions: '{{ keypress == ''release_4'' }}'
- sequence:
- - action: input_text.set_value
- data:
- entity_id: input_text.last_button_release
- value: '{{ trigger.to_state.last_changed }}'
- - choose:
- - conditions: '{{ timediff > 1 }}'
- sequence:
- - action: mqtt.publish
- data:
- topic: '{{ base_topic ~ ''/'' ~ controller_right ~ ''/set''}}'
- payload: "{\"brightness_move\": \"stop\"}"
- - conditions: '{{ is_double_click }}'
- sequence: !input button_4_double_click
- default:
- sequence: !input button_4_short_release
- - conditions: '{{ keypress == ''release_1_and_3'' }}'
- sequence:
- - choose:
- - conditions: '{{ timediff > 1 }}'
- sequence: !input button_13_long_release
- default:
- - sequence: !input button_13_short_release
- - conditions: '{{ keypress == ''release_2_and_4'' }}'
- sequence:
- - choose:
- - conditions: '{{ timediff > 1 }}'
- sequence: !input button_24_long_release
- default:
- - sequence: !input button_24_short_release
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement