1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
|
#!/usr/bin/env python3
import sys
import math
import urllib
import http.client as httplib
import time
import random
id = '123456789012345'
server = 'localhost:5055'
period = 1
step = 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)
]
points = []
for i in range(0, len(waypoints)):
(lat1, lon1) = waypoints[i]
(lat2, lon2) = waypoints[(i + 1) % len(waypoints)]
length = math.sqrt((lat2 - lat1) ** 2 + (lon2 - lon1) ** 2)
count = int(math.ceil(length / step))
for j in range(0, count):
lat = lat1 + (lat2 - lat1) * j / count
lon = lon1 + (lon2 - lon1) * j / count
points.append((lat, lon))
def send(conn, lat, lon, altitude, course, speed, battery, alarm, ignition, accuracy, rpm, fuel, driverUniqueId):
params = (('id', id), ('timestamp', int(time.time())), ('lat', lat), ('lon', lon), ('altitude', altitude), ('bearing', course), ('speed', speed), ('batt', battery))
if alarm:
params = params + (('alarm', 'sos'),)
if ignition:
params = params + (('ignition', 'true'),)
else:
params = params + (('ignition', 'false'),)
if accuracy:
params = params + (('accuracy', accuracy),)
if rpm:
params = params + (('rpm', rpm),)
if fuel:
params = params + (('fuel', fuel),)
if driverUniqueId:
params = params + (('driverUniqueId', driverUniqueId),)
conn.request('GET', '?' + urllib.parse.urlencode(params))
conn.getresponse().read()
def course(lat1, lon1, lat2, lon2):
lat1 = lat1 * math.pi / 180
lon1 = lon1 * math.pi / 180
lat2 = lat2 * math.pi / 180
lon2 = lon2 * math.pi / 180
y = math.sin(lon2 - lon1) * math.cos(lat2)
x = math.cos(lat1) * math.sin(lat2) - math.sin(lat1) * math.cos(lat2) * math.cos(lon2 - lon1)
return (math.atan2(y, x) % (2 * math.pi)) * 180 / math.pi
index = 0
conn = httplib.HTTPConnection(server)
while True:
(lat1, lon1) = points[index % len(points)]
(lat2, lon2) = points[(index + 1) % len(points)]
altitude = 50
speed = device_speed if (index % len(points)) != 0 else 0
alarm = (index % 10) == 0
battery = random.randint(0, 100)
ignition = (index / 10 % 2) != 0
accuracy = 100 if (index % 10) == 0 else 0
rpm = random.randint(500, 4000)
fuel = random.randint(0, 80)
driverUniqueId = driver_id if (index % len(points)) == 0 else False
send(conn, lat1, lon1, altitude, course(lat1, lon1, lat2, lon2), speed, battery, alarm, ignition, accuracy, rpm, fuel, driverUniqueId)
time.sleep(period)
index += 1
|