Summary
The Paradox PRT3 Printer Module bridges a Digiplex-series alarm control panel and a home automation system via an RS-232C ASCII protocol on a DB-9 serial port. This spec covers the ASCII command set for arming/disarming areas, controlling virtual inputs, requesting zone/area/user labels and status, triggering panic alarms, smoke reset, utility keys, and the unsolicited event/PGM reporting formats the module emits back to the home automation host.
Transport
protocols:
- serial
serial:
baud_rate: 9600 # source: one of 2400, 9600, 19200, 57600; 9600 is the most common default
data_bits: 8
parity: none
stop_bits: 1
flow_control: none
auth:
type: none # inferred: no auth procedure in source; user PINs are arm/disarm codes, not transport auth
Traits
- queryable # inferred: extensive RA/RZ/ZL/AL/UL status/label query commands
- routable # inferred: per-area/per-zone/per-virtual-input command set spans many sources/sinks
Actions
# Virtual Input Open (16 inputs)
- id: virtual_input_open_01
label: Virtual Input Open 01
kind: action
command: "VO001<cr>"
params: []
- id: virtual_input_open_02
label: Virtual Input Open 02
kind: action
command: "VO002<cr>"
params: []
- id: virtual_input_open_16
label: Virtual Input Open 16
kind: action
command: "VO016<cr>"
params: []
# Virtual Input Closed (16 inputs)
- id: virtual_input_closed_01
label: Virtual Input Closed 01
kind: action
command: "VC001<cr>"
params: []
- id: virtual_input_closed_02
label: Virtual Input Closed 02
kind: action
command: "VC002<cr>"
params: []
- id: virtual_input_closed_16
label: Virtual Input Closed 16
kind: action
command: "VC016<cr>"
params: []
# Request Area Status (max 8 areas)
- id: request_area_status_01
label: Request Area Status 01
kind: query
command: "RA001<cr>"
params: []
- id: request_area_status_02
label: Request Area Status 02
kind: query
command: "RA002<cr>"
params: []
- id: request_area_status_08
label: Request Area Status 08
kind: query
command: "RA008<cr>"
params: []
# Request Zone Status (max 192 zones)
- id: request_zone_status_01
label: Request Zone Status 01
kind: query
command: "RZ001<cr>"
params: []
- id: request_zone_status_02
label: Request Zone Status 02
kind: query
command: "RZ002<cr>"
params: []
- id: request_zone_status_192
label: Request Zone Status 192
kind: query
command: "RZ192<cr>"
params: []
# Request Zone Label (max 192 zones)
- id: request_zone_label_01
label: Request Zone Label 01
kind: query
command: "ZL001<cr>"
params: []
- id: request_zone_label_02
label: Request Zone Label 02
kind: query
command: "ZL002<cr>"
params: []
- id: request_zone_label_192
label: Request Zone Label 192
kind: query
command: "ZL192<cr>"
params: []
# Request Area Label (max 8 areas)
- id: request_area_label_01
label: Request Area Label 01
kind: query
command: "AL001<cr>"
params: []
- id: request_area_label_02
label: Request Area Label 02
kind: query
command: "AL002<cr>"
params: []
- id: request_area_label_08
label: Request Area Label 08
kind: query
command: "AL008<cr>"
params: []
# Request User Label (max 999 users)
- id: request_user_label_01
label: Request User Label 01
kind: query
command: "UL001<cr>"
params: []
- id: request_user_label_02
label: Request User Label 02
kind: query
command: "UL002<cr>"
params: []
- id: request_user_label_999
label: Request User Label 999
kind: query
command: "UL999<cr>"
params: []
# Area Arm (max 8 areas, mode A/F/S/I, 6-digit code)
- id: arm_area_01
label: Arm Area 01
kind: action
command: "AA001{mode}{code}<cr>"
params:
- name: mode
type: enum
values: [A, F, S, I]
description: A=Regular, F=Force, S=Stay, I=Instant
- name: code
type: string
description: User code, up to 6 digits
- id: arm_area_02
label: Arm Area 02
kind: action
command: "AA002{mode}{code}<cr>"
params:
- name: mode
type: enum
values: [A, F, S, I]
- name: code
type: string
- id: arm_area_08
label: Arm Area 08
kind: action
command: "AA008{mode}{code}<cr>"
params:
- name: mode
type: enum
values: [A, F, S, I]
- name: code
type: string
# Area Quick Arm (max 8 areas, mode A/F/S/I, no code; requires One-Touch enabled)
- id: quick_arm_area_01
label: Quick Arm Area 01
kind: action
command: "AQ001{mode}<cr>"
params:
- name: mode
type: enum
values: [A, F, S, I]
- id: quick_arm_area_02
label: Quick Arm Area 02
kind: action
command: "AQ002{mode}<cr>"
params:
- name: mode
type: enum
values: [A, F, S, I]
- id: quick_arm_area_08
label: Quick Arm Area 08
kind: action
command: "AQ008{mode}<cr>"
params:
- name: mode
type: enum
values: [A, F, S, I]
# Area Disarm (max 8 areas, 6-digit code)
- id: disarm_area_01
label: Disarm Area 01
kind: action
command: "AD001{code}<cr>"
params:
- name: code
type: string
description: User code, up to 6 digits
- id: disarm_area_02
label: Disarm Area 02
kind: action
command: "AD002{code}<cr>"
params:
- name: code
type: string
- id: disarm_area_08
label: Disarm Area 08
kind: action
command: "AD008{code}<cr>"
params:
- name: code
type: string
# Emergency Panic (max 8 areas)
- id: panic_emergency_area_01
label: Panic 1 - Emergency Area 01
kind: action
command: "PE001<cr>"
params: []
- id: panic_emergency_area_02
label: Panic 1 - Emergency Area 02
kind: action
command: "PE002<cr>"
params: []
- id: panic_emergency_area_08
label: Panic 1 - Emergency Area 08
kind: action
command: "PE008<cr>"
params: []
# Medical Panic (max 8 areas)
- id: panic_medical_area_01
label: Panic 2 - Medical Area 01
kind: action
command: "PM001<cr>"
params: []
- id: panic_medical_area_02
label: Panic 2 - Medical Area 02
kind: action
command: "PM002<cr>"
params: []
- id: panic_medical_area_08
label: Panic 2 - Medical Area 08
kind: action
command: "PM008<cr>"
params: []
# Fire Panic (max 8 areas)
- id: panic_fire_area_01
label: Panic 3 - Fire Area 01
kind: action
command: "PF001<cr>"
params: []
- id: panic_fire_area_02
label: Panic 3 - Fire Area 02
kind: action
command: "PF002<cr>"
params: []
- id: panic_fire_area_08
label: Panic 3 - Fire Area 08
kind: action
command: "PF008<cr>"
params: []
# Smoke Reset (max 8 areas)
- id: smoke_reset_area_01
label: Smoke Reset Area 01
kind: action
command: "SR001<cr>"
params: []
- id: smoke_reset_area_02
label: Smoke Reset Area 02
kind: action
command: "SR002<cr>"
params: []
- id: smoke_reset_area_08
label: Smoke Reset Area 08
kind: action
command: "SR008<cr>"
params: []
# Utility Key (up to 251)
- id: utility_key_01
label: Utility Key 01
kind: action
command: "UK001<cr>"
params: []
- id: utility_key_02
label: Utility Key 02
kind: action
command: "UK002<cr>"
params: []
- id: utility_key_251
label: Utility Key 251
kind: action
command: "UK251<cr>"
params: []
Feedbacks
# All responses end with <cr>. Source documents these ack shapes:
# - "<first5chars>&OK<cr>" valid command acknowledged
# - "<first5chars>&fail<cr>" invalid command (also: invalid user code on AA/AD)
# - "!<cr>" reception buffer full, command not accepted
# - "COMM&fail<cr>" PRT3 lost communication with Digiplex panel
# - "COMM&ok<cr>" PRT3-Digiplex communication restored (also sent at startup)
- id: ack_ok
type: string
description: First five characters of the command followed by "&OK<cr>"
- id: ack_fail
type: string
description: First five characters of the command followed by "&fail<cr>" (invalid command or invalid user code)
- id: buffer_full
type: string
description: Exclamation point followed by <cr> - reception buffer full, command not accepted
- id: comm_fail
type: string
description: "COMM&fail<cr> - PRT3 cannot communicate with the Digiplex panel"
- id: comm_ok
type: string
description: "COMM&ok<cr> - PRT3-Digiplex communication restored (also sent at startup)"
# Request Area Status response (13 bytes)
- id: area_status
type: object
description: "RAxxx response: bytes 6=arm mode (D/A/F/S/I), 7=zone in memory (M/O), 8=trouble (T/O), 9=not ready (N/O), 10=in programming (P/O), 11=in alarm (A/O), 12=strobe (S/O)"
# Request Zone Status response (11 bytes)
- id: zone_status
type: object
description: "RZxxx response: byte 6=state (C/O/T/F), 7=in alarm (A/O), 8=fire alarm (F/O), 9=supervision lost (S/O), 10=low battery (L/O)"
# Request Zone Label response (16 chars after first 5 command bytes)
- id: zone_label
type: string
description: "16-character zone label returned after first 5 bytes of ZL command"
# Request Area Label response (16 chars)
- id: area_label
type: string
description: "16-character area label returned after first 5 bytes of AL command"
# Request User Label response (16 chars)
- id: user_label
type: string
description: "16-character user label returned after first 5 bytes of UL command"
Events
# Virtual PGM events (PRT3 → HA module)
- id: virtual_pgm_on
format: "PGM{nn}ON"
description: "Virtual PGM nn activated, nn = 01..30"
- id: virtual_pgm_off
format: "PGM{nn}OFF<cr>"
description: "Virtual PGM nn deactivated, nn = 01..30"
# System events (PRT3 → HA module). 12-byte format:
# G{xxx}N{yyy}A{zzz} where G=3-digit event group, N=3-digit event number,
# A=3-digit area number (000 = global/all enabled areas).
# Group descriptors (partial list from source):
# 000 Zone OK | 001 Zone Open | 002 Zone Tampered | 003 Fire Loop Trouble
# 004 Non-reportable Event | 005 User Code on Keypad | 006 Door Access
# 007 Bypass Programming | 008 TX Delay Zone Alarm | 009 Arm with Master
# 010 Arm with User Code | 011 Arm with Keyswitch | 012 Special Arming
# 013 Disarm with Master | 014 Disarm with User Code | 015 Disarm with Keyswitch
# 016-018 Disarm after alarm (Master/User/Keyswitch)
# 019-021 Alarm Cancelled (Master/User/Keyswitch)
# 022 Special Disarm Events | 023 Zone Bypassed | 024 Zone in Alarm
# 025 Fire Alarm | 026 Zone Alarm Restore | 027 Fire Alarm Restore
# 028 Early to Disarm | 029 Late to Disarm | 030 Special Alarm (incl. Emergency/Medical/Fire panic, Police Code, Global Shutdown)
# 031 Duress Alarm | 032 Zone Shutdown | 033 Zone Tamper | 034 Zone Tamper Restore
# 035 Special Tamper | 036 Trouble Event | 037 Trouble Restore
# 038 Module Trouble | 039 Module Trouble Restore
# 040 Fail to Communicate | 041 Low Battery Zone | 042 Zone Supervision Trouble
# 043 Low Battery Zone Restored | 044 Zone Supervision Restored
# 045 Special Events | 046 Early to Arm | 047 Late to Arm
# 048 Utility Key | 049 REX | 050 Access Denied | 051 Door Left Open Alarm
# 052 Door Forced Alarm | 053 Door Left Open Restore | 054 Door Forced Restore
# 055 Intellizone Triggered | 058 New Module on Combus | 059 Module Removed from Combus
# 062 Access Granted | 063 Access Denied
# 064 Status 1 (Armed/Force/Stay/Instant/Strobe/Silent/Audible/Fire)
# 065 Status 2 (Ready/Exit Delay/Entry Delay/Trouble/Alarm in Memory/Bypassed/Programming/Lockout)
# 066 Status 3 (Intellizone Delay/Fire Delay/Auto Arm/Voice Arming/Tamper/Low Battery/Fire Loop/Supervision)
- id: system_event
format: "G{xxx}N{yyy}A{zzz}"
description: "12-byte unsolicited system event from PRT3; see group table in source"
Safety
confirmation_required_for:
- panic_emergency_area_*
- panic_medical_area_*
- panic_fire_area_*
interlocks: []
# UNRESOLVED: source states panic alarms "must be individually enabled" in the Digiplex
# control panel - this is a panel-side configuration dependency, not a transport interlock.
# Source does not document power-on sequencing or hardware interlock procedures beyond
# "Remove AC power and battery before adding a module to the system."
Notes
- All commands to and from the PRT3 terminate with carriage return (ASCII #13,
<cr>). - Serial configuration: 8N1, baud selectable at 2400, 9600, 19200, or 57600 via section [016] options [2] & [3] on the PRT3.
- Section [016] option [4] must be ON to select Home Automation mode (vs. Event Reporting mode); options [5] & [6] must be OFF to select the ASCII protocol.
- Feedback convention: every command that the host sends is acknowledged with the first five characters echoed back, followed by
&OK<cr>(success),&fail<cr>(invalid), or an info payload (for query commands). !<cr>indicates the PRT3 reception buffer is full and the command was not accepted.COMM&fail<cr>/COMM&ok<cr>are unsolicited — the PRT3 emits them on its own when communication with the Digiplex panel is lost or restored (and on startup to signal healthy communication).- Maximum counts are panel-dependent: command set supports up to 192 zones, 8 areas, 999 users, 32 doors, 251 utility keys, 30 virtual PGMs. Actual maxima depend on the Digiplex model (e.g. DGP-848 vs. EVO96/EVO192/DGP-NE96).
- Area Arm
AAand DisarmADcommands require a user code (up to 6 digits); Quick ArmAQrequires the One-Touch feature to be enabled on the Digiplex panel and sends no code. - User codes are not transport-level authentication; they are arm/disarm credentials validated by the Digiplex panel. There is no separate login procedure on the PRT3 transport.
- Printer cable length on the parallel/serial printer port must not exceed 25 ft.
- Connection topology: PRT3 has four DB-9 ports (one to C-Bus via null-modem, one to the home automation host, two to the dot-matrix printer — 80-column minimum required) plus one DB-25 parallel printer port.
Provenance
source_domains:
- paradox.ee
- api.library.loxone.com
source_urls:
- https://paradox.ee/wp-content/uploads/2024/02/ASCII.pdf
- https://api.library.loxone.com/downloader/file/317/Paradox_PRT3_ASCII_commands.pdf
retrieved_at: 2026-05-04T10:18:10.393Z
last_checked_at: 2026-09-17T22:22:16.742Z
Verification Summary
verdict: verified
checked_at: 2026-09-17T22:22:16.742Z
matched_actions: 45
action_count: 45
confidence: medium
summary: "All 45 spec actions map literally to source ASCII command tables (VO/VC/RA/RZ/ZL/AL/UL/AA/AQ/AD/PE/PM/PF/SR/UK); transport matches source 8N1/2400-57600. (3 unresolved item(s) noted in Known Gaps.)"
Known Gaps
- "maximum zone/area/user counts are panel-dependent (e.g. EVO96/EVO192/DGP-NE96). Source states up to 192 zones, 8 areas, 999 users as the maximum command range."
- "full system-event group catalog (000-066) is partially described; only command format and selected descriptors are documented."
- "source states panic alarms \"must be individually enabled\" in the Digiplex"
From the AI4AV catalog (https://ai4av.net) · ODbL-1.0