Especificación del protocolo sobre TCP para envió de data georeferenciada de vehículos de transporte Preparado por: Ivan Ticona Fecha: 03-08-2011 1
Contenido Definición del protocolo... 3 1. Objetivo... 3 2. Alcance... 3 3. Terminología... 3 4. Convenciones... 3 5. Especificación... 3 5.1. Generalidades... 3 5.2. Autentificación... 4 5.3. Paquete de información... 4 5.3.1. Trama... 5 5.3.2. Finalizador de paquete... 5 5.4. Mensaje de confirmación... 5 6. Sesión de Ejemplo:... 6 2
Definición del protocolo 1. Objetivo Establecer y mantener un canal de comunicación permanente entre las diferentes empresas involucradas y el centro principal donde residirá la información. 2. Alcance Este Protocolo permite la transferencia de data georeferenciada de unidades de transporte identificadas con un código de matricula el cual se supone único en el ámbito operacional de este servicio. Se aplica este protocolo sobre una Ip pública y puerto designados por el centro de control. El protocolo definido en este documento es el único medio oficial aceptado de enviar información al servidor. 3. Terminología TCP/IP: Protocolo de comunicaciones de alto nivel, provee confiabilidad de llegada de datos. ASCII: Codificación de caracteres tradicional en la que cada carácter tiene asignado un código representable mediante un byte. Servidor: Para este documento servidor se refiere al software y servicio que este representa sobre el cual el cliente debe establece sesiones según las reglas aquí descritas. Cliente: Para este documento cliente se refiere al software que implemente la interfaz aquí definida de manera que pueda enviar datos hacia el servidor. 4. Convenciones Los caracteres que aparecen en color naranja: son enviados desde el cliente al servidor Los caracteres que aparecen en color verde: son enviados desde el servidor al cliente Los caracteres que aparecen MAYÚSCULA separados por guiones: representan un tag o identificador que debe ser reemplazados por la cadena adecuada para el momento de transmisión según se indique. En MAYUSCULA CURSIVA se indican partes opcionales de protocolo. 5. Especificación 5.1. Generalidades El protocolo tiene un carácter pasivo. Recibe información y solo envía paquetes como respuesta al comportamiento y datos enviados por el cliente. Todas las transmisiones de cadenas de texto serán enviadas con codificación ASCII sobre TCP a menos que se indique explícitamente lo contrario. Todos los paquetes de información tanto del cliente como del servidor son envueltos entre los caracteres < y > 3
5.2. Autentificación Obligatoriamente al inicio de cada sesión se transmitirá tramas de autentificación, mediante estas es que el servidor determina cual es el origen de los datos y puede salvaguardar dicha correspondencia en caso se haga necesaria en su revisión posterior. La lo siguiente muestra la autentificación típica, notese que el cliente inicia la comunicación. <NOMBRE_DE_EMPRESA_DE_MONITOREO;EMAIL> <getid> <VERIFICADOR><MARCADOR_TIEMPO1;MARCADOR_TIEMPO2> En donde: NOMBRE_DE_EMPRESA_DE_MONITOREO, es un nombre elegido por la empresa para transmitir la información, es el equivalente de un usuario en una sesión de login, con la diferencia que no se restringe el identificador y es escogido a criterio del cliente, recomendamos un nombre corto pero descriptivo de su empresa o u su pagina web. Ejemplo: <SuperTrackerCompany> EMAIL es un identificador opcional que representa un email de contacto en caso sea necesario comunicarse con la entidad del lado cliente. Ejemplo: <micorreo@gmail.com> VERIFICADOR : Es análogo en funcionalidad a un password, si no se ha definido un patrón de seguridad este deberá ser llenado simplemente con la IP publica de origen de la información para que esta pueda ser validada a aquella aceptada por el servidor. Ejemplo: <200.192.194.198> MARCADOR_TIEMPO1 es un tag de tiempo en el formato YYYY-MM-DD HH:MM:SS, el tiempo a ser enviado corresponde a un minuto antes de recibir el tag Verificador por el servidor Ejemplo: 2011-03-18 00:00:01 MARCADOR_TIEMPO1 es un tag de tiempo en el formato YYYY-MM-DD HH:MM:SS, el tiempo ser enviado es aproximado al momento que se recibió el tag verificador Ejemplo: 2011-03-18 00:01:00 5.3. Paquete de información Una vez hecha la parte de autentificación se inicia un bucle continuo se paquetes de información, en caso la información sea interrumpida debe iniciarse desde la autentificación. El paquete de información es un conjunto de tramas. Finalizado por un identificador de fin de paquete. 4
5.3.1. Trama Es la unidad básica de información para este protocolo y se define de la siguiente forma: <PLACA;LONGITUD;LATITUD;RUMBO;VELOCIDA;FECHA;EVENTO> PLACA: en caracteres alfanuméricos (con o sin guiones o espacios) LONGUITUD Y LATITUD, en formato decimal como grados sexagesimales (las coordenadas en Perú son negativas) RUMBO: de 0 a 360 grados decimales representa la dirección del vehiculo, en caso no poseer este dato recomendamos colocar siempre -1. VELOCIDAD: Como decimal que representa kilómetros por hora FECHA en formato yyyy-mm-dd HH:mm:ss PANICO: el carácter P en caso esto represente un botón de pánico, alerta SOS únicamente. Cualquier otro contenido se interpresa como un mensaje de posición cotidiano, recomendamos llenar con N dichos mensajes. Ejemplo: <AB1234;-72.123456;-15.4321;10;50;2010-04-01 02:24:00;P> 5.3.2. Finalizador de paquete Es un identificador que indica que se ha terminado de enviar los mensajes para este paquete. <#NRO_DE_TRAMAS><FECHA1;FECHA2> NRO_DE_TRAMAS: debería indicar el numero de tramas que se envió en este paquete. Ejemplo: <#13> NOTA: El paquete de identificadores de Fechas FECHA1;FECHA2 análogos a los enviados inmediatamente después del paquete de autentificación, solo se enviara en caso que el cliente no inicie la transmisión de un nuevo paquete en un lapso de tiempo determinado por el servidor. (por defecto es un minuto) 5.4. Mensaje de confirmación Se envía luego de recibir un batch de datos y el formato es el siguiente: <ACK;PLACA HORA MSG;... > PLACA : es la placa que se ha transmitido ( caracteres especiales como '-' removidos) HORA: es la hora del mensaje enviado (en formato HHMMSS) en caso que la fecha no cumpla con el formato se retornara la cadena tal como se envió Msg : es un mensaje opcional descriptivo de un error de formato/datos detectado por el servidor para ser capturado y resuelto por el cliente, Ejemplo si la placa es invalida o no registrada se devuelve el mensaje: ErrPlaca, todos estos mensajes iniciarian por Err, podrían los mensajes de error son escalables pues podrían añadirse mas en el futuro hasta la fecha se calculan los siguientes mensajes: 5
ErrPlac: La placa no esta registrada/vigente según los registros del servidor ErrLat: La latitud enviada no esta dentro de los rangos permisibles para la aplicación. ErrLon: La longitud esta fuera de rangos permisibles. ErrDir: La dirección esta fuera de 0 a 360 ErrFec: La fecha no cumple con el formato YYYY-MM-DD HH:MM:SS 6. Sesión de Ejemplo: <UCR> <getid> <190.236.166.122> <2011-01-11 11:55:06;2011-01-11 11:56:06> <AB1234;-70.123;-18.564;220;45;2011-01-11 11:00:00;N> <AB1234;-70.123;-18.564;220;45;2011-01-11 11:01:00;P> <AB1234;-70.123;-18.564;220;45;11-01-11 110000;N> <#3> <ACK;AB1234 110000;AB1234 110100;AB1234;11-01-11 110000 ErrFec> <AB1234;-70.123;-18.564;220;45;2011-01-11 11:05:00;N> 6