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

The following table provides the current status of features implementation in each language.

Feature Rust Python Java Swift
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 (https://opentelemetry.io/) Signals concepts. The following table provides the current implementation status of telemetry in each language.

Signal Rust Python Java Swift
Traces
Logs
Metrics
Baggage

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. The following table provides the current implementation status of LwM2M protocol in each language.

Device Management Rust Python Java Swift
Bootstrap
Run

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)
  • MAPExtendedMessage (MAPEM)
  • SignalPhaseAndTimingExtendedMessage (SPATEM)
  • SignalRequestExtendedMessage (SREM)
  • SignalStatusExtendedMessage (SSEM)

But also schemas of custom messages for V2X:

  • Bootstrap (startup of the device)
  • Information (information about service instance)
  • Status (status of an instance)
  • Neighbourhood (instances "around")
  • Region (geographic area)

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

Schema Rust Python Java Swift
Bootstrap
CAM 2.2.0 1.1.3 1.1.3 1.1.3
CPM 2.1.0 1.2.1 1.2.1
DENM 2.2.0 1.1.3 1.1.3
Information 2.1.0 1.2.0
MAPEM
Neighbourhood
Region
SPATEM
SREM
SSEM
Status 1.2.0

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

Contributors 11