GuideMe

De Open movilforum wiki

Tabla de contenidos

[editar] Prólogo

El objetivo de este proyecto es dotar de una herramienta útil para aquellas personas que, encontrándose en un punto determinado, puedan llegar al destino que deseen y obtener información de ese destino únicamente teniendo un móvil como sistema de información.

En muchas ocasiones me he encontrado con que o bien no sabía cómo llegar a una calle determinada, o bien estando cerca del lugar al que quiero llegar, no sabía bien como hacerlo.

Existen varias opciones de "baja tecnología", como preguntar a alguien cercano (aunque puede que no lo sepa o ni siquiera haya nadie cerca), o llevarse un mapa consigo (además del engorro de llevarlo con nosotros, puede que no sepamos identificar donde estamos situados ni nos indique los locales que hay alrededor).

Hoy en día casi todo el mundo tiene un móvil, y una gran mayoría de estos dispositivos tienen capacidad multimedia. Por ello este proyecto se puede abordar desde la perspectiva de que nuestro móvil (sea cual sea) es una herramienta que nos guiará en los momentos que nos encontremos perdidos y nos dará información útil.

[editar] Requisitos

[editar] Cliente

  1. Para que un usuario pueda hacer uso de este servicio, sólo es necesario poseer un móvil multimedia de cualquier marca y modelo. Además debe autorizar la localización si desea que se le localice automáticamente. Si también desea que se le envíe una url con los locales que hay cerca del destino para consultarlo mediante wap, debe enviar la clave que ha proporcionado al servicio WapPush.

[editar] Servidor

  1. Una cuenta de correo específica con acceso POP3 que estará asociada a la API de recepción de sms
  2. Conexión a Internet
  3. JRE de Java 1.6.0+ (esto nos dá independencia del sistema operativo) con las librerias de la fundación Apache:
    1. Apache Commons Net
    2. Apache HttpComponents
    3. Apache Commons Logging
    4. Apache Commons Codec
  4. Una clave de la API de Google Maps.
  5. Darse de alta en el espacio personal de Movistar con un número de móvil de Movistar.

[editar] Funcionamiento

[editar] Cliente

  • El cliente envía un mensaje SMS al número del servicio cuyo contenido será el lugar donde quiere ir:
    • Si ha autorizado la localización y desea usarla. Solo es necesario envíar la dirección de destino.

Imagen:Guideme movil1.jpg

    • Si no ha autorizado la localización o desea introducir el origen manualmente, debe enviar un mensaje con el siguiente formato:
dirección de origen d? dirección de destino

Imagen:Guideme movil2.jpg

    • En los dos casos anteriores, si el usuario desea consultar información sobre locales que haya cerca del destino, el formato del mensaje debe ser el siguiente:
dirección de destino l? clave de servicio wappush

o

dirección de origen d? dirección de destino l? clave de servicio wappush

Imagen:Guideme movil6.jpg

Es importante incluir también el nombre de la ciudad en la/s dirección/es. Igualmente cualquier dirección puede ser también unas coordenadas geográficas de latitud y longitud separadas ambas por un espacio en blanco.

Ejemplos:

  1. Con localización:
    1. Plaza de Santa Ana, Madrid
    2. Avinguda Diagonal 15 Barcelona
    3. Torre del Oro Sevilla
    4. 39.456657 -0.353901
  2. Con origen y destino
    1. Puerta del Sol, Madrid d? Plaza de Santa Ana, Madrid
    2. Passeig de Gracia, Barcelona d? Avinguda Diagonal 15 Barcelona
    3. Giralda Sevilla d? Torre del Oro Sevilla
    4. Plaza del Ayuntamiento, Valencia d? 39.456657 -0.353901
  3. Con servicio WapPush
    1. Puerta del Sol, Madrid d? Plaza de Santa Ana, Madrid l? clave123
    2. Avinguda Diagonal 15 Barcelona l? pujol84

[editar] Servidor

  • Con la API de Recepción de SMS, se comprueba que ha llegado al buzón de correo un mensaje (cada 30 segundos).
  • Con la API de Localización si es usada por el cliente se localiza dónde se encuentra el móvil que envió el mensaje SMS (Ver Anexo A) .
    • Si no se encontrase la posición del móvil, con la API de envío de SMS se informaría al cliente de tal circunstancia.
  • Con la posición del móvil o el origen introducido más la dirección de destino que el cliente ha enviado se hace una petición a los servidores de Google para que tracen un camino entre ambos puntos.
  • Con la API de Envío de MMS se envía al cliente un mapa con el trazado además de unas instrucciones de texto indicando qué pasos debe seguir y la distancia de cada uno de ellos.
    • Si no se encontrase la dirección solicitada, con la API de envío de SMS se informaría al cliente de tal circunstancia.
  • Con la API de Auto-Envío WapPush si es usada por el cliente se envía un mensaje WapPush al teléfono del cliente con una URL que contiene la información sobre locales que hay cerca de su destino.

[editar] Otros

La URL que dá el mensaje WapPush es un script php alojado en mi servidor que recibe las coordenadas de latitud y longitud del destino introducido por el usuario y realiza una petición al servicio 11870 para recuperar los locales más cercanos al destino.

[editar] Resultado

  • El cliente recibe el mensaje MMS y comprueba el itinerario a seguir:

Imagen:Guideme movil3.jpgImagen:Guideme movil4.jpgImagen:Guideme movil5.jpg

  • El cliente recibe el mensaje WapPush, accede a la URL contenida en este y comprueba los locales cercanos al destino, viendolos paginados y pudiendo ampliar el radio de búsqueda :

Imagen:Guideme movil7.jpg

[editar] Instalación

La instalación hace referencia al servidor, puesto que el cliente solo necesita tener un móvil multimedia.

  • Crear un fichero xml de configuración con el siguiente formato:
<configuracion>
<servidorPOP3>xxxxx</servidorPOP3>
<usuarioPOP3>xxxxx</usuarioPOP3>
<clavePOP3>xxxxx</clavePOP3>
<claveGoogle>xxxxx</claveGoogle>
<numeroMovil>xxxxx</numeroMovil>
<claveMovil>xxxxx</claveMovil>
<claveLocalizacion>xxxxx</claveLocalizacion>
</configuracion>
    • servidorPOP3 La IP o el nombre host del servidor POP3 que contiene la cuenta de correo
    • usuarioPOP3 El usuario de la cuenta de correo
    • clavePOP3 La clave de la cuenta de correo
    • claveGoogle La clave de la API de Google Maps
    • numeroMovil El número de teléfono asociado al espacio personal Movistar
    • claveMovil La clave del espacio personal Movistar
    • claveLocalizacion La clave que devuelve el servicio de Localización
  • Instalar en el almacén de certificados del Java Runtime Environment (JRE) el certificado de la web de movistar (Ver Anexo B).
  • Guardar las librerías .JAR de la fundación Apache junto con el .JAR de la aplicación en el mismo directorio. (Ver Anexo C).

[editar] Ejecución

  • Ejecutar el archivo jar de la siguiente forma
java -jar guideme_1.0.jar <ruta del fichero de configuracion xml> <ruta del fichero jpg>
    • ruta del fichero de configuracion xml es la ruta del fichero xml donde hemos guardado los valores de configuración anteriormente descritos.
    • ruta del fichero jpg es la ruta donde se creará el fichero jpg con el mapa por cada petición que se reciba.

[editar] Registro de cambios

[editar] Versión 1.1

  • Mejor geolocalización
  • Mejora de descripción de errores
  • Mejora en nivel de S.O. en el que se ejecuta (line feed)
  • Mejora en el formato de fecha de los mensajes de consola
  • Recodificación en la conversión UTM a latitud/longitud
  • Mejora en el tamaño del mapa
  • Ampliación en los errores enviados al cliente
  • Mejoras con el procesamiento del correo

[editar] Versión 1.1.1

  • Inclusión de la API de Auto-Envío WapPush y métodología para usarla.

[editar] Anexos

[editar] Anexo A

Como la clave de localización caduca cada 30 minutos, debe haber un proceso que envíe un mensaje con el texto CLAVE al número 424 cada 30 minutos. Con la API de envío de SMS no se puede hacer esto.

Personalmente tengo un móvil que está enchufado mediante un cable serie a un ordenador con linux, y cada 30 minutos con el cron se ejecuta la utilidad gnokii para enviar ese SMS.

[editar] Anexo B

Por motivos que desconozco aunque el certificado de la web de movistar para envío de SMS esta firmado por Verisign, java no lo reconoce como tal y dá una excepción.

Para lograr que funcione hay que descargar el certificado de la web e instalarlo en el almacén de certificados del JRE de la versión de java que se esté usando. Para ello hay que seguir estos pasos:

  • Descargar el certificado de la web de movistar o descargarlo directamente desde aquí (Guardar como).
  • Con la herramienta keytool del JRE de java instalarlo en el almacén de certificados:
keytool -import -file <ruta del certificado> -keystore <ruta del almacén de certificados> -alias "MOVISTAR" -trustcacerts -storepass <clave del almacén>
    • ruta del certificado Es la ruta del certificado descargado.
    • ruta del almacén de certificados Es la ruta del almacen de certificados (normalmente ruta del JRE\lib\security\cacerts).
    • clave del almacén Es la clave del almacén de certificados (normalmente changeit).

[editar] Anexo C

Son necesarias las librerias:

  • commons-codec-1.3.jar
  • commons-httpclient-3.1.jar
  • commons-logging-1.1.1.jar
  • commons-net-1.4.1.jar

Debido a la limitación que supone un fichero JAR al tener que incluir dentro del archivo de manifiesto las librerias de las que depende este, si se pone otra versión de alguno de los JAR arriba mencionados la aplicación dejará de funcionar.

Para solucionar ese caso hay que abrir el fichero JAR de la aplicación (es un fichero ZIP al fin y al cabo), extraer META-INF/MANIFEST.NF, editarlo, cambiar el nombre de la libreria necesaria en la linea Class-Path, y finalmente volver a meter el fichero en su ubicación dentro del JAR.

[editar] Anexo D

Dado que el proyecto está desarrollado en java y compactado en un fichero jar, se podrán usar las clases públicas de éste para desarrollar otros proyectos a partir de el:

  • Envío de SMS: es.sistemasorp.guideme.SMS.*
  • Recepción de SMS: es.sistemasorp.guideme.correo.*
  • Envío de MMS: es.sistemasorp.guideme.MMS.*
  • Localización: es.sistemasorp.guideme.localizacion.*
  • Itinerarios, mapas y geolocalización de google: es.sistemasorp.guideme.google.*
  • Acceso web (get, post y multipart): es.sistemasorp.guideme.web.*
  • Acceso a ficheros de configuración xml: es.sistemasorp.guideme.configuracion.*
  • Envío de WapPush: es.sistemasorp.guideme.wappush.*

Además se puede descargar la documentación javadoc.

[editar] Anexo E

Demostración de cómo funciona el proyecto