The devices that do not fit the mold, and the moment one earns its own front door
This part finishes device mapping with the seventeen domains that never reduce to a plain on/off — media players, valves, water heaters, modes, alarms, events, sirens, vacuums, mowers and every kind of momentary action. Then it turns to a completely different question: when does a device stop being one more entity hanging off a bridge, and start deserving its own standalone Matter node? Both halves are still on the Stable 2.0.55 release channel. The standalone route is also explicitly experimental, and this part treats it that way throughout — as a planning exercise, not a place to press Create on a live system.
doorbell, water_heater_management and Server Mode itself — all live in the Stable channel, all three still experimental product maturityBuilding without an error is not the same as working correctly
This group of domains spans meanings that have almost nothing in common. media_player has volume and playback. select has options. valve has an open and a closed state. event has only events, nothing persistent at all. script triggers an action and forgets about it. Where Matter has no matching device type for any of that, Home Assistant Matter Hub reaches for the closest thing it does have: Mode Select, Generic Switch, On/Off Plug-in Unit, or Robotic Vacuum Cleaner.
So a tile turning up in the controller is not proof that support is complete. Whether that tile stays on. Whether it can only be pressed once. Whether off really calls a Home Assistant action, or does nothing at all. Whether the controller can even render a Mode Select. Whether the device would be better off as a standalone node. Every one of those is a separate question, and this chapter walks through them domain by domain.
doorbell and water_heater_management are experimental types inside that channel; the rest of the manifest entries are marked maturity stable. Controller support is a third, independent fact that mostly varies by type — and SmartThings is listed as manifest unknown for most of them, so do not skip that layer just because it is the least documented one.Alarms, sirens, valves, water heating and robots all act on the real world. Confirm each one first with a read-only state and a low-risk command, then decide separately whether to expose it to voice control or to a household with more than one person in it. Matter Hub is not a safety interlock, and it is not a personal-monitoring system.
The 17 HomeAssistantDomain values this chapter covers
Stable 2.0.55 defines 27 HomeAssistantDomain values in total. Earlier parts of this guide covered 7 of them for control devices and 3 for sensors and energy. This part covers the remaining 17, so no domain is left unaccounted for.
| domain | Default path | Main meaning |
|---|---|---|
media_player | speaker; a TV automatically goes to basic_video_player | Power/mute, volume, source and play-pause, according to which features it supports |
valve | water_valve; on_off_plugin_unit is also possible | A persistent open and closed state, plus a transitioning state |
water_heater | Default thermostat; can be overridden to water_heater or water_heater_management | The default is a heating Thermostat; the second override is the Matter 1.4 Water Heater, adding Boost/CancelBoost |
select | mode_select | A persistent option; can be worked around as two on/off options |
input_select | mode_select | The persistent option of an HA helper |
alarm_control_panel | mode_select; on_off_plugin_unit can be the fallback | Disarm, plus whichever arming modes the panel supports |
event | generic_switch; doorbell is possible | Events with no persistent state, single and multi-press |
siren | on_off_plugin_unit | A persistent on/off that really starts and stops the siren |
vacuum | robot_vacuum_cleaner | Run mode, operational state, clean mode, Service Area and battery |
lawn_mower | robotic_lawn_mower | Presented, for compatibility, as a Robotic Vacuum Cleaner type |
automation | on_off_switch | A momentary trigger — not an enable/disable for the automation itself |
button | generic_switch | A momentary button.press |
input_button | generic_switch | A momentary helper press |
input_boolean | on_off_plugin_unit, on_off_switch, mounted_on_off_control | A genuinely persistent boolean state |
remote | A plain On/Off endpoint | Persistent calls to remote.turn_on / remote.turn_off |
scene | on_off_switch | A momentary activate; only turn on is supported |
script | on_off_switch | A momentary script.turn_on; a script still running is not treated as persistent on |
domainToDefaultMatterTypes is the candidate matrix that the picker consults, not the literal name of the final endpoint for every domain. The candidates for automation, scene and script all say on_off_switch, while the legacy implementation actually builds on an On/Off Plug-in Unit device base and keeps the momentary off semantics described later in this chapter. A description of the observable behavior and the underlying class are two different things, and this guide tries not to put them on the same level.
domainToDefaultMatterTypes is a shortlist, not a hiring decision. It says which Matter device type is a plausible fit for a domain. Which class actually gets built, and how it behaves once it exists, is a separate decision made further down in the code. Reading the shortlist as the final answer is how you end up surprised that something labeled a "switch" still remembers to reset itself after one second, like a script does.
media_player, valve and water_heater, and the overrides that reuse them
If a media_player has device_class TV, it automatically uses basic_video_player; an explicit speaker override bypasses that TV detection. A speaker drives OnOff as a power control only when it supports both TURN_ON and TURN_OFF; otherwise, where it has a mute capability, mute takes that place instead. VOLUME_SET adds a 0–254 compatibility volume control, SELECT_SOURCE adds input sources, and PLAY or PAUSE adds playback control.
| override | Support snapshot | When to choose it |
|---|---|---|
speaker | Google and Aqara yes; Apple and Alexa no | A good fit for audio players. No guarantee the controller shows every input or playback button |
basic_video_player | Aqara yes; Apple, Google and Alexa no | TVs and video devices. The pinned source notes that only Aqara Home renders it in this environment |
water_valve | Aqara yes; Apple, Google and Alexa no | The open, opening, closing and closed states of an HA valve map onto a persistent valve state |
pump | Google and Aqara yes; Apple and Alexa no | A switch can be overridden into a pump. Confirm off really stops it safely before you rely on it |
water_heater | Aqara yes; Apple and Google no; Alexa unknown | Ordinary water-heater modes and temperature control |
water_heater_management | Apple and Google no; Alexa and Aqara unknown | Experimental inside Stable — a Matter 1.4 type carrying Boost/CancelBoost, which mainstream controllers do not render yet |
A valve can add a Power Source from a battery attribute or from batteryEntity. Open and close call the matching HA valve actions, and opening and closing show as Transitioning. When a pump comes from a switch override, the turn_on and turn_off behavior of the source integration is still what counts — the override changes the Matter type, not the underlying safety logic. Boost on a water heater involves energy use and a scalding risk, so whether the controller happens to show a button is not how you judge that using it is safe.
Where a Mode Select stands in for something Matter does not have
select and input_select build a Mode Select out of a non-empty options list, and find the current option case-insensitively; with no options at all, no endpoint is built. If the controller cannot render Mode Select, set selectExposeAsSwitch and name selectSwitchOnOption and selectSwitchOffOption explicitly, which folds two options into a persistent On/Off. Beyond two modes, this workaround no longer fits the domain.
alarm_control_panel has no dedicated Matter security-panel type, so a Mode Select carries the HA support bits instead: Disarmed, Armed Home, Away, Night, Vacation, Custom. The in-between states — arming, pending, triggered — do not map to a fixed mode. On platforms that cannot support Mode Select there is an On/Off fallback: on arms in the order Away, Home, Night, and off disarms. That loses the extra modes, and if the real integration needs extra authentication, the controller command can simply fail.
event defaults to a Generic Switch and detects double, triple and multi press from the event_types names. The doorbell override is an experimental Matter 1.4 type inside Stable; the source note says only SmartThings renders it today, and other platforms fall back to a plain Switch at best. It is not the Camera Plugin, and it carries no video.
| Matter type | Apple Home | Google Home | Amazon Alexa | Note |
|---|---|---|---|---|
mode_select | no | no | no | Aqara unknown. Use selectExposeAsSwitch with exactly two options as a workaround |
generic_switch | partial | no | yes | Aqara unknown. Also the default type for button and input_button |
doorbell | no | no | no | Aqara no. SmartThings is the only platform noted to render it; experimental inside Stable |
siren is a persistent state: on and off call siren.turn_on and siren.turn_off, so do not confuse it with a momentary event. Testing a siren can disturb the neighbors or cause panic. Check in HA first whether a silent test is possible, and if it is not, only cross-check the endpoint rather than starting it remotely.
dishwasher, vacuum, lawn_mower and the Service Area they build
dishwasher is an optional Matter override for switch, with maturity stable, but Apple and Google are no and Alexa and Aqara are unknown; the pinned source note says platform support for appliances generally is thin. Labeling an arbitrary switch as a dishwasher adds no cycles, no door lock and no finish time — it only changes the device type shown to the controller.
vacuum builds a Robotic Vacuum Cleaner with an operational state, a run mode, a Power Source, a Service Area, and a clean mode that is always present. OnOff is not part of the standard RVC device type and is not added by default, because a non-conformant endpoint makes Alexa reject the device outright; it is added only when the vacuumOnOff feature flag is explicitly turned on. robot_vacuum_cleaner itself is yes for Apple, Google, Alexa and Aqara — but Apple voice control and Alexa discovery are better served by the standalone route later in this part.
Service Area can come from cleanAreaRooms, customServiceAreas, resolved rooms, or roomEntities; with no rooms configured at all, a single default area is still created. vacuumIncludeUnnamedRooms controls whether unnamed rooms are included, and vacuumRoomSwitches can create one momentary switch per area for platforms that do not render array commands. Linked options such as cleaningModeEntity, suctionLevelEntity and mopIntensityEntity decide the clean mode, and a similar-sounding entity name is not a reason to assume the right one got picked.
cleanAreaRooms — kitchen, living room, hallway — plus a suctionLevelEntity and a mopIntensityEntity that decide the clean mode.vacuumOnOff is explicitly turned on.lawn_mower has no native Matter mower type; Stable 2.0.55 represents it as a Robotic Vacuum Cleaner and reuses the mower's run and operational states. robotic_lawn_mower is yes for Apple and Alexa, and unknown for Google and Aqara — and the controller UI will genuinely look like a robot vacuum. A Power Source is added only where a battery attribute or a mapping actually exists.
| Type | Best use | Do not misread it as |
|---|---|---|
dishwasher | A switch that really is a dishwasher | Not a full appliance program model |
robot_vacuum_cleaner | Vacuuming, mopping and room cleaning | Controller fit is different in bridge mode and in the standalone route |
robotic_lawn_mower | A compatibility mapping for the lawn_mower domain | It still appears as an RVC type today, not a dedicated mower type |
The line every special device sits on one side of
A persistent state always reflects the device's current value — input_boolean, remote, siren, valve and select, for example. On and off usually each have their own HA action, and after the controller changes something you should expect to wait for the source state to be reported back.
A momentary action only fires: automation calls trigger, scene and script accept turn on only, and button and input_button only press. They normally sit off; when an on arrives they act once, and the controller should not treat that as something that keeps running.
flowchart TD
A["A domain in this chapter"] --> B{"Does its state reflect the device's current value, after you act on it?"}
B -->|"yes"| C["Persistent: input_boolean, remote, siren, valve, select and alarm_control_panel"]
B -->|"no"| D{"Does it only ever fire once and settle back to off?"}
D -->|"yes"| E["Momentary: automation, scene, script, button and input_button"]
| domain | on action | off / reset behavior |
|---|---|---|
automation | automation.trigger | No turn off; the display returns to off, which is not the same as disabling the automation |
scene | scene.turn_on | No turn off; a scene always shows as off |
script | script.turn_on | No turn off; whether the script is still running is not tracked |
button | button.press | Always reports off and is never set to true; the timer and reset path is a no-op |
input_button | input_button.press | No real off action |
input_boolean | turn_on | turn_off; a genuinely persistent state, it does not auto-reset |
remote | remote.turn_on | remote.turn_off; a persistent state |
The momentary behavior of script, scene, automation and input_button optimistically reports on and then returns to off after about a second, so the controller does not look stuck. button is different, and always reports off, never set to true. Some Echo devices get stuck on the unrequested on→off report pair. The entity mapping option disableMomentaryFlip genuinely skips the flip for the first four domains, but for button it only skips a timer that never changed the state anyway — the underlying HA action still fires either way. This is a workaround for one particular controller, not a way of turning a momentary action into a persistent one, and it should not be switched on globally without looking at what it actually touches.
flowchart TD
A["A momentary action fires"] --> B{"Which domain?"}
B -->|"automation, scene, script or input_button"| C["Optimistically reports on, then off about a second later"]
B -->|"button"| D["Always reports off. Never set to true"]
C --> E{"Is disableMomentaryFlip set on this entity?"}
E -->|"yes"| F["The on-then-off flip is skipped for that entity"]
E -->|"no"| G["The flip happens as described above"]
D --> H["disableMomentaryFlip only skips a timer that was never changing the reported state"]
button never reports on in the first place, the flag has nothing to skip there beyond an internal timer, while F is the only box where the flag changes what a controller actually sees.A doorbell button is momentary by nature: press it, the chime sounds once, and the button itself was never really "on." disableMomentaryFlip does not change what the button does. It only changes whether the log entry reads "pressed, then released" or just "pressed" — cosmetic, and only worth touching because one brand of chime gets confused seeing "released" when it was not expecting it.
A device inside a bridge is not the same as a standalone node
A standard bridge hangs several bridged devices off a single aggregator endpoint. Server Mode instead puts the device endpoint straight onto a Matter ServerNode, removes the bridged-device identity, and makes it look like a standalone Matter device in its own right. That matters most for types such as the robot vacuum, where a controller will only offer voice control or discovery on a standalone node.
The Dashboard page at /standalone-devices calls each Server Mode configuration a standalone device. Underneath, it still uses one set of bridge data, a filter, a port, a persistent identity and a commissioning state — but the code path it starts is ServerModeBridge, not the standard Aggregator Bridge.
This part treats standalone devices as a planning and risk exercise. Nothing here asks you to press Create, Pair or Delete on a live system, and nothing shows a QR code, a manual pairing code, or any identifying data. The actual commissioning and the safe multi-fabric procedure belong to the next part of this guide.
Nodes, endpoints and identity
| Item | Standard bridge | Server Mode / standalone |
|---|---|---|
| Matter structure | One node holds an aggregator and bridged child endpoints | Entity endpoints are added straight to the ServerNode, with no aggregator |
| Device identity | Every child carries Bridged Device Basic Information | The bridged identity is removed; the root node carries the main identity |
| How many | Planned from the size of the bridge and the controller's capacity | A hard limit of ten entities per node |
| Primary entity | The bridge's own identity is separate from each child | The first entity the include matcher matches is the primary; it drives the node identity and the advertised device type |
| Composed devices | autoComposedDevices and a user composed endpoint are available | No composed shape is supported; it falls back to a flat standalone endpoint |
| Plugins | A standard bridge can use the plugin surface, subject to the feature's own maturity | Not available; a Server Mode bridge has no pluginInfo and no enable/disable methods |
Apart from vacuums, most domains first reuse the same LegacyEndpoint mapping described earlier in this guide, then use asStandaloneEndpointType to strip out bridgedDeviceBasicInformation. Vacuums use a dedicated ServerModeVacuumDevice / endpoint, which likewise carries no bridged identity and, by default, adds no OnOff cluster that would not conform to the RVC spec.
So standalone is not a second list of supported domains. Lights, sensors, fans, selects and everything else remain bound by the same HA device class, Matter override and controller device-type support limits covered earlier. Server Mode changes only the node structure; it cannot make a controller suddenly support a type that is marked no.
flowchart TD
A["A Matter Hub bridge configuration"] --> B{"Standard bridge, or Server Mode?"}
B -->|"Standard bridge"| C["One ServerNode holds an Aggregator endpoint"]
C --> D["Each bridged device hangs off the aggregator, carrying Bridged Device Basic Information"]
B -->|"Server Mode"| E["Entity endpoints sit straight on the ServerNode. No aggregator is built"]
E --> F["The bridged identity is removed. The first matching entity becomes the primary and drives the node's own identity"]
Ten at most, and the first one is primary
The Standalone Devices create form takes exact entity IDs, each one shaped domain.object_id. Wildcards are not allowed, and a duplicate value is rejected outright. Frontend and backend both cap it at ten rows / ten endpoints; if the backend somehow receives more, it skips the surplus and reports it under failed entities.
The first entity the include matcher matches is the primary. Its HA device, friendly name, Entity Mapping identity override and Matter device type drive the root node's identity and its advertised device type; the other entities — up to nine of them — are flat sibling endpoints attached directly to the same node. Anything with more than one entity is still explicitly experimental inside Stable.
| Grouping strategy | Fits | Does not fit |
|---|---|---|
| One entity per node | Vacuums and mowers, anything needing a clearly separate identity, and problem isolation | Large numbers of simple sensors; it raises the cost of commissioning and of managing nodes |
| One primary plus a few siblings | Devices with the same purpose and the same controller support profile | Mixing an EVSE, a rare detector, media and ordinary lights; controller discovery can fail, or the UI can end up confusing |
| Filling all ten | A controlled, tested setup where the controller displays everything reliably | Doing it only to save on node count; ten is a hard limit, not a target to aim for |
If a sibling is already absorbed by the primary's own mapping — a vacuum that automatically links a battery or a mode select, say — the backend marks the duplicate "Already exposed through …" instead of building a second endpoint. A disabled entity keeps its identity number but is listed as a failure, so that a reversible disable does not cause everything after it to renumber.
flowchart TD
A["An entity listed in the create form"] --> B{"Already exposed through the primary's own mapping? A vacuum's linked battery, say"}
B -->|"yes"| C["Marked Already exposed through... No second endpoint is built"]
B -->|"no"| D{"Is the ten-entity cap already reached?"}
D -->|"yes"| E["Skipped, and listed as a failed entity"]
D -->|"no"| F["Built as a flat sibling endpoint on the same node"]
vacuum.example_cleaner as the primary, then its own battery sensor as a ninth sibling entity.What each button actually does, and which controllers this actually helps
What Create, Edit, Reorder and Delete each affect
Create means the Add device form on the Standalone Devices page takes a name and one to ten exact entities. On submit, the backend assigns an available port, builds the filter include rows, and sets serverMode to true. That creates a new Matter node and persistent data; it is not a read-only preview.
Edit and Reorder mean that opening details and pairing on a list card takes you into an existing configuration, where the standard bridge detail and edit routes manage the filter and Entity Mapping. The standalone create dialog itself has no drag-and-drop editor for a node that already exists. To change the primary you have to change the order of the include matcher and assess the effect on identity and on controller caches; to change the Matter type, use Entity Mapping rather than editing the HA entity ID.
Delete means the list has a delete button and a confirmation dialog. The pinned UI text says it plainly: it deletes the Matter node and removes the commissioning from the controller, and it cannot be undone. Deleting is not a routine troubleshooting step. Before running it, back up the persistent storage and the configuration, record every controller that has joined, and confirm the maintenance window for rebuilding and re-commissioning.
| Change | Possible impact | Safe fallback point |
|---|---|---|
| Adding a node | A new port, storage, a commissioning state and a device on the controller | Cancel before you submit; after submitting, stop it rather than deleting it outright, and confirm the configuration backup |
| Adding or removing a sibling | The endpoint structure changes; the controller re-discovers, or keeps a stale cache | Change one thing at a time and keep the original include order |
| Reordering the primary | The root identity and the advertised device type can change | Restore the original order first; do not rename or change an override at the same time |
| Deleting a node | The commissioning is removed and cannot be undone; you rebuild and re-commission | Only a backup made beforehand and a rebuild plan; once you confirm, there is no undo |
Vacuums, mowers, and which controllers actually need this
The source code states the purpose of a Server Mode vacuum outright: avoid Bridged Device Basic Information so it appears as a standalone device, which is what Apple Home Siri commands and Alexa discovery need. The frontend's Filter Preview also suggests considering Server Mode when a standard bridge includes a vacuum. That is a device-specific compatibility strategy, not a blanket yes for Server Mode across every controller.
| Type | Pinned device-type support | Server Mode planning |
|---|---|---|
robot_vacuum_cleaner | Apple, Google, Alexa and Aqara yes | For Apple voice and Alexa discovery, prefer one vacuum per node; keep the standard RVC and do not turn OnOff on blindly |
robotic_lawn_mower | Apple and Alexa yes; Google and Aqara unknown | It still shows as an RVC type. A standalone node helps with isolation, but does not produce a mower-specific UI |
evse | Aqara yes; Apple, Google and Alexa no | Do not put it into Alexa just because it is standalone; the sources note that a bridged EVSE can break Alexa recognition |
air_purifier / fan | Apple no; Google, Alexa and Aqara yes | A standalone node still cannot change Apple's no |
mode_select | Apple, Google and Alexa no; Aqara unknown | Standalone does not fix the UI gap; you still need a two-state switch fallback, or you keep it in HA |
Service Area, Clean Mode, Operational State and Power Source on a vacuum follow the same logic described earlier in this part. Room, button, suction, mopping and charging links can still absorb other entities; if you then list those linked entities as siblings as well, the backend refuses the duplicate exposure — the same rule the diagram above already showed you. A mower only gets a Power Source when battery information exists, and a controller may still call it a robot vacuum.
Commissioning, in outline
Every standalone device is its own Matter node, so it has its own commissioning entry point, its own fabric relationships, its own sessions, and its own device record on the controller. Opening details and pairing on a list card is only a way in — you still have to confirm the network, IPv6, mDNS, the permissions on the controller account, and the maintenance window first.
The safe procedure has four parts: create and start the node, look at its commissioning state, join it on the controller side, and finally come back to Matter Hub to verify the fabric and the subscription health. QR codes and manual pairing data are secrets. Show them only briefly on a screen you control — do not screenshot them, do not paste them into a ticket, do not write them into this guide, and do not use a real example anywhere.
Multi-fabric means joining the same node to a second controller ecosystem, not building a second standalone device. Whether you can open a new commissioning window, how the controllers share it, and what removing a fabric does are all covered by the fixed procedure in the next part of this guide. Do not use Delete Standalone Device to remove a single controller, because Delete removes the whole node.
Server Mode has no plugins
A Server Mode bridge in Stable 2.0.55 does not provide pluginInfo, and it has no plugin enable / disable methods. The plugin API skips Server Mode in its listing, and answers a plugin operation on a single Server Mode bridge with not supported, rather than installing the plugin.
So even though the Camera and Security plugins have routes inside the Stable channel, their product maturity is still experimental, and they are not available on standalone devices or in Server Mode. Do not treat the experimental doorbell covered earlier in this part as a Camera Plugin — the doorbell only gives you an event or switch type, with no video. And do not use a multi-entity standalone device to try to "compose" a camera, a doorbell and a lock as a way around the limit.
Server Mode does not support composed mappings either: set composedEntities or climateExposeFan and the code logs a warning and falls the primary back to a flat endpoint. Automatic links such as a battery or a vacuum mode can still attach to that endpoint, but that is not the same as an arbitrary composed device parent.
| Feature | Standard bridge | Server Mode |
|---|---|---|
| Legacy entity mapping | Available | Available, converted to the standalone endpoint type |
| Dedicated vacuum endpoint | Bridged RVC | Standalone RVC, which suits Apple Siri and Alexa discovery |
| User composed device | Needs autoComposedDevices and similar conditions | Not available; it falls back to flat |
| Camera and Security plugins | The feature itself is experimental inside Stable | Not available |
A standard bridge is an apartment building: one street address for the whole building, and a directory in the lobby that lists every unit inside. A Server Mode device is a single-family house — its own address, nobody else's name on the mailbox, and it never had a directory to remove in the first place. Deleting the house is not the same job as removing one unit from the building. It takes the whole address with it.
The smallest workflow for a special device, and for a standalone node
Mapping a special device
-
Step 1
Classify it as a state, a mode or an action
In HA, first work out whether the entity is a persistent state, a Mode Select or a momentary action. Record it with a placeholder such as
script.example_action, so no live environment data ends up in your notes. -
Step 2
Look at the default mapping in Devices
Search for the entity on the Matter Hub Devices page and cross-check the domain against the automatic type. For a media player, also check device_class and the supported features; for a vacuum, check the room and mode attributes.
-
Step 3
Compare it against the target controller
Support for Mode Select, speaker, TV, valve, water heater and appliance types varies widely. Check the matrix first, then decide whether you need a fallback or a standalone node.
-
Step 4
Change one mapping at a time
Set speaker, pump, water valve or select-as-switch where you need them; for momentary entities, turn on
disableMomentaryFliponly once you have confirmed a controller is actually getting stuck. Write down the original value before you save. -
Step 5
Start with a read-only or low-risk check
Compare modes, volume, areas and states; for buttons, use a test action that does no harm. Sirens, water heating, pumps, valves, vacuums and lawn mowers need someone present and a way to stop them.
-
Step 6
Confirm the controller command and what HA reports back
For persistent types, test on and off; for momentary ones, test a single on and confirm the action fired exactly once. If it fails, roll the mapping back rather than resetting the fabric first.
Planning a standalone device, without touching a live one
-
Step 1
List the target entities and controllers
In an offline change ticket, use documentation placeholders such as
vacuum.example_cleanerand mark each device type yes / partial / no / unknown. Do not paste in a live entity list or network data. -
Step 2
Decide between one entity per node and a small group
Give a vacuum or a mower its own node first. If you plan a group instead, keep it to ten or fewer, and put in only entities with a similar support profile.
-
Step 3
Set the primary and the order
Put the entity that should drive the name, the identity and the advertised type in the first row. Record both the original order and the intended order, and assess the effect on controller caches.
-
Step 4
Locate it in the UI, read-only
Confirm that Standalone Devices is in the navigation, and look at the name, entity summary, status and entity problems on the existing cards. You may open details to read the status, but in this dry run do not press Create, Pair or Delete, and do not save an edit.
-
Step 5
Finish the backup and recovery plan
Write down the Matter Hub storage and configuration you need to back up, the controllers already commissioned, the window for stopping and restarting, and how you would restore the original include order if a change of primary goes wrong.
-
Step 6
Leave the actual work to the commissioning procedure
Once you have approval, follow the fixed procedure in the next part of this guide, run it inside a controlled window, and keep secrets on the local screen only. Without approval or a backup, the safe finish line for this exercise is "planned, not submitted."
The symptom you see, and the setting that explains it
| Symptom | Likely cause | What to do |
|---|---|---|
| Mode Select does not appear at all | Apple, Google and Alexa are all no in the pinned matrix | Use select-as-switch when there are exactly two clear options; with more options, keep the control in HA rather than forcing it into a switch |
script, scene, automation or input_button is stuck on in the controller |
The optimistic on→off flip, which some Echo devices get stuck on | Confirm the action fired only once and the state returns to off shortly after. If a particular Echo is getting stuck, turn on disableMomentaryFlip for that entity. A plain button always reports off, so the flip is not what you troubleshoot there |
| off on an automation does not disable the automation | Expected behavior: this mapping is a momentary trigger, not an enable switch | If you need a persistent enable and disable, build an explicit, safe input_boolean flow in HA |
| A TV or speaker shows only some of the controls | A feature bit is not supported, or the controller does not render that cluster | Cross-check the TURN_ON/OFF, VOLUME_MUTE, VOLUME_SET, SELECT_SOURCE, PLAY and PAUSE feature bits. An override never adds a capability the source device does not provide |
| Alexa rejects the vacuum | vacuumOnOff is on where it does not need to be; OnOff is not part of the RVC spec |
Confirm vacuumOnOff is off unless you need it. Consider a dedicated standalone node instead of mixing it into a bridge with other unsupported types |
| The lawn mower shows up as a robot vacuum | That is the compatibility design in Stable 2.0.55; Matter has no mower type yet | If the name or the risk of a remote start is not acceptable, do not expose it to that controller and keep the control in HA |
| The Standalone Devices route does not exist | The version is not really Stable 2.0.55, or the route name was guessed | Cross-check the version first. A route existing does not mean the feature maturity is already stable |
| It shows no entity, or an entity problem | The include is not an exact entity ID, the entity was renamed, removed or disabled, or the HA registry is unavailable | Check the exact entity ID. An empty registry delays reconciliation while HA restarts, so do not delete the endpoint straight away |
| The eleventh entity was not built | Ten per node is a hard limit; anything above it is listed as a failed entity | Move the extra entities to another node. The frontend forbids wildcards, so that is not a shortcut either |
| The wrong entity drives the controller name or type | The first include matcher is not the one you meant | Check the first matcher and the first endpoint that actually built. Plan to restore the original order; do not delete the node, rename it and re-commission all at once |
| The vacuum builds but voice or discovery does not work | It is not really in Server Mode, or the controller's own device-type support is the real limit | Confirm Server Mode and standard RVC clusters with no unnecessary OnOff, then check the controller's device-type support. Server Mode itself guarantees nothing about every platform version |
| You cannot find the plugin actions | This is a design limit, not a permissions error | Server Mode hosts no plugins. Use a standard bridge to assess an experimental plugin instead |
| You are about to delete something to fix a caching problem | Delete removes the node and every controller's commissioning, and cannot be undone | Stop. Back up first, collect redacted diagnostics, and restore the most recent mapping and order. Only an approved rebuild plan gets as far as deleting |
Questions people ask
Can the automation endpoint enable and disable the automation?
automation.trigger, and off has no action at all. It is a momentary trigger, not a switch for the automation itself.Does disableMomentaryFlip stop a momentary action from running?
script, scene, automation and input_button still run; what the flag skips is the optimistic on→off report. A plain button always reports off anyway, so for it the flag only skips a no-op timer.Does doorbell include video and two-way audio?
Does a vacuum have to use Server Mode?
Why is siren not momentary?
Is Server Mode a production feature in Stable 2.0.55?
Can a standalone device hold only one entity?
Is reordering only a change to the list?
Can standalone make Apple show an air purifier or a fan?
air_purifier and a standalone fan; the node structure does not change a controller's own type support.Can I install a Camera or Security Plugin on a standalone device?
Can I press Undo after deleting?
Where to go from here
Every entity has a Matter type now. None of them are commissioned to anything yet.
This part closes out device mapping: the seventeen domains that never reduce to a plain switch, and the question of when one of them deserves to leave the bridge and become its own standalone node. The next part of this guide is where a Matter device actually joins a controller's fabric — the commissioning and multi-fabric procedure in full, and then pairing with Apple Home by name, its supported device types, and its own quirks.
Open the full guidePart 7 of the Home Assistant Matter Hub Complete Guide series on the Apporo blog.
Adapted from the Home Assistant Matter Hub Complete Guide, produced by WoowTech and released under CC BY 4.0. This adaptation is published by Apporo under the same licence.
Light · Air · Water · Control · apporo