Implementación de SIP2 para el manejo de RFID en el Sistema ABCD – es

El protocolo SIP2 implementado en el sistema ABCD, administra las conexiones de dispositivos que ayudan en la automatización de procesos y que se comunican con SIP2 tales como equipos para autopréstamo, lectores a distancia, etc.

El módulo que contiene el protocolo establece múltiples conexiones entre el sistema ABCD (servidor SIP) y los dispositivos (clientes, una conexión por cada dispositivo) con el propósito de transferir los datos de manera estandarizada, para ello, se hace uso de protocolos ya establecidos como TCP/IP.

El módulo es independiente y puede soportar las actualizaciones del sistema ABCD con solo copiar la carpeta que lo contiene a la nueva versión de ABCD, sin embargo, existen ciertos valores y listados de datos que el protocolo requiere para su correcto funcionamiento, estos valores y listados tiene que estar presentes como partes de la base de datos sobre la que se trabajen los préstamos (ver: Parámetros necesarios en el sistema).

La información es intercambiada entre el servidor y los clientes mediante cadenas de caracteres que son llamados mensajes con un identificador único; cuando un mensaje es enviado desde el cliente hacia el servidor, es considerado como “solicitud” (request) y cuando el mensaje es enviado desde el servidor hacia el cliente, es considerado como “respuesta” (response). Siempre se inicia primero un request seguido de un response.

Mensajes desarrollados en el protocolo.

|==========================================================================================|
| *Pair* | *Name*              	| *Supported?*	| *Details*
|==========================================================================================|
| 01     | Block Patron        	| No		|
| 09-10  | Checkin             	| Yes		|
| 11-12  | Checkout            	| Yes		|
| 15-16  | Hold                	| No		|
| 17-18  | Item Information    	| Yes		|
| 19-20  | Item Status Update  	| Yes		|
| 23-24  | Patron Status       	| Yes		| 
| 25-26  | Patron Enable       	| No		|
| 29-30  | Renew               	| No		|
| 35-36  | End Session         	| Yes		|
| 37-38  | Fee Paid            	| No		|
| 63-64  | Patron Information  	| No		|
| 65-66  | Renew All           	| No		|
| 93-94  | Login               	| No		|
| 97-96  | Resend last message 	| Yes		|
| 99-98  | SC-ACS Status       	| Yes		| 
| CRC  	 | CRC control         	| Yes		| Se habilita en sip_config.php (Y/N)
| AY  	 | AY número de secuencia	| Yes		| Se habilita cuando CRC está habilitado en sip_config.php (Y/N)
| Param. | Configurables		| Yes		|
|==========================================================================================|

Desarrollo y Funcionamiento

  • El módulo que contiene el protocolo SIP2 está desarrollado en PHP.
  • Establece conexiones similares a las que se usan en telnet, cada conexión es un socket, el puerto que se usa para las conexiones es el 5060 por defecto.
  • El módulo se encuentra constantemente en escucha de nuevas conexiones.
  • Se ha creado un archivo de configuración que permite establecer varios de los parámetros y mensajes.

Estructura de archivos

El módulo SIP se encuentra presente en la siguiente ruta de archivos: \ABCD\www\htdocs\central\automation donde se encuentran las siguientes carpetas:

  • \images: contiene las imágenes utilizadas en la interfaz de administración del servidor.
  • \manuales: almacena los manuales oficiales del protocolo sip2 incluyendo la versión para desarrolladores.
  • \testers: un pequeño programa desarrollado en C que permite conectarse con el servidor y enviar cadenas de prueba que simulan a los equipos de autoservicio con SIP2.
  • log_sip.txt: log de conexiones de los dispositivos al servidor.
  • sip_config.php: archivo de configuración del protocolo.

Configuración y Administración

Para configurar el protocolo se debe editar el archivo: \ABCD\www\htdocs\central\automation\sip_config.php

El archivo contiene los siguientes parámetros:

  • $ip_sip_server: IP del equipo donde está instalado ABCD
  • $port_sip_server: puerto que acepta las conexiones de los equipos clientes
  • $max_clients: cantidad máxima de conexiones que admite el servidor
  • $enable_sip_log: parámetro que indica si está habilitado el log de conexiones de equipos al servidor
  • $checksum_CRC: indica si se realizarán comprobaciones CRC de los mensajes
  • $maxretry: cantidad de reintentos de envío de mensajes en caso de error.
  • $sip_timeout_sc: Se especifican con 3 caracteres que son en milisegundos. Si se especifica 999 no se tomará en cuenta el timeout en las respuestas de los clientes.
  • $retries_trasaction: cantidad de reintentos que se permiten para una transacción especificada en 3 caracteres. Si se ingresa 999 entonces la cantidad es desconocida.
  • $protocol_version: versión de protocolo SIP que se está usando en el Servidor SIP. (2.0 por defecto)
  • $sip_library_id: Id de la institución, se usa en el prefijo AO para el envío de mensajes.
  • $sip_library_name: prefijo AM [opcional], indica el nombre de la biblioteca (si no se usa entonces dejar: “”)
  • $sip_supported_messages: una de 16 caracteres de dos tipos: Y/N que indican si el mensaje está desarrollado en el módulo. NO ES NECESARIO MODIFICAR ESTE PARÁMETRO.
  • $sip_print_line: prefijo AG [optional] Indica el número de caracteres que alcanzan a ser impresos en una impresora en el cliente (si no se usa dejar: “”). Se da prioridad a lo indicado por el SC.
  • $sip_lenguaje: lenguaje para el usuario final. 001 es inglés, usamos 008 para español. (remitirse a guía oficial para ver el código del resto de idiomas)
  • $sip_SC_renewal_policy: parámetro que indica si la política de la institución permite renovaciones en el cliente (Y/N)
  • $BH: Tipo de moneda que se maneja, remitirse a la guía oficial para ver el código de idiomas, USD para Ecuador, siempre se especifican los 3 caracteres.
  • $path_mx: path de la ubicación de MX en la instalación en el servidor.
  • $campo_titulo: campo bajo el que se buscarán los títulos de un ítem
  • $campo_inventario: campo bajo el cual se encuentra el identificador de único de un item en la base
  • $campo_ubicacion: campo bajo el cual se encuentra la ubicación del item en la base
  • $campo_tipo_seguridad: Campo que indica en el sistema el tipo de suguridad dísica que tiene el ítem (agnético, RFID, etc.)

Para poner en ejecución el protocolo se deben seguir los siguientes pasos:

  1. Asegurarse de que el servidor WEB se encuentra en ejecución.
  2. Usar un explorador de internet para ingresar a: http://[localhost]/central/automation/admin_server.php

[localhost] -> especifica la IP o nombre de dominio de su servidor ABCD

  • Dar click en el icono:
  • esto permitirá iniciar la escucha de conexiones en el servidor.
  • Si se desea se puede cerrar el explorador.
  • Para parar la escucha, se debe dar click en el ícono:

Parámetros necesarios en el sistema

  • Se debe crear un tabla en la base suspensions and fines, en el campo 40 (Concepto), que define los campos que un cliente reconocerá en base a los códigos de la tabla de 3M para el tipo de multa. La tabla dicta: fee type BT 2-char, fixed-length field (01 thru 99). Enumerated type of fee, from the following table:

Value                    Fee Type

01                          other/unknown

02                          administrative

03                          damage

04                          overdue

05                          processing

06                          rental

07                          replacement

08                          computer access charge

09                          hold fee

  • Se ha considerado la creación de un v200 en la base de suspml para identificar cuando un cliente bloquea un usuario, se puede identificar los registros creados por el cliente automático mediante la consulta de este campo.
  • Se sugiere adicionar un campo en la base que indique el tipo de seguridad dísica que tienen los ítems, para este caso se parametriza el parámetro de configuración $campo_tipo_seguridad en sip_config.php.

Se puede referirse a la tabal de 3M:

  • security marker 2-char, fixed-length field (00 thru 99). Enumerated security marker type.
    • Value Security Marker Type
    • 00 other
    • 01 None
    • 02 3M Tattle-Tape Security Strip
    • 03 3M Whisper Tape

Ejemplos de mensajes: cadenas de caracteres

  • Example:
    • 11YN19960212 10051419960212 100514AO|AA104000000105|AB000000000005792|AC|AY3AZEDB7<CR>
  • Description of Example:
    • (11)(Renewals OK)(Not no block)(02/12/1996/10:05:14a.m.Local)(same date)(no id)(104000000105)(000000000005792)(no term password)(Sequence Number 3)(Checksum)(CR)
  • Example:
    • 120NNY19960212 100514AO|AA104000000105|AB000000000005792|AJ|AH|AFItem cannot be charged : seehelp desk|AGItem can not be charged : see help desk|AY3AZD2A1<CR>
  • Description of Example:
    • (12)(Not checked out)(Not a renewal)(Not magentic media)(Desensitize) (02/12/1996/10:05:14a.m.Local) (noinstitution id)(104000000105)(000000000005792)(no title)(no due date)(screen message)(print message)(Sequence #3)(Checksum)(CR)

Consideraciones de seguridad

Se debe tomar en cuenta que las conexiones al puerto SIP del servidor, pueden permitir también conexiones de equipos externos usando telnet, esto debe ser manejado desde el firewall de un servidor o con seguridades necesarias desde la configuración de la red. Adicionalmente, es importante indicar en el archivo de configuración (sip_config.php), la cantidad exacta de equipos clientes que se conectarán en el parámetro $max_clients y usarlos, de esta manera no quedan disponibles las conexiones al servidor.

Bibliografía que se pueden considerar:

http://es.wikipedia.org/wiki/Session_Initiation_Protocol

http://unllib.unl.edu/LPP/shahid.htm

http://csited.org/2007/44KumaCSITE.pdf

http://php.net/manual/es/sockets.installation.php

http://www.elifulkerson.com/projects/librarystuff.php

http://www.bibliowiki-rfid.de/wp-content/uploads/2014/03/liber8-SIP2-requirements.pdf

http://www.niso.org/apps/group_public/download.php/10500/Strawman%20Document%2039.pdf

Tags:

Leave a Reply

Your email address will not be published. Required fields are marked *