SIA server for burglar alarm system
==================
Requires node.js 20.0 or higher and Admin v5!
The protocol SIA DC-09 is used by alarm systems to communicate with the central stations by SIA-DCS, SIA-DCS, ADM-CID and ADM-CID.
This adapter is a SIA Server. When an alarm event is triggered, the alarm system sends over IP (TCP or UDP) the sia message to the central station.
The following ID Tokens are supported:
If use SIA DCS (SIA DCS encrypted) or ADM-CID (Ademco Contact ID encryted) you have to enable AES encrypting
and you have to enter a AES passwort in HEX format. The AES passwort has to be for AES-128 = 32 HEX characters, AES-192 = 48 HEX characters and for
AES-256 you have to enter 64 HEX characters.
An Example password for AES-128 would be: 3A1F6B8C9D4E7F20123456789ABCDEF0.
You can use ioBroker with this adapter as central station. For example. you can send a telegram message by ioBroker if you receive an alarm SIA messsage.
Configuration of the adapter:
Choose the IP-address and port for listening for SIA requests.
Register account number. If you are using AES you have to enter a password (key). The key should be 16, 24 or 32 characters (byte) long.
If the checkbox “AES password in Hex format” is active, the password length must be 32, 48 or 64 character (byte) long.
In the field ACK timeout, you define how old the message can be in sec. If you define 0 sec., no timeout validation will be done.
With the checkobx “Connection close by SIA Server”, you can decide if the alarmsystem has to close the connection after it received the ACK message.
If the checkbox “Connection close by SIA Server” ist disabled, the SIA server (ioBroker) waits 30 seconds for closing the connection by the alarmsystem.
After this 30 seconds the SIA server (ioBroker) will close the connection.
Configure your burglar system to send SIA messages
Lupusec XT1+/XT2/XT2+/XT3/XT4 (SIA-DCS):
Einstellungen -> Contact ID : ip:/subcriber@ip-address-iobroker:port/SIA
Example: ip://A111F@192.168.20.55:55001/SIA
Lupusec XT1+/XT2/XT2+/XT3/XT4 (*SIA-DCS) encrypted:
Einstellungen -> Contact ID : ip://subcriber@ip-address-iobroker:port/SIA/KEY/(128,196 or 256 bits key in HEX)
Example: ip://A222F@192.168.20.55:55001/SIA/KEY/3A1F6B8C9D4E7F20123456789ABCDEF0
Lupusec XT1+/XT2/XT2+/XT3/XT4 (ADM-CID):
Einstellungen -> Contact ID : ip://subcriber@ip-address-iobroker:port/SIA
Example: ip://A333F@192.168.20.55:55001/CID_SIA
Lupusec XT1+/XT2/XT2+/XT3/XT4 (*ADM-CID) encrypted:
Einstellungen -> Contact ID : ip://subcriber@ip-address-iobroker:port/CID_SIA/KEY/(128,196 or 256 bits key in HEX)
Example: ip://A444F@192.168.20.55:55001/SIA/KEY/3A1F6B8C9D4E7F20123456789ABCDEF0
Other alarm systems:
the Adapter will work with all alarm systems, which supports
the SIA-DCS, SIA-DCS, ADM-CID or ADM-CID
SIA Objects / States
If you receive SIA messages, you see them in the states tree under the chanel accounts
You see following object for every account:
| Object | Description |
| ——————- | ———————————————————————————- |
| accountnumber | Accountnumber (3-16 ASCII characters, “0”-“9”, “A”-“F”) |
| crc | CRC Checksum |
| extdata | Extended data(ACII Data) |
| id | ID Token (example SIA-DCS) |
| lpref | Account prefix |
| msgdata | Message data and it is always represented in ASCII |
| rpref | Receiver number |
| sequence | Sequence number |
| ts | Timestamp (only included in encrypted messages) |
Interessting is the object: msgdata (message data). Here you can see the thrown event of the alarm system. How to interpret the event, you have to ask your alarm system manufactor.
An example javascript in ioBroker to get an event:
// example message: A444F|1401 02 001
on({ id: 'sia.0.accounts.A444F.msgdata'/*A444F - Message Data*/ }, (obj) => {
if(obj.state.ack === true) {
const id = getState('sia.0.accounts.A444F.id'/*A444F - ID Token*/).val;
if(id === 'ADM-CID' || id === '*ADM-CID') {
const cid = parseMessage(obj.state.val);
console.log(`Contact ID Message ${JSON.stringify(cid)}`);
console.log(`Event: ${cid.event} for accountnumber ${cid.accountNumber}`);
}
}
});
Output:
Contact ID Message {"accountNumber":"A444F","qualifier":"1","event":"401","area":"02","zone":"001"}
Event: 401 for accountnumber A444F
Event 401 means “Remote Arm/Disarm, when the system is armed or disarmed by SMS message or web access”
Bugs / Issues
If you have problems processing SIA messages or you found a bug, please create an issue.
The issue should have following information:
Detailed description of the bug
After you have completed points 2 and 3, please change the AES key.
You can test the saved SIA message using the following command
# cat fileanme_of_sia_message | nc ip_address_of_iobroker sia_port
cat /tmp/sia/sia_msg_20250201_202457309.txt | nc localhost 55001
The MIT License (MIT)
Copyright (c) 2025 Thorsten thorsten@stueben.de
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the “Software”), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.