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.
- 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.
- PHP 8.1 o superior (bcmath bz2 intl mbstring opcache pdo_mysql pcntl redis sockets xsl zip)
- MySQL 8.0.12 o superior
- Redis
Puedes probar la versión de demostración en https://tracker-demo.lito.com.es/
-
Creamos la base de datos en MySQL.
-
Clonamos el repositorio.
git clone https://github.com/eusonlito/GPS-Tracker.git
- Copia el fichero
.env.example
como.env
y rellena las variables necesarias.
cp .env.example .env
- 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
- Generamos la clave de aplicación.
php artisan key:generate
- Regeneramos las cachés.
./composer artisan-cache
- Lanzamos la migración inicial.
php artisan migrate --path=database/migrations
- Lanzamos el seeder.
php artisan db:seed --class=Database\\Seeders\\Database
- Generamos los GeoJSON para los Timezones.
php artisan timezone:geojson
- 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
- Creamos el usuario principal.
php artisan user:create [email protected] --name=Admin --password=StrongPassword2 --enabled --admin
-
Configuramos el
DocumentRoot
del servidor web para apuntar a/var/www/project/public
. -
Profit!
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
).
- Clonamos el repositorio.
git clone https://github.com/eusonlito/GPS-Tracker.git
- [OPCIONAL] Copia el fichero
docker/.env.example
en.env
y configura tus propios ajustes
cp docker/.env.example .env
- [OPCIONAL] Copia el fichero
docker/docker-compose.yml.example
endocker/docker-compose.yml
y configura tus propios ajustes
cp docker/docker-compose.yml.example docker/docker-compose.yml
- Realizamos el build (pedirá la contraseña de sudo)
./docker/build.sh
- Iniciamos los contenedores (pedirá la contraseña de sudo)
./docker/run.sh
- Creamos el usuario principal (pedirá la contraseña de sudo)
./docker/user.sh
- Lanzamos el rellenado de los GeoJSON para las zonas horarias (pedirá la contraseña de sudo)
./docker/timezone-geojson.sh
-
Ya podemos acceder desde http://localhost:8080
-
Recuerda añadir un servidor web (apache2, nginx, etc...) como proxy para añadir funcionalidades como SSL.
-
Si vas añadir o cambiar los puertos por defecto para los dispositivos GPS (
8091
) debes editar las propiedades degpstracker-app
endocker-compose.yml
para adaptarlas a tu propia configuración.
- Actualizamos el código del proyecto
git pull
- Realizamos el build (pedirá la contraseña de sudo)
./docker/build.sh
- Iniciamos los contenedores (pedirá la contraseña de sudo)
./docker/run.sh
- Ya podemos acceder desde http://localhost:8080
- Por defecto se crea un servidor para el protocolo
H02
(Sinotrack) en el puerto8091
. Si lo deseas puedes personalizar esta configuración enServidores
>Lista
. - En
Servidores
>Estado
Seleccionamos el servidor que acabamos de crear y pulsamos el botón deIniciar/Reiniciar
. - Se servidor debería aparecer iniciado en el listado superior de
Servidores
>Estado
. - Si el servidor no se inicia, podemos revisar los logs generados en la carpeta
laravel
del menúServidores
>Logs
. - Ahora podemos crear un vehículo en
Vehículos
>Crear
. Rellenamos los campos necesarios y lo guardamos. - Una vez disponemos de vehículo vamos a crear un dispositivo desde
Dispositivos
>Lista
>Crear
. Es importante indicar correctamente elNú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. - A partir de aquí sólo queda esperar a recibir las primeras conexiones desde el dispositivo para generar los primeros viajes.
- Para configurar la conexión a nuestro servidor un dipositivo Sinotrack sigue los pasos indicados a continuación.
- 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 enServidores
>Estado
.
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.
{TELEFONO}{PASSWORD} 1
896{PASSWORD}E00
710{PASSWORD}
803{PASSWORD} {OPERADORA}
804{PASSWORD} {IP/HOST} {PUERTO}
805{PASSWORD} {SEGUNDOS}
809{PASSWORD} {SEGUNDOS}
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}
011{PASSWORD}
010{PASSWORD}
712{PASSWORD}
Desactivar SMS de Eventos (Batería baja, SLEEP, reporte diario, aviso grúa, salida geovalla, contacto)
713{PASSWORD}
777{PASSWORD-NEW}{PASSWORD-OLD}
RESTART
RCONF
php artisan user:create {--email=} {--name=} {--password=} {--enabled} {--admin}
La opción de reset
permite reiniciar el puerto en caso de que esté siendo usado.
php artisan server:start:all {--reset}
La opción de reset
permite reiniciar el puerto en caso de que esté siendo usado.
php artisan server:start {--port=} {--reset}