Skip to content

Latest commit

 

History

History
359 lines (247 loc) · 14.7 KB

README.es.md

File metadata and controls

359 lines (247 loc) · 14.7 KB

English

GPS Tracker (Laravel 10 + PHP 8.1 + MySQL 8)

Este proyecto es una plataforma de gestión para dispositivos Sinotrack ST-90x OsmAnd y Queclink desarrollada utilizando Laravel 10, PHP 8.1 y MySQL 8. Esta solución integral de rastreo GPS está diseñada para ofrecer un rendimiento robusto y una interfaz de usuario intuitiva, adecuada tanto para usuarios individuales como para empresas que necesitan gestionar múltiples dispositivos de rastreo. Esta plataforma está pensada como una posible alternativa a Traccar.

Características Clave

  • Plataforma moderna con interface amigable: La plataforma utiliza Laravel 10 para proporcionar una experiencia de usuario fluida y una interfaz gráfica atractiva.
  • Compatibilidad con PHP 8.1: Aprovecha las últimas características de PHP 8.1, incluyendo mejoras en el rendimiento y seguridad. También es compatible con las versiones superiores de PHP.
  • Gestión de Datos con MySQL 8: Utiliza MySQL 8.0.12 o superior para una gestión eficiente y segura de grandes volúmenes de datos de rastreo, así como una amplio soporte de funcionalidades GIS.
  • Seguimiento en Tiempo Real: Permite a los usuarios seguir la ubicación y el estado de sus dispositivos Sinotrack ST-90x en tiempo real.
  • Informes Detallados: Genera informes completos que ayudan en la toma de decisiones y en el análisis de datos.
  • Alarmas y Notificaciones: Configura alarmas personalizadas (geovalla, movimiento, velocidad, etc...) para eventos específicos relacionados con los dispositivos de rastreo. Las notificaciones se pueden configurar a través de Telegram.
  • Soporte Multiusuario: Admite la creación de múltiples cuentas de usuario con diferentes niveles de acceso y permisos.
  • Entorno Público: Si lo deseas puedes generar enlaces para viajes individuales y compartirlos públicamente. También puedes compartir directamente un dispositivo donde todos sus viajes serán visibles de forma pública.

Requisitos

  • PHP 8.1 o superior (bcmath bz2 intl mbstring opcache pdo_mysql pcntl redis sockets xsl zip)
  • MySQL 8.0.12 o superior
  • Redis

Demo

Puedes probar la versión de demostración en https://tracker-demo.lito.com.es/

Instalación Local

  1. Creamos la base de datos en MySQL.

  2. Clonamos el repositorio.

git clone https://github.com/eusonlito/GPS-Tracker.git
  1. Copia el fichero .env.example como .env y rellena las variables necesarias.
cp .env.example .env
  1. Realizamos la primera instalación (recuerda que siempre usando el binario de PHP 8.1 o superior).
./composer install --no-dev --optimize-autoloader --classmap-authoritative --ansi
  1. Generamos la clave de aplicación.
php artisan key:generate
  1. Regeneramos las cachés.
./composer artisan-cache
  1. Lanzamos la migración inicial.
php artisan migrate --path=database/migrations
  1. Lanzamos el seeder.
php artisan db:seed --class=Database\\Seeders\\Database
  1. Generamos los GeoJSON para los Timezones.
php artisan timezone:geojson
  1. Configuramos la tarea cron para el usuario relacionado con el proyecto:
* * * * * cd /var/www/tracker.domain.com && install -d storage/logs/artisan/$(date +"\%Y-\%m-\%d") && /usr/bin/php artisan schedule:run >> storage/logs/artisan/$(date +"\%Y-\%m-\%d")/schedule-run.log 2>&1
  1. Creamos el usuario principal.
php artisan user:create --email=user@domain.com --name=Admin --password=StrongPassword2 --enabled --admin
  1. Configuramos el DocumentRoot del servidor web para apuntar a /var/www/project/public.

  2. Profit!

Actualización

La actualización de la plataforma se puede realizar de manera sencilla con el comando ./composer deploy ejecutado por el usuario que gestiona ese projecto (normalmente www-data).

Instalación vía Docker

  1. Clonamos el repositorio.
git clone https://github.com/eusonlito/GPS-Tracker.git
  1. [OPCIONAL] Copia el fichero docker/.env.example en .env y configura tus propios ajustes
cp docker/.env.example .env
  1. [OPCIONAL] Copia el fichero docker/docker-compose.yml.example en docker/docker-compose.yml y configura tus propios ajustes
cp docker/docker-compose.yml.example docker/docker-compose.yml
  1. Realizamos el build (pedirá la contraseña de sudo)
./docker/build.sh
  1. Iniciamos los contenedores (pedirá la contraseña de sudo)
./docker/run.sh
  1. Creamos el usuario principal (pedirá la contraseña de sudo)
./docker/user.sh
  1. Lanzamos el rellenado de los GeoJSON para las zonas horarias (pedirá la contraseña de sudo)
./docker/timezone-geojson.sh
  1. Ya podemos acceder desde http://localhost:8080

  2. Recuerda añadir un servidor web (apache2, nginx, etc...) como proxy para añadir funcionalidades como SSL.

  3. Si vas añadir o cambiar los puertos por defecto para los dispositivos GPS (8091) debes editar las propiedades de gpstracker-app en docker-compose.yml para adaptarlas a tu propia configuración.

Actualización

  1. Actualizamos el código del proyecto
git pull
  1. Realizamos el build (pedirá la contraseña de sudo)
./docker/build.sh
  1. Iniciamos los contenedores (pedirá la contraseña de sudo)
./docker/run.sh
  1. Ya podemos acceder desde http://localhost:8080

Configuración Inicial

  1. Por defecto se crea un servidor para el protocolo H02 (Sinotrack) en el puerto 8091. Si lo deseas puedes personalizar esta configuración en Servidores > Lista.
  2. En Servidores > Estado Seleccionamos el servidor que acabamos de crear y pulsamos el botón de Iniciar/Reiniciar.
  3. Se servidor debería aparecer iniciado en el listado superior de Servidores > Estado.
  4. Si el servidor no se inicia, podemos revisar los logs generados en la carpeta laravel del menú Servidores > Logs.
  5. Ahora podemos crear un vehículo en Vehículos > Crear. Rellenamos los campos necesarios y lo guardamos.
  6. Una vez disponemos de vehículo vamos a crear un dispositivo desde Dispositivos > Lista > Crear. Es importante indicar correctamente el Número de Serie ya que es el identificador que enviará el dispositivo al servidor y con el que podrá ser reconocido. Le asociamos el vehículo que acabamos de crear y guardamos.
  7. A partir de aquí sólo queda esperar a recibir las primeras conexiones desde el dispositivo para generar los primeros viajes.
  8. Para configurar la conexión a nuestro servidor un dipositivo Sinotrack sigue los pasos indicados a continuación.
  9. Si tienes problemas para recibir la conexión desde el dispositivo puedes ir a Servidores > Lista > Editar y activar el modo debug. Una vez guardado el cambio recuerda reiniciar el servidor en Servidores > Estado.

Conexión del Dispositivo

Para configurar tu dispositivo vía SMS puedes hacerlo con el siguiente comando:

804{PASSWORD} {IP/HOST} {PUERTO}

Puedes configurar el servidor de conexión en el dispositivo usando o bien la IP o bien un HOST que resolverá internamente PERO SÓLO EN EL MOMENTO DE RECIBIR EL COMANDO, con lo cual si el servidor no tiene IP fija en cuanto cambie dejarás de recibir los datos del dispositivo.

SMS comunes para Sinotrack ST-901

Configurar el Teléfono desde el cual te puedes conectar al dispositivo

{TELEFONO}{PASSWORD} 1

Configurar la zona horaria para UTC y así delegar en la plataforma el ajuste horario

896{PASSWORD}E00

Activar Modo GPRS

710{PASSWORD}

Configurar APN Operadora

803{PASSWORD} {OPERADORA}

Configurar Servidor

804{PASSWORD} {IP/HOST} {PUERTO}

Configurar frecuencia en segundos de envío reportes de posición con el contacto puesto

805{PASSWORD} {SEGUNDOS}

Configurar frecuencia en segundos de envío reportes de posición SIN el contacto puesto

809{PASSWORD} {SEGUNDOS}

Configurar tiempo de espera antes de pasar a modo SLEEP con el coche parado

SLEEP{PASSWORD} {MINUTOS}

Activar llamadas de eventos (Batería baja, reporte diario, aviso grúa, salida geovalla, contacto, SOS)

150{PASSWORD}

Desactivar llamadas de eventos (Batería baja, reporte diario, aviso grúa, salida geovalla, contacto, SOS)

151{PASSWORD}

Activar SMS de Alarma de Batería baja

011{PASSWORD}

Desactivar SMS de Alarma de Batería baja

010{PASSWORD}

Activar SMS de Eventos (Batería baja, SLEEP, reporte diario, aviso grúa, salida geovalla, contacto)

712{PASSWORD}

Desactivar SMS de Eventos (Batería baja, SLEEP, reporte diario, aviso grúa, salida geovalla, contacto)

713{PASSWORD}

Cambiar Contraseña

777{PASSWORD-NEW}{PASSWORD-OLD}

Reiniciar dispositivo

RESTART

Mostrar configuración actual

RCONF

Comandos

Alta de usuario:

php artisan user:create {--email=} {--name=} {--password=} {--enabled} {--admin}

Iniciar/Reiniciar todos los servidores configurados:

La opción de reset permite reiniciar el puerto en caso de que esté siendo usado.

php artisan server:start:all {--reset}

Iniciar/Reiniciar servidor en un puerto en concreto:

La opción de reset permite reiniciar el puerto en caso de que esté siendo usado.

php artisan server:start {--port=} {--reset}

Capturas

screencapture-tracker-2023-11-22-09_36_09 screencapture-tracker-2023-11-22-09_36_27 screencapture-tracker-trip-2023-11-22-09_36_37 screencapture-tracker-trip-59-2023-11-22-09_37_23 screencapture-tracker-trip-59-stat-2023-11-22-09_37_30 screencapture-tracker-trip-59-map-2023-11-22-09_37_38 screencapture-tracker-trip-59-position-2023-11-22-09_37_47 screencapture-tracker-trip-59-merge-2023-11-22-09_37_54 screencapture-tracker-refuel-2023-11-22-09_38_13 screencapture-tracker-refuel-58-2023-11-22-09_38_20 screencapture-tracker-maintenance-2023-11-22-09_38_25 screencapture-tracker-maintenance-2-2023-11-22-09_38_30 screencapture-tracker-maintenance-2-item-2023-11-22-09_38_35 screencapture-tracker-maintenance-item-2023-11-22-09_38_40 screencapture-tracker-vehicle-2023-11-22-09_38_45 screencapture-tracker-vehicle-1-2023-11-22-09_38_50 screencapture-tracker-vehicle-1-device-2023-11-22-09_38_56 screencapture-tracker-vehicle-1-alarm-2023-11-22-09_39_02 screencapture-tracker-device-2023-11-22-09_39_08 screencapture-tracker-device-1-2023-11-22-09_39_13 screencapture-tracker-device-1-transfer-2023-11-22-09_39_20 screencapture-tracker-device-map-2023-11-22-09_39_30 screencapture-tracker-alarm-2023-11-22-09_39_36 screencapture-tracker-alarm-2-2023-11-22-09_39_42 screencapture-tracker-alarm-create-2023-11-22-09_40_33 screencapture-tracker-profile-2023-11-22-09_40_39 screencapture-tracker-configuration-2023-11-22-09_40_49 screencapture-tracker-user-2023-11-22-09_40_55 screencapture-tracker-user-1-2023-11-22-09_41_03 screencapture-tracker-user-session-2023-11-22-09_41_09 screencapture-tracker-server-status-2023-11-22-09_41_58 screencapture-tracker-server-1-2023-11-22-09_42_07 screencapture-tracker-server-log-2023-11-22-09_42_13 screencapture-tracker-timezone-2023-11-22-09_42_22 screencapture-tracker-shared-trip-11da6b7b-88bd-11ee-b488-4cedfbcaec68-2023-11-22-09_42_50 screencapture-tracker-shared-device-066b1953-88bd-11ee-b488-4cedfbcaec68-2023-11-22-09_42_57