SIA DC-09 Integration
SIA DC-09 is the ANSI/SIA standard for reporting alarm events over IP, between alarm panels (premises equipment) and central station receivers. Gaard speaks it over TCP, with a CRC on every frame and optional AES-CBC encryption, and supports both directions: each as its own per-flow integration.
This page is part of Alarm Platforms.
Outbound: send events to a receiver
Section titled “Outbound: send events to a receiver”When a clip classifies as a reportable event, Gaard acts as premises equipment and emits a DC-09 event over TCP to your Central Station Receiver (CSR), carrying the clip as an extended-data verification link.
Delivery is designed so that no alarm is lost:
- The event is written to a durable queue before it is sent, with a per-account sequence number, so a restart mid-delivery resumes cleanly.
- On ACK, the event is marked delivered.
- On NAK, Gaard adopts the receiver’s clock, corrects the timestamp, and retries.
- On DUH, the event is treated as a permanent rejection and marked failed.
- On no response, Gaard retries (by default every 20 seconds, up to 3 attempts) then flags the event as failed.
Configure outbound
Section titled “Configure outbound”-
In Settings → Platform → Integrations, select SIA DC-09 Outbound.
-
Choose the Flow and enter a Name.
-
On the Connection tab, set the Receiver host and Receiver port, the DC-09 identity (Receiver number (R), Line prefix (L), Account number (#)) and the Encryption policy with its AES key (hex) if encrypted.
-
On the Events tab, set the Code profile, the Forwarded codes (which SIA codes are actually sent), and whether to Include verification link or Include JSON payload.
-
On the Delivery tab, set the Retry timeout (seconds) and Max attempts.
-
Save.
Inbound: receive and classify panel events
Section titled “Inbound: receive and classify panel events”In the other direction, Gaard acts as a central station receiver: it runs a long-lived TCP listener, accepts DC-09 alarm events from panels, resolves the reporting zone to a camera, acquires a clip, and classifies it.
Each incoming event is validated (CRC, decryption, and an anti-replay timestamp check) and answered per the standard:
| Situation | Reply | Result |
|---|---|---|
| Valid event for an owned account | ACK | Zone resolved, clip acquired, classified. |
| Unknown account | DUH | Rejected. |
| Mapped account, unmapped zone | ACK | Accepted, but no camera to classify. |
| Timestamp outside the anti-replay window | NAK | The panel can correct its clock and resend. |
| Bad CRC or undecryptable frame | (none) | Silently dropped, as the standard requires. |
To obtain footage for a valid event, Gaard tries the clip sources you configure, in order, until one yields imagery:
verification-link: a link carried in the DC-09 event.recent-segments: recently recorded footage for the camera.on-demand-grab: a fresh grab from the camera.
Configure inbound
Section titled “Configure inbound”-
In Settings → Platform → Integrations, select SIA DC-09 Inbound.
-
Choose the Flow and enter a Name.
-
On the Listener tab, set the Listen port and the Account numbers this receiver owns.
-
On the Zones & clips tab, define the Zone → camera map (which panel zone maps to which camera) and the ordered Clip sources.
-
On the Security tab, set the Encryption policy, the AES key (hex), and the anti-replay timestamp windows.
-
Save.
Encryption
Section titled “Encryption”Both directions support plaintext or AES-128-CBC. When you enable encryption, set the same hex key on the Gaard integration and on the peer (the receiver for outbound, the panel for inbound); a key mismatch makes frames undecryptable, and undecryptable inbound frames are dropped.