Dev tips

COVESA VSS Spotlight Webinar

Watch the recorded webinar with hands-on demos focused on why and how RemotiveLabs enables signal conversion with LUA-scripting and iterative development of VSS-signals. COVESA is is a global, member-driven alliance focused on the development of open standards and technologies that accelerate innovation for connected vehicle systems. Resulting in a more diverse, sustainable and integrated mobility ecosystem.

COVESA VSS how to in RemotiveLabs tooling
March 19, 2024
Open standards


Turn live / recorded vehicle data into filtered VSS data

Our recent webinar within COVESA VSS Spotlight focuses on hands-on demos and how our platform caters to emitting Vehicle Signal Specification (VSS) with interactive LUA scripting using CLI.

How RemotiveLabs Platform incorporates VSS

The RemotiveBroker transforms the proprietary signals (live or recorded) into VSS. When you just need to rename a signal you can use a simple configuration file. For more complex transformations, we propose writing a small script in LUA to combine multiple signals, change frequency, and basically own your transformation setup. It is possible to configure the RemotiveBroker to only give access to the transformed signals, for more details see our documentation.

COVESA Spotlight Series, featuring VSS adoption by RemotiveLabs. RemotiveLabs is a startup member within COVESA.

Iterate VSS signals with LUA & RemotiveCLI

How to subscribe using a LUA script:

remotive broker signals subscribe --script <script.lua> --url <brokerUrl> --api-key <key>

Example of a lua script that merges two signals and changes its frequency:

local local_signals = {{
    name = "ID352BMS_energyStatus.BMS_nominalFullPackEnergy",
    namespace = "VehicleBus"
}, {
    name = "ID352BMS_energyStatus.BMS_nominalEnergyRemaining",
    namespace = "VehicleBus"
local local_frequecy_hz = 10
local state_of_charge = 0

-- Required, declare which input is needed to operate this program.
function input_signals()
    return local_signals

-- Provided parameters are used for populating metadata when listing signals.
function output_signals()
    return "Vehicle.Powertrain.TractionBattery.StateOfCharge.Displayed_10Hz"

-- Required, declare what frequence you like to get "timer" invoked. 0 means no calls to "timer".
function timer_frequency_hz()
    return local_frequecy_hz

-- Invoked with the frequecy returned by "timer_frequency_hz".
-- @param system_timestamp_us: system time stamp 
function timer(system_timestamp_us)
    return return_value_or_bytes(state_of_charge)

-- Invoked when ANY signal declared in "local_signals" arrive
-- @param signals_timestamp_us: signal time stamp
-- @param system_timestamp_us
-- @param signals: array of signals containing all or a subset of signals declared in "local_signals". Make sure to nil check before use.
function signals(signals, namespace, signals_timestamp_us, system_timestamp_us)
    state_of_charge = signals["ID352BMS_energyStatus.BMS_nominalEnergyRemaining"] / signals["ID352BMS_energyStatus.BMS_nominalFullPackEnergy"]
    return return_nothing()

-- helper return function, make sure to use return_value_or_bytes or return_nothing.
function return_value_or_bytes(value_or_bytes)
    return value_or_bytes

-- helper return function, make sure to use return_value_or_bytes or return_nothing.
function return_nothing()

Why does RemotiveLabs use COVESA VSS?

  • Access: Using VSS gives developers access to curated signals while safeguarding proprietary data.
  • Transparency: A core part of RemotiveLabs cloud offering is to simplify the sharing of vehicle data between teams allowing collaboration between the OEM, its partners, and 3rd party developers. Using VSS allows everyone to see the same data.
  • Compatibility: VSS has many business arguments related to working smarter and not harder. VSS increases the ability to reuse features/services developed between vehicle platforms.

Try it for yourself

Everything we present in the webinar is available for you to try with our free limited version of RemotiveCloud. Create an account by signing up at – you will automatically create your own project, including a few sample recordings of drive cycles we provide, you can upload 1 Candump and invite 1 collaborator.