日本語, 简体ä¸ć–‡, í•śęµě–´, PortuguĂŞs, Français, Italiano, Español, עִברִית, English
Vehicle Signal Specifications (VSS) Middleware is based on COVESA (Connected Vehicle Systems Alliance) and their specification.
VSS Middleware offers a library to manage Vehicle Signal Specifications and their vehicle of any model. It also includes a D-Bus service designed to interact with vehicle signals according to the Vehicle Signal Specification (VSS). It's designed to be vendor agnostic and emit random signal / real-time to D-Bus interface according with the VSS. The middleware also allows attaching electronics vendors and suppliers to vehicle models. Please note that all the VSS data provided here are collected from internet, not from vendors or supliers.
- VSS-Middleware: Vehicle Signal Specification Middleware
- Features
- Benefits of VSS-Middleware
- Requirements
- Installation
- Monitoring Signals on the D-Bus Interface
- Sending Hardware Signals
- Uninstalling
- Makefile
- Contributing
- License
- Middeware (common library) to manage VSS files and all type of vehicles
- Emit random vehicle signals based on QM, ASIL, or UserPreference.
- Handle real-time hardware signals from baremetal devices.
- Attach electronics vendors suppliers to vehicle models for simulation.
- Monitor D-Bus for vehicle signal data.
- VSS-Middleware provides a standardized framework for defining and managing vehicle signals across different vendors, making it easier to share, interpret, and exchange data across the ecosystem.
- A standardized approach reduces fragmentation, ensuring vendors can work with other systems more seamlessly.
- Developing proprietary software to handle vehicle signals can be expensive and time-consuming. By using VSS-Middleware, vendors leverage an existing solution, allowing them to focus on other core aspects of their products.
- VSS-Middleware already comes with pre-built functionality for signal management, reducing the need for vendors to reinvent the wheel.
- VSS-Middleware is aligned with industry initiatives like COVESA VSS, ensuring that vendors stay in line with industry standards.
- Vendors can rely on VSS-Middleware to maintain compliance with increasing regulatory requirements for data sharing and signal management.
- VSS-Middleware is designed to be modular, allowing vendors to customize and extend it based on their specific needs without building a new system.
- Vendors can easily attach their specific signals, protocols, and data structures while benefiting from the standardized structure.
- When different electronics and car vendors work together, using VSS-Middleware makes collaboration smoother, especially when integrating electronics from multiple suppliers.
- VSS-Middleware is built to accommodate future changes in technology and regulation. Vendors can rely on the VSS-Middleware community to handle changes in signal standards and requirements.
- VSS-Middleware benefits from constant development, improvements, and community support, leading to faster bug fixes and enhancements.
- VSS-Middleware provides a unified structure that can be adapted for various industries, including automotive, aerospace, medical devices, and drones.
- Vendors can focus on hardware development and improving product capabilities without developing custom software, leveraging VSS-Middleware as a common communication layer.
- Out of box Freedom from Interference tests based executed daily based in real data from vendors specs.
and much more...
- Python 3.10+
pydbus
for D-Bus interactionpyyaml
toml
invoke
- Systemd for managing the D-Bus service
git clone https://github.com/autosd-vss-mw/vss-lib
cd vss-lib
Make sure you have Python 3.10+ installed. You can create a virtual environment to manage dependencies:
python3 -m venv venv
source venv/bin/activate
Install the library and the VSS D-Bus demo service:
python -m venv myenv
source myenv/bin/activate
sudo pip install .
sudo systemctl daemon-reload
sudo systemctl enable vss-dbus.service
sudo systemctl start vss-dbus.service
sudo journalctl -u vss-dbus.service -f # Monitor the deploy
sudo dbus-monitor --system "interface=com.vss_lib.VehicleSignals" # See all signals being sent
Start monitoring the Car Manufacturers' vendors and partners "speaking" the Vehicle Signal Specification (VSS) protocol on top of Fedora, CentOS.
sudo dbus-monitor --system "interface=com.vss_lib.VehicleSignals"
signal time=1725863086.478979 sender=:1.9701 -> destination=(null destination) serial=184 path=/com/vss_lib/VehicleSignals; interface=com.vss_lib.VehicleSignals; member=SignalEmitted
string "Electronics.Bosch.ParkingSensorStatus.max"
double 1.88863
signal time=1725863088.478907 sender=:1.9701 -> destination=(null destination) serial=185 path=/com/vss_lib/VehicleSignals; interface=com.vss_lib.VehicleSignals; member=SignalEmitted
string "Speed.min"
double 49.5526
signal time=1725863090.479247 sender=:1.9701 -> destination=(null destination) serial=186 path=/com/vss_lib/VehicleSignals; interface=com.vss_lib.VehicleSignals; member=SignalEmitted
string "BrakeFluidLevel.datatype"
double 48.5111
signal time=1725863092.480390 sender=:1.9701 -> destination=(null destination) serial=187 path=/com/vss_lib/VehicleSignals; interface=com.vss_lib.VehicleSignals; member=SignalEmitted
string "Electronics.Renesas.NavigationAccuracy.datatype"
double 11.383
signal time=1725863094.479111 sender=:1.9701 -> destination=(null destination) serial=188 path=/com/vss_lib/VehicleSignals; interface=com.vss_lib.VehicleSignals; member=SignalEmitted
string "Speed.unit"
double 47.296
signal time=1725863096.479761 sender=:1.9701 -> destination=(null destination) serial=189 path=/com/vss_lib/VehicleSignals; interface=com.vss_lib.VehicleSignals; member=SignalEmitted
string "Electronics.Renesas.NavigationAccuracy.unit"
double 6.26474
(In a second terminal, see the containers created sending the ASIL and QM signals to the VSS DBUS manager demo using VSS specs):
vss-middleware (main) $ sudo podman ps
[sudo] password for douglas:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9a5937f3a82f /sbin/init 54 minutes ago Up 54 minutes qm
b5659436d457 localhost/toyota_vss_image:latest sh -c /usr/lib/py... About a minute ago Up About a minute toyota_vss_container
e62bf9a0e121 localhost/bmw_vss_image:latest sh -c /usr/lib/py... About a minute ago Up About a minute bmw_vss_container
866ad65b24b9 localhost/ford_vss_image:latest sh -c /usr/lib/py... About a minute ago Up About a minute ford_vss_container
387283dc83e8 localhost/honda_vss_image:latest sh -c /usr/lib/py... About a minute ago Up About a minute honda_vss_container
1e7cbb90f017 localhost/jaguar_vss_image:latest sh -c /usr/lib/py... About a minute ago Up About a minute jaguar_vss_container
212b103ffd6a localhost/mercedes_vss_image:latest sh -c /usr/lib/py... About a minute ago Up About a minute mercedes_vss_container
161f79e61eb7 localhost/volvo_vss_image:latest sh -c /usr/lib/py... About a minute ago Up About a minute volvo_vss_container
: Install the Systemd Service
To enable and start the D-Bus service, follow these steps:
- Copy the systemd service file to the appropriate directory:
sudo cp systemd/vss-dbus.service /etc/systemd/system/
- Reload the systemd daemon:
sudo systemctl daemon-reload
- Enable the D-Bus service to start at boot:
sudo systemctl enable vss-dbus.service
- Start the service:
sudo systemctl start vss-dbus.service
- Check the status of the service:
sudo systemctl status vss-dbus.service
Ensure that the VSS configuration file /etc/vss/vss.config
is correctly set up with paths to the vendor-specific VSS files.
Example configuration:
[global]
vspec_path=/usr/share/vss-middleware/
[vehicle_toyota]
vspec_file=${vspec_path}toyota.vspec
[vehicle_bmw]
vspec_file=${vspec_path}bmw.vspec
Once the D-Bus service is running, you can monitor the random signals emitted by the VSS D-Bus service using dbus-monitor
. This will show the signals in real-time as they are emitted.
Run the following command:
dbus-monitor "interface=com.vss_lib.VehicleSignals"
You should see random signals being emitted, similar to the following:
signal sender=:1.102 -> dest=(null destination) serial=44 path=/com/vss_lib/VehicleSignals; interface=com.vss_lib.VehicleSignals; member=EmitHardwareSignal
string "Speed"
double 80.0
If you want to send hardware signals from a Python script, you can use the D-Bus client included in this project:
from pydbus import SystemBus
def send_hardware_signal(signal_name, value):
bus = SystemBus()
vss_service = bus.get("com.vss_lib.VehicleSignals")
vss_service.EmitHardwareSignal(signal_name, value)
# Example: Sending a speed signal with a value of 80
send_hardware_signal("Speed", 80)
To stop and disable the D-Bus service:
sudo systemctl stop vss-dbus.service
sudo systemctl disable vss-dbus.service
To uninstall the library and clean up:
pip uninstall vss-middleware
sudo rm /etc/systemd/system/vss-dbus.service
sudo rm /etc/vss/vss.config
$ make help
Available commands:
make - Alias for 'make python' to install the Python package
make python - Install the Python package using 'sudo pip install .'
make python_uninstall - Uninstall the Python package using 'sudo pip uninstall vss_lib'
make cpython - Convert Python files to Cython (.pyx), build C extensions
make cpython_uninstall - Remove Cython generated files and build artifacts
make help - Show this help message and explain each target
Feel free to open an issue or submit a pull request if you'd like to contribute to the project.
This project is licensed under the Apache License 2.0. See the LICENSE file for more details.