[Changelog] cellocator protocol
Module 38 J1939 DTC Appeared/Disappeared of Message type 11 is supported.
This module is sent by Cellocator Cello CAN iQ device.
The layout of bytes of the module to flespi parameters is below:
- Transmission Reasons Bitmask - can.dtc.state.bitmask
- Source Number - can.dtc.source
- Amount of active DTCs in the message - can.dtc.number
- DTC #1, DTC #2 etc - can.dtc.1, can.dtc.2, etc
Here is an example of Cellocator message that is registered for a Cellocator CelloTrack Nano packet that contains Module 28 General Status Event and Module 42 Nano Inherent Sensors.
{
"channel.id": 111,
"device.battery.level": 71,
"device.firmware.version": "34p",
"device.illuminance": 0,
"device.pressure.altitude": -42.1,
"device.temperature": 38.4,
"device.temperature.valid": false,
"device.x.acceleration": 0.011,
"device.y.acceleration": -0.03025,
"device.z.acceleration": -0.991,
"event.category": 1,
"event.enum": 13,
"gps.mode.1": 4,
"gps.mode.2": 2,
"gsm.signal.dbm": -77,
"hardware.version.enum": 122,
"ident": "2338333",
"measurement.source.13": 252,
"message.buffered.status": true,
"message.type": "11",
"module.id.28": true,
"module.id.42": true,
"peer": "127.0.0.1:43944",
"position.altitude": -30.2,
"position.direction": 250.726331,
"position.hdop": 1,
"position.latitude": 25.738857,
"position.longitude": -80.262057,
"position.satellites": 6,
"position.speed": 2,
"private.status": false,
"protocol.id": 9,
"sensor.battery.voltage.252": 2.926,
"sensor.group.id.252": 2,
"sensor.humidity.252": 33.1,
"sensor.humidity.alert.252": false,
"sensor.illuminance.252": 23,
"sensor.mac.address.252": "481ABBBBDDDD",
"sensor.report.reason.252": 6,
"sensor.rssi.252": -35,
"sensor.temperature.252": 30.6,
"sensor.temperature.alert.252": false,
"sensor.x.acceleration.252": 0,
"sensor.y.acceleration.252": -0.064,
"sensor.z.acceleration.252": -0.32,
"server.timestamp": 1638959705.789526,
"time.valid.status": true,
"timestamp": 1636582654
}
Parameter message.type=11
shows that this is a modular message, and parameters module.id.28=true
and module.id.42=true
show that this message contains modules 28 and 42.
According to this post namo, for Module 42 you should expect parameters device.battery.level
, device.illuminance
, device.pressure.altitude
etc to be present in the JSON message.
As for Module 28, you should first read event.category
and event.enum
parameters, as the set of parameters to be contained in the JSON message depends on the type of event received.
The message in my example has event.enum=13
and event.category=1
parameters, hence this is a Guest MultiSense raw data event. The list of parameters to be expected for this event can be found in this post namo.
Parameter measurement.source.13=252
(or 0xFC) tells you that this is an event from Guest MultiSense. Then parameters sensor.battery.voltage.252
, sensor.group.id.252
, sensor.humidity.252
etc with MultiSense related information should be expected in the JSON message.
Cellocator protocol updated: added Module 63 Crash Maneuver Statistics of CSA (Cellocator Safety Application) OTA Protocol
Mapping to flespi parameters is the following:
Module 63
- bytes 2-4 Trip ID - trip.id
- bytes 5-7 Maneuver ID - maneuver.id
- byte 8 Maneuver Type - maneuver.type
- bytes 9-16 Start Location - maneuver.start.longitude, degrees and maneuver.start.latitude, degrees
- bytes 17-24 End Location - maneuver.stop.longitude, degrees and maneuver.stop.latitude, degrees
- bytes 25-31 Start Time and Date - maneuver.timestamp, seconds
- bytes 32-33 Maneuver Duration - maneuver.duration, seconds
- byte 34 Crash ID - crash.id
- byte 37 Vehicle Type (as configured in PL) - vehicle.type
- byte 38 Crash Type - crash.type
- bytes 39-40 Acceleration Max (X or Y) during Crash - crash.max.acceleration, g
- byte 41 Crash Information, bit0 - bit3 - crash.orientation
- byte 41 Crash Information, bit4 - rollover.event, boolean
- byte 41 Crash Information, bit5 - driving.status, boolean
- bytes 42-43 Crash Duration - crash.duration, seconds
Parameter maneuver.type.enum of Cellocator protocol is replaced by the parameter maneuver.type.
New parameter maneuver.type is a numeric value that comes from Maneuver Type byte of CSA (Cellocator Safety Application) OTA Protocol modules.
Old parameter maneuver.type.enum will be removed in a week, 29-Dec-2021.
Cellocator protocol is updated: added system parameter timestamp.key.
Integer part of its value is a message timestamp, and the fractional part is a sequence number of the message.
The parameter is used to distinguish between two messages with the same timestamp of seconds granularity.
The protocol will be affected by the change in type of parameters gsm.mcc and gsm.mnc to be installed in 2 weeks - May 23rd, 2022: both parameters that now have type "string" will be stored as "number". The possible leading zeroes in MNC will be ignored (e.g. the value "01" will be stored as 1).
The protocol will be affected by the change in parameter can.dtc to be installed in 2 weeks - Mar 15th, 2024: the parameter can.dtc is currently of string type and will be converted to type array with separate DTC codes.
Added parameter can.dtc.array as an example of future implementation of can.dtc
- Edited
YuryAheichyk changes have been applied, the can.dtc parameter type changed to array
parameter renaming announcement which will happen in a week (May 22):
string parameter operation.mode.enum will be changed to operation.mode , the parameter operation.mode.enum will hold coresponding numeric value
string parameter report.reason.enum will be changed to report.reason, the parameter report.reason.enum will hold coresponding numeric value
- Edited
The OBDII DTC codes registration is planned to be changed. Currently, error codes are stored in the can.dtc parameter as an array of strings. To unify with other diagnostic protocol types, errors will be stored as an array of objects.
The changes will be applied in 2 weeks, on May 8, 2025.
For reference, two additional parameters have been added:
- can.dtc.strings - contains errors in the current format (will be removed in 1 month, on May 24, 2025)
- can.dtc.objects - contains errors in the new format (will be removed in 2 weeks, on May 8, 2025)
can.dtc.strings example:
["P0020","U0001"]
can.dtc.objects example:
[{"standard":"OBDII","code":"P0020"},{"standard":"OBDII","code":"U001"}]
YuryAheichyk changes applied, can.dtc array contain objects now.
For reference, two additional parameters added:
- can.dtc.strings - contains errors in the old format (will be removed on May 24, 2025)
- can.dtc.objects - contains errors in the new format (will be removed on May 24, 2025)
can.dtc.strings example:
["P0020","U0001"]
can.dtc.objects example:
[{"standard":"OBDII","code":"P0020"},{"standard":"OBDII","code":"U001"}]
YuryAheichyk changes applied, can.dtc.strings and can.dtc.objects parameters removed