Implementación Protocol SIA-DC09 - 2021
Alcance
En este apartado se desarrolla la implementación del protocolo SIA-DC09 para la comunicación entre el panel Kümmert K1 y el servidor de Monitoreo.
Referencias
-
DC03 - Digital Communication Standard - "SIA Format" Protocol for Alarm System Communications
-
DC07 - SIA Digital Communications Standards - Receiver to Computer Interface Protocol
-
DC09 - SIA Digital Communications Standards - Event Reporting to Monitoring Stations
Objetivo
El objetivo de este documento es describir la implementación realizada en el panel k1 del protocolo SIA-DC09 - 2021 para el reporte de eventos a estaciones de monitoreo de modo que cualquier empresa de monitoreo pueda interpretar los eventos reportados por el panel y hacer el mejor uso posible de la información adicional que se envía en el mensaje.
Implementación
Tipo de Communicación
El panel K1 se comunica con la estación de monitoreo a través del protocolo TCP
Marking code: "SIA IP Reporting (TCP-2021)"
Estación de Monitoreo
Requermientos de la estación de monitoreo
La estación de monitoreo debe tener IP pública estática o una dirección DNS para que el panel K1 pueda conectarse a ella.
Secuencia de la Communicación
- Se establece una conexión por socket TCP con la estación de monitoreo.
- Se trasmite el mensaje de evento o supervisión.
- Se espera por el mensaje de respuesta de la estación de monitoreo. (ACK/NACK/DUH o timeout).
- Cierre de la conexión.
El panel intentará transmitir el evento primero por la vía principal (WiFi si está configurada y en servicio) a la dirección del servidor principal de monitoreo (IP/DNS PRINCIPAL:PORT PRINCIPAL). Ver Configuración en la plataforma Hellgrün Connect
Si no recibe respuesta lo hará a la dirección del servidor de respaldo (IP/DNS BACKUP:PORT BACKUP). Ver Configuración en la plataforma Hellgrün Connect
Si no puede por WiFi reintentará por la vía de comunicación secundaria (4G LTE si está configurada y en servicio) a la dirección del servidor principal en primer instancia y luego a la dirección del servidor de respaldo.
Encriptación del mensaje
El panel K1 no implementa encriptación de mensajes. Esta funcionalidad se implementará en versiones futuras.
Formato del mensaje
Mensajes de Eventos
Los mensajes de eventos tienen el siguiente formato:
<LF><crc><0LLL><"id"><seq><Rrcvr><Lpref><#acct>[#acct|...data...][x…data…]<CR>
Donde:
-
<LF>
= Caracter de inicio de línea (0x0A) -
<crc>
= Código de verificación de integridad del paquete (4 dígitos) -
<0LLL>
= Longitud del mensaje (4 dígitos) -
<"id">
= Identificador del formato del mensaje contenido en "data". El panel K1 utiliza el identificador "SIA-DCS". -
<seq>
= Número de secuencia del mensaje (4 dígitos). La recpetora de monitoreo debe incluir el número de secuencia en el mensaje de respuesta. -
<Rrcvr>
= Es opcional. Consiste del caracter "R" seguido de un número de 1 a 6 dígitos hexadecimales que identifica el receptor de la alarma. El panel K1 no utiliza este campo. -
<Lpref>
= Consiste del caracter "L" seguido de un número de 1 a 6 dígitos hexadecimales que identifica el prefijo de la alarma. Si este campo no es utilizado el panel K1 tramiste "L0". -
<#acct>
= Número de cuenta de la alarma. Se envía el caracter "#" seguido del valor hexadecimal del número de cuenta. Puede ser de entre 3 y 16 dígitos. Este campo se envía también, dentro de la estructura de datos. -
[...data...]
= Datos que contiene la información del evento generado por el panel. Ver Estructura del campo Data -
[x...data...]
= Datos que contiene información adicional sobre el evento. Puede haber más de un bloque de este tipo. Ver Bloque de datos adicionales. -
<CR>
= Caracter de fin de línea (0x0D)
Ejemplo de un mensaje de evento:
<0x0A>99630069"SIA-DCS"0002L0#9999[#9999|Nri1/BA004][ME0E2E67D48F4][I (Z#04). Particion 1. Tipo: PERIMETRO INSTANTANEO]<0x0D>
Donde <0x0A>
y <0x0D>
son los caracteres de inicio y fin de línea respectivamente. Dado que son caracteres no imprimibles, se muestran en hexadecimal entre "<" y ">".
<crc>
= 9963<0LLL>
= 0069<"id">
= "SIA-DCS"<seq>
= 0002<Lpref>
= L0<#acct>
= #9999[data]
= [#9999|Nri1/BA004][x…data…]
= [ME0E2E67D48F4][x…data…]
= [I (Z#04). Particion 1. Tipo: PERIMETRO INSTANTANEO]
Estructura del campo [data]
Acorde a lo establecido en el estandar SIA-DC07, en el campo <"id">
se identifica el formato en el que la información contenida en este campo es presentada. En este caso el panel K1 utiliza el identificador "SIA-DCS".
El formato de la información contenida en este campo se define en el estándar SIA-DC03. Ver estándar SIA-DC03 Digital Communication Standard - "SIA Format" Protocol for Alarm System Communications, apartado 5.
Todos los datos dentro de este campo son caracteres ASCII. La primer información que se envía es el número de cuenta de la alarma precedido por el caracter ascii "#" y seguido del caracter "|". El número de cuenta puede ser de entre 3 y 16 dígitos y se representa en formato hexadecimal.
Ejemplo: desarrollemos la trama de evento anterior donde el número de cuenta es 9999.
La trama hasta lo aquí explicado es: [#9999|
Código de bloque
Seguido al [#9999|
se pueden presentar diferentes tipos de paquetes de datos. En el caso de un evento, el tipo de paquete de datos es "N" (New event). Este es el primer caracter luego del número de cuenta y el caracter "|".
Completando el ejemplo, la trama hasta acá se compone de la siguiente manera: ...[#9999|N
El panel K1 sólo envía eventos, por lo que el único código de bloque que usa es "N". Puede a futuro incluirse otros identificadores en nuevas versiones. Éstos se definen en el estándar SIA-DC03, en la tabla 1 del apartado 5.2.1.
Modificadores de Paquetes
Esta información es opcional. Cuando está presente, actúa como un descriptor del paquete que le sigue. El modificador se compone de dos caracteres en minúsculas y hay de varios tipos. El panel K1 utiliza sólo dos de ellos: "ri" y "id". En el caso del ejemplo se desarrolla el modificador "ri".
-
ri
: Este modificador indica el área o partición donde se generó el evento. Va seguido de hasta 4 dígitos decimales que representa el número de la partición. Ejemplo de partición 1:ri1
. -
id
: Este modificador identifica el usuario que realiza o genera el evento. Va seguido de hasta 4 dígitos decimales que representa el número de la cuenta. Ejemplo de usuario 10:id10
.
Siguiendo con el ejemplo, se tiene: [#9999|Nri1
Separador
Si la trama contiene un modificador de paquete y además el bloque de datos contiene un número de dirección asociado al "Tipo de Paquete" que se explica más abajo, entonces el panel K1 inserta un separador para subdividir el paquetes de datos que componen el mensaje, caso contrario, no lo hace. Este separador es el caracter "/".
Continuando con el desarrollo del ejemplo tenemos: [#9999|Nri1/
Bloque de datos
Luego, cada paquete está compuesta por tres campos básicos: "tipo de paquete", "dirección" y "unidad". Sólamente el campo "tipo" es obligatorio.
- Tipo de Paquete: Es una secuencia de 2 caracteres, que van desde la "A" hasta la "Z". Sólo mayúsculas.
Para el ejemplo en desarrollo, el tipo de paquete es "BA". Completando la trama tenemos: [#9999|Nri1/BA
- Dirección: Es opcional y relativo al Tipo de paquete. Es la representación en ASCII de un número de 1 a 4 dígitos hexadecimales (0000 - FFFF). Este parámetro puede hacer referencia a diferentes cosas, dependiendo del tipo de paquete. Puede ser relativo al número de zona, al número de usuario, un número de puerta, una condición, etcétera. Incluso hay tipos de paquetes que no utilizan este parámetro. Para entender mejor este concepto, se recomienda leer el estándar SIA-DC03, la tabla A.2 del Anexo A.
Para el ejemplo en desarrollo, la dirección es "004". Completando la trama tenemos: [#9999|Nri1/BA004
- Unidad: Contiene información acerca de la magnitud relativo al tipo de evento. El panel K1 no envía este campo.
Finalmente para completar el ejemplo, la trama del evento en desarrollo resultante es: [#9999|Nri1/BA004]
Bloque de datos adicionales [x...data....]
Este tipo de bloques contiene información adicional del tipo descriptivo. Pueden concatenarse varios bloques de este tipo. El panel K1 envía un bloque adicional por defecto, que representa su número de MAC. Adicionalmente, puede enviar otros bloques adicionales con información que puede resultar de mucha utilidad para el operador de monitoreo.
Esta extensión se realiza según lo establecido en el estándar SIA-DC09 Digital Communication Standard - "SIA Format" Protocol for Alarm System Communications, específicamente el apartado 5.5.1.8.
Cada bloque adicional posee un caracter de identificación al inicio. Hasta la versión actual, el panel K1 utiliza los siguientes identificadores:
- "M" para el número de MAC. En el ejemplo en desarrollo, el número de MAC del panel es E0:E2:E6:7D:48:F4.
Por lo que el bloque adicional resultante es: [ME0E2E67D48F4]
- "I" para la información adicional que el panel genera según los datos contenidos en su memoria (puede incluir información de usuarios y zonas).
Siguiendo el desarrollo del ejemplo, el panel K1 envía el siguiente bloque adicional de información: [I (Z#04). Particion 1. Tipo: PERIMETRO INSTANTANEO]
Como puede observarse, el panel informa el número de zona, la partición y cómo está configurada, en este caso, como una zona de tipo "PERIMETRO INSTANTANEO". Información sumamente valiosa puede ser incluida en este bloque adicional, por lo que se recomienda su lectura. Por ejemplo, en el caso de un evento que se genere por un usuario, el panel puede enviar información como el nombre de usuario, número de celular, etcétera. En el caso de un evento relativo a dispositivos inalámbricos, éste informará el número de serie del dispositivo, el tipo de dispositivo, etcétera.
Lo más importante para resaltar aquí es que esta información es generada dinámicamente por el panel con los datos almacenados en él. Por lo que siempre es la información "REAL", ya que es común que suceda que la información que se encuentra almacenada en la base de datos de la estación de monitoreo y que es la única con la que cuenta el operador de monitoreo, no esté actualizada.
- "V" para enviar una URL para videoverificación u otro efecto. En el ejemplo desarrollado, no se envía ningún bloque adicional de este tipo, pero pueden ser incluidos para otros eventos.
Eventos generados por el panel K1.
Se recomienda ver la tabla A.2 del Anexo A del estándar SIA-DC03 Digital Communication Standard - "SIA Format" Protocol for Alarm System Communications, para conocer los tipos de eventos que el panel K1 genera para una mejor interpretación.
Para explicar la lógica de la generación de los eventos, podemos dividir los eventos en cuatro grupos: eventos de sistema, eventos generados por usuarios, eventos de zonas y eventos de emergencias.
-
Eventos de sistema: Son eventos que se generan automáticamente a partir de un cambio en la condición de trabajo del panel. Este puede ser, un corte de energía eléctrica, un evento de batería baja, problemas de comunicación, etcétera.
-
Eventos generados por usuarios: Son eventos que se generan a partir de la interacción de un usuario con el panel. Por ejemplo, un usuario puede activar o desactivar una particiòn.
-
Eventos de zonas: Son eventos que se generan a partir del estado de una zona. Por ejemplo, disparo, restablecimiento, trouble, etcétera.
-
Eventos de emergencias: Estos eventos se subdividen en 3 tipos: Emergencia Médica, Asalto e Incendio. Sin embargo, el panel K1 diferencia a su vez el origen del evento, ya que puede ser generado por un usuario, por una zona o desde el teclado.
Eventos de sistema
Los eventos de sistema generados por el panel K1 son los siguientes:
TIPO | DIRECCIÓN | Descripción del Tipo de Evento | Ejemplo |
---|---|---|---|
YT | - | Batería del panel baja | D39E0043"SIA-DCS"0003L0#9999[#9999|Nri1YT][ME0E2E67D48F4][IBateria baja - ] |
YR | - | Batería del panel reestablecida | 1F6E004C"SIA-DCS"0005L0#1414[#1414|Nri1YR][ME0E2E67834FC][IBateria reestablecida - ] |
AT | - | Falla Energía Eléctrica (AC) | A586003F"SIA-DCS"0002L0#1111[#1111|Nri1AT][ME0E2E67D4924][IFalla AC - ] |
AR | - | Restablecimiento de Energía Eléctrica (AC) | EA6C0048"SIA-DCS"0002L0#1414[#1414|Nri1AR][ME0E2E67834FC][IAC reestableccido - ] |
TX | - | Test periódico | 764B0045"SIA-DCS"0025L0#1414[#1414|Nri1TX][ME0E2E67834FC][ITest periodico - ] |
YH | - | Apagado de Sirena | C28A0045"SIA-DCS"0008L0#9999[#9999|Nri1YH][ME0E2E67D48F4][ISirena apagada - ] |
JD | - | Hora sincronizada | A53F0048"SIA-DCS"0004L0#9999[#9999|Nri1JD][ME0E2E67D48F4][IHora sincronizada - ] |
RR | - | Panel encendido | 01E30046"SIA-DCS"0001L0#1111[#1111|Nri1RR][ME0E2E67D4924][IPanel encendido - ] |
LB | - | Ingreso a modo programacion | FBF90052"SIA-DCS"0003L0#1111[#1111|Nri1LB][ME0E2E67D4924][IIngreso a modo programacion - ] |
LX | - | Salida de modo programacion | 9A160052"SIA-DCS"0005L0#1111[#1111|Nri1LX][ME0E2E67D4924][ISalida de modo programacion - ] |
Los eventos de ejemplo fueron generados con números de cuentas y particiones ficticias.
El panel K1 generará eventos de sistema en todas las particiones activas siempre que éstas posean diferentes números de cuenta.
Para ejemplificar, supongamos la siguiente situación:
Tres particiones activas con los siguientes números de cuenta:
Partición 1: 9999 Partición 2: 9998 Partición 3: 9998
El panel K1 reportará el evento de corte de energía eléctrica en la particiones 1 y 2 solamente. No reporatará para la partición 3 dado que posee el mismo número de cuenta que la partición 2.
Eventos generados por usuarios
TIPO | DIRECCIÓN | DESCRIPCIÓN DEL EVENTO | EJEMPLO |
---|---|---|---|
CL | Usuario | Armado | xxxx0076"SIA-DCS"0019L0#9999[#9999|Nri1/CL028][ME0E2E67D48F4][IUsuario #40 Particion 1- Guillermo Leiva - Celular: 1234567890] |
CS | - | Armado especial. Con Control remoto | xxxx0035"SIA-DCS"0023L0#9999[#9999|Nri1/CS000][ME0E2E67D48F4] |
CG | Usuario | Armado parcial | xxxx0031"SIA-DCS"0038L0#9999[#9999|Nri1CG][ME0E2E67D48F4] |
OP | Usuario | Desarmado | xxxx0076"SIA-DCS"0019L0#9999[#9999|Nri1/OP028][ME0E2E67D48F4][IUsuario #40 Particion 1- Guillermo Leiva - Celular: 1234567890] |
OS | - | Desarmado especial. Con control remoto | xxxx0035"SIA-DCS"0024L0#9999[#9999|Nri1/OS000][ME0E2E67D48F4] |
OC | Usuario | Cancelación de Evento | xxxx008B"SIA-DCS"0033L0#9999[#9999|Nri1/OC028][ME0E2E67D48F4][ICancelacion Evento - Usuario #40 Particion 1- Guillermo Leiva - Celular: 1234567890] |
JY | Usuario | Nuevo usuario de alarma | xxxx0081"SIA-DCS"0044L0#9999[#9999|Nri1/JY002][ME0E2E67D48F4][INuevo usuario de alarma - Usuario #02 Particion 1- - Celular: 1234567890] |
JV | Usuario | Edición de Datos de Usuario | xxxx0091"SIA-DCS"0045L0#9999[#9999|Nri1/JV002][ME0E2E67D48F4][IEdicion de datos de usario - Usuario #02 Particion 1- Pedro Cossoli - Celular: 1234567890] |
JZ | Usuario | Cambio de Privilegios de Usuario | xxxx008A"SIA-DCS"0047L0#9999[#9999|Nri1/JZ002][ME0E2E67D48F4][IUsuario sin permiso - Usuario #02 Particion 1- Pedro Cossoli - Celular: 1234567890] |
JX | Usuario | Eliminación de Usuario | xxxx008A"SIA-DCS"0047L0#9999[#9999|Nri1/JX002][ME0E2E67D48F4][IUsuario Eliminado - Usuario #02 Particion 1] |
MI | Usuario | Mensaje ingresado por el usuario desde la App Hellgrün Check | xxxx005D"SIA-DCS"0047L0#9999[#9999|Nri1/MI002][IMensaje de Usuario - Me encuentro fuera de la ciudad] |
Los eventos de ejemplo fueron generados con números de cuentas y particiones ficticias. También el número de celular utilizado es ficticio, por ello se valor del CRC se representa en la tabla con "xxxx".
Eventos de Zonas
TIPO | DIRECCIÓN | DESCRIPCIÓN DEL EVENTO | EJEMPLO |
---|---|---|---|
BA | Zona | Disparo de zona | 1DA4006F"SIA-DCS"0053L0#9999[#9999|Nri1/BA002][ME0E2E67D48F4][IZona 2 (Z#02). Particion 1. Tipo: PERIMETRO INSTANTANEO] |
BH | Zona | Reestablecimiento de zona | 285F006F"SIA-DCS"0054L0#9999[#9999|Nri1/BH002][ME0E2E67D48F4][IZona 2 (Z#02). Particion 1. Tipo: PERIMETRO INSTANTANEO] |
XT | Sensor | Batería baja del sensor | 4B25007E"SIA-DCS"0005L0#9999[#9999|Nri1/XT001][ME0E2E67D48F4][ISensor con bateria baja - #1 - Tipo: PIR, MAC: 9E:1E:E0:22:00:4B:12:00] |
XR | Sensor | Batería del sensor restablecida | AE720086"SIA-DCS"0004L0#9999[#9999|Nri1/XR001][ME0E2E67D48F4][IBateria de sensor reestablecido - #1 - Tipo: PIR, MAC: 9E:1E:E0:22:00:4B:12:00] |
BT | Sensor | Pérdida de comunicación del sensor | 2FDD0089"SIA-DCS"0006L0#9999[#9999|Nri1/BT001][ME0E2E67D48F4][IPerdida de comunicacion con sensor - #1 - Tipo: PIR, MAC: 9E:1E:E0:22:00:4B:12:00] |
BJ | Sensor | Comunicación del sensor restablecida | 79FE008C"SIA-DCS"0005L0#9999[#9999|Nri1/BJ001][ME0E2E67D48F4][IComunicacion del sensor reestablecida - #1 - Tipo: PIR, MAC: 9E:1E:E0:22:00:4B:12:00] |
BB | Zona | Zona excluida | 9915006F"SIA-DCS"0060L0#9999[#9999|Nri1/BB005][ME0E2E67D48F4][ILiving (Z#05). Particion 1. Tipo: PERIMETRO INSTANTANEO] |
BU | Zona | Reestablecimiento de exclusión de zona | EF4C006F"SIA-DCS"0061L0#9999[#9999|Nri1/BU005][ME0E2E67D48F4][ILiving (Z#05). Particion 1. Tipo: PERIMETRO INSTANTANEO] |
Eventos de Emergencia
TIPO | DIRECCIÓN | DESCRIPCIÓN DEL EVENTO | EJEMPLO |
---|---|---|---|
MA | Zona | Emergencia Médica generado por pulsador conectado a una zona | CBB90084"SIA-DCS"0018L0#9999[#9999|Nri1/MA002][ME0E2E67D48F4][IEmergencia medica - Zona 2 (Z#02). Particion 1. Tipo: PULSADOR EMERG. MEDICA] |
MA | 0 | Emergencia Médica generado desde el teclado | B868004C"SIA-DCS"0021L0#9999[#9999|Nri1/MA000][ME0E2E67D48F4][IEmergencia medica - ] |
MA | - | Emergencia Médica generado desde la APP Hellgrün Check | xxxx0090"SIA-DCS"0022L0#9999[#9999|Nri1MA][ME0E2E67D48F4][IEmergencia medica desde APP - Usuario #40 Particion 1- Guillermo Leiva - Celular: 1234567890] |
PA | Zona | Asalto generado por pulsador conectado a una zona | 2032007C"SIA-DCS"0030L0#9999[#9999|Nri1/PA002][ME0E2E67D48F4][IAlarma de asalto - Zona 2 (Z#02). Particion 1. Tipo: PULSADOR ASALTO] |
PA | 0 | Asalto generado desde el teclado | C44D004B"SIA-DCS"0033L0#9999[#9999|Nri1/PA000][ME0E2E67D48F4][IAlarma de asalto - ] |
PA | - | Asalto generado desde la APP Hellgrün Check | xxxx008F"SIA-DCS"0032L0#9999[#9999|Nri1PA][ME0E2E67D48F4][IAlarma de asalto desde APP - Usuario #40 Particion 1- Guillermo Leiva - Celular: 1234567890] |
FA | Zona | Incendio generado por sensor conectado a una zona | 089A007B"SIA-DCS"0039L0#9999[#9999|Nri1/FA002][ME0E2E67D48F4][IAlarma de Fuego - Zona 2 (Z#02). Particion 1. Tipo: SENSOR INCENDIO] |
FA | 0 | Incendio generado desde el teclado | 6A17004A"SIA-DCS"0041L0#9999[#9999|Nri1/FA000][ME0E2E67D48F4][IAlarma de Fuego - ] |
FA | - | Incendio generado desde la APP Hellgrün Check | xxxx008B"SIA-DCS"0044L0#9999[#9999|Nri1/OC028][ME0E2E67D48F4][ICancelacion Evento - Usuario #40 Particion 1- Guillermo Leiva - Celular: 1234567890] |
Descarga
En el siguiente link podrá descargar un archivo de todos los ejemplos de eventos utilizados en este documento en formato excel.