Repository navigation
Standardized event entity support (Matter, ZHA) #30
Description
This issue tracks blockers for implementing support for the new standardized event entity types (for buttons/remotes) (for ZHA + Matter).
Main blocker (since 2026-10-15): the approved proposal home-assistant/architecture#1502 has no implementation yet. No Core PR updates ButtonEventType, and the triggers, Matter, ZHA and docs all wait on that.
Note: ZHA progress is being tracked in this epic:
Tasks
- New architecture proposal amending Standardize event types for button event entities home-assistant/architecture#1377: Revise the standard button event types and their triggers and conditions home-assistant/architecture#1502 (arturpragacz), approved 2026-10-15. Settles
press_endsemantics, single vs. multi press, aborted sequences, single-event long presses and the Matter/Shelly mapping (see "What Revise the standard button event types and their triggers and conditions home-assistant/architecture#1502 decides" below). - Core PR updating
ButtonEventType/ constants to Revise the standard button event types and their triggers and conditions home-assistant/architecture#1502, incl. isy994 migration and developer docs (no PR yet) - Update the button trigger/condition specs (Add
buttontriggers home-assistant/core#168598, Addbuttonconditions home-assistant/core#168599) to match; trigger naming still being discussed - Implement button event triggers home-assistant/core#177683 button triggers aligned and merged (+ Add button.being_held trigger home-assistant/core#178043, Document button event triggers home-assistant/home-assistant.io#47182)
- Matter: Add new standardized Matter event entity for remotes home-assistant/core#177101 mapping aligned, undrafted, merged. Then Add Matter Doorbell device type support for the standard ring event type home-assistant/core#175875 (doorbell).
- ZHA: update the zha library constants, then button event entities for ZCL remotes (zha library + quirks, then Core), replacing device automation triggers over time
- Separate proposal for rotary controls (
ROTARYdevice class): BILRESA wheel (Matter: IKEA BILRESA Scroll wheel treated as button with no ongoing multipress home-assistant/core#159035, Add rotary encoder support for Matter Switch devices home-assistant/core#177413), Lutron Aurora, Hue tap dial - Frontend: filter trigger targets by the entity's
event_types("contains any of" / "contains all of", per Revise the standard button event types and their triggers and conditions home-assistant/architecture#1502) - Interim: document where to find device automation triggers in the new automation editor, as long as ZHA/Matter event entities aren't available
More information/context – pasted from zigpy bot:
The press_end dispute that blocked this from 2026-08-03 is settled: arturpragacz's proposal home-assistant/architecture#1502, amending home-assistant/architecture#1377, was approved by the core meeting on 2026-10-15. The next step is the Core change that brings ButtonEventType in line with it. As of 2026-10-20 no PR for that exists.
What home-assistant/architecture#1502 decides (click to expand)
- Two layers of event types. Physical:
press_start(the button went down, declared only if reported for every press) andpress_end(released after a press that wasn't long). Gesture:long_press_start(hold threshold reached, exactly once per hold),long_press_end,single_press(the device concluded exactly one short press happened) andmulti_press(two or more presses, datapress_count). press_endis the physical release only. Resolved singles go to the newsingle_press.multi_press_end+multi_press_countis renamed tomulti_press+press_count, now only for counts ≥ 2.multi_press_ongoingis removed from the standard (Matter may keep it as an extra type). A count of0(aborted sequence) is dropped.multi_pressmay only be declared together withsingle_press. A device that reports a double but never a resolved single, such as Lutron CasétaMultiTap, keeps the double as an extra type.- A single-event press maps by what the event is:
press_startwhen sent at the down edge,press_endwhen sent on release,single_pressfor a completed press. A single-event hold maps by timing:long_press_startat the threshold,long_press_endafter release. - Integrations map one native event to one standard event: no suppressing, delaying or synthesizing, and no timers. The only state allowed is one bit, to classify a release after a hold start and to send
long_press_startonly once when a device repeats it. - Triggers carry fallbacks and an
event_typesrequirement.button.pressedfires onsingle_press, elsepress_end, elsepress_start. Alsobutton.multi_pressed(press_count, default 2),button.held(long_press_start, elselong_press_end),button.hold_endedand the conditionbutton.is_held.button.being_heldandbutton.pressed_downare deferred. - The frontend target selector needs "contains any of" / "contains all of" filtering on
event_types. - Rotary input stays out of scope.
Still under discussion after approval: nielsrowinbik (2026-10-15, same day) prefers one button.pressed trigger with a count field over a separate multi_pressed, objects to the held / being_held naming, and wants being_held not deferred. abmantis' objections (2026-10-12) got a detailed reply from arturpragacz, but no follow-up. That reply also offered an optional variant, where the base entity derives single_press itself, which isn't part of the approved text. These affect the trigger surface, not the event mapping integrations implement.
What is waiting on this
Core (next step)
- A PR updating
ButtonEventType/ the event constants to Revise the standard button event types and their triggers and conditions home-assistant/architecture#1502: addsingle_press,multi_pressandpress_count; removemulti_press_ongoing,multi_press_endandmulti_press_count; update the developer docs. No PR as of 2026-10-20. It also has to migrate isy994 (Add event platform to isy994 integration home-assistant/core#169782, released in 2026.10.0), the only integration using the constants: its On/Off map topress_endand Fast On/Off tomulti_press_end(2), which becomesingle_press/multi_pressunder Revise the standard button event types and their triggers and conditions home-assistant/architecture#1502. That changes behaviour for existing isy994 users, and Revise the standard button event types and their triggers and conditions home-assistant/architecture#1502 has no migration section. - Implement button event triggers home-assistant/core#177683: button triggers (draft, not updated since 2026-10-04), plus Add button.being_held trigger home-assistant/core#178043 (
button.being_held, draft) and the docs PR Document button event triggers home-assistant/home-assistant.io#47182 (draft). All need rework for the Revise the standard button event types and their triggers and conditions home-assistant/architecture#1502 trigger set. Trigger/condition tasks: Addbuttontriggers home-assistant/core#168598 and Addbuttonconditions home-assistant/core#168599. Integration migration tracking: Establish standard event types forBUTTONdevice class event entities home-assistant/core#176682 (Shelly and Hue are the named candidates, neither started).
Matter
- Add new standardized Matter event entity for remotes home-assistant/core#177101: new Matter button event entity with the standard types and uncapped multi-press. It fixes Matter: IKEA BILRESA Scroll wheel treated as button with no ongoing multipress home-assistant/core#159035 (BILRESA presses above 8 dropped) and deprecates the legacy entity. Draft, approved by lboue and tested on real BILRESA hardware, but it still implements the #1377 mapping and needs updating to Revise the standard button event types and their triggers and conditions home-assistant/architecture#1502 once the constants exist (details below). The deprecation dates in the PR body (2026.8 / ~2027.2) need moving too.
- Add Matter Doorbell device type support for the standard ring event type home-assistant/core#175875: Matter doorbell entity with the standard
ringtype. Not blocked by the button question (doorbell standard is Standardize event types for doorbell event entities home-assistant/architecture#1363).
Matter mapping under home-assistant/architecture#1502 and changes needed in home-assistant/core#177101 (click to expand)
Switch cluster, Matter 1.6.0 §1.13.7–1.13.9:
- Multi-press switches without the ActionSwitch feature (
MSM & !AS) emitInitialPressat the start of every press andShortReleaseat the end of every press (ifMSR).MultiPressOngoing(n)is emitted together with the n-thInitialPress, andMultiPressComplete(n)once the sequence ends, includingn = 1for a single press. - ActionSwitch devices (
AS) never emitShortReleaseorMultiPressOngoing: a press is onlyInitialPressfollowed byMultiPressComplete(n). LongPressis generated exactly once per hold (§1.13.7.1), so the one-bit repeat state isn't needed for Matter.
home-assistant/architecture#1502 mapping: InitialPress → press_start (not on ActionSwitch, which keeps initial_press as an extra type), ShortRelease → press_end, LongPress → long_press_start, LongRelease → long_press_end, MultiPressComplete(1) → single_press, MultiPressComplete(n ≥ 2) → multi_press with press_count, count 0 dropped, MultiPressOngoing as an extra type.
Changes needed in home-assistant/core#177101 (head 0d0c392, last pushed 2026-07-29): split MultiPressComplete into single_press / multi_press with press_count, drop count 0, demote multi_press_ongoing to an extra type, stop declaring press_start on ActionSwitch devices, and map InitialPress to press_start instead of press_end on switches without release support. Also update the PR body and tests.
ZHA
- Moving ZCL remotes from quirk-defined device automation triggers to button event entities is now unblocked semantically: the Revise the standard button event types and their triggers and conditions home-assistant/architecture#1502 table maps quirk codes for the down edge →
press_start, short release →press_end, resolved single →single_press, double..quintuple →multi_press, long press/release →long_press_start/long_press_end. It waits on the constants, which the zha library (Baseeventplatform zigpy/zha#864) needs to update too. - Add Lutron Aurora native button and rotary events zigpy/zha-device-handlers#5372 (Lutron Aurora, draft) emits physical
press_start/press_endplus rotation events.
Other integrations
- Add event platform to Lutron Caseta home-assistant/core#184266: Lutron Caséta event platform. Already updated to the Revise the standard button event types and their triggers and conditions home-assistant/architecture#1502 mapping on 2026-10-19 (Pico Press/Release →
press_start/press_end, keypad Press →press_start). abmantis' changes-requested review from 2026-10-06 (wait for the final proposal) is still open. It fixes lutron_caseta: PJ2-4B-XXX-EL2 (Pico4Button) not triggering button.pressed home-assistant/core#177026.
Done or no longer blocking (click to expand)
- Base
eventplatform zigpy/zha#864 (baseeventplatform incl. the standard button constants, merged 2026-08-20) and Add basic support for events driven from zha home-assistant/core#183109 (ZHA event platform in Core, merged 2026-09-30) are in. No regular Zigbee remotes use them yet. - Green Power remotes (Base ZGP device support zigpy/zha#868, Add a ZGP quirk builder and EnOcean PTM 216Z + Hue Tap quirks zigpy/zha-device-handlers#5273, both draft, part of Implement Green Power (ZGP) support roadmap#195) only use
press_start/press_end, which keep their meaning. - Use standard button event types on OpenDisplay home-assistant/core#177409: OpenDisplay migration to the standard types (draft). Press/release only, so the event types keep their meaning.
- Add Velbus button event entities home-assistant/core#175201 (Velbus, merged 2026-10-19) uses its own
short_press/long_presstypes, not the standard ones. - Add rotary encoder support for Matter Switch devices home-assistant/core#177413: Matter rotary encoder support (BILRESA wheel). Closed as stale on 2026-10-08; needs the rotary proposal anyway. Matter event entity silently drops multi_press events above MultiPressMax (IKEA BILRESA scroll wheel) home-assistant/core#183967 was closed as a duplicate of Matter: IKEA BILRESA Scroll wheel treated as button with no ongoing multipress home-assistant/core#159035.
- The original
press_enddispute was in the review of Implement button event triggers home-assistant/core#177683 (thread): physical release (arturpragacz) vs. completed single click (abmantis, as in Addbuttontriggers home-assistant/core#168598). Revise the standard button event types and their triggers and conditions home-assistant/architecture#1502 resolves it with the physical release forpress_endplus a newsingle_pressfor the click.
Users are stuck in between
Device automation triggers, which ZHA and Z2M remotes rely on today, are deprecated and intentionally hidden in the new automation editor (comment). Starting from the device ("By target", or "Create automation" on the device page) only shows entity triggers such as battery. The remote's button triggers are only under "By type" → "Generic" → "Device", and nothing in the docs explains this. Their replacement for ZHA and Matter, button event entities, is what's blocked here. Users regularly report this as "my remote has no triggers": home-assistant/frontend#53688, home-assistant/core#177053, home-assistant/core#175890. home-assistant/home-assistant.io#47222 (documenting raw zha_events as a workaround) was closed in favor of event entities.
If the ZHA/Matter follow-ups will take a few more releases, we should document how to find device automation triggers in the meantime: a short section on the device automation and ZHA (possibly Matter) docs pages, or a frontend hint. These are the old device automation triggers, not the new purpose-specific triggers. The Matter docs' "Automate on a button press" section also links to an anchor on the event integration page (/integrations/event/#automating-on-a-button-press) that no longer exists.
Metadata
Metadata
Assignees
Labels
Type
Projects
- StatusShow more project fieldsNEXT
Activity
arturpragacz commentedon Oct 9, 2026
home-assistant/architecture#1502
TheJulianJES commentedon Oct 20, 2026
Update: The revised architecture proposal (home-assistant/architecture#1502) was approved, so I've updated the tasks at the top.
The next step would be for Core's
ButtonEventTypeto be updated and existing integrations to be migrated to the revised version (event entity support forisy994was recently merged and uses the older standardized event types, so there'll be a breaking change there).TheJulianJES commentedon Oct 20, 2026
Another thing specifically for Zigbee: Lots of devices can be reconfigured in which events they emit. So depending on their configuration (multi-press supported or instantly send one event on down press, and depending on rocker vs push down switch), the emitted events are different.
We'll need to think of a good solution here. The simple/initial approach might be to have the event entity support all of the possible combinations, but a proper solution might be to replace the event entity when we have a possibility to detect that the device has changed modes.
TheJulianJES commentedon Oct 20, 2026
Tracking ZHA progress for event entities here: