Le mode GPRS du TK-102
Dans l’article précédent, j’ai expliqué que j’aime mon TK-102 qui ma permit de localiser et retrouvé ma voiture volé en quelques minutes. C’est surtout mon assurance qui à du être contente^^.
Par contre on ne peut pas suivre son itinéraire de cette façon ainsi on à pas pu voir ce qu’a fait ma voiture et donc identifier les personnes qui ont volé ma voiture plus facilement.
C’est ainsi que le tracker propose une option bien pratique: le mode GPRS qui permet de recevoir la position du traker presque en temps réel et j’ai décider d’y mettre en place!!! Le seul truck pas cool c’est qu’on reçoit pas les données comme on à l’habitude en GET ou POST, mais c’est pas si grave^^.
Pour l’activer, voila comment je fais:
Je reset le tracker pour remettre la conf par défaut(c’est mieux):
begin123456
Ensuite je définie l’apn pour se connecter au net, pour FreeMobile c’est tout simplement free:
apn123456 free
Ensuite on définie l’ip du serveur qui va recevoir les données et un port:
adminip123456 ip port
Pour finir on demande une position toute les 20 secondes:
t020s***n123456
Le serveur reçoit maintenant les données envoyé par le tracker. Pour voir qu’on reçoit bien les données, on peut utiliser netcat:
nc -vv -l -p port
Une trame reçus ressemble à ça:
150723104176,+33601020304,GPRMC,085931.000,A,4540.8835,N,00447.6083,E,0.00,234.40,250715,,,A*64,F,, imei:013949015332020,07,208.8,F:4.24V,1,140,18098,208,01,0703,AFD0
On a tout ce qu’il faut comme imei pour identifier le tracker si on en à plusieurs, l’altitude, latitude, longitude, vitesse, la date la trame… Bref le pied.
On peut maintenant tester rapidement pour voir ou est le tracker en prenant juste cette partie de la trame:
$GPRMC,085931.000,A,4540.8835,N,00447.6083,E,0.00,234.40,250715,,,A*64
Ce site permet de les décoder: http://rl.se/gprmc, mais c’est pas pratique.
Maintenant, il reste plus qu’a sauvegarder ces trames dans une BDD. Pour cela j’utilise un script python que j’ai lancé dans un screen:
import socket import time import MySQLdb print 'On commence:' conn = MySQLdb.Connect(host="127.0.0.1",user="gps",passwd="mdp",db="gps") cursor = conn.cursor() s = socket.socket() host = socket.gethostname() port = port s.bind((host, port)) s.listen(5) while True: c, addr = s.accept() RequeteDuClient = c.recv(1000) timetrame = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime()) print 'Date: ', timetrame, '\nIP: ', addr, '\nTrame: ', RequeteDuClient ip_port = str(addr) trame = str(RequeteDuClient) # client=(ip_port, timetrame, trame) # print client, "\n" # sqlvar = 'Insert into gps Values(?, ?, ?)' sqlvar = ('Insert into gps(info, datetime, texte) Values(%s, %s, %s)') cursor.execute(sqlvar, (ip_port, timetrame, trame)) c.close()
La seul chose à modifier c’est le port et les info de connexion pour la BDD.
Pour finir ? Traiter les trames, mais ça c’est une autre histoire ce qui va permettre plein de chose!!! Voila ce qu’on peut obtenir une fois les données traitées:
PS: je dev pas en python donc le code est pas forcément top, mais il marche.
Tous les codes sont testés et sont fonctionnels, si il arrive qu'un de ces codes ne fonctionne pas chez vous, merci de me le signaler.