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

  1. Se establece una conexión por socket TCP con la estación de monitoreo.
  2. Se trasmite el mensaje de evento o supervisión.
  3. Se espera por el mensaje de respuesta de la estación de monitoreo. (ACK/NACK/DUH o timeout).
  4. 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.