Telemetry concept

Several different kinds of telemetry are available varying by vehicle type. For traditional busses, FMS is the standard that defines what data about the vehicle is published on the FMS bus and further on by ITxPT FMStoIP service.

In addition, electrical and hydrogen buses as well as trams have proprietary data not captured by FMS.

Ruter desires to follow a data centric approach to telemetry data, and supports a current initiative in ITxPT to utilize self-explaining MQTT topics for individual data types like “odometer”, “doorsignal” etc.

As an intermediate step, our current telemetry topic generalizes all such data as telemetry defined by unique, 32 bit, identifiers. Data caught from the FMS bus retain their PGN numbers as the last 16 bits of the ID. Data not coming from the FMS bus follow a separate addressing scheme, with addresses allocated by Ruter on request. Please note that PTOs are free to decide if they want to use FMS or a non-FMS data source to provide the data.

The identifiers are constructed this way:

Bytes

Description

1

Source identifier (0x00 FMS, 0x01 Non-FMS)

2-4

Source-specific id, e.g. FMS PGNs

All FMS PGNs become "0000" + 4-digit hex PGN, i.e. “0000FE4E” for PGN FE4E..

FMS standard data identifiers in use

ID

Subid

Name

Unit/Value

Recommended refresh interval

Example payload

Remarks

 

0000FE4E

 

Door Control 1

 

On change

{"eventTimestamp":"2020-10-06T10:44:57.628Z","id":"0000fe4e","payloads":[{"subid":1821,"name":"Position of doors","value":2},{"subid":1820,"name":"Ramp/Wheel chair lift position","value":0},{"subid":3411,"name":"Status 2 of doors","value":0}]}

 

0000FDA5

 

Door Control 2

 

On change

{"eventTimestamp":"2020-10-06T12:55:15Z","id":"0000FDA5","payloads":[{"subid":3413,"name":"Open Status Door 1","value":"Closed"},{"subid":3416,"name":"Open Status Door 2","value":"Closed"},{"subid":3419,"name":"Open Status Door 3","value":"Closed"},{"subid":3422,"name":"Open Status Door 4","value":"Not available"}]}

 

0000FEC1

 

High Resolution Vehicle Distance

Meter

1/sec

{"eventTimestamp":"2020-10-06T10:45:05.033Z","id":"0000fec1","payloads":[{"subid":917,"name":"High resolution total vehicle distance","unit":"m","value":68503715}]}

 

0000FEF5

171

Ambient Air Temperature

Celsius

1/min

{"eventTimestamp":"2020-09-18T07:50:54.281Z","id":"0000FEF5","payloads":[{"name":"Ambient Air Temperature","subid":171,"unit":"C","value":13.3}]}

 

0000FEF2

183

Fuel Rate

L/hour

1/min

{"eventTimestamp":"2020-09-18T08:06:55.424Z","id":"0000FEF2","payloads":[{"name":"Fuel Rate","subid":183,"unit":"L/h","value":0.00462500037},{"name":"Instantaneous Fuel Economy","subid":184,"unit":"km/L","value":4.75390625}]}

 

0000FEF2

184

Instantaneous Fuel Economy

Km/L

1/min

{"eventTimestamp":"2020-09-18T08:06:55.424Z","id":"0000FEF2","payloads":[{"name":"Fuel Rate","subid":183,"unit":"L/h","value":0.00462500037},{"name":"Instantaneous Fuel Economy","subid":184,"unit":"km/L","value":4.75390625}]}

 

0000FEFC

96

Fuel Level 1

%

1/min

{"eventTimestamp":"2020-09-18T08:15:55.535Z","id":"0000FEFC","payloads":[{"name":"Fuel Level 1","subid":96,"unit":"%","value":92.0}]}

 

0000FEEE

110

Engine Temperature

Celsius

1/min

{"eventTimestamp":"2020-09-18T08:16:55.540Z","id":"0000FEEE","payloads":[{"name":"Engine Temperature","subid":110,"unit":"C","value":80.0}]}

 

0000F004

190

Engine Speed

rpm

1/min

{"eventTimestamp":"2020-10-06T12:53:52Z","id":"0000FEEC","payloads":[{"subid":237,"name":"vehicle identification number","value":"LC06S44R7K4000146"}]}

 

Non-FMS standard data identifiers in use

Note: IDs in the range 00010000-0001FFFF are non-standard FMS IDs in use for TaaS.

ID

Subid

Name

Unit/Value

Recommended refresh interval

Example payload

Remarks

 

0001FF25 (HVMS1_ZR)

10002

High Voltage System

 

On change

{"eventTimestamp":"2020-10-05T09:58:25Z","id":"0001FF25","payloads":[{"subid":10002,"name":"High Voltage System","value":"active"},{"subid":10003,"name":"Wall Charger connected","value":"not connected"},{"subid":10004,"name":"Fast Charger connected","value":"connected"},{"subid":10005,"name":"Charging Active","value":"not charging"}]}

 

0001FF25

10003

Wall Charger connected

 

On change

{"eventTimestamp":"2020-10-05T09:58:25Z","id":"0001FF25","payloads":[{"subid":10002,"name":"High Voltage System","value":"active"},{"subid":10003,"name":"Wall Charger connected","value":"not connected"},{"subid":10004,"name":"Fast Charger connected","value":"connected"},{"subid":10005,"name":"Charging Active","value":"not charging"}]}

 

0001FF25

10004

Fast Charger connected

 

On change

{"eventTimestamp":"2020-10-05T09:58:25Z","id":"0001FF25","payloads":[{"subid":10002,"name":"High Voltage System","value":"active"},{"subid":10003,"name":"Wall Charger connected","value":"not connected"},{"subid":10004,"name":"Fast Charger connected","value":"connected"},{"subid":10005,"name":"Charging Active","value":"not charging"}]}

 

0001FF25

10005

Charging Active

 

On change

{"eventTimestamp":"2020-10-05T09:58:25Z","id":"0001FF25","payloads":[{"subid":10002,"name":"High Voltage System","value":"active"},{"subid":10003,"name":"Wall Charger connected","value":"not connected"},{"subid":10004,"name":"Fast Charger connected","value":"connected"},{"subid":10005,"name":"Charging Active","value":"not charging"}]}

 

0001FF26 (HVMS2_ZR)

10006

SOC traction battery/Battery State of Charge

%

1/min

{"eventTimestamp":"2020-10-05T10:42:53Z","id":"0001FF26","payloads":[{"subid":10006,"name":"Battery State of Charge","unit":"%","value":100},{"subid":10007,"name":"Battery Voltage","unit":"Volt","value":684},{"subid":10008,"name":"Battery Current","unit":"Ampere","value":-10}]}

 

0001FF26

10007

Battery Voltage

Volt

1/min

{"eventTimestamp":"2020-10-05T10:42:53Z","id":"0001FF26","payloads":[{"subid":10006,"name":"Battery State of Charge","unit":"%","value":100},{"subid":10007,"name":"Battery Voltage","unit":"Volt","value":684},{"subid":10008,"name":"Battery Current","unit":"Ampere","value":-10}]}

 

0001FF26

10008

Battery Current

Ampere

1/min

{"eventTimestamp":"2020-10-05T10:42:53Z","id":"0001FF26","payloads":[{"subid":10006,"name":"Battery State of Charge","unit":"%","value":100},{"subid":10007,"name":"Battery Voltage","unit":"Volt","value":684},{"subid":10008,"name":"Battery Current","unit":"Ampere","value":-10}]}

 

0001FF64 (ENERGY_INFO)

10009

Average Energy Consumption

Wh/km

1/min

{"eventTimestamp":"2020-10-05T10:42:44Z","id":"0001FF64","payloads":[{"subid":10009,"name":"Average Energy Consumption","unit":"Wh/km","value":1524}]}

 

0001FF10 (HVAC1_FMS)

10010

Preheater Status

 

On change

 

 

0001FF10

10011

Heatpump compressor Status

 

On change

{"eventTimestamp":"2020-10-05T09:36:39Z","id":"0001FF10","payloads":[{"subid":10011,"name":"Heatpump compressor Master Status","value":"ON"},{"subid":10012,"name":"Heatpump compressor Slave Status","value":"OFF"},{"subid":10013,"name":"Indoor temperature front part bus","unit":"C","value":23}]}

 

0001FF10

10012

Heatpump compressor Slave Status:

 

On change

{"eventTimestamp":"2020-10-05T09:36:39Z","id":"0001FF10","payloads":[{"subid":10011,"name":"Heatpump compressor Master Status","value":"ON"},{"subid":10012,"name":"Heatpump compressor Slave Status","value":"OFF"},{"subid":10013,"name":"Indoor temperature front part bus","unit":"C","value":23}]}

 

0001FF10

10013

Indoor temperature front part bus/Inside Temperature Roof Master

Celsius

1/min

{"eventTimestamp":"2020-10-05T09:36:39Z","id":"0001FF10","payloads":[{"subid":10011,"name":"Heatpump compressor Master Status","value":"ON"},{"subid":10012,"name":"Heatpump compressor Slave Status","value":"OFF"},{"subid":10013,"name":"Indoor temperature front part bus","unit":"C","value":23}]}

 

0001FF10

10014

Indoor temperature rear part bus/Inside Temperature Roof Slave:

 

 

 

 

01000001

 

All doors closed

True/false

onChange

{"eventTimestamp":"2019-10-11T16:14:58Z","id":"01000001","payloads":[{"name":"All doors closed","value":true}]}

 

01000002

 

Temperature inside front

float

1/min

{"eventTimestamp":"2020-10-06T10:44:13.430Z","id":"01000002","payloads":[{"name":"Indoor temperature drivers cabin","unit":"C","value":22}]}

 

01000003

 

Temperature inside middle

float

1/min

 

 

01000004

 

Temperature inside back

float

1/min

 

 

01000005

 

SOC

float

1/min

 

 

01000006

 

Transmission mode

combustion/electric

onChange

 

Intended for hybrid vehicles

01000007

 

Windscreen wiper active

True/false

onChange

 

Taken to represent a measurement of the ground truth binary rainfall state, given that it is a better predictor of the binary rainfall state than radar- or gage-based measurements

01000008

 

Accelerometry

 

1/min

 

  • Bandwidth >= 100 hz

  • Resolution <= 0.01 g

 

xmin

Min x value last minute

g

 

 

 

 

xmax

Max x value last minute

g

 

 

 

 

xavg

Average x value last minute

g

 

 

 

 

ymin

Min y value last minute

g

 

 

 

 

ymax

Max y value last minute

g

 

 

 

 

yavg

Average y value last minute

g

 

 

 

 

zmin

Min z value last minute

g

 

 

 

 

zmax

Max z value last minute

g

 

 

 

 

zavg

Average z value last minute

g

 

 

 

01000009

 

Outdoor temperature

float

1/min

{"eventTimestamp":"2020-10-06T10:42:17.626Z","id":"01000009","payloads":[{"name":"Outdoor temperature","unit":"C","value":11}]}

  • Unit Celcius

  • Resolution <= 1 C

  • Measured at front of vehicle as near as possible to the ground

0100000A

 

Energy consumption last minute

float

1/min

 

  • Energy consumed the last minute

  • Including HVAC

  • Unit: kWh

 

Telemetric data in the vehicle are often refreshed at a very high rate and are originally intended to be consumed directly in the vehicle. Ruter’s enterprise architecture requires the same data to be consumed by Ruter’s back office. This requirement, along with constrains related to mobile networks, doesn’t allow us to use the same refresh rates as are ideal onboard vehicles. We will come back to our recommendations for data updates below.

FMS specific issues

To utilize FMS data in Ruter’s architecture, Operators can either set up an FMS2IP service or use any other means to subscribe to the FMS bus data. The data must then be published – along with any non-FMS data, to the vehicle’s MQTT broker either onChange or at a specific interval, which should be agreed with Ruter. Note that there must be one separate MQTT message per FMS PGN.

Guidelines for telemetry data update intervals over MQTT

The following table specifies recommended data update frequencies for specific data categories, regardless of their origin in the vehicle.

Data

Frequency

Notes

Door status

onChange

 

Stop signal

onChange

Currently as separate topic

Odometer

Every second

 

Temparatures

Every 10 minutes

 

State of Charge (SOC)

1/min

 

Transmission mode

onChange

 

 

MQTT JSON structure

Fields

 

Telemetry

Name

Type

Description

eventTimestamp

String

ISO 8601, UTC

Id

String

Eight digit hex as defined above

payloads

Array of Payload

If FMS data or accelerometry, one payload per SPN.

Else, one payload

 

Payload

Name

Type

Description

subid

string

Optional. Only to be used for SPN

name

string

Optional

unit

string

Optional

value

any

 

 

Examples

Temperature (non-FMS):

{

"eventTimestamp": "2019-10-31T12:45:50Z",

"id": "01000004",

"payloads":

[

{

"name": "Temperature inside back",

"value": "17.2"

}

]

}

Speed (FMS-based with two SPNs)

{

"eventTimestamp": "2017-10-31T12:45:50Z",

"id": "0000FEF1",

"payloads":

[

{

"subid": 84,

"name": "Wheel-Based Vehicle Speed",

"unit": "km/h",

"value": 55.3

},

{

"subid": 597,

"name": "Wheel-Based Vehicle Speed",

"value": "released"

}

]

}

Accelerometry (Non-FMS)

{

"eventTimestamp": "2019-10-31T12:45:50Z",

"id": "01000008",

"payloads":

[

{

“name": "xmin",

"value": 0.1

},

{

“name": "xmax",

"value": 0.2

},

{

“name": "xavg",

"value": 0.15

},

{

“name": "ymin",

"value": -0.1

},

{

“name": "ymax,

"value": 0.2

},

{

“name": "yavg",

"value": 0.1

},

{

“name": "zmin",

"value": 0.01

},

{

“name": "zmax",

"value": 0.03

},

{

“name": "zavg",

"value": 0.02

}

]

}