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.
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.
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.
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:
(Vehicle.Powertrain.TractionBattery.StateOfCharge.Displayed_10Hz.lua)
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
end
-- Provided parameters are used for populating metadata when listing signals.
function output_signals()
return "Vehicle.Powertrain.TractionBattery.StateOfCharge.Displayed_10Hz"
end
-- Required, declare what frequence you like to get "timer" invoked. 0 means no calls to "timer".
function timer_frequency_hz()
return local_frequecy_hz
end
-- 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)
end
-- 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()
end
-- 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
end
-- helper return function, make sure to use return_value_or_bytes or return_nothing.
function return_nothing()
return
end
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 cloud.remotivelabs.com – 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.