LPMS CAN Decoder
Node ID: lpmsCanDecoder · Role: Filter · Realtime config: no
Description
Decodes raw CAN frames from an LPMS sensor into ImuData. Supports CANopen and Sequential CAN modes, 16-bit and 32-bit precisions, and per-channel mapping per the LPMS-IG1 user manual. Filters by IMU ID so multiple sensors can share one bus.
Inputs / Outputs
- Inputs:
Can - Outputs:
Imu
Config aliases
LpmsCanDecoder, lpmsCanDecoder
Properties
The following fields are exposed in the node’s Properties panel in the UI. Types map to UI widgets (e.g. string → text input, number → numeric, boolean → toggle, select → dropdown, json → JSON editor).
| Key | Label | Type | Default | Options | Description / Notes |
|---|---|---|---|---|---|
mode | CAN Mode | select | canopen | canopen, sequential | — |
imuId | IMU ID | number | 1 | — | — |
startId | Sequential Start ID (hex, ignored for CANopen) | string | 0x514 | — | — |
precision | Data Precision | select | int16 | int16, float32 | — |
gyroUnit | Gyro / Euler Unit | select | deg | deg, rad | — |
mapping | Channel Mapping (16 IDs) | json | [4,5,6,22,23,24,28,29,30,38,39,40,34,35,36,37] | — | — |
senderId | Output Sender ID | string | lpmsCan | — | — |
Example node definition
A full node definition in config.json looks like the block below. Paste it under the sinks key of your config, keyed by the node’s instance name (any identifier; it doesn’t have to match the node ID).
{
"sinks": {
"lpmsCanDecoder": {
"dataEndpoint": "inproc://lpmsCanDecoder_data",
"inputEndpoints": [
"inproc://can_data"
],
"inputDataFilter": [
"Can"
],
"settings": {
"gyroUnit": "deg",
"imuId": 1,
"mapping": [
4,
5,
6,
22,
23,
24,
28,
29,
30,
38,
39,
40,
34,
35,
36,
37
],
"mode": "canopen",
"precision": "int16",
"senderId": "lpmsCan",
"startId": "0x514"
}
}
}
}
Field reference
| Field | Purpose |
|---|---|
dataEndpoint | Endpoint this node binds to publish its output. Omit to let the runtime generate one. |
inputEndpoints | List of upstream endpoints this node connects to (outEndpoint / dataEndpoint values from upstream nodes). |
inputDataFilter | Optional whitelist of data types. Messages whose type isn’t in the list are dropped at the subscriber. |
settings | All user-configurable fields — see the Properties table above. |
Connections can also be declared at the top-level
connectionsarray whensettings.explicitConnectionsistrue, as an alternative to fillinginputEndpointson each node.