El caso de uso7 está dedicado a la publicación de zonas en las que se recomienda una velocidad inferior a la máxima de la vía.
La DGT, con el servicio de balizamiento perimetral de eventos deportivos, recopila y publica la información de la localización en tiempo real de todos los eventos deportivos (competiciones ciclistas, eventos de atletismo en carretera, rallies, etc) que afectan a la circulación y seguridad vial de los usuarios que transitan por las vías del territorio español. La creación, publicación y eliminación de los planes y los recorridos de dichos eventos se realizará a través de los sistemas de la DGT.
Se utilizarán balizas V-2 para realizar el seguimiento de los eventos y conos conectados que informarán de los distintos cortes de las carreteras en las inmediaciones del circuito para garantizar la seguridad. De esta forma el usuario planifica mejor sus desplazamientos, y considerar la opción del uso del transporte público que permite reducción de las emisiones contaminantes.
La información de balizamiento de los eventos deportivos que llega al usuario final dependerá de la implementación realizada por el agente/tercero que consume la información de la plataforma DGT 3.0 y la publica a través del sistema de información del vehículo, aplicación móvil u otros dispositivos.
La plataforma cuenta con dos funcionalidades diferenciadas para la publicación (envío) y para la suscripción (recepción) de información. La primera es a través de una API REST del caso de uso y la segunda a través de un servicio MQTT en tiempo real. Además la información de cortes de vía se publicará por bandeja de salida.
Tanto la funcionalidad de publicación como de suscripción requieren de certificados de acceso distintos que deben ser solicitados y suministrados por DGT 3.0. Estos certificados, de no haber sido solicitados ya, se deberán solicitar a soporte@cmobility30.es.
A continuación se muestran las URLs con las que se accede a cada funcionalidad:
Modo | URL | Descripción |
---|---|---|
Suscripción | https://pre.cmobility30.es/use-case-7 | Endpoint del entorno de integración para la suscripción |
Publicación
Este caso de uso dispone de una API REST para la publicación (envío) de los datos por parte de las empresas que así lo deseen. En los siguientes apartados se pueden encontrar los detalles de esta:
- Los detalles generales para realizar una petición:
- Información relativa a los métodos específicos del caso de uso:
- Información relativa al detalles de las tablas maestras:
Suscripción
Este caso de uso tiene un comportamiento similar al que ofrece la interfa de bandeja de salida que puede encontrarse en el caso de uso 4. Panel de mensajes virtual. La API ofrece un endpoint
Este caso de uso también dispone de un servicio de suscripción (recepción) de datos por parte de las empresas que así lo deseen mediante el protocolo MQTT. Este caso de uso es solo para los servicios de seguimiento de las pruebas o eventos deportivos, si se desea la suscripción a la información de eventos de conos (cortes de carretera) se debe hacer a través de la interfaz de bandeja de salida que puede encontrarse en el caso de uso 4. Panel de mensajes virtual.
A continuación se pueden encontrar los detalles de la suscripción MQTT para este caso de uso 10 (Eventos deportivos):
MQTT (MQ Telemetry Transport) es un protocolo de mensajería que se usa como un método simple y liviano para transferir datos hacia/desde dispositivos de baja potencia. Puede ver más información y un ejemplo de conexión aquí.
El protocolo admite un único patrón de mensajería, el patrón Publicar-Suscribir: cada mensaje es publicado en un tópico al que se debe suscribir para recibir la información.
La suscripción al servicio de este caso de uso deberá ser mediante el tópico:
usecase10/events
En el tópico se publican los eventos en formato JSON. Aquí se puede ver un ejemplo:
[
{
"properties": {
"lat": 43.358929976820946,
"lng": -4.044689973816276,
"timeStamp": "2022-08-29T13:02:21.037+02:00",
"vialidad": {
"roadDescription": "A-67/Palencia",
"direction": 1,
"affectedLength": 2524.0,
"roadMaxSpeed": 90.0
}
},
"recommendedSpeeds": [
{
"speed": 40,
"kmStart": 0.0,
"kmEnd": 12.399856336374242
},
{
"speed": 50,
"kmStart": 12.399856336374242,
"kmEnd": 27.279683940023332
},
{
"speed": 60,
"kmStart": 27.279683940023332,
"kmEnd": 44.63948281094727
},
{
"speed": 70,
"kmStart": 44.63948281094727,
"kmEnd": 64.47925294914606
},
{
"speed": 80,
"kmStart": 64.47925294914606,
"kmEnd": 86.7989943546197
},
{
"speed": 90,
"kmStart": 86.7989943546197
}
]
},
{
"properties": {
"lat": 43.35894003510475,
"lng": -4.045290034264326,
"timeStamp": "2022-08-29T13:02:21.038+02:00",
"vialidad": {
"roadDescription": "N-611/N-634",
"direction": 0,
"affectedLength": 3083.0,
"roadMaxSpeed": 90.0
}
},
"recommendedSpeeds": [
{
"speed": 60,
"kmStart": 0.0,
"kmEnd": 67.68004816990603
},
{
"speed": 70,
"kmStart": 67.68004816990603,
"kmEnd": 145.02867464979863
},
{
"speed": 80,
"kmStart": 145.02867464979863,
"kmEnd": 232.0458794396778
},
{
"speed": 90,
"kmStart": 232.0458794396778
}
]
}
]
A continuación se presenta una descripción de cada uno de los campos del JSON anterior. Dicho JSON, publica la información de una congestión concreta así como las velocidades recomendadas en diferentes puntos:
En el documento se publica una lista de carreteras afectadas en las que existe un atasco, cada una de ellas esta formada por un campo properties y recommendedSpeeds. Es decir, cada conjunto de estos dos campos referencia a una carretera diferente con recomendaciones de velocidad diferentes.
-
Properties: Contiene información relativa a la zona afectada.
- Lat: Latitud donde comienza el atasco.
- Lon: Longitud donde comienza el atasco.
- Timestamp(Fecha UTC): Fecha y hora en formato UTC del momento en el que el evento se ha generado.
-
Vialidad.
- RoadDescription: Nombre de la carretera o carreteras que se ven afectadas.
- Direction: La dirección de la carretera sobre la que se aplica el algoritmo. Puede tener valores 1 (Ascendente) o 0 (Descendente).
- AffectedLength: Longitud, en metros, del tramo en el que actualmente hay una retención. Cuanto mayor sea esta distancia mayor será la distancia entre velocidades recomendadas.
- RoadMaxSpeed: Velocidad máxima de la vía, en Km/h.
-
RecommendedSpeeds: Contiene las velocidades recomendadas en los distintos tramos.
- Speed: Velocidad recomendada.
- kmStart: Punto de inicio de la zona de recomendación. Representa la distancia desde el punto de origen en la que comienza la zona de velocidad recomendada.
- kmEnd: Punto de finalización de la zona de recomendación. Representa la distancia desde el punto de origen en la que finaliza la zona de velocidad recomendada.
Errores
Todas las respuestas HTTP que no sean 200 – OK, se pueden considerar inválidas. Independientemente del mensaje de error, el formato de la respuesta es como el siguiente ejemplo:
{
"status": 401,
"code": 1,
"message": "User not found or valid"
}
La información relativa a los errores en este caso de uso se puede encontrar aquí. Estos errores tendrán tres categorías principales:
Error de Autentificación
-
HTTP Status: 401 - Unauthorized
Code Message 1 User not found or valid
Error de Cliente
-
HTTP Status: 400 - Bad Request
Code Message 0 Authenticate 2 Entity ID not found 3 Missing required property 4 Incorrect token received 5 Expired token received 6 There is an error with the token provided. Please request a new one 7 No token received 8 Missing request header 9 Permission denied. Role assigned to user missing 10 There is an error in one or more elements
A continuación se muestra una respuesta de error 5 - Expired token received la cual tendrá el siguiente formato:
{
"status": 400,
"code": 5,
"message": "Expired token received"
}
Error de Servidor
-
HTTP Status: 500 - Internal Server Error
Code Message 28 Internal error