Skip to content

Bypass a zone

A bypassed zone is excluded from arming. You’d bypass a zone when, for example, you want to arm Away but leave a window open.

service: omni_pca.bypass_zone
data:
config_entry: <your_omni_config_entry_id>
zone_index: 7 # 1-based
user_code: "1234" # required by most panels for bypass

Pick the config_entry ID from the integration page’s URL or via Developer Tools → Services — the dropdown shows your Omni panel by name. To restore:

service: omni_pca.restore_zone
data:
config_entry: <your_omni_config_entry_id>
zone_index: 7

Each binary zone has a corresponding bypass switch with entity_category = config. They’re hidden from the default dashboard but visible on the device page and in entity selectors:

Entity ID examplePurpose
binary_sensor.omni_pro_ii_front_dooropen/closed state (read)
binary_sensor.omni_pro_ii_front_door_bypasseddiagnostic — reads bypass state
switch.omni_pro_ii_front_door_bypasstoggles bypass on/off

Toggle the switch entity to bypass; toggle it off to restore.

from omni_pca import OmniClient
async with OmniClient(host=..., port=4369, controller_key=...) as panel:
await panel.bypass_zone(7, code=1234) # bypass zone 7
# ...
await panel.restore_zone(7) # restore

Both are thin wrappers around execute_command with Command.BYPASS_ZONE / RESTORE_ZONE. If the panel rejects the command (wrong code, bypass disabled in installer setup), you get CommandFailedError — same error class HA wraps to a ServiceValidationError.

Check the bypass diagnostic binary sensor or query directly:

# automation snippet
- service: omni_pca.bypass_zone
data: { config_entry: ..., zone_index: 7, user_code: "1234" }
- delay: { seconds: 1 }
- service: notify.mobile_app
data:
message: >
Front door bypassed:
{{ is_state('binary_sensor.omni_pro_ii_front_door_bypassed', 'on') }}

Or in Python:

status = await panel.get_object_status_for("ZONE", 7)
assert status[0].is_bypassed is True
  • Some installer configurations disable bypass per-zone (fire and panic zones are always non-bypassable). The panel will return Nak and CommandFailedError in that case.
  • Bypassed zones return to “armed” automatically when the area disarms — you don’t need to manually restore unless you want the diagnostic sensor to flip back to off mid-armed-state.
  • The user_code parameter is the 4-digit PIN, not the user index. The panel looks it up internally.