You can use this script:
https://github.com/traccar/traccar/blob/master/tools/test-generator.py
Gracias anton no conozco mucho de programacion, te consulto si es posible hacer la emulacion de varios autos, con ese script y que parametros deberia tener en cuenta.
Lo que se me ocurre que puedes hacer es descargar Traccar Client en varios celulares de personas que conozcas y nombrar a cada cliente como si fuera un vehiculo, incluso al darlo de alta en el manager puedes elegir el icono de vehiculo. Basicamente lo que hace Traccar client es mandar la ubicación del dispositivo ( en este caso el telefono) a la plataforma, y de esa manera lo puedes presentar. De otra manera utiliza el script que comenta Anton este seria la mejor opción.
Gracias alfredo por tu consejo.
Lo mas facil es generar varios scripts python (uno por cada vehículo) que manden paquetes al protocolo osmand, luego los auto ejecutas desde crontab en linux.
si usas windows lo mas practico es generar codigo c o c# emulando dispositivos en osmand.
cualquier duda que tengas consultame.
Buenas tardesm estoy ejecutando el script de python desde afuera de mi servidor traccar,pero no tengo respuesta:
importar sys
importar matemáticas
importar urllib
importar httplib
tiempo de importación
importar al azar
id = '123456789012345'
servidor = 'miplataformatraccar:5055'
período = 1
paso = 0.001
device_speed = 40
driver_id = '123456'
waypoints = [
( 48,853780 , 2,344347 ),
( 48.855235 , 2.345852 ),
( 48.857238 , 2.347153 ),
( 48.858509 , 2.342563 ),
( 48,856066 , 2,340432 ),
( 48.854780 , 2.342230 )
]
puntos = []
para i en rango ( 0 , len ( waypoints )):
( lat1 , lon1 ) = waypoints [ i ]
( lat2 , lon2 ) = waypoints [( i + 1 ) % len ( waypoints )]
longitud = matemáticas . sqrt (( lat2 - lat1 ) ** 2 + ( lon2 - lon1 ) ** 2 )
count = int ( math . ceil ( longitud / paso ))
para j en el rango ( 0 , cuenta ):
lat = lat1 + ( lat2 - lat1 ) * j / cuenta
lon = lon1 + ( lon2 - lon1 ) * j / cuenta
puntos . añadir (( lat , lon ))
def enviar ( conexión , lat , lon , rumbo , velocidad , alarma , encendido , precisión , rpm , combustible , driverUniqueId ):
params = (( 'id' , id ), ( 'marca de tiempo' , int ( tiempo . tiempo ())), ( 'lat' , lat ), ( 'lon' , lon ), ( 'rumbo' , curso ), ( 'velocidad' , velocidad ))
si alarma :
params = params + (( 'alarma' , 'sos' ),)
si ignición :
params = params + (( 'ignición' , 'verdadero' ),)
si precisión :
params = params + (( 'precisión' , precisión ),)
si rpm :
params = params + (( 'rpm' , rpm ),)
si combustible :
params = params + (( 'combustible' , combustible ),)
si driverUniqueId :
params = params + (( 'driverUniqueId' , driverUniqueId ),)
conn . request ( 'GET' , '?' + urllib . urlencode ( params ))
conn . getresponse (). leer ()
curso def ( lat1 , lon1 , lat2 , lon2 ):
lat1 = lat1 * matemáticas . pi / 180
lon1 = lon1 * matemáticas . pi / 180
lat2 = lat2 * matemáticas . pi / 180
lon2 = lon2 * matemáticas . pi / 180
y = matemáticas . sin ( lon2 - lon1 ) * matemáticas . cos ( lat2 )
x = matemáticas .cos ( lat1 ) * matemáticas . sin ( lat2 ) - matemáticas . sin ( lat1 ) * matemáticas . cos ( lat2 ) * matemáticas . cos ( lon2 - lon1 )
return ( matemáticas . atan2 ( y , x ) % ( 2 * matemáticas . pi )) * 180 / matemáticas . Pi
índice = 0
conn = httplib . HTTPConnection ( servidor )
mientras es cierto :
( lat1 , lon1 ) = puntos [ índice % len ( puntos )]
( lat2 , lon2 ) = puntos [( índice + 1 ) % len ( puntos )]
speed = device_speed if ( index % len ( points )) ! = 0 else 0
alarma = ( índice % 10 ) == 0
ignición = ( índice % len ( puntos )) ! = 0
precisión = 100 si ( índice % 10 ) == 0 más 0
rpm = aleatorio . randint ( 500 , 4000 )
combustible = aleatorio . randint ( 0 , 80 )
driverUniqueId = driver_id if ( index % len ( puntos )) == 0 else False
enviar ( conn , lat1 , lon1 , curso ( lat1 , lon1 , lat2 , lon2 ), velocidad , alarma , encendido , precisión , rpm , combustible , driverUniqueId )
tiempo . dormir ( punto )
índice + = 1
Revisa los logs de tu plataforma y asegurate de que tu script realmente este sacando los paquetes.
Hola santiago mi logs dice esto:
2020-12-12 13:50:29 INFO: [c4aea7a1] connected
2020-12-12 13:50:30 INFO: [c4aea7a1: gps103 < 10.194.18.137] HEX: 160303009d0100009903035fd4f4d29f9029bb3680e6fb88b2e56fb97a5d60d1fef78393210b7ffaaf7b3800002ac02cc02bc030c02f009f009ec024c023c028c027c00ac009c014c013009d009c003d003c0035002f000a01000046000a00080006001d00170018000b00020100000d00140012040105010201040305030203020206010603002300000010000b000908687474702f312e3100170000ff01000100
2020-12-12 13:50:30 WARN: [c4aea7a1] error - begin 21, end 24, length 22 - StringIndexOutOfBoundsException (... < Gps103ProtocolDecoder:413 < ExtendedObjectDecoder:52 < ... < WrapperContext:102 < ...)
2020-12-12 13:50:30 WARN: [c4aea7a1] error - begin 21, end 24, length 20 - StringIndexOutOfBoundsException (... < Gps103ProtocolDecoder:413 < ExtendedObjectDecoder:52 < ... < WrapperContext:102 < ...)
2020-12-12 13:50:30 WARN: [c4aea7a1] error - begin 21, end 24, length 6 - StringIndexOutOfBoundsException (... < Gps103ProtocolDecoder:413 < ExtendedObjectDecoder:52 < ... < WrapperContext:102 < ...)
2020-12-12 13:50:30 INFO: [c4aea7a1] disconnected
Tu log no indica que recibas algún paquete desde el script, sin embargo indica que los paquetes que recibiste de un equipo presentan errores.
Tu script no esta funcionando y tus equipos están enviando una cadena que produce una excepción en la plataforma.
How come your script is configured to use port 5055, but you are providing log with port 5001?
Hola a todos, comenze a ser pruebas y la salida de error python me da lo siguiente:
Traceback (última llamada más reciente):
Línea 77 , en <módulo>
enviar (conn, lat1, lon1, curso (lat1, lon1, lat2, lon2), velocidad, alarma, encendido, precisión, rpm, combustible, driverUniqueId)
Línea 51 , en envío
conn.request ('OBTENER', '?' + urllib.urlencode (params))
Archivo "/usr/lib/python2.5/httplib.py", línea 862, en solicitud
self._send_request (método, url, cuerpo, encabezados)
Archivo "/usr/lib/python2.5/httplib.py", línea 885, en _send_request
self.endheaders ()
Archivo "/usr/lib/python2.5/httplib.py", línea 856, en encabezados finales
self._send_output ()
Archivo "/usr/lib/python2.5/httplib.py", línea 728, en _send_output
self.send (msg)
Archivo "/usr/lib/python2.5/httplib.py", línea 695, en envío
self.connect ()
Archivo "/usr/lib/python2.5/httplib.py", línea 663, en connect
socket.SOCK_STREAM):
socket.gaierror: (-2, 'Nombre o servicio desconocido')
David, te recomiendo googlear cada uno de los errores que tenes y depures. aparentemente no tenes acceso a una bilioteca.
gracias santiago estoy usando visual estudio,
Podrías hacerlo con el block de notas es irrelevante. googlea los errores en ingles y vas a dar con tu problema.
Buenas tardes a todos, es posible algun programa o codigo para emular vehiculos en la plataforma?
Tengo traccar en un VPS y me gustaria emular vehiculos para una presentacion de negocios.