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.
From an HA automation or script
Section titled “From an HA automation or script”service: omni_pca.bypass_zonedata: config_entry: <your_omni_config_entry_id> zone_index: 7 # 1-based user_code: "1234" # required by most panels for bypassPick 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_zonedata: config_entry: <your_omni_config_entry_id> zone_index: 7From the HA UI (per-zone switch)
Section titled “From the HA UI (per-zone switch)”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 example | Purpose |
|---|---|
binary_sensor.omni_pro_ii_front_door | open/closed state (read) |
binary_sensor.omni_pro_ii_front_door_bypassed | diagnostic — reads bypass state |
switch.omni_pro_ii_front_door_bypass | toggles bypass on/off |
Toggle the switch entity to bypass; toggle it off to restore.
From Python directly
Section titled “From Python directly”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) # restoreBoth 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.
Verify the change
Section titled “Verify the change”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 TrueCaveats
Section titled “Caveats”- Some installer configurations disable bypass per-zone (fire and panic
zones are always non-bypassable). The panel will return
NakandCommandFailedErrorin 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_codeparameter is the 4-digit PIN, not the user index. The panel looks it up internally.