Ir al contenido principal

Para desarrolladores - Recibir eventos mediante protocolo CSV-IP

Xavier Guereque avatar
Escrito por Xavier Guereque
Actualizado esta semana

CSV-IP es un protocolo de comunicación utilizado por paneles de alarma (como el Hikvision AX PRO) para enviar eventos a una Central Receptora de Alarmas (CRA) a través de TCP/IP.

Funciona enviando los datos de eventos en formato de texto plano separado por comas (CSV), donde cada mensaje contiene credenciales opcionales de autenticación, un código de cuenta y un dato Contact ID (CID) de 11 caracteres que describe el evento ocurrido (tipo de alarma, partición, zona o usuario involucrado).

Es una variante simplificada del protocolo Ademco Contact ID adaptada para transmisión sobre redes IP.

Protocolo CSV-IP

El panel envía una cadena de texto CSV por TCP con el siguiente formato:

usuario,contraseña,código_cuenta,dato_CID

Cada campo separado por comas:

  • usuario: nombre de usuario (vacío si autenticación deshabilitada)

  • contraseña: contraseña (vacío si autenticación deshabilitada)

  • código_cuenta: código de cuenta configurado en el panel (ej: "1234")

  • dato_CID: cadena Contact ID de 11 caracteres

Estructura del dato_CID (11 caracteres):

Ejemplo real del panel:

,,1234,18160200000 → Cuenta 1234, test periódico, sin autenticación

Configuración

Para configurar CSV-IP es necesario configurar lo siguiente:

Donde:

  • Dirección del servidor: Dirección hacia donde el panel enviará las alarmas.

  • Puerto: Puerto de escucha de los eventos en el servidor

  • Código de cuenta: Identificador único del panel de alarma.

Demostración

Para probar la recepción de los eventos mediante TCP, podemos utilizar el sigueinte demo:

Para utilizarlo, previamente debemos tener instalado python. Para iniciarlo debemos ejecutar el siguiente comando dentro del proyecto:

python receptor_csvip.py

Inmediatemente mostrará la siguiente ventana:

Esto nos indica que nuestra pc está en modo escucha, al generar un evento, el demo mostrará la información:

¿Ha quedado contestada tu pregunta?