Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save nickknissen/cecd1d6260068f886c565427059c3a0a to your computer and use it in GitHub Desktop.
Save nickknissen/cecd1d6260068f886c565427059c3a0a to your computer and use it in GitHub Desktop.
EnOcean PTM 215Z (Friends of Hue) switch
blueprint:
name: Controller - EnOcean PTM 215Z (Friends of Hue) switch
description: 'Controller automation for executing press/hold/release actions triggered by
EnOcean PTM 215Z (Friends of Hue) switch.'
domain: automation
input:
controller_entity:
name: (Zigbee2MQTT) Controller Entity
description: The action sensor of the controller to use for the automation.
default: ''
selector:
entity:
domain: sensor
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
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.
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.
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.
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.
default: []
selector:
action: {}
mode: single
max_exceeded: silent
trigger:
- platform: event
event_type: state_changed
event_data:
entity_id: !input 'controller_entity'
condition: '{{ trigger.event.data.new_state.state not in ["","None"] }}'
action:
- variables:
trigger_action: '{{ trigger.event.data.new_state.state }}'
- choose:
- conditions: '{{ "press_" | string in trigger_action }}'
sequence:
- wait_for_trigger:
- platform: state
entity_id: !input 'controller_entity'
to: "release_1"
- platform: state
entity_id: !input 'controller_entity'
to: "release_2"
- platform: state
entity_id: !input 'controller_entity'
to: "release_3"
- platform: state
entity_id: !input 'controller_entity'
to: "release_4"
timeout:
milliseconds: !input 'hold_delay'
# - choose:
# - conditions: '{{ wait.trigger != None }}'
# sequence:
# - service: logbook.log
# data:
# name: Button Id
# message: '{{ trigger_action }} - press action'
# - conditions: '{{ wait.trigger == None }}'
# sequence:
# - service: logbook.log
# data:
# name: Button Id
# message: '{{ trigger_action }} - hold action'
- choose:
- conditions: '{{ trigger_action == "press_1" and wait.trigger != None }}'
sequence: !input 'button_1_pressed'
- conditions: '{{ trigger_action == "press_2" and wait.trigger != None }}'
sequence: !input 'button_2_pressed'
- conditions: '{{ trigger_action == "press_3" and wait.trigger != None }}'
sequence: !input 'button_3_pressed'
- conditions: '{{ trigger_action == "press_4" and wait.trigger != None }}'
sequence: !input 'button_4_pressed'
- conditions: '{{ trigger_action == "press_1" and wait.trigger == None }}'
sequence: !input 'button_1_held'
- conditions: '{{ trigger_action == "press_2" and wait.trigger == None }}'
sequence: !input 'button_2_held'
- conditions: '{{ trigger_action == "press_3" and wait.trigger == None }}'
sequence: !input 'button_3_held'
- conditions: '{{ trigger_action == "press_4" and wait.trigger == None }}'
sequence: !input 'button_4_held'
- conditions: '{{ "release_" | string in trigger_action }}'
sequence:
# - service: logbook.log
# data:
# name: Button Id
# message: '{{ trigger_action }} - release action'
- choose:
- conditions: '{{ trigger_action == "release_1" }}'
sequence: !input 'button_1_released'
- conditions: '{{ trigger_action == "release_2" }}'
sequence: !input 'button_2_released'
- conditions: '{{ trigger_action == "release_3" }}'
sequence: !input 'button_3_released'
- conditions: '{{ trigger_action == "release_4" }}'
sequence: !input 'button_4_released'
@peter4576
Copy link

Excellent. Thank you so much for sharing. If you want more people to be helped, adding Niko to the title will make it searchable for those too.

Question, I am new to HA but have found also with Philips Hue Switch and others that you cannot keep the button down to increase/decrease, but have to release for each step to turn the volume up/ down step by step only and not continyesly. Unlike using HUE. Or is it just me?

Also new in Blueprints: If I wanted to add the additional combinations (1+3, 1+4, 2+3 and 2+4) is it as easy as to just copy paste your commands and replacing with the above combos? They are visible entities.

Thanks again for sharing!

@KeviinCosmos
Copy link

Love it!! 💗
If you some day manage to do double press, it would be awesome.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment