AGL Vehicle to Cloud Communications Project
Project Definition
The intention of this project is to produce a prescriptive specification for the production, consumption and orchestration of messages between connected vehicle devices and the cloud using MQTT and Protocol Buffers, inclusive of recommendations for vehicle identity, security and system architecture. The message definitions in this project should align to message definitions in the kuksa.val gRPC project.
Scope
Documentation of recommended basic practices for MQTT V5 based vehicle to cloud communication patterns.
- Message format and orchestration for the most common vehicle telemetry and command based use patterns. See Documentation Here
- Gradle Build configuration for building both documentation and Java (and other?) stubs from protocol buffer files.
- Example message implementations for reference.
- A Stretch Goal of message testing and simulation
- Stretch goal of an exposed API through AGL for generating a salted hash identity for vehicle from the VIN number, using same keys as the used in creating the operational certificate.
- Stretch goal of embedding services for protobuf message serialization and deserialization and UUID generation in Linux build. Also in vehicle applications/services for connectivity and communication
- Stretch goal, reference embedded applications/services for some of the message patterns.
Contractor Scope
Ask | Description | Net Result | Dependency | Estimated Effort (including testing integration) |
Vehicle Identity Service | Programmatic and secure method of producing a vehicle identity that doesn’t expose VIN in plain text | A service or library built into AGL that enables the generation of a secure identity for the vehicle, acting as a proxy for the VIN. Ideally this would be a hash+SALT of the VIN itself and provide both security and privacy compliance. | None | 0 - It seems this is already being produced by other workstreams |
UUID Service for Messages | A simple UUID service for producing non-repeating message IDs for use in publishing mqtt messages | A service or library built into AGL that produces unique id’s for messages that are sent via the V2C project | None | Including testing and integration this should be 40 to 80 person hours |
Embedded Protobuf Library | Include protobuf libraries for C, C++ and java in Linux build | This likely already exists, but would be beneficial if Protobuf Libraries are embedded and distributed with AGL builds | ~80 hours | |
Telecommunications Client Reference | A client that receives message requests from application services and creates and publishes messages to the broker. | The net result of this is a reference client made in C/C++ or Rust that can be leveraged when testing or developing with the V2C project. The client should handle secure connectivity and the building and publishing of final messages on the behalf of embedded applications | Needs at least one full set of messages and documentation completed (June 23) | ~200 hours |
Reference Cloud Services | Implementations in AWS IoT and other cloud services showing the orchestration of messages from the cloud side | The net result of this would be a minimum connected vehicle platform that handles the cloud side of publish and subscribe for messages using the V2C specification | Needs at least one full set of messages and documentation completed (June 23 | ~100 hours. |
General Architecture
Use Cases
- Vehicle and Vehicle Device Provisioning
- MQTT Communication Lifecycle Events, Monitoring and Best Practices
- Client Initiation and Connection
- General Messages
- Basic Telemetry
- Remote Commands (HVAC)
- OTA Orchestration and Content Downloads
- Remote Diagnostics
- Application Defined Messages [Key Value Pairs]
- Simulation and Testing
Project Timelines - Flag - Incorporate Task Level Details
- 01/20/23 - Project Description and Details Updated in Confluence
- 01/31/23 - Initial Repository in AGL hosted Repository
- 03/01/23 - Completed draft of main contents to a "ready for invitation to collaborate" state
- 03/01/23 - Ready for collaboration beyond working group
- TBA - Initial release with contributions ready
Calls for Help - Flag - Need Task Level Details
- Need reviews of content in Repo as produced and help adjusting the diagrams as needed
- Help producing reference implementation in C, RUST, PYTHON etc.
- Help creating a quality testing and simulation framework.
- Help creating security tests to validate security of vehicle identity and vehicle to cloud communications scrips
- Need to create the vehicle identity API for AGL and understand the mechanism for translating back to VIN in the cloud system.
- Help aligning the specification message objects to VSS
What work needs to be completed prior to contractor engagement, what work can be completed in tandem with contractor work/dependent on contract work, and what work needs to be completed after contract work?