SIA Decoding

Every alarm message TetherX receives is one line of text, and every part of that line does something. This page takes one message of each shape and says what each part is, what TetherX reads it as, and what an operator ends up seeing.

Setting a panel up? The addresses, ports and the steps for each connection method are in Alarm Signal Receiving. Every code a panel can send is listed in SIA Event Codes.

The message, decoded

This is what a burglary on zone 1001 looks like arriving at the REST endpoint, which takes the inner block on its own:

[ | Nti22:02 / ri01 / BA1001 | ABurglary Alarm ]

The transmitter ID, which is how TetherX knows which panel is reporting. Set it on the panel to the Transmitter ID of the alarm in TetherX. Letters and digits only.
Nti22:02
The time the panel put on the message. TetherX records it, and timestamps the event with the moment the message arrived, because a panel clock drifts.
ri01
The area, or partition, the event belongs to. Shown to the operator beside the signal, and carried on every status the panel raises.
BA1001
Two letters and, where the code names a detector, the zone that fired. The letters decide what happens: BA raises a burglary. A code ending in R is the restore that clears it. The digits are the panel's own zone number, passed through as the panel sends it.
ABurglary Alarm
The wording the panel wrote, after a literal A. It is recorded and shown, and it changes nothing: the two letters above decide the event, so the same fire from two panels lands as one trigger.

The same message as a DC-09 frame

An IP communicator reporting to the TCP server sends the whole frame, with its checksum, sequence number and the panel's own timestamp on the end. This one is a panic on zone 1002:

FEC9003B"SIA-DCS"0001L0# [# | Nri0001 / PA1002 ]_ 12:29:37 , 01-17-2022

The account in the frame header, before the block. The IP communicator sends it and TetherX reads the one inside the block.
The transmitter ID, as above. This is the one matched against the alarm.
Nri0001
The area, in the form the frame carries rather than the block's ri01.
PA1002
The event code and zone, read exactly as in the block above. A frame carries no description, so the operator reads the standard wording for the code.
12:29:37
The panel's own time, on the tail of the frame.
01-17-2022
The panel's own date, in the order DC-09 sends it.

Contact ID

A Contact ID panel reports in digits rather than letters. The TCP server takes the whole ADM-CID frame and the REST endpoint takes the inner block [#900001|1130 01 003]:

87CD0037"ADM-CID"9876R579BDFL789ABC# 900001 [# | 1 130 01 003 ]

The transmitter ID, as in the other two.
1
What the message does: 1 raises the condition, 3 restores it.
130
The Contact ID event. TetherX maps it to the equivalent SIA code, so a Contact ID panel and a SIA panel raise the same trigger.
01
The area, two digits.
003
The zone, three digits, passed through as the panel sends it.

What the panel's message becomes

Decoding [#900001|Nti22:02/ri01/BA1001|ABurglary Alarm] gives the event an operator opens:

Panel The alarm whose Transmitter ID is 900001
Signal BA Burglary Alarm
Trigger Tampering & Security: Burglary Alarm
Area 1
Panel zone 1001, shown against the camera zone it is mapped to (how to map them)
Description Burglary Alarm

The event is opened on the camera watching that zone, so the operator reads the panel's own account of the alarm beside the footage of it. A message that raises nothing, a restore or a panel-state report, is recorded on the alarm without opening an event.

Which codes raise an alarm

The two letters decide, and nothing else does. These raise an alarm condition and file the trigger beside it, so a panel panic and a camera panic filter as one thing:

CodeRaisesCleared by
BA Burglary Alarm BR
PA Panic Alarm PR
HA Duress Alarm HR
MA Medical Alarm MR
TA Camera Tampered TR
QA Alarm QR
FA Fire Alarm FR
GA Gas Alarm GR
WA Flood WR

Two more report the panel itself rather than a detector, so they carry no zone: CL sets the panel, OP unsets it . A panel that puts a user number after one of them is accepted, and that number is read as a user rather than as a zone.

Contact ID events, and the SIA code each becomes

Contact IDSIA codeMeaning
100 MA Medical Alarm
110 FA Fire Alarm
120 PA Panic Alarm
121 HA Duress Alarm
122 PA Silent Panic Alarm
130 BA Burglary Alarm
131 BA Perimeter Burglary Alarm
132 BA Interior Burglary Alarm
133 BA 24 Hour Burglary Alarm
134 BA Entry Exit Burglary Alarm
135 BA Day Night Burglary Alarm
136 BA Outdoor Burglary Alarm
137 TA Tamper Alarm
151 GA Gas Alarm
154 WA Water Leak Alarm

Qualifier 3 in place of 1 restores the condition, the same way a SIA code ending in R does. An event TetherX does not recognise is still recorded, as a generic alarm, so nothing a panel sends is thrown away.

Related articles