Upload files to "Blueprints"

This commit is contained in:
2026-07-31 17:54:44 +02:00
parent b4a685562c
commit a22699baeb
4 changed files with 764 additions and 0 deletions

320
Blueprints/PTM_21xZ_ZE.yaml Normal file
View File

@@ -0,0 +1,320 @@
blueprint:
homeassistant:
min_version: 2024.10.0
name: EnOcean PTM 21xZ/ZE (MQTT trigger)
description: "Controller automation for executing **press/hold/release** actions
triggered by EnOcean PTM 21xZ/ZE switch.\n\n**PTM216Z**\nMake sure to manually
create a separate **Text Helper** and define its entity in the automation. It
is used to store the last controller event to filter and handle `button hold`
actions.\n\n**SETTINGS**\nIn this tab, there is the possibility to change different
parameters.\n - **Base topic**\n - **Hold delay**\n - **PTM216Z - Specific
settings**\n\nℹ️ Version 2025.12.13\n"
domain: automation
input:
controller:
name: Controller Name
description: The name of the controller as defined in Z2M (e.g. Livingroom_Switch)
default: []
selector:
text:
type: text
multiple: true
multiline: false
settings_section:
name: Settings
icon: mdi:cog-outline
collapsed: true
input:
base_topic:
name: Base topic (MQTT)
description: The base topic as configured in z2m
default: zigbee2mqtt
hold_delay:
name: Hold delay
description: If the button has been held more than the configured Hold delay,
the corresponding held action is triggered.
default: 500
selector:
number:
min: 100.0
max: 1000.0
unit_of_measurement: milliseconds
mode: box
step: 10.0
ptm216z_selector:
name: PTM216Z
description: Turn **On** only if using a PTM216Z
default: false
selector:
boolean: {}
helper_last_controller_event:
name: PTM216Z - Last Controller Event
description: 'Input Text used to store the last event fired by the controller.
You will need to manually create a text input Helper entity for this.
'
default: []
selector:
entity:
domain:
- input_text
multiple: false
reorder: false
ptm21xz_ze_actions:
name: PTM21xZ/ZE - Actions
icon: mdi:gesture-tap
collapsed: true
input:
button_1_pressed:
name: Button 1 Pressed
description: Action to run when button 1 is pressed.
default: []
selector:
action: {}
button_1_held:
name: Button 1 Held
description: Action to run when the button 1 is held.
default: []
selector:
action: {}
button_1_released:
name: Button 1 Released
description: Action to run when the button 1 is released after long press.
default: []
selector:
action: {}
button_2_pressed:
name: Button 2 Pressed
description: Action to run when the button 2 pressed.
default: []
selector:
action: {}
button_2_held:
name: Button 2 Held
description: Action to run when the button 2 is held.
default: []
selector:
action: {}
button_2_released:
name: Button 2 Released
description: Action to run when the button 2 is released after long press.
default: []
selector:
action: {}
button_3_pressed:
name: Button 3 Pressed
description: Action to run when the button 3 is pressed.
default: []
selector:
action: {}
button_3_held:
name: Button 3 Held
description: Action to run when the button 3 is held.
default: []
selector:
action: {}
button_3_released:
name: Button 3 Released
description: Action to run when the button 3 is released after long press.
default: []
selector:
action: {}
button_4_pressed:
name: Button 4 Pressed
description: Action to run when the button 4 is pressed.
default: []
selector:
action: {}
button_4_held:
name: Button 4 Held
description: Action to run when the button 4 is held.
default: []
selector:
action: {}
button_4_released:
name: Button 4 Released
description: Action to run when the button 4 is released after long press.
default: []
selector:
action: {}
button_1_and_3_pressed:
name: Buttons 1 and 3 Pressed
description: Action to run when buttons 1 and 3 are pressed.
default: []
selector:
action: {}
button_1_and_3_held:
name: Buttons 1 and 3 Held
description: Action to run when buttons 1 and 3 are held.
default: []
selector:
action: {}
button_1_and_3_released:
name: Buttons 1 and 3 Released
description: Action to run when buttons 1 and 3 are released after long
press.
default: []
selector:
action: {}
button_2_and_4_pressed:
name: Buttons 2 and 4 Pressed
description: Action to run when buttons 2 and 4 are pressed.
default: []
selector:
action: {}
button_2_and_4_held:
name: Buttons 2 and 4 Held
description: Action to run when buttons 2 and 4 are held.
default: []
selector:
action: {}
button_2_and_4_released:
name: Buttons 2 and 4 Released
description: Action to run when buttons 2 and 4 are released after long
press.
default: []
selector:
action: {}
ptm21xz_ze_two_fingers_actions:
name: PTM215ZE / PTM216Z - Two fingers actions
icon: mdi:gesture-two-tap
collapsed: true
input:
button_1_and_4_pressed:
name: Buttons 1 and 4 Pressed
description: Action to run when buttons 1 and 4 are pressed.
default: []
selector:
action: {}
button_1_and_4_held:
name: Buttons 1 and 4 Held
description: Action to run when buttons 1 and 4 are held.
default: []
selector:
action: {}
button_1_and_4_released:
name: Button 1 and 4 Released
description: Action to run when buttons 1 and 4 are released after long
press.
default: []
selector:
action: {}
button_2_and_3_pressed:
name: Buttons 2 and 3 Pressed
description: Action to run when buttons 2 and 3 are pressed.
default: []
selector:
action: {}
button_2_and_3_held:
name: Buttons 2 and 3 Held
description: Action to run when buttons 2 and 3 are held.
default: []
selector:
action: {}
button_2_and_3_released:
name: Buttons 2 and 3 Released
description: Action to run when buttons 2 and 3 are released after long
press.
default: []
selector:
action: {}
source_url: https://github.com/chris-1243/HA---Blueprint/blob/main/PTM_21xZ_ZE.yaml
mode: single
max_exceeded: silent
trigger_variables:
base_topic: !input base_topic
triggers:
- trigger: mqtt
topic: '{{ base_topic ~ "/+" ~ "/action" }}'
variables:
command: '{{ trigger.payload }}'
controller: !input controller
mqtt_topic: '{{ trigger.topic }}'
conditions:
and:
- '{{ mqtt_topic.split("/")[1] in controller }}'
- '{{ command.split("_", 1)[0] in ("press", "release") }}'
actions:
- variables:
helper_last_controller_event: !input helper_last_controller_event
ptm216z: !input ptm216z_selector
prev_command: '{% if ptm216z %} {{ states(helper_last_controller_event) }} {%
else %} none {% endif %}'
- sequence:
- if: '{{ ptm216z }}'
then:
- action: input_text.set_value
data:
entity_id: '{{ helper_last_controller_event }}'
value: '{{ command }}'
- choose:
- conditions: '{{ "release" in command }}'
sequence:
- choose:
- conditions: '{{ command == "release_1" or prev_command == "press_1" }}'
sequence: !input button_1_released
- conditions: '{{ command == "release_2" or prev_command == "press_2" }}'
sequence: !input button_2_released
- conditions: '{{ command == "release_3" or prev_command == "press_3" }}'
sequence: !input button_3_released
- conditions: '{{ command == "release_4" or prev_command == "press_4" }}'
sequence: !input button_4_released
- conditions: '{{ command == "release_1_and_3" or prev_command == "press_1_and_3"
}}'
sequence: !input button_1_and_3_released
- conditions: '{{ command == "release_2_and_4" or prev_command == "press_2_and_4"
}}'
sequence: !input button_2_and_4_released
- conditions: '{{ command == "release_1_and_4" or prev_command == "press_1_and_4"
}}'
sequence: !input button_1_and_4_released
- conditions: '{{ command == "release_2_and_3" or prev_command == "press_2_and_3"
}}'
sequence: !input button_2_and_3_released
- conditions: '{{ "press" in command }}'
sequence:
- wait_for_trigger:
- trigger: mqtt
topic: '{{ mqtt_topic }}'
payload: release
value_template: '{{ value.split("_", 1)[0] }}'
timeout:
milliseconds: !input hold_delay
- if: '{{ wait.trigger != None }}'
then:
- choose:
- conditions: '{{ command == "press_1" }}'
sequence: !input button_1_pressed
- conditions: '{{ command == "press_2" }}'
sequence: !input button_2_pressed
- conditions: '{{ command == "press_3" }}'
sequence: !input button_3_pressed
- conditions: '{{ command == "press_4" }}'
sequence: !input button_4_pressed
- conditions: '{{ command == "press_1_and_3" }}'
sequence: !input button_1_and_3_pressed
- conditions: '{{ command == "press_2_and_4" }}'
sequence: !input button_2_and_4_pressed
- conditions: '{{ command == "press_1_and_4" }}'
sequence: !input button_1_and_4_pressed
- conditions: '{{ command == "press_2_and_3" }}'
sequence: !input button_2_and_3_pressed
else:
- choose:
- conditions: '{{ command == "press_1" }}'
sequence: !input button_1_held
- conditions: '{{ command == "press_2" }}'
sequence: !input button_2_held
- conditions: '{{ command == "press_3" }}'
sequence: !input button_3_held
- conditions: '{{ command == "press_4" }}'
sequence: !input button_4_held
- conditions: '{{ command == "press_1_and_3" }}'
sequence: !input button_1_and_3_held
- conditions: '{{ command == "press_2_and_4" }}'
sequence: !input button_2_and_4_held
- conditions: '{{ command == "press_1_and_4" }}'
sequence: !input button_1_and_4_held
- conditions: '{{ command == "press_2_and_3" }}'
sequence: !input button_2_and_3_held