Security Partition — security_partition
One armable area of a security system. A panel with no partitions configured has exactly one.
Separate from the panel, which is a bridge: the panel is a box on a wall that holds things, and
what it holds is partitions and zones. Arming is per partition and always has been — a house with
the garage on its own partition arms the garage at night and the rest of it at bedtime — so a
contract that armed "the panel" could not say what the hardware already does.
Zones are sensor bindings and are not part of this. A partition says whether an area is armed; a
zone says whether a door is open, and an automation wants to trigger on exactly one of those.
There is no user code in this contract. Panels want one to disarm, and the credential belongs
to the installation rather than to the command: a code passed as an argument would be typed into a
controls page in the clear, stored in whatever rule referenced it, and copied into every automation
that disarms. Drivers hold it as a device property, like every other secret they carry. That also
makes disarming look like unlocking a lock, which is the right comparison — both are "anyone who
can reach this controller can open the house", and the answer to that is who can reach the
controller, not an argument on one command.
Capabilities
Declared in the driver manifest under [[proxy]] capabilities. Anything not declared takes the default below.
| Capability | Type | Default | Meaning |
|---|---|---|---|
has_away | bool | true | |
has_panic | bool | false | An alarm can be raised from here |
has_stay | bool | true | Can arm the perimeter and leave the interior live |
Commands
arm_away
Only present when
has_awayis declared true.
Arm everything, after the exit delay.
| Parameter | Type | Notes |
|---|---|---|
bypass | bool (optional) | Arm over zones that are open, rather than refusing |
instant | bool (optional) | Skip the exit delay — armed the moment the panel accepts it |
arm_stay
Only present when
has_stayis declared true.
Arm the perimeter with the interior live, for a house with people in it.
| Parameter | Type | Notes |
|---|---|---|
bypass | bool (optional) | |
instant | bool (optional) |
disarm
No parameters.
panic
Only present when
has_panicis declared true.
Trip the alarm deliberately. Whether this reaches a monitoring station is the panel's business, not ours.
| Parameter | Type | Notes |
|---|---|---|
kind | one of police · fire · auxiliary |
Notifications
code_required_changed
Whether this partition insists on a code to arm it. Disarming always needs one.
Shown rather than acted on, and it is a report rather than a capability because a panel's installer can change it from the keypad on a Tuesday — a capability is resolved when a device is adopted and would then be wrong until somebody re-adopted it.
| Parameter | Type | Notes |
|---|---|---|
required | bool |
online_changed
| Parameter | Type | Notes |
|---|---|---|
online | bool |
status_changed
Where the partition is now. One notification rather than one per transition, because a partition is always in exactly one of these and a rule almost always wants the transition into a state.
| Parameter | Type | Notes |
|---|---|---|
detail | string (optional) | What kind of alarm, when the status is alarm |
seconds | u32 (optional) | How long the delay runs, while it is one |
status | one of disarmed · exit_delay · entry_delay · armed_stay · armed_away · alarm |
State
Last-known values core keeps for a binding of this proxy.
| Key | Type | Meaning |
|---|---|---|
alarm | bool | |
armed | bool | |
code_required | bool | |
delay_seconds | u32 | |
online | bool | |
status | string |