{"id":15287718,"url":"https://github.com/orange-opensource/its-client","last_synced_at":"2025-05-07T15:09:58.234Z","repository":{"id":38329358,"uuid":"451419201","full_name":"Orange-OpenSource/its-client","owner":"Orange-OpenSource","description":"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!","archived":false,"fork":false,"pushed_at":"2025-04-29T17:42:33.000Z","size":3346,"stargazers_count":9,"open_issues_count":73,"forks_count":10,"subscribers_count":15,"default_branch":"master","last_synced_at":"2025-05-07T15:09:47.953Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Orange-OpenSource.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-01-24T10:31:48.000Z","updated_at":"2025-04-29T08:00:31.000Z","dependencies_parsed_at":"2022-08-09T03:00:50.155Z","dependency_job_id":"5fd867a5-6028-4221-97f5-434b54e4a0cc","html_url":"https://github.com/Orange-OpenSource/its-client","commit_stats":{"total_commits":729,"total_committers":8,"mean_commits":91.125,"dds":0.6145404663923182,"last_synced_commit":"e61a3dc4a2627e9f25f821a327d7686821341957"},"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Orange-OpenSource%2Fits-client","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Orange-OpenSource%2Fits-client/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Orange-OpenSource%2Fits-client/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Orange-OpenSource%2Fits-client/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Orange-OpenSource","download_url":"https://codeload.github.com/Orange-OpenSource/its-client/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252902614,"owners_count":21822261,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-09-30T15:35:30.572Z","updated_at":"2025-05-07T15:09:58.223Z","avatar_url":"https://github.com/Orange-OpenSource.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"its-client\n==========\n\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\nThis repository provides reference implementation of message exchanging for IoT3 over [MQTT][1] (v5).\\\nOn top of this, it also provides a proposal of implementation for V2X messages in [JSON][2] based on [ETSI][3]'s\nIntelligent Transportation Systems (ITS).\n\nFor both of these use cases, telemetry is both automatically done and abstracted to send custom traces.\n\nFeatures\n--------\n\n|                       | Rust | Python | Java |\n|-----------------------|:----:|:------:|:----:|\n| **MQTTv5**            |  ✓   |   ✓    |  ✓   |\n| **Telemetry**         |  ✓   |   ✓    |  ✓   |\n| **Device Management** |      |        |      |\n\n### Message exchange\n\nEach implementation provides a client implementation allowing to subscribe and publish to an MQTT broker.\n\n### Telemetry\n\nEach implementation might provide an abstraction of Open Telemetry features.\n\n| Language | Traces | Logs | Metrics |\n|----------|--------|------|---------|\n| Rust     | ✓      |      |         |\n| Python   | ✓      |      |         |\n| Java     | ✓      |      |         |\n\n#### Traces\n\nDepending on client's choice or implementation, MQTT message publishing and reception might be automatically traced.\\\nThe link between the span of a message publish and the span of its reception is automatically made\nby propagating the [W3C Trace Context][12] using MQTTv5 properties.\n\nSent traces include the following parameters:\n\n- `service.name` client app name (configurable)\n- `span.status` Error if anything went wrong, Unset otherwise\n- `span.name` IoT3 Core MQTT Message\n- `span.kind`\n    - `consumer` when receiving a message\n    - `producer` when publishing a message\n- attributes:\n    - `iot3.core.mqtt.topic`\n    - `iot3.core.mqtt.payload_size`\n    - `iot3.core.sdk_language`\n\n### Device management\n\n_**Work in progress**_\n\nEach implementation is _intended_ to provide an implementation of LwM2M protocol to bootstrap the device or application,\nand to send periodical alive messages.\n\n| Language | Bootstrap | Run |\n|----------|-----------|-----|\n| Rust     |           |     |\n| Python   |           |     |\n| Java     |           |     |\n\nJSON schemas\n------------\n\nAs mentioned, you can find in the `schemas` directory a proposal of implementation using the [JSON][2] language\n(instead of ASN.1 UPER by default) of the following [ETSI.org][3] messages:\n\n- CooperativeAwarenessMessage (CAM)\n- CollectivePerceptionMessage (CPM)\n- DecentralizedEmergencyNotificationMessage (DENM)\n\nBut also schemas of custom messages for V2X:\n\n- Information (information about service instance)\n- Status (status of an instance)\n\n_Note: none of the provided implementation is able to use different versions of a schema,\nthey are using the following versions:_\n\n- _[cam_schema_1-1-3](schema/cam_schema_1-1-3.json)_\n- _[cpm_schema_1-2-1](schema/cpm_schema_1-2-1.json)_\n- _[denm_schema_1-1-3](schema/denm_schema_1-1-3.json)_\n- _[information_schema_1-2-0](schema/information_schema_1-2-0.json)_\n- _[status_schema_1-2-0](schema/status_schema_1-2-0.json)_\n\nLanguages\n---------\n\nThe features presented above are hereby provided in several languages in an SDK-like form.\n\nChoice has been made to respect each language paradigm over providing a unique implementation;\nit might therefore differ depending on the language.\n\n### [Rust](rust/README.md)\n\n[![Build Status](https://github.com/Orange-OpenSource/its-client/workflows/Rust/badge.svg)][4]\n[![crates.io](https://img.shields.io/crates/v/libits-client)](https://crates.io/crates/libits-client)\n\nProvides the basic abstraction for IoT3 and an application oriented V2X (mobility) set of functions and traits.\n\n### [Python](python/README.md)\n\n#### [iot3](python/iot3/README.md)\n\nProvides an abstraction of IoT3 for easy manipulation in Python.\n\n#### [its-quadkeys](python/its-quadkeys/README)\n\n[![Build status](https://github.com/Orange-OpenSource/its-client/actions/workflows/python_its-quadkeys.yml/badge.svg)][5]\n\nUsefull abstractions around quadtrees, suitable for the ITS clients.\n\n#### its-info\n\n[![Build status](https://github.com/Orange-OpenSource/its-client/actions/workflows/python_its-info.yml/badge.svg)][6]\n\nApplication periodically sending Information message.\n\n#### its-status\n\n[![Build status](https://github.com/Orange-OpenSource/its-client/actions/workflows/python_its-status.yml/badge.svg)][7]\n\nApplication periodically sending Status message.\n\n#### its-interqueuemanager\n\n[![Build status](https://github.com/Orange-OpenSource/its-client/actions/workflows/python_its-iqm.yml/badge.svg)][8]\n\nApplication\n\n#### its-vehicle\n\n[![Build status](https://github.com/Orange-OpenSource/its-client/actions/workflows/python_its-vehicle.yml/badge.svg)][9]\n\nOn-board Unit oriented application sending CAM messages at high frequency.\n\n### [Java IoT3 Core and Mobility libraries](java/iot3/README.md)\n\n[![Build status](https://github.com/Orange-OpenSource/its-client/actions/workflows/java_iot3-core.yml/badge.svg)][10]\n[![Build status](https://github.com/Orange-OpenSource/its-client/actions/workflows/java_iot3-mobility.yml/badge.svg)][11]\n\nThe Java IoT3 Mobility library - powered by the IoT3 Core library - makes it easy to build applications able to:\n\n- connect to our ITS platform\n- send and receive ITS messages through it\n\n[1]: https://mqtt.org/\n\n[2]: https://www.json.org\n\n[3]: https://www.etsi.org/committee/its\n\n[4]: https://github.com/Orange-OpenSource/its-client/actions/workflows/rust.yml\n\n[5]: https://github.com/Orange-OpenSource/its-client/actions/workflows/python_its-quadkeys.yml\n\n[6]: https://github.com/Orange-OpenSource/its-client/actions/workflows/python_its-info.yml\n\n[7]: https://github.com/Orange-OpenSource/its-client/actions/workflows/python_its-status.yml\n\n[8]: https://github.com/Orange-OpenSource/its-client/actions/workflows/python_its-iqm.yml\n\n[9]: https://github.com/Orange-OpenSource/its-client/actions/workflows/python_its-vehicle.yml\n\n[10]: https://github.com/Orange-OpenSource/its-client/actions/workflows/java_iot3-core.yml\n\n[11]: https://github.com/Orange-OpenSource/its-client/actions/workflows/java_iot3-mobility.yml\n\n[12]: https://www.w3.org/TR/trace-context/\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Forange-opensource%2Fits-client","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Forange-opensource%2Fits-client","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Forange-opensource%2Fits-client/lists"}