220 likes | 389 Views
Centro de Control y Monitoreo de Flotas Control Total Perú - 2009. Definición del problema planteado. Descripción y justificación de la solución propuesta. Puesta en marcha del cliente. Requerimiento: Monitorear todas las unidades de transporte de pasajeros a nivel nacional.
E N D
Centro de Control y Monitoreo de Flotas Control Total Perú - 2009
Definición del problema planteado. • Descripción y justificación de la solución propuesta. • Puesta en marcha del cliente.
Requerimiento: Monitorear todas las unidades de transporte de pasajeros a nivel nacional. • Obtener datos de las Empresas de Monitoreo Vehicular (EMV), sin importar cual sea su BD. • Conexión permanente y segura con las EMV. • Informar al MTC los eventos de: • Botón de pánico. • Exceso de velocidad. • Desvíos de ruta. • Paradas no autorizadas.
Se obtendrán datos de las EMV, mediante archivos XML, que actuarán como puente entre nuestras Bases de Datos. • Uso de protocolo TCP como protocolo de comunicación, por ser rápido y confiable. • Manejo de dos tipos de conexiones: • Mensajes de comunicación de posicionamiento. • Mensajes de eventos botón de pánico.
FolderMsg N20090515120514.xml N20090515120515.xml Aplicación Cliente de Comunicaciones Lectura TCP N20090515120514.xml N20090515120515.xml CCMF Folder de Eventos (Botón de Pánico) Renombramiento Internet
Se emplea un lenguaje multiplataforma Java 1.6, este es capaz de ejecutarse en Windows y Linux. • Se provee una aplicación con interfaz intuitiva que permitirá ejecutarlo y minimizarlo a un icono en la barra de tareas. • La generación del XML será hecha por las EMV, esto no representa un gran esfuerzo, es una tarea soportada por todos los gestores de Base de Datos, para esto cuenta con nuestra guía. • Proveemos ejemplos de como hacer esto en SQL Server 2005 y Oracle.
¿Por qué archivos XML? Estructura flexible, herramientas de conversión ampliamente disponibles, transparencia del origen de datos. • ¿Por qué Java? Entorno multiplataforma, el lenguaje más utilizado mundialmente. • ¿Por qué TCP? Comunicación eficiente, rápida y confiable. • ¿Por qué nombrar los XML con la fecha de generación? Dependemos de los caracteres iniciales del archivo para detectar que es un reporte, al terminar el envío o si la comunicación se interrumpe la información histórica continuara en la carpeta almacén.
¿Por qué mensajes y folders distintos? Minimizar el retraso, posibilidades de configuración. • Procesar todas las unidades a nivel nacional tardará tiempo, los mensajes de botón de pánico se pueden generar con mayor frecuencia y darles procesamiento prioritario.
<REPORTE> • <TRAMAPLACA="EH2596" LONGITUD="-11.98226100" LATITUD="-77.06536100" RUMBO="171" VELOCIDAD="44" FECCOMUN="2009-06-08T19:33:53.483"/> • </REPORTE> • Estos datos son los mínimos necesarios para obtener lo requerido por nuestro sistema. • De no tener el rumbo mandarlo como -1, también puede omitir esa etiqueta, los demás campos son indispensables. • Ejemplo: Se tienen 500 unidades monitoreadas y manejan mensajes cada 15 segundos • Generar 500 tramas con los últimos estados de cada unidad cada minuto (entre mensajes y botones de pánico)
Para generar los reportes con la frecuencia solicitada, sugerimos crear una tabla para guardar la fecha en la que nos emitió el ultimo reporte, y solo seleccionar los mensajes de las unidades que correspondan con esta fecha, luego de lo cual se incrementaría la fecha (pero la forma de como hacerlo es plenamente libre).
SELECT PLACA, LONGITUD, LATITUD, RUMBO, VELOCIDAD, FECCOMUN FROM TABLA T WHEREFECCOMUN IN( SELECT MAX(MEC_FECCOMUN) FROM TABLA WHEREPLACA = T.PLACA AND MEC_FECCOMUN > ULTIMA_TRANSMISION) ORDER BY FECCOMUN FOR XML RAW('TRAMA'),ROOT('REPORTE')
Creación de un procedimiento almacenado o aplicación que genere los XML de los mensajes y otro para los botones de pánico. • Crear un JOB en la Base de Datos que ejecute este procedimiento almacenado con la frecuencia solicitada. • Descomprimir “ClienteCCMF.zip” (ya contiene una carpeta padre) en una ruta. (sin espacios)
Base de datos SQL Server 2005 • Creación de un procedimiento almacenado que genere un XML de los mensajes y otro XML de los botones de pánico. • Crear un JOB en la BD que ejecute este Procedimiento almacenado con la frecuencia solicitada. • Instalación y puesta en marcha del cliente de comunicaciones.
Video 01: • Generar archivo XML con Transact SQL 2005. • Video 02: • Generar archivo XML con Oracle Data Base XE. La explicación detallada se encuentra también en el manual de generación de XML.
El resultado debería tener todo lo que se ve en la figura siguiente. La primera vez tendrá un aspecto como el siguiente:
Seleccionar las carpetas donde se están generando data en formato XML.
Las configuraciones posibles se hacen modificando en archivo: “…/cfg/Settings.xml” <IP_SERVIDOR> <VAL>200.60.45.130</VAL> <DES>IP del servidor del ccmf -mtc</DES> </IP_SERVIDOR> <PUERTO_SERVIDOR_MENSAJES> <VAL>7771</VAL> <DES>Puerto TCP para mensajes de trafico normal</DES> </PUERTO_SERVIDOR_MENSAJES> <PUERTO_SERVIDOR_EVENTOS> <VAL>7772</VAL> <DES>Puerto TCP para envío de mensajes de emergencia</DES> </PUERTO_SERVIDOR_EVENTOS>
Se genera un icono en la barra de estado, la aplicación puede ser minimizada para no interrumpir sus otras actividades. • El uso de recursos es mínimo, la aplicación no demanda consumo de los recursos de su servidor o de su red, puesto que las tramas remitidas solo son código ASCII.
JDK 1.6: puede obtenerse de esta página: http://java.sun.com/javase/downloads/index.jsp • Si se usa un JDK inferior a 1.6 tendrá problemas con la interfaz gráfica, sobre todo el minimizar a la barra de tareas no funcionará. • Revisar la variable de entorno de Windows (PATH): apunte a la carpeta bin que se generó en la raíz de la instalación. • La siguiente pantalla muestra la ventana de variables de entorno.
Clic Derecho (Mi PC) Propiedades Pestaña Avanzadas Variables de entorno
La aplicación Java crea un socket cliente, éste tiene la funcionalidad de buscar un puerto no ocupado y crear un canal de comunicación bidireccional. • Si el Firewall tiene bloqueadas las comunicaciones de salida, será necesario crear una regla en el Firewall que acepte conexiones TCP hacia nuestra IPpública: 200.60.45.130