Skip to content

This Intelligent Transportation Systems (ITS) MQTT client based on the JSon ETSI specification transcription provides a ready to connect project for the mobility (connected and autonomous vehicles, road side units, vulnerable road users,...). Let's connect your device or application to our Intelligent Transport Systems (ITS) platform!

License

Notifications You must be signed in to change notification settings

Orange-OpenSource/its-client

Repository files navigation

its-client

License: MIT

This repository provides reference implementation of message exchanging for IoT3 over MQTT (v5).
On top of this, it also provides a proposal of implementation for V2X messages in JSON based on ETSI's Intelligent Transportation Systems (ITS).

For both of these use cases, telemetry is both automatically done and abstracted to send custom traces.

Features

Rust Python Java
MQTTv5
Telemetry
Device Management

Message exchange

Each implementation provides a client implementation allowing to subscribe and publish to an MQTT broker.

Telemetry

Each implementation might provide an abstraction of Open Telemetry features.

Language Traces Logs Metrics
Rust
Python
Java

Traces

Depending on client's choice or implementation, MQTT message publishing and reception might be automatically traced.
The link between the span of a message publish and the span of its reception is automatically made by propagating the W3C Trace Context using MQTTv5 properties.

Sent traces include the following parameters:

  • service_name client app name (configurable)
  • span.status Error if anything went wrong, Unset otherwise
  • span.name IoT3 Core MQTT Message
  • span.kind
    • consumer when receiving a message
    • producer when publishing a message
  • attributes:
    • iot3.core.mqtt.topic
    • iot3.core.mqtt.payload_size
    • iot3.core.sdk_language

Device management

Work in progress

Each implementation is intended to provide an implementation of LwM2M protocol to bootstrap the device or application, and to send periodical alive messages.

Language Bootstrap Run
Rust
Python
Java

JSON schemas

As mentioned, you can find in the schemas directory a proposal of implementation using the JSON language (instead of ASN.1 UPER by default) of the following ETSI.org messages:

  • CooperativeAwarenessMessage (CAM)
  • CollectivePerceptionMessage (CPM)
  • DecentralizedEmergencyNotificationMessage (DENM)

But also schemas of custom messages for V2X:

  • Information (information about service instance)
  • Status (status of an instance)

Note: none of the provided implementation is able to use different versions of a schema, they are using the following versions:

Languages

The features presented above are hereby provided in several languages in an SDK-like form.

Choice has been made to respect each language paradigm over providing a unique implementation; it might therefore differ depending on the language.

Build Status crates.io

Provides the basic abstraction for IoT3 and an application oriented V2X (mobility) set of functions and traits.

Provides an abstraction of IoT3 for easy manipulation in Python.

Build status

Usefull abstractions around quadtrees, suitable for the ITS clients.

its-info

Build status

Application periodically sending Information message.

its-status

Build status

Application periodically sending Status message.

its-interqueuemanager

Build status

Application

its-vehicle

Build status

On-board Unit oriented application sending CAM messages at high frequency.

Build status Build status

The Java IoT3 Mobility library - powered by the IoT3 Core library - makes it easy to build applications able to:

  • connect to our ITS platform
  • send and receive ITS messages through it

About

This Intelligent Transportation Systems (ITS) MQTT client based on the JSon ETSI specification transcription provides a ready to connect project for the mobility (connected and autonomous vehicles, road side units, vulnerable road users,...). Let's connect your device or application to our Intelligent Transport Systems (ITS) platform!

Resources

License

Stars

Watchers

Forks

Packages

No packages published