Cet article décrit l'API qui permet l'enregistrement des mises à jour des données véhicules.

Principe

La mise à jour des données véhicules peut être réalisée via un endpoint Rest ou une websocket sécurisée.

Avec les variables suivantes :

Variable

Format

Description

<group_id>

Text

Identifiant du groupe

<device_id>

Text

Identifiant de l'appareil

Authentification

Avant d'envoyer des messages de données, la connexion doit être authentifiée. Cela est réalisé par l'envoi d'un message d'authentification de la forme {“session_id”: ...}. L'identifiant de session est obtenu par une requête sur l'API d'authentification (Voir article dédié).

Si l’identifiant de session est valide, la connexion est ouverte. Le serveur répond avec les dernières informations connues pour cet appareil.

Exemple de requête:

{“session_id”: _JZWQ0sPPij_vY5ACDDAR2eF}

Exemple de réponse:

[{"current_activity_log_assignation": "5eeb36d940b49e1700bc27", "gtfs_id": "5cc7038243f0852649b7c22a", "last_snapshot": 1592473304, "ts": 1592473924, "current_status": null, "current_stop_sequence": null, "delay": null, "history_last_latlng_ts": 1592473915, "latlng": [48.868239, 2.353957], "latlng_accuracy": 11.199999809265137, "route_id": null, "stop_id": null, "trip": null, "trip_id": null, "v": 1, "bearing": -0.5888665678418477, "speed": 0.0, "event_app": "click:settings", "trip_filter": {"trip_id": null}, "trip_pending": false, "trip_pending_distance": 4756.968925138057, "simulation_mode": false, "shape_dist_traveled": null, "app_status": "pause", "skipped_last_position": false, "gps_ppm": 61, "no_gps": false, "last_message_id": "5ea2791f61de830f9199be", "drive_mode": "trip", "app_version": "3.0.13", "device_id": "1ee225545115fe", "device_model": "samsung SM-G970F", "device_os": "Android 10", "device_phone_number": "MISSING_NUMBER", "installer": "au", "network_status": "offline", "break": null, "name": "Nicolas", "position": {"coords": {"accuracy": 12.961000442504883, "latitude": 48.8680808, "longitude": 2.3537068}, "timestamp": "2020-06-16T17:47:11.312Z"}, "current_file": "5cc7038243f0852649b7c22a"}]

Envoi d'informations

Une fois la connexion authentifiée, le client peut envoyer des informations au format JSON dans la websocket ou le point d'API Rest.

Après réception d’une position le serveur répond avec un objet JSON contenant les résultats de ses calculs, notamment l’avance/retard.

Le tableau suivant indique les messages qui peuvent être envoyés..

Information

Exemple

Commentaire

Position

{“ts”: 123456, “latlng”: [1.234, 1.234]}

Groupe de positions

[{“ts”: 123456, “latlng”: [1.234, 1.234]}]

Utile par exemple après une perte de connexion data pour envoyer une série de positions sauvegardées en local.

Déclenchement d'une course

{“trip_filter”: {“trip_id”: “A152”}}

Fin d'une course (=Haut-le-pied)

{“trip_filter”: {“trip_id”: null}}

Déclenchement d'un service véhicule-conducteur

{“trip_filter”: {“block_id”: “A1”}}

Fin d'un service véhicule-conducteur

{“trip_filter”: {“block_id”: null}}

Avance-retard

{“v”: 1, “current_status”: “IN_TRANSIT_TO”, “current_stop_sequence”: 5, “delay”: 30}

current_status: IN_TRANSIT_TO, INCOMING_AT ou STOPPED_AT, voir documentation du GTFS-RT

current_stop_sequence: stop_sequence de l’arrêt courant/prochain arrêt

delay: retard en secondes, si négatif correspond à une avance.

Exemple de message pour une mise à jour de position:

{"ts": 1592489512, "latlng": [48.8680808, 2.3537068], "trip_filter": {"trip_id": "122"}}

Exemple de réponse du serveur suite à une mise à jour de position:

[{"ts": 1592489512, "latlng": [48.868081, 2.353707], "trip_filter": {"trip_id": "122"}, "trip_id": "122", "trip": {"trip_id": "122", "start_date": "20200618"}, "route_id": "1", "shape_dist_traveled": 3549, "last_stop": false, "current_status": "IN_TRANSIT_TO", "current_stop_sequence": 4, "stop_id": "4", "delay": 400, "device_id": "1ee22c155115fe"}]

Exemple de message pour une mise à jour de position avec calcul de l'avance-retard en local:

{“ts”: 123456, “latlng”: [1.234, 1.234], “v”: 1, “trip_id”: “A152”, “current_status”: “IN_TRANSIT_TO”, “current_stop_sequence”: 5, “delay”: 30}
Avez-vous trouvé votre réponse?