Those two blueprints will allow you to use any PTM21xZ/ZE controller with Zigbee2MQTT
There are two different versions of the blueprint available and both will receive updates. The second version (v2) aims to enable the repeat function which may ease the dimming when using some Home Assistant commands.
If you are using lights with Zigbee2mqtt only, I would recommend to use the standard version with the correct examples below for the dimming.
PTM216Z
When using the PTM216Z alone or in combination with the PTM215Z/ZE , a basic text helper must be created. The helper is mainly used to store the last command and simulate a hold / release action. This is a need as the PTM216Z always send a release command whatever which button is pressed. (press_1 → release, press_2 → release, …)
![]()
![]()
![]()
For users who are going to update from the older blueprints, please read the HOW TO UPGRADE section.
![]()
![]()
![]()
Home Assistant must run version 2024.10.x minimum in order to use those blueprints.
Tested on Z2M versions 1.x and 2.x.
CHANGELOG
2025.04.09
Code optimization and clean up (already)…
2025.12.13
Update button action descriptions
DOWNLOAD
Standard version:
Second version (v2):
![]()
elapsed has to be enabled in Zigbee2mqtt. Go to Settings → Advanced
HOW TO UPGRADE
- Import the blueprint
- Open your automation based on the older version
2.1 Edit inYAML
PTM215Z/ZE
2.2.1. Update line 4 from path:path: Chris/PTM_215Z_ZE.yamlto path:path: Chris/PTM_21xZ_ZE.yaml
PTM216Z
2.2.2. Update line 4 from path:path: Chris/PTM_216Z.yamlto path:path: Chris/PTM_21xZ_ZE.yaml
EXAMPLES
Here, some examples how to use those blueprints especially for the dimming commands.
Work in both versions:
button_1_held:
- action: mqtt.publish
data:
qos: "0"
retain: false
topic: zigbee2mqtt/friendly_name/set
payload: "{\"brightness_move\": 50}"
enabled: true
button_1_released:
- action: mqtt.publish
data:
qos: "0"
retain: false
topic: zigbee2mqtt/friendly_name/set
payload: "{\"brightness_move\": \"stop\"}"
enabled: true
Work in v2 only:
button_1_held:
- repeat:
count: 15
sequence:
- action: light.turn_on
metadata: {}
data:
brightness_step: -25
transition: 1
target:
entity_id: light.my_light
- delay:
milliseconds: 500