Caso de Uso 12
Protección de operarios de conservación.
El caso de uso 12 está dedicado a la información relativa a la protección en tiempo real de obreros que realizan actuaciones de conservación en las carreteras. Este servicio incluye la información generada por los Conos Conectados
Recepción y publicación de datos relativos al posicionamiento en tiempo real de:
- Operarios de mantenimiento
- Vehículos de obras y mantenimiento que se encuentran en las vías
Esta información podrá ser enviada a la plataforma DGT 3.0 o bien por dispositivos de IoT o bien por Apps que se puedan utilizar para posicionar estos elementos en la vía.
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 y la segunda a través de un servicio MQTT en tiempo real.
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.
Todo lo relacionado con MQTT está deshabilitado temporalmente.
A continuación se muestran las URLs con las que se accede a cada funcionalidad:
Modo | URL | Descripción |
---|---|---|
Publicación | https://pre.cmobility30.es/use-case-12 | Endpoint del entorno de integración de clientes para la publicación |
A continuación se describen las dos funcionalidades.
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:
- Los detalles de las tablas maestras y datos que pueden componer el evento:
- Información relativa al evento que se debe enviar:
Suscripción
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. A continuación se pueden encontrar los detalles de esta:
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.
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:
usecase12/events
En el tópico se publican los eventos en formato JSON. Aquí se puede ver un ejemplo:
{
"actionId": "CLI_235",
"beaconId": "cff92179-dc0a-47da-bd9e-5e9c5b14d251",
"beaconTypeId": 1,
"timestamp": "2021-06-02T13:34:56.747Z",
"lon": -4.304818,
"lat": 41.312456,
"speed": 85,
"eventTypeId": 1
"provinceId": 40,
"road": "A-601",
"pk": 64.73,
"direction": "UP"
}
actionId (texto): Identificador único del eventobeaconId (texto): identificador único de la baliza (por ejemplo, la MAC)beaconTypeId (número entero): identificador del tipo de baliza. 1 = Start, 2 = End, 3 = Intermediate, 4 = Uniquetimestamp (fecha UTC): fecha y hora en formato UTC del momento en el que el evento se ha generado. Es necesario que sea de un máximo de 30 segundos de antiguedad con respecto a la hora UTC. La fecha debe finalizar con el caracter 'Z' que marca que está en UTClon (número decimal): longitud de coordenadas de tipo WGS 84 donde se ha generado el eventolat (número decimal): latitud de coordenadas de tipo WGS 84 donde se ha generado el eventovehicleTypeId (número entero): identificador del tipo de vehículo. 0 = None, 1 = Car, 2 = MotorbikedeviceTypeId (número entero): identificador del tipo de dispositivo desde el que se envía la información. 1 = Baliza, 2 = Chaleco, 3 = ConodeviceUseTypeId (número entero): identificador del tipo de uso del dispositivo que envía la información. 1 = Worker, 2 = Vehicle, 3 = Infrastruturespeed (número decimal): velocidad en kilómetros por hora a la que se encuentra el elemento en el momento que envía el eventoprovinceId (número entero): identificador de la provincia donde se genera el evento según el INEroad (número entero): nombre oficial de la carretera donde se genera el eventopk (número entero): punto kilométrico donde se genera el eventodirection (texto): dirección de la carretera donde se genera el evento. UP = Sentido ascendente, DOWN = Sentido descendente, UNKNOWN = Desconocido
Ver más información y un ejemplo de conexión aquí.
Nota: La información que se está publicando en el entorno de desarrollo es una simulación con información no real que va cambiando a lo largo del día, de forma que se pueda probar la interface de consumo.
Errores
Como se ha indicado anteriormente, todas las respuestas HTTP que no sean 200 – OK, se pueden considerar inválidas. El formato de la respuesta de error es como el siguiente ejemplo:
{
"status": 401,
"code": 1,
"message": "User not found or valid"
}
*Esto no aplica para el Caso de Uso 9 - Grúas.
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 The entity received cannot be proccessed 5 Incorrect token received 6 Expired token received 7 There is an error with the token provided. Please request a new one 8 No token received 9 Required request body is missing 10 Event is marked as expired by timestamp 11 Missing request header 12 Permission denied. Role assigned to user missing 13 There is an error in one or more elements of the list 14 Cone use type must be Infraestructure 15 Cone vehicle type must be None 16 Cone beacon type must be Unique
En el caso de obtener un error 3 - Missing required property la respuesta obtenida tendrá un valor en el message que nos indicará los campos que faltan por enviar:
{
"status": 400,
"code": 3,
"message": "[deviceTypeId: must not be null, deviceUseTypeId: must not be null, informationQualityId: must not be null]"
}
Error de Servidor
- HTTP Status: 500 - Internal Server Error
Code Message 17 Internal error