Table of Contents
LoadSensing G7 Nodes Message API
Welcome to the LoadSensing G7 nodes message API documentation.
This documentation describes the binary message formats used for communication with LoadSensing G7 nodes.
Navigation
- Output Messages — Uplink messages sent from the node to the gateway.
- Input Messages — Downlink messages sent from the gateway to the node.
- Technical Annex — Additional technical details and references.
- 🖨️ Print / Export PDF — Full site on a single printable page.
Message Format
Each message page contains a field table describing the binary layout:
| Column | Description |
|---|---|
| Field | Field name with tree-drawing characters showing nesting |
| Bits | Number of bits the field occupies |
| Type | Field type (UInt, Int, Bool, Enum, Struct, Switch, Seq, etc.) |
| Condition | When the field is present (Always, or a conditional expression) |
| Description | Additional information, including enum value mappings |
Auto-generated documentation — Copyright © 2026 Worldsensing S.L.
Output Messages
Output Messages
Uplink messages sent from the node to the gateway.
| AM Type | Message |
|---|---|
| 10 | Til90EDataStrMsg |
| 21 | MiscCmdsStructMsg |
| 76 | Til90DataStrMsg |
| 79 | HealthV3DataStructMsg |
| 82 | DynDataStrMsg |
| 83 | DynRawDataStrMsg |
| 84 | GnssStatisticsStrMsg |
| 85 | GnssDataStrMsg |
| 88 | VwDataStrMsg |
| 91 | TMDataStrMsg |
| 92 | DigGenDataStrMsg |
| 167 | LoRaAdrAckCfgStructMsg |
| 168 | DigPort0CfgStrMsg |
| 172 | CommPeriodCfgStructMsg |
| 192 | AggregatedReportingPeriodAndSlotTime |
Digital Generic Integrations
Payload messages carried inside DigGenDataStrMsg (AM Type 92).
| AM Type | Message |
|---|---|
| 92 | DigGenDataStrMsg |
| IntID: 0, v0 | DigGenSDI12GenericDataStrMsg |
| IntID: 65534, v0 | DigGenDummyIntegrationForTestsDataStrMsgV0 |
| IntID: 65534, v1 | DigGenDummyIntegrationForTestsDataStrMsgV1 |
| IntID: 65534, v2 | DigGenDummyIntegrationForTestsDataStrMsgV2 |
Til90EDataStrMsg
Til 90 E Data Str Msg
AM Type: 10
Source Code
| Field | Bits | Type | Condition | Mutator | Validator | Description |
|---|---|---|---|---|---|---|
| ls_header | — | Struct | Always | |||
| ├── uplink_version | 4 | UInt | Always | |||
| ├── node_id_high | 4 | Fragment | Always | |||
| ├── product_code | 8 | UInt | Always | |||
| ├── node_id | 16 | UInt | Always | |||
| ├── sequence_number | 8 | UInt | Always | |||
| └── am_type | 8 | UInt | Always | |||
| version | 2 | UInt | Always | |||
| alerts | — | Struct | Always | |||
| ├── status | — | Struct | Always | |||
| │ ├── x | 2 | Enum | Always | INACTIVE (0), ACTIVE_PREVIOUS (1), ACTIVE_NOW_LOW (2), ACTIVE_NOW_HIGH (3) | ||
| │ ├── y | 2 | Enum | Always | INACTIVE (0), ACTIVE_PREVIOUS (1), ACTIVE_NOW_LOW (2), ACTIVE_NOW_HIGH (3) | ||
| │ └── z | 2 | Enum | Always | INACTIVE (0), ACTIVE_PREVIOUS (1), ACTIVE_NOW_LOW (2), ACTIVE_NOW_HIGH (3) | ||
| ├── reserved | 6 | Reserved | Always | |||
| └── excess | — | Struct | Always | |||
| ├── x | 7 | UInt | x == 1 | ExcessMutator | RangeValidator[0, 167] | |
| ├── y | 7 | UInt | y == 1 | ExcessMutator | RangeValidator[0, 167] | |
| └── z | 7 | UInt | z == 1 | ExcessMutator | RangeValidator[0, 167] |
| Field | Bits | Type | Condition | Mutator | Validator | Description | WF Address | WF Name | WF Unit | Cloud DP Name |
|---|---|---|---|---|---|---|---|---|---|---|
| ls_header | — | Struct | Always | |||||||
| ├── uplink_version | 4 | UInt | Always | |||||||
| ├── node_id_high | 4 | Fragment | Always | |||||||
| ├── product_code | 8 | UInt | Always | |||||||
| ├── node_id | 16 | UInt | Always | |||||||
| ├── sequence_number | 8 | UInt | Always | |||||||
| └── am_type | 8 | UInt | Always | |||||||
| version | 2 | UInt | Always | |||||||
| alerts | — | Struct | Always | |||||||
| ├── status | — | Struct | Always | |||||||
| │ ├── x | 2 | Enum | Always | INACTIVE (0), ACTIVE_PREVIOUS (1), ACTIVE_NOW_LOW (2), ACTIVE_NOW_HIGH (3) | ||||||
| │ ├── y | 2 | Enum | Always | INACTIVE (0), ACTIVE_PREVIOUS (1), ACTIVE_NOW_LOW (2), ACTIVE_NOW_HIGH (3) | ||||||
| │ └── z | 2 | Enum | Always | INACTIVE (0), ACTIVE_PREVIOUS (1), ACTIVE_NOW_LOW (2), ACTIVE_NOW_HIGH (3) | ||||||
| ├── reserved | 6 | Reserved | Always | |||||||
| └── excess | — | Struct | Always | |||||||
| ├── x | 7 | UInt | x == 1 | ExcessMutator | RangeValidator[0, 167] | |||||
| ├── y | 7 | UInt | y == 1 | ExcessMutator | RangeValidator[0, 167] | |||||
| └── z | 7 | UInt | z == 1 | ExcessMutator | RangeValidator[0, 167] |
Worldsensing Format Sources
| Address | Manufacturer | Type | Model | Status |
|---|---|---|---|---|
| a:10:00:00 | Worldsensing | Tiltmeter | 0 |
Example
_active_previous_does_not_add_axis_in_excess
Source: Til90EAlertStrMessages.py
JSON Message
{
"ls_header": {
"am_type": {
"raw": 10,
"value": "10"
},
"node_id": {
"raw": 1234,
"value": "1234"
},
"product_code": {
"raw": 80,
"value": "80"
},
"sequence_number": {
"raw": 1,
"value": "1"
},
"uplink_version": {
"raw": 4,
"value": "4"
}
},
"version": {
"raw": 0,
"value": "0"
},
"alerts": {
"status": {
"x": {
"value": "ACTIVE_PREVIOUS",
"raw": 1
},
"y": {
"value": "ACTIVE_NOW_LOW",
"raw": 2
},
"z": {
"value": "ACTIVE_NOW_HIGH",
"raw": 3
}
},
"reserved": {
"value": "0",
"raw": 0
},
"excess": {
"y": {
"value": "0",
"raw": 0
},
"z": {
"value": "0",
"raw": 0
}
}
}
}
Encoded Bytes
40 50 04 D2 01 0A 1B 00 00 00
Related Fixture Files
MiscCmdsStructMsg
Misc Cmds Struct Msg
AM Type: 21
Source Code
| Field | Bits | Type | Condition | Validator | Description |
|---|---|---|---|---|---|
| ls_header | — | Struct | Always | ||
| ├── uplink_version | 4 | UInt | Always | ||
| ├── node_id_high | 4 | Fragment | Always | ||
| ├── product_code | 8 | UInt | Always | ||
| ├── node_id | 16 | UInt | Always | ||
| ├── sequence_number | 8 | UInt | Always | ||
| └── am_type | 8 | UInt | Always | ||
| version | 4 | UInt | Always | RangeValidator[0, 0] | |
| reserved | 4 | Reserved | Always | ||
| commandId | 8 | Enum | Always | LORA_CERT_MOD (0), BLE_OTA (1), LOCAL_SAMPLING (2), BLE_STATE (3) | |
| commandPayload | — | Switch | Always | ||
| ├── LORA_CERT_MOD | 8 | Enum | commandId == LORA_CERT_MOD | LORA_CERT_MOD_DISABLED (0), LORA_CERT_MOD_ENABLED (1) | |
| ├── BLE_OTA | 0 | — | commandId == BLE_OTA | ||
| ├── version | 4 | UInt | commandId == LOCAL_SAMPLING | RangeValidator[0, 0] | |
| ├── samplingPeriod | 24 | UInt | commandId == LOCAL_SAMPLING | RangeValidator[0, 86400] | |
| ├── samplingTime | 24 | UInt | commandId == LOCAL_SAMPLING | RangeValidator[0, 86400] | |
| ├── reserved | 4 | Reserved | commandId == LOCAL_SAMPLING | ||
| └── BLE_STATE | 8 | Enum | commandId == BLE_STATE | NOT_STARTED (0), SYNCING (1), IDLE (2), NOT_ADVERTISING (3), ADVERTISING (4), OFF (5), CONNECTED (6), INVALID_FW (7), ERR_SYNCING (8), ERR_STOP_ADV (9), ERR_START_ADV (10), ERR_RESET (11), UNKNOWN_ERR (12), RESET_DONE (128), RESET_DONE_SYNCING (129), RESET_DONE_IDLE (130), RESET_DONE_NOT_ADVERTISING (131), RESET_DONE_ADVERTISING (132), RESET_DONE_BT_OFF (133), RESET_DONE_CONNECTED (134), RESET_DONE_ERR_SYNCING (136), RESET_DONE_ERR_STOP_ADV (137), RESET_DONE_ERR_START_ADV (138), IFACE_OFF (255) |
Example
misc_cmds_lora_state_disabled
Source: MiscCommandsMessages.py
JSON Message
{
"ls_header": {
"uplink_version": {
"value": "4",
"raw": 4
},
"product_code": {
"value": "94",
"raw": 94
},
"node_id": {
"value": "87",
"raw": 87
},
"sequence_number": {
"value": "1",
"raw": 1
},
"am_type": {
"value": "21",
"raw": 21
}
},
"reserved": {
"value": "0",
"raw": 0
},
"version": {
"value": "0",
"raw": 0
},
"commandId": {
"value": "LORA_CERT_MOD",
"raw": 0
},
"commandPayload": {
"value": "LORA_CERT_MOD_DISABLED",
"raw": 0
}
}
Encoded Bytes
40 5E 00 57 01 15 00 00 00
Related Fixture Files
Til90DataStrMsg
Til 90 Data Str Msg
AM Type: 76
Source Code
| Field | Bits | Type | Unit | Condition | Mutator | Error | Description |
|---|---|---|---|---|---|---|---|
| ls_header | — | Struct | Always | ||||
| ├── uplink_version | 4 | UInt | Always | ||||
| ├── node_id_high | 4 | Fragment | Always | ||||
| ├── product_code | 8 | UInt | Always | ||||
| ├── node_id | 16 | UInt | Always | ||||
| ├── sequence_number | 8 | UInt | Always | ||||
| └── am_type | 8 | UInt | Always | ||||
| readTimestamp | 32 | TimestampField | Always | TimestampMutator | |||
| version | 2 | UInt | Always | ||||
| channels | 3 | Bitmap | Always | ||||
| errorCode | 4 | Enum | Always | OK (0), NOT_RESPONDING (1), SELF_TEST_ERROR (2), INVALID_TEMP (3) | |||
| isHighPrecision | 1 | Bool | Always | ||||
| temperature | 12 | Int | Cel | Always | ScalingMutator(×10) | ReferenceEntryError(GENERAL_ERROR, Tilt90Error.INVALID_TEMP), ReferenceEntryError(NOT_RESPONDING, Tilt90Error.NOT_RESPONDING) | |
| → channels (bitmap) | — | Ref | Always | ||||
| Readings [bitmap] | — | Seq | Always | ||||
| ├── tilt | 21 | Int | deg | — | ScalingMutator(×10000) | ReferenceEntryError(SELF_TEST_ERROR, Tilt90Error.SELF_TEST_ERROR), ReferenceEntryError(NOT_RESPONDING, Tilt90Error.NOT_RESPONDING) | |
| ├── std | 20 | UInt | deg | isHighPrecision == 1 | MultiplierMutator(×256000) | ReferenceEntryError(SELF_TEST_ERROR, Tilt90Error.SELF_TEST_ERROR), ReferenceEntryError(NOT_RESPONDING, Tilt90Error.NOT_RESPONDING) | |
| └── std | 20 | UInt | deg | isHighPrecision == 0 | MultiplierMutator(×51200) | ReferenceEntryError(SELF_TEST_ERROR, Tilt90Error.SELF_TEST_ERROR), ReferenceEntryError(NOT_RESPONDING, Tilt90Error.NOT_RESPONDING) | |
| azimuth | 9 | UInt | version > 0 |
| Field | Bits | Type | Unit | Condition | Mutator | Error | Description | WF Address | WF Name | WF Unit | Cloud DP Name |
|---|---|---|---|---|---|---|---|---|---|---|---|
| ls_header | — | Struct | Always | ||||||||
| ├── uplink_version | 4 | UInt | Always | ||||||||
| ├── node_id_high | 4 | Fragment | Always | ||||||||
| ├── product_code | 8 | UInt | Always | ||||||||
| ├── node_id | 16 | UInt | Always | ||||||||
| ├── sequence_number | 8 | UInt | Always | ||||||||
| └── am_type | 8 | UInt | Always | ||||||||
| readTimestamp | 32 | TimestampField | Always | TimestampMutator | |||||||
| version | 2 | UInt | Always | ||||||||
| channels | 3 | Bitmap | Always | ||||||||
| errorCode | 4 | Enum | Always | OK (0), NOT_RESPONDING (1), SELF_TEST_ERROR (2), INVALID_TEMP (3) | |||||||
| isHighPrecision | 1 | Bool | Always | ||||||||
| temperature | 12 | Int | Cel | Always | ScalingMutator(×10) | ReferenceEntryError(GENERAL_ERROR, Tilt90Error.INVALID_TEMP), ReferenceEntryError(NOT_RESPONDING, Tilt90Error.NOT_RESPONDING) | a:10:01:00 | temperature | Cel | ||
| → channels (bitmap) | — | Ref | Always | ||||||||
| Readings [bitmap] | — | Seq | Always | ||||||||
| ├── tilt | 21 | Int | deg | — | ScalingMutator(×10000) | ReferenceEntryError(SELF_TEST_ERROR, Tilt90Error.SELF_TEST_ERROR), ReferenceEntryError(NOT_RESPONDING, Tilt90Error.NOT_RESPONDING) | a:10:00:00 | xAxis | deg | axis_x | |
| ├── std | 20 | UInt | deg | isHighPrecision == 1 | MultiplierMutator(×256000) | ReferenceEntryError(SELF_TEST_ERROR, Tilt90Error.SELF_TEST_ERROR), ReferenceEntryError(NOT_RESPONDING, Tilt90Error.NOT_RESPONDING) | a:10:00:00 | xAxisStd | deg | axis_x_std | |
| └── std | 20 | UInt | deg | isHighPrecision == 0 | MultiplierMutator(×51200) | ReferenceEntryError(SELF_TEST_ERROR, Tilt90Error.SELF_TEST_ERROR), ReferenceEntryError(NOT_RESPONDING, Tilt90Error.NOT_RESPONDING) | a:10:00:00 | xAxisStd | deg | axis_x_std | |
| azimuth | 9 | UInt | version > 0 |
Worldsensing Format Sources
| Address | Manufacturer | Type | Model | Status |
|---|---|---|---|---|
| a:10:00:00 | Worldsensing | Tiltmeter | 0 | |
| a:10:01:00 | Worldsensing | Thermometer | 0 |
Example
decode_ok_no_azimuth_and_no_ishighprecision
Source: Til90DataStrMessages.py
JSON Message
{
"ls_header": {
"am_type": {
"raw": 76,
"value": "76"
},
"node_id": {
"raw": 87,
"value": "87"
},
"product_code": {
"raw": 94,
"value": "94"
},
"sequence_number": {
"raw": 1,
"value": "1"
},
"uplink_version": {
"raw": 4,
"value": "4"
}
},
"readTimestamp": {
"raw": 0,
"value": "1970-01-01T00:00:00Z"
},
"version": {
"raw": 0,
"value": "0"
},
"channels": {
"raw": [
false,
false,
true
],
"value": [
false,
false,
true
]
},
"errorCode": {
"raw": 2,
"value": "SELF_TEST_ERROR"
},
"isHighPrecision": {
"raw": false,
"value": false
},
"temperature": {
"raw": 25,
"unit": "Cel",
"value": "2.5"
},
"readings": [
{},
{},
{
"std": {
"error": {
"code": 99,
"subCode": 1
},
"raw": 2,
"unit": "deg"
},
"tilt": {
"error": {
"code": 99,
"subCode": 1
},
"raw": 1,
"unit": "deg"
}
}
],
"padding": {
"raw": 0,
"value": "0"
}
}
Encoded Bytes
40 5E 00 57 01 4C 00 00 00 00 21 00 64 00 00 20 00 04
Related Fixture Files
HealthV3DataStructMsg
Health V3 Data Struct Msg
AM Type: 79
Source Code
| Field | Bits | Type | Unit | Condition | Mutator | Validator | Description |
|---|---|---|---|---|---|---|---|
| ls_header | — | Struct | Always | ||||
| ├── uplink_version | 4 | UInt | Always | ||||
| ├── node_id_high | 4 | Fragment | Always | ||||
| ├── product_code | 8 | UInt | Always | ||||
| ├── node_id | 16 | UInt | Always | ||||
| ├── sequence_number | 8 | UInt | Always | ||||
| └── am_type | 8 | UInt | Always | ||||
| readTimestamp | 32 | TimestampField | Always | TimestampMutator | |||
| version | 2 | UInt | Always | RangeValidator[0, 1] | |||
| uptime | 30 | UInt | s | Always | |||
| inputPower | 12 | UInt | V | Always | ScalingMutator(×100) | ||
| temperature | 8 | Int | Cel | Always | |||
| percentage | 10 | UInt | %RH | version == 1 | ScalingMutator(×10) | ||
| std | 9 | UInt | %RH | version == 1 | ScalingMutator(×10) | ||
| delta | 10 | UInt | %RH | version == 1 | ScalingMutator(×10) | ||
| reserved | 3 | Reserved | version == 1 | ||||
| serialNumber | 20 | UInt | Always | ||||
| firmwareVersion | — | Struct | Always | ||||
| ├── msb | 8 | UInt | Always | ||||
| └── lsb | 8 | UInt | Always | ||||
| time | — | Struct | Always | ||||
| ├── drift | 1 | Bool | Always | ||||
| └── inSeconds | 15 | UInt | s | Always | TimeDeltaToSecondsMutator(÷60) |
| Field | Bits | Type | Unit | Condition | Mutator | Validator | Description | WF Address | WF Name | WF Unit | Cloud DP Name |
|---|---|---|---|---|---|---|---|---|---|---|---|
| ls_header | — | Struct | Always | ||||||||
| ├── uplink_version | 4 | UInt | Always | ||||||||
| ├── node_id_high | 4 | Fragment | Always | ||||||||
| ├── product_code | 8 | UInt | Always | ||||||||
| ├── node_id | 16 | UInt | Always | ||||||||
| ├── sequence_number | 8 | UInt | Always | ||||||||
| └── am_type | 8 | UInt | Always | ||||||||
| readTimestamp | 32 | TimestampField | Always | TimestampMutator | |||||||
| version | 2 | UInt | Always | RangeValidator[0, 1] | |||||||
| uptime | 30 | UInt | s | Always | a:00:00:00 | uptime | s | ||||
| inputPower | 12 | UInt | V | Always | ScalingMutator(×100) | a:00:02:00 | inputPower | V | main_power | ||
| temperature | 8 | Int | Cel | Always | a:00:01:00 | temperature | Cel | ||||
| percentage | 10 | UInt | %RH | version == 1 | ScalingMutator(×10) | a:00:03:00 | relative | %RH | humidity | ||
| std | 9 | UInt | %RH | version == 1 | ScalingMutator(×10) | a:00:03:00 | std | %RH | humidity_std | ||
| delta | 10 | UInt | %RH | version == 1 | ScalingMutator(×10) | a:00:03:00 | delta | %RH | humidity_delta | ||
| reserved | 3 | Reserved | version == 1 | ||||||||
| serialNumber | 20 | UInt | Always | ||||||||
| firmwareVersion | — | Struct | Always | ||||||||
| ├── msb | 8 | UInt | Always | ||||||||
| └── lsb | 8 | UInt | Always | ||||||||
| time | — | Struct | Always | ||||||||
| ├── drift | 1 | Bool | Always | ||||||||
| └── inSeconds | 15 | UInt | s | Always | TimeDeltaToSecondsMutator(÷60) | a:00:00:00 | delta | s | time_delta |
Worldsensing Format Sources
| Address | Manufacturer | Type | Model | Status |
|---|---|---|---|---|
| a:00:00:00 | Worldsensing | Time | 0 | |
| a:00:01:00 | Worldsensing | Thermometer | 0 | |
| a:00:02:00 | Worldsensing | Voltmeter | 0 | |
| a:00:03:00 | Worldsensing | Humidity | 0 |
Example
decode_ok_subversion_0
Source: HealthV3DataStructMessages.py
JSON Message
{
"ls_header": {
"am_type": {
"raw": 79,
"value": "79"
},
"node_id": {
"raw": 5,
"value": "5"
},
"product_code": {
"raw": 2,
"value": "2"
},
"sequence_number": {
"raw": 1,
"value": "1"
},
"uplink_version": {
"raw": 4,
"value": "4"
}
},
"readTimestamp": {
"raw": 540475440,
"value": "1987-02-16T12:04:00Z"
},
"version": {
"raw": 0,
"value": "0"
},
"uptime": {
"raw": 5000,
"unit": "s",
"value": "5000"
},
"inputPower": {
"raw": 450,
"unit": "V",
"value": "4.5"
},
"temperature": {
"raw": 25,
"unit": "Cel",
"value": "25"
},
"serialNumber": {
"raw": 2,
"value": "2"
},
"firmwareVersion": {
"lsb": {
"raw": 2,
"value": "2"
},
"msb": {
"raw": 1,
"value": "1"
}
},
"time": {
"inSeconds": {
"raw": 1,
"unit": "s",
"value": "60"
},
"drift": {
"raw": true,
"value": true
}
}
}
Encoded Bytes
40 02 00 05 01 4F 20 37 00 30 00 00 13 88 1C 21 90 00 02 01 02 80 01
Related Fixture Files
DynDataStrMsg
Dyn Data Str Msg
AM Type: 82
Source Code
| Field | Bits | Type | Unit | Condition | Mutator | Error | Validator | Description |
|---|---|---|---|---|---|---|---|---|
| ls_header | — | Struct | Always | |||||
| ├── uplink_version | 4 | UInt | Always | |||||
| ├── node_id_high | 4 | Fragment | Always | |||||
| ├── product_code | 8 | UInt | Always | |||||
| ├── node_id | 16 | UInt | Always | |||||
| ├── sequence_number | 8 | UInt | Always | |||||
| └── am_type | 8 | UInt | Always | |||||
| timestamp | 32 | TimestampField | Always | TimestampMutator | ||||
| version | 4 | UInt | Always | RangeValidator[0, 2] | ||||
| commonHeader | — | Switch | Always | |||||
| ├── reserved | 2 | Reserved | version == 0 | |||||
| ├── outputParameter | 2 | Enum | version == 0 | NO_ALGORITHM (0), MTVV (1), PPV (2), PGA (3), PSA (4) | ||||
| ├── reserved | 1 | Reserved | version == 1 | |||||
| ├── alertReport | 1 | Bool | version == 1 | |||||
| ├── outputParameter | 2 | Enum | version == 1 | NO_ALGORITHM (0), MTVV (1), PPV (2), PGA (3), PSA (4) | ||||
| ├── alertReport | 1 | Bool | version == 2 | |||||
| └── outputParameter | 3 | Enum | version == 2 | NO_ALGORITHM (0), MTVV (1), PPV (2), PGA (3), PSA (4) | ||||
| readings | — | Switch | Always | |||||
| ├── frameHeader | — | Struct | outputParameter == (MTVV, 0) | |||||
| │ ├── frameNumber | 1 | UInt | outputParameter == (MTVV, 0) | |||||
| │ ├── totalEvents | 4 | UInt | outputParameter == (MTVV, 0) | RangeValidator[0, 9] | ||||
| │ ├── nEvents | 3 | UInt | frameNumber == 0 | RangeValidator[0, 4] | ||||
| │ └── nEvents | 3 | UInt | frameNumber != 0 | RangeValidator[0, 5] | ||||
| ├── transmissionThreshold | 10 | Mtvv | dB | frameNumber == 0 | OffsetMutator(-55), MultiplierMutator(×20) | EntryError(DATA_OUT_OF_RANGE, 1023) | RangeValidator[55.0, 100.0] | |
| ├── reportingPeriodSummary | — | Struct | frameNumber == 0 | |||||
| │ ├── numEventsAboveReportThreshold | 6 | UInt | count | frameNumber == 0 | EntryError(DATA_OUT_OF_RANGE, 63) | |||
| │ ├── numEventsBelowReportThreshold | 6 | UInt | count | frameNumber == 0 | EntryError(DATA_OUT_OF_RANGE, 63) | |||
| │ └── numActiveWindows | 20 | UInt | count | frameNumber == 0 | EntryError(DATA_OUT_OF_RANGE, 1048575) | |||
| ├── Reporting Events [nEvents] | — | Seq | outputParameter == (MTVV, 0) | |||||
| │ ├── timestampEvent | 32 | TimestampField | — | TimestampMutator | ||||
| │ ├── numWindowsEvent | 7 | UInt | count | — | EntryError(DATA_OUT_OF_RANGE, 127) | |||
| │ ├── xAxis | — | Struct | — | |||||
| │ │ └── MTVV | 10 | Mtvv | dB | — | OffsetMutator(-55), MultiplierMutator(×20) | EntryError(DATA_OUT_OF_RANGE, 1023) | RangeValidator[55.0, 100.0] | |
| │ ├── yAxis | — | Struct | — | |||||
| │ │ └── MTVV | 10 | Mtvv | dB | — | OffsetMutator(-55), MultiplierMutator(×20) | EntryError(DATA_OUT_OF_RANGE, 1023) | RangeValidator[55.0, 100.0] | |
| │ └── zAxis | — | Struct | — | |||||
| │ └── MTVV | 10 | Mtvv | dB | — | OffsetMutator(-55), MultiplierMutator(×20) | EntryError(DATA_OUT_OF_RANGE, 1023) | RangeValidator[55.0, 100.0] | |
| ├── frameHeader | — | Struct | outputParameter == (MTVV, 1) | |||||
| │ ├── frameNumber | 1 | UInt | outputParameter == (MTVV, 1) | |||||
| │ ├── totalEvents | 4 | UInt | outputParameter == (MTVV, 1) | RangeValidator[0, 9] | ||||
| │ ├── nEvents | 3 | UInt | frameNumber == 0 | RangeValidator[0, 4] | ||||
| │ └── nEvents | 3 | UInt | frameNumber != 0 | RangeValidator[0, 5] | ||||
| ├── temperature | 12 | Int | Cel | frameNumber == 0 | ScalingMutator(×10) | EntryError(DATA_OUT_OF_RANGE, 2047) | ||
| ├── transmissionThreshold | 10 | Mtvv | dB | frameNumber == 0 | OffsetMutator(-55), MultiplierMutator(×20) | EntryError(DATA_OUT_OF_RANGE, 1023) | RangeValidator[55.0, 100.0] | |
| ├── reportingPeriodSummary | — | Struct | frameNumber == 0 | |||||
| │ ├── numEventsAboveReportThreshold | 6 | UInt | count | frameNumber == 0 | EntryError(DATA_OUT_OF_RANGE, 63) | |||
| │ ├── numEventsBelowReportThreshold | 6 | UInt | count | frameNumber == 0 | EntryError(DATA_OUT_OF_RANGE, 63) | |||
| │ └── numActiveWindows | 20 | UInt | count | frameNumber == 0 | EntryError(DATA_OUT_OF_RANGE, 1048575) | |||
| ├── Reporting Events [nEvents] | — | Seq | outputParameter == (MTVV, 1) | |||||
| │ ├── timestampEvent | 32 | TimestampField | — | TimestampMutator | ||||
| │ ├── numWindowsEvent | 7 | UInt | count | — | EntryError(DATA_OUT_OF_RANGE, 127) | |||
| │ ├── xAxis | — | Struct | — | |||||
| │ │ └── MTVV | 10 | Mtvv | dB | — | OffsetMutator(-55), MultiplierMutator(×20) | EntryError(DATA_OUT_OF_RANGE, 1023) | RangeValidator[55.0, 100.0] | |
| │ ├── yAxis | — | Struct | — | |||||
| │ │ └── MTVV | 10 | Mtvv | dB | — | OffsetMutator(-55), MultiplierMutator(×20) | EntryError(DATA_OUT_OF_RANGE, 1023) | RangeValidator[55.0, 100.0] | |
| │ └── zAxis | — | Struct | — | |||||
| │ └── MTVV | 10 | Mtvv | dB | — | OffsetMutator(-55), MultiplierMutator(×20) | EntryError(DATA_OUT_OF_RANGE, 1023) | RangeValidator[55.0, 100.0] | |
| ├── frameHeader | — | Struct | outputParameter == (MTVV, 2) | |||||
| │ ├── frameNumber | 1 | UInt | outputParameter == (MTVV, 2) | |||||
| │ ├── totalEvents | 3 | UInt | outputParameter == (MTVV, 2) | RangeValidator[0, 4] | ||||
| │ └── nEvents | 2 | UInt | outputParameter == (MTVV, 2) | RangeValidator[0, 2] | ||||
| ├── temperature | 12 | Int | Cel | frameNumber == 0 | ScalingMutator(×10) | EntryError(DATA_OUT_OF_RANGE, 2047) | ||
| ├── reportingPeriodSummary | — | Struct | frameNumber == 0 | |||||
| │ ├── numEventsAboveReportThreshold | 6 | UInt | count | frameNumber == 0 | EntryError(DATA_OUT_OF_RANGE, 63) | |||
| │ ├── numEventsBelowReportThreshold | 6 | UInt | count | frameNumber == 0 | EntryError(DATA_OUT_OF_RANGE, 63) | |||
| │ └── numActiveWindows | 20 | UInt | count | frameNumber == 0 | EntryError(DATA_OUT_OF_RANGE, 1048575) | |||
| ├── Reporting Events [nEvents] | — | Seq | outputParameter == (MTVV, 2) | |||||
| │ ├── timestampEvent | 32 | TimestampField | — | TimestampMutator | ||||
| │ ├── numWindowsEvent | 7 | UInt | count | — | EntryError(DATA_OUT_OF_RANGE, 127) | |||
| │ ├── xAxis | — | Struct | — | |||||
| │ │ └── MTVV | 10 | Mtvv | dB | — | OffsetMutator(-55), MultiplierMutator(×20) | EntryError(DATA_OUT_OF_RANGE, 1023) | RangeValidator[55.0, 100.0] | |
| │ ├── yAxis | — | Struct | — | |||||
| │ │ └── MTVV | 10 | Mtvv | dB | — | OffsetMutator(-55), MultiplierMutator(×20) | EntryError(DATA_OUT_OF_RANGE, 1023) | RangeValidator[55.0, 100.0] | |
| │ └── zAxis | — | Struct | — | |||||
| │ └── MTVV | 10 | Mtvv | dB | — | OffsetMutator(-55), MultiplierMutator(×20) | EntryError(DATA_OUT_OF_RANGE, 1023) | RangeValidator[55.0, 100.0] | |
| ├── frameHeader | — | Struct | outputParameter == (PPV, 0) | |||||
| │ ├── frameNumber | 1 | UInt | outputParameter == (PPV, 0) | |||||
| │ ├── totalEvents | 3 | UInt | outputParameter == (PPV, 0) | RangeValidator[0, 7] | ||||
| │ ├── nEvents | 3 | UInt | frameNumber == 0 | RangeValidator[0, 3] | ||||
| │ └── nEvents | 3 | UInt | frameNumber != 0 | RangeValidator[0, 4] | ||||
| ├── transmissionThreshold | 13 | Ppv | mm/s | frameNumber == 0 | ScalingMutator(×100) | EntryError(DATA_OUT_OF_RANGE, 8191) | RangeValidator[0, 60.0] | |
| ├── reportingPeriodSummary | — | Struct | frameNumber == 0 | |||||
| │ ├── numEventsAboveReportThreshold | 6 | UInt | count | frameNumber == 0 | EntryError(DATA_OUT_OF_RANGE, 63) | |||
| │ ├── numEventsBelowReportThreshold | 6 | UInt | count | frameNumber == 0 | EntryError(DATA_OUT_OF_RANGE, 63) | |||
| │ └── numActiveWindows | 20 | UInt | count | frameNumber == 0 | EntryError(DATA_OUT_OF_RANGE, 1048575) | |||
| ├── Reporting Events [nEvents] | — | Seq | outputParameter == (PPV, 0) | |||||
| │ ├── timestampEvent | 17 | UInt | — | RelativeTimestampMutator | RelativeTimestampValidator[0, 86399] | |||
| │ ├── numWindowsEvent | 7 | UInt | count | — | EntryError(DATA_OUT_OF_RANGE, 127) | |||
| │ ├── xAxis | — | Struct | — | |||||
| │ │ ├── PPV | 13 | Ppv | mm/s | — | ScalingMutator(×100) | EntryError(DATA_OUT_OF_RANGE, 8191) | RangeValidator[0, 60.0] | |
| │ │ └── predominantFrequency | 8 | PFrequency | Hz | — | MultiplierMutator(×2) | EntryError(DATA_OUT_OF_RANGE, 255) | RangeValidator[0, 100] | |
| │ ├── yAxis | — | Struct | — | |||||
| │ │ ├── PPV | 13 | Ppv | mm/s | — | ScalingMutator(×100) | EntryError(DATA_OUT_OF_RANGE, 8191) | RangeValidator[0, 60.0] | |
| │ │ └── predominantFrequency | 8 | PFrequency | Hz | — | MultiplierMutator(×2) | EntryError(DATA_OUT_OF_RANGE, 255) | RangeValidator[0, 100] | |
| │ └── zAxis | — | Struct | — | |||||
| │ ├── PPV | 13 | Ppv | mm/s | — | ScalingMutator(×100) | EntryError(DATA_OUT_OF_RANGE, 8191) | RangeValidator[0, 60.0] | |
| │ └── predominantFrequency | 8 | PFrequency | Hz | — | MultiplierMutator(×2) | EntryError(DATA_OUT_OF_RANGE, 255) | RangeValidator[0, 100] | |
| ├── frameHeader | — | Struct | outputParameter == (PPV, 1) | |||||
| │ ├── frameNumber | 1 | UInt | outputParameter == (PPV, 1) | |||||
| │ ├── totalEvents | 3 | UInt | outputParameter == (PPV, 1) | RangeValidator[0, 5] | ||||
| │ ├── nEvents | 3 | UInt | frameNumber == 0 | RangeValidator[0, 2] | ||||
| │ └── nEvents | 3 | UInt | frameNumber != 0 | RangeValidator[0, 3] | ||||
| ├── temperature | 12 | Int | Cel | frameNumber == 0 | ScalingMutator(×10) | EntryError(DATA_OUT_OF_RANGE, 2047) | ||
| ├── transmissionThreshold | 13 | Ppv | mm/s | frameNumber == 0 | ScalingMutator(×100) | EntryError(DATA_OUT_OF_RANGE, 8191) | RangeValidator[0, 60.0] | |
| ├── reportingPeriodSummary | — | Struct | frameNumber == 0 | |||||
| │ ├── numEventsAboveReportThreshold | 6 | UInt | count | frameNumber == 0 | EntryError(DATA_OUT_OF_RANGE, 63) | |||
| │ ├── numEventsBelowReportThreshold | 6 | UInt | count | frameNumber == 0 | EntryError(DATA_OUT_OF_RANGE, 63) | |||
| │ └── numActiveWindows | 20 | UInt | count | frameNumber == 0 | EntryError(DATA_OUT_OF_RANGE, 1048575) | |||
| ├── Reporting Events [nEvents] | — | Seq | outputParameter == (PPV, 1) | |||||
| │ ├── timestampEvent | 17 | UInt | — | RelativeTimestampMutator | RelativeTimestampValidator[0, 86399] | |||
| │ ├── numWindowsEvent | 7 | UInt | count | — | EntryError(DATA_OUT_OF_RANGE, 127) | |||
| │ ├── xAxis | — | Struct | — | |||||
| │ │ ├── PPV | 13 | Ppv | mm/s | — | ScalingMutator(×100) | EntryError(DATA_OUT_OF_RANGE, 8191) | RangeValidator[0, 60.0] | |
| │ │ └── predominantFrequency | 8 | PFrequency | Hz | — | MultiplierMutator(×2) | EntryError(DATA_OUT_OF_RANGE, 255) | RangeValidator[0, 100] | |
| │ ├── yAxis | — | Struct | — | |||||
| │ │ ├── PPV | 13 | Ppv | mm/s | — | ScalingMutator(×100) | EntryError(DATA_OUT_OF_RANGE, 8191) | RangeValidator[0, 60.0] | |
| │ │ └── predominantFrequency | 8 | PFrequency | Hz | — | MultiplierMutator(×2) | EntryError(DATA_OUT_OF_RANGE, 255) | RangeValidator[0, 100] | |
| │ ├── zAxis | — | Struct | — | |||||
| │ │ ├── PPV | 13 | Ppv | mm/s | — | ScalingMutator(×100) | EntryError(DATA_OUT_OF_RANGE, 8191) | RangeValidator[0, 60.0] | |
| │ │ └── predominantFrequency | 8 | PFrequency | Hz | — | MultiplierMutator(×2) | EntryError(DATA_OUT_OF_RANGE, 255) | RangeValidator[0, 100] | |
| │ └── composedAxis | — | Struct | — | |||||
| │ └── PPV | 13 | Ppv | mm/s | — | ScalingMutator(×100) | EntryError(DATA_OUT_OF_RANGE, 8191) | RangeValidator[0, 60.0] | |
| ├── frameHeader | — | Struct | outputParameter == (PPV, 2) | |||||
| │ ├── frameNumber | 1 | UInt | outputParameter == (PPV, 2) | |||||
| │ ├── totalEvents | 3 | UInt | outputParameter == (PPV, 2) | RangeValidator[0, 4] | ||||
| │ └── nEvents | 2 | UInt | outputParameter == (PPV, 2) | RangeValidator[0, 2] | ||||
| ├── temperature | 12 | Int | Cel | frameNumber == 0 | ScalingMutator(×10) | EntryError(DATA_OUT_OF_RANGE, 2047) | ||
| ├── reportingPeriodSummary | — | Struct | frameNumber == 0 | |||||
| │ ├── numEventsAboveReportThreshold | 6 | UInt | count | frameNumber == 0 | EntryError(DATA_OUT_OF_RANGE, 63) | |||
| │ ├── numEventsBelowReportThreshold | 6 | UInt | count | frameNumber == 0 | EntryError(DATA_OUT_OF_RANGE, 63) | |||
| │ └── numActiveWindows | 20 | UInt | count | frameNumber == 0 | EntryError(DATA_OUT_OF_RANGE, 1048575) | |||
| ├── Reporting Events [nEvents] | — | Seq | outputParameter == (PPV, 2) | |||||
| │ ├── timestampEvent | 17 | UInt | — | RelativeTimestampMutator | EntryError(DATA_OUT_OF_RANGE, 131071) | |||
| │ ├── numWindowsEvent | 8 | UInt | count | — | EntryError(DATA_OUT_OF_RANGE, 255) | |||
| │ ├── xAxis | — | Struct | — | |||||
| │ │ ├── PPV | 15 | Ppv | mm/s | — | ScalingMutator(×100) | EntryError(DATA_OUT_OF_RANGE, 32767) | RangeValidator[0, 200.0] | |
| │ │ └── predominantFrequency | 10 | PFrequency | Hz | — | MultiplierMutator(×2) | EntryError(DATA_OUT_OF_RANGE, 1023) | RangeValidator[0, 315] | |
| │ ├── yAxis | — | Struct | — | |||||
| │ │ ├── PPV | 15 | Ppv | mm/s | — | ScalingMutator(×100) | EntryError(DATA_OUT_OF_RANGE, 32767) | RangeValidator[0, 200.0] | |
| │ │ └── predominantFrequency | 10 | PFrequency | Hz | — | MultiplierMutator(×2) | EntryError(DATA_OUT_OF_RANGE, 1023) | RangeValidator[0, 315] | |
| │ ├── zAxis | — | Struct | — | |||||
| │ │ ├── PPV | 15 | Ppv | mm/s | — | ScalingMutator(×100) | EntryError(DATA_OUT_OF_RANGE, 32767) | RangeValidator[0, 200.0] | |
| │ │ └── predominantFrequency | 10 | PFrequency | Hz | — | MultiplierMutator(×2) | EntryError(DATA_OUT_OF_RANGE, 1023) | RangeValidator[0, 315] | |
| │ └── composedAxis | — | Struct | — | |||||
| │ └── PPV | 15 | Ppv | mm/s | — | ScalingMutator(×100) | EntryError(DATA_OUT_OF_RANGE, 32767) | RangeValidator[0, 200.0] | |
| ├── frameHeader | — | Struct | outputParameter == (PGA, 2) | |||||
| │ ├── frameNumber | 1 | UInt | outputParameter == (PGA, 2) | |||||
| │ ├── totalEvents | 3 | UInt | outputParameter == (PGA, 2) | RangeValidator[0, 4] | ||||
| │ └── nEvents | 2 | UInt | outputParameter == (PGA, 2) | RangeValidator[0, 2] | ||||
| ├── temperature | 12 | Int | Cel | frameNumber == 0 | ScalingMutator(×10) | EntryError(DATA_OUT_OF_RANGE, 2047) | ||
| ├── numEventsCounted | 6 | UInt | count | frameNumber == 0 | ||||
| ├── numActiveWindows | 14 | UInt | count | frameNumber == 0 | EntryError(DATA_OUT_OF_RANGE, 16383) | |||
| ├── samplingRate | 2 | Enum | frameNumber == 0 | F62_5HZ (0), F125HZ (1), F250HZ (2), F500HZ (3) | ||||
| ├── samplingRate | 2 | Enum | frameNumber != 0 | F62_5HZ (0), F125HZ (1), F250HZ (2), F500HZ (3) | ||||
| ├── Reporting Events [nEvents] | — | Seq | outputParameter == (PGA, 2) | |||||
| │ ├── timestampEvent | 17 | UInt | — | RelativeTimestampMutator | EntryError(DATA_OUT_OF_RANGE, 131071) | |||
| │ ├── composedPGAEvent | 15 | PGA | mg_acc | — | ScalingMutator(×10) | EntryError(DATA_OUT_OF_RANGE, 32767) | RangeValidator[0, 2000.0] | |
| │ ├── composedRMSEvent | 14 | RMS | mg_acc | — | ScalingMutator(×10) | EntryError(DATA_OUT_OF_RANGE, 16383) | RangeValidator[0, 1000.0] | |
| │ ├── xAxis | — | Struct | — | |||||
| │ │ ├── PGA | 15 | PGA | mg_acc | — | ScalingMutator(×10) | EntryError(DATA_OUT_OF_RANGE, 32767) | RangeValidator[0, 2000.0] | |
| │ │ └── frequency | 11 | UInt | Hz | — | RawFrequencyToFrequencyMutator | |||
| │ ├── yAxis | — | Struct | — | |||||
| │ │ ├── PGA | 15 | PGA | mg_acc | — | ScalingMutator(×10) | EntryError(DATA_OUT_OF_RANGE, 32767) | RangeValidator[0, 2000.0] | |
| │ │ └── frequency | 11 | UInt | Hz | — | RawFrequencyToFrequencyMutator | |||
| │ └── zAxis | — | Struct | — | |||||
| │ ├── PGA | 15 | PGA | mg_acc | — | ScalingMutator(×10) | EntryError(DATA_OUT_OF_RANGE, 32767) | RangeValidator[0, 2000.0] | |
| │ └── frequency | 11 | UInt | Hz | — | RawFrequencyToFrequencyMutator | |||
| ├── reportingInfo | — | Struct | outputParameter == (PSA, 2) | |||||
| │ ├── temperature | 12 | Int | Cel | outputParameter == (PSA, 2) | ScalingMutator(×10) | EntryError(DATA_OUT_OF_RANGE, 2047) | ||
| │ ├── numEventsCounted | 6 | UInt | count | outputParameter == (PSA, 2) | ||||
| │ ├── numActiveWindows | 14 | UInt | count | outputParameter == (PSA, 2) | EntryError(DATA_OUT_OF_RANGE, 16383) | |||
| │ ├── samplingRate | 2 | Enum | outputParameter == (PSA, 2) | F62_5HZ (0), F125HZ (1), F250HZ (2), F500HZ (3) | ||||
| │ └── acquisitionMode | 1 | Enum | outputParameter == (PSA, 2) | ALWAYS_ON (0), PERIODIC (1) | ||||
| ├── timestampEvent | 17 | UInt | numActiveWindows > 0 | RelativeTimestampMutator | EntryError(DATA_OUT_OF_RANGE, 131071) | |||
| ├── xAxis | — | Struct | numActiveWindows > 0 | |||||
| │ ├── PGA | 15 | PGA | mg_acc | numActiveWindows > 0 | ScalingMutator(×10) | EntryError(DATA_OUT_OF_RANGE, 32767) | RangeValidator[0, 2000.0] | |
| │ ├── RMS | 14 | RMS | mg_acc | numActiveWindows > 0 | ScalingMutator(×10) | EntryError(DATA_OUT_OF_RANGE, 16383) | RangeValidator[0, 1000.0] | |
| │ └── Frequencies [5] | — | Seq | numActiveWindows > 0 | |||||
| │ └── | 11 | UInt | Hz | — | RawFrequencyToFrequencyMutator | |||
| ├── yAxis | — | Struct | numActiveWindows > 0 | |||||
| │ ├── PGA | 15 | PGA | mg_acc | numActiveWindows > 0 | ScalingMutator(×10) | EntryError(DATA_OUT_OF_RANGE, 32767) | RangeValidator[0, 2000.0] | |
| │ ├── RMS | 14 | RMS | mg_acc | numActiveWindows > 0 | ScalingMutator(×10) | EntryError(DATA_OUT_OF_RANGE, 16383) | RangeValidator[0, 1000.0] | |
| │ └── Frequencies [5] | — | Seq | numActiveWindows > 0 | |||||
| │ └── | 11 | UInt | Hz | — | RawFrequencyToFrequencyMutator | |||
| ├── zAxis | — | Struct | numActiveWindows > 0 | |||||
| │ ├── PGA | 15 | PGA | mg_acc | numActiveWindows > 0 | ScalingMutator(×10) | EntryError(DATA_OUT_OF_RANGE, 32767) | RangeValidator[0, 2000.0] | |
| │ ├── RMS | 14 | RMS | mg_acc | numActiveWindows > 0 | ScalingMutator(×10) | EntryError(DATA_OUT_OF_RANGE, 16383) | RangeValidator[0, 1000.0] | |
| │ └── Frequencies [5] | — | Seq | numActiveWindows > 0 | |||||
| │ └── | 11 | UInt | Hz | — | RawFrequencyToFrequencyMutator | |||
| └── | 0 | — | outputParameter == default |
| Field | Bits | Type | Unit | Condition | Mutator | Error | Validator | Description | WF Address | WF Name | WF Unit | Cloud DP Name |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ls_header | — | Struct | Always | |||||||||
| ├── uplink_version | 4 | UInt | Always | |||||||||
| ├── node_id_high | 4 | Fragment | Always | |||||||||
| ├── product_code | 8 | UInt | Always | |||||||||
| ├── node_id | 16 | UInt | Always | |||||||||
| ├── sequence_number | 8 | UInt | Always | |||||||||
| └── am_type | 8 | UInt | Always | |||||||||
| timestamp | 32 | TimestampField | Always | TimestampMutator | ||||||||
| version | 4 | UInt | Always | RangeValidator[0, 2] | ||||||||
| commonHeader | — | Switch | Always | |||||||||
| ├── reserved | 2 | Reserved | version == 0 | |||||||||
| ├── outputParameter | 2 | Enum | version == 0 | NO_ALGORITHM (0), MTVV (1), PPV (2), PGA (3), PSA (4) | ||||||||
| ├── reserved | 1 | Reserved | version == 1 | |||||||||
| ├── alertReport | 1 | Bool | version == 1 | |||||||||
| ├── outputParameter | 2 | Enum | version == 1 | NO_ALGORITHM (0), MTVV (1), PPV (2), PGA (3), PSA (4) | ||||||||
| ├── alertReport | 1 | Bool | version == 2 | |||||||||
| └── outputParameter | 3 | Enum | version == 2 | NO_ALGORITHM (0), MTVV (1), PPV (2), PGA (3), PSA (4) | ||||||||
| readings | — | Switch | Always | |||||||||
| ├── frameHeader | — | Struct | outputParameter == (MTVV, 0) | |||||||||
| │ ├── frameNumber | 1 | UInt | outputParameter == (MTVV, 0) | |||||||||
| │ ├── totalEvents | 4 | UInt | outputParameter == (MTVV, 0) | RangeValidator[0, 9] | ||||||||
| │ ├── nEvents | 3 | UInt | frameNumber == 0 | RangeValidator[0, 4] | a:20:02:00 | backgroundEvent | boolean | is_background_event | ||||
| │ └── nEvents | 3 | UInt | frameNumber != 0 | RangeValidator[0, 5] | a:20:02:00 | backgroundEvent | boolean | is_background_event | ||||
| ├── transmissionThreshold | 10 | Mtvv | dB | frameNumber == 0 | OffsetMutator(-55), MultiplierMutator(×20) | EntryError(DATA_OUT_OF_RANGE, 1023) | RangeValidator[55.0, 100.0] | |||||
| ├── reportingPeriodSummary | — | Struct | frameNumber == 0 | |||||||||
| │ ├── numEventsAboveReportThreshold | 6 | UInt | count | frameNumber == 0 | EntryError(DATA_OUT_OF_RANGE, 63) | a:20:02:00 | overThresholdEvents | count | num_events_above_report_threshold | |||
| │ ├── numEventsBelowReportThreshold | 6 | UInt | count | frameNumber == 0 | EntryError(DATA_OUT_OF_RANGE, 63) | a:20:02:00 | underThresholdEvents | count | num_events_below_report_threshold | |||
| │ └── numActiveWindows | 20 | UInt | count | frameNumber == 0 | EntryError(DATA_OUT_OF_RANGE, 1048575) | a:20:02:00 | activeTime | s | active_time_seconds | |||
| ├── Reporting Events [nEvents] | — | Seq | outputParameter == (MTVV, 0) | |||||||||
| │ ├── timestampEvent | 32 | TimestampField | — | TimestampMutator | ||||||||
| │ ├── numWindowsEvent | 7 | UInt | count | — | EntryError(DATA_OUT_OF_RANGE, 127) | |||||||
| │ ├── xAxis | — | Struct | — | |||||||||
| │ │ └── MTVV | 10 | Mtvv | dB | — | OffsetMutator(-55), MultiplierMutator(×20) | EntryError(DATA_OUT_OF_RANGE, 1023) | RangeValidator[55.0, 100.0] | |||||
| │ ├── yAxis | — | Struct | — | |||||||||
| │ │ └── MTVV | 10 | Mtvv | dB | — | OffsetMutator(-55), MultiplierMutator(×20) | EntryError(DATA_OUT_OF_RANGE, 1023) | RangeValidator[55.0, 100.0] | |||||
| │ └── zAxis | — | Struct | — | |||||||||
| │ └── MTVV | 10 | Mtvv | dB | — | OffsetMutator(-55), MultiplierMutator(×20) | EntryError(DATA_OUT_OF_RANGE, 1023) | RangeValidator[55.0, 100.0] | |||||
| ├── frameHeader | — | Struct | outputParameter == (MTVV, 1) | |||||||||
| │ ├── frameNumber | 1 | UInt | outputParameter == (MTVV, 1) | |||||||||
| │ ├── totalEvents | 4 | UInt | outputParameter == (MTVV, 1) | RangeValidator[0, 9] | ||||||||
| │ ├── nEvents | 3 | UInt | frameNumber == 0 | RangeValidator[0, 4] | a:20:02:00 | backgroundEvent | boolean | is_background_event | ||||
| │ └── nEvents | 3 | UInt | frameNumber != 0 | RangeValidator[0, 5] | a:20:02:00 | backgroundEvent | boolean | is_background_event | ||||
| ├── temperature | 12 | Int | Cel | frameNumber == 0 | ScalingMutator(×10) | EntryError(DATA_OUT_OF_RANGE, 2047) | a:20:00:00 | temperature | Cel | |||
| ├── transmissionThreshold | 10 | Mtvv | dB | frameNumber == 0 | OffsetMutator(-55), MultiplierMutator(×20) | EntryError(DATA_OUT_OF_RANGE, 1023) | RangeValidator[55.0, 100.0] | |||||
| ├── reportingPeriodSummary | — | Struct | frameNumber == 0 | |||||||||
| │ ├── numEventsAboveReportThreshold | 6 | UInt | count | frameNumber == 0 | EntryError(DATA_OUT_OF_RANGE, 63) | a:20:02:00 | overThresholdEvents | count | num_events_above_report_threshold | |||
| │ ├── numEventsBelowReportThreshold | 6 | UInt | count | frameNumber == 0 | EntryError(DATA_OUT_OF_RANGE, 63) | a:20:02:00 | underThresholdEvents | count | num_events_below_report_threshold | |||
| │ └── numActiveWindows | 20 | UInt | count | frameNumber == 0 | EntryError(DATA_OUT_OF_RANGE, 1048575) | a:20:02:00 | activeTime | s | active_time_seconds | |||
| ├── Reporting Events [nEvents] | — | Seq | outputParameter == (MTVV, 1) | |||||||||
| │ ├── timestampEvent | 32 | TimestampField | — | TimestampMutator | ||||||||
| │ ├── numWindowsEvent | 7 | UInt | count | — | EntryError(DATA_OUT_OF_RANGE, 127) | |||||||
| │ ├── xAxis | — | Struct | — | |||||||||
| │ │ └── MTVV | 10 | Mtvv | dB | — | OffsetMutator(-55), MultiplierMutator(×20) | EntryError(DATA_OUT_OF_RANGE, 1023) | RangeValidator[55.0, 100.0] | |||||
| │ ├── yAxis | — | Struct | — | |||||||||
| │ │ └── MTVV | 10 | Mtvv | dB | — | OffsetMutator(-55), MultiplierMutator(×20) | EntryError(DATA_OUT_OF_RANGE, 1023) | RangeValidator[55.0, 100.0] | |||||
| │ └── zAxis | — | Struct | — | |||||||||
| │ └── MTVV | 10 | Mtvv | dB | — | OffsetMutator(-55), MultiplierMutator(×20) | EntryError(DATA_OUT_OF_RANGE, 1023) | RangeValidator[55.0, 100.0] | |||||
| ├── frameHeader | — | Struct | outputParameter == (MTVV, 2) | |||||||||
| │ ├── frameNumber | 1 | UInt | outputParameter == (MTVV, 2) | |||||||||
| │ ├── totalEvents | 3 | UInt | outputParameter == (MTVV, 2) | RangeValidator[0, 4] | ||||||||
| │ └── nEvents | 2 | UInt | outputParameter == (MTVV, 2) | RangeValidator[0, 2] | a:20:02:00 | backgroundEvent | boolean | is_background_event | ||||
| ├── temperature | 12 | Int | Cel | frameNumber == 0 | ScalingMutator(×10) | EntryError(DATA_OUT_OF_RANGE, 2047) | a:20:00:00 | temperature | Cel | |||
| ├── reportingPeriodSummary | — | Struct | frameNumber == 0 | |||||||||
| │ ├── numEventsAboveReportThreshold | 6 | UInt | count | frameNumber == 0 | EntryError(DATA_OUT_OF_RANGE, 63) | a:20:02:00 | overThresholdEvents | count | num_events_above_report_threshold | |||
| │ ├── numEventsBelowReportThreshold | 6 | UInt | count | frameNumber == 0 | EntryError(DATA_OUT_OF_RANGE, 63) | a:20:02:00 | underThresholdEvents | count | num_events_below_report_threshold | |||
| │ └── numActiveWindows | 20 | UInt | count | frameNumber == 0 | EntryError(DATA_OUT_OF_RANGE, 1048575) | a:20:02:00 | activeTime | s | active_time_seconds | |||
| ├── Reporting Events [nEvents] | — | Seq | outputParameter == (MTVV, 2) | |||||||||
| │ ├── timestampEvent | 32 | TimestampField | — | TimestampMutator | ||||||||
| │ ├── numWindowsEvent | 7 | UInt | count | — | EntryError(DATA_OUT_OF_RANGE, 127) | |||||||
| │ ├── xAxis | — | Struct | — | |||||||||
| │ │ └── MTVV | 10 | Mtvv | dB | — | OffsetMutator(-55), MultiplierMutator(×20) | EntryError(DATA_OUT_OF_RANGE, 1023) | RangeValidator[55.0, 100.0] | |||||
| │ ├── yAxis | — | Struct | — | |||||||||
| │ │ └── MTVV | 10 | Mtvv | dB | — | OffsetMutator(-55), MultiplierMutator(×20) | EntryError(DATA_OUT_OF_RANGE, 1023) | RangeValidator[55.0, 100.0] | |||||
| │ └── zAxis | — | Struct | — | |||||||||
| │ └── MTVV | 10 | Mtvv | dB | — | OffsetMutator(-55), MultiplierMutator(×20) | EntryError(DATA_OUT_OF_RANGE, 1023) | RangeValidator[55.0, 100.0] | |||||
| ├── frameHeader | — | Struct | outputParameter == (PPV, 0) | |||||||||
| │ ├── frameNumber | 1 | UInt | outputParameter == (PPV, 0) | |||||||||
| │ ├── totalEvents | 3 | UInt | outputParameter == (PPV, 0) | RangeValidator[0, 7] | ||||||||
| │ ├── nEvents | 3 | UInt | frameNumber == 0 | RangeValidator[0, 3] | a:20:02:00 | backgroundEvent | boolean | is_background_event | ||||
| │ └── nEvents | 3 | UInt | frameNumber != 0 | RangeValidator[0, 4] | a:20:02:00 | backgroundEvent | boolean | is_background_event | ||||
| ├── transmissionThreshold | 13 | Ppv | mm/s | frameNumber == 0 | ScalingMutator(×100) | EntryError(DATA_OUT_OF_RANGE, 8191) | RangeValidator[0, 60.0] | |||||
| ├── reportingPeriodSummary | — | Struct | frameNumber == 0 | |||||||||
| │ ├── numEventsAboveReportThreshold | 6 | UInt | count | frameNumber == 0 | EntryError(DATA_OUT_OF_RANGE, 63) | a:20:02:00 | overThresholdEvents | count | num_events_above_report_threshold | |||
| │ ├── numEventsBelowReportThreshold | 6 | UInt | count | frameNumber == 0 | EntryError(DATA_OUT_OF_RANGE, 63) | a:20:02:00 | underThresholdEvents | count | num_events_below_report_threshold | |||
| │ └── numActiveWindows | 20 | UInt | count | frameNumber == 0 | EntryError(DATA_OUT_OF_RANGE, 1048575) | a:20:02:00 | activeTime | s | active_time_seconds | |||
| ├── Reporting Events [nEvents] | — | Seq | outputParameter == (PPV, 0) | |||||||||
| │ ├── timestampEvent | 17 | UInt | — | RelativeTimestampMutator | RelativeTimestampValidator[0, 86399] | |||||||
| │ ├── numWindowsEvent | 7 | UInt | count | — | EntryError(DATA_OUT_OF_RANGE, 127) | |||||||
| │ ├── xAxis | — | Struct | — | |||||||||
| │ │ ├── PPV | 13 | Ppv | mm/s | — | ScalingMutator(×100) | EntryError(DATA_OUT_OF_RANGE, 8191) | RangeValidator[0, 60.0] | |||||
| │ │ └── predominantFrequency | 8 | PFrequency | Hz | — | MultiplierMutator(×2) | EntryError(DATA_OUT_OF_RANGE, 255) | RangeValidator[0, 100] | |||||
| │ ├── yAxis | — | Struct | — | |||||||||
| │ │ ├── PPV | 13 | Ppv | mm/s | — | ScalingMutator(×100) | EntryError(DATA_OUT_OF_RANGE, 8191) | RangeValidator[0, 60.0] | |||||
| │ │ └── predominantFrequency | 8 | PFrequency | Hz | — | MultiplierMutator(×2) | EntryError(DATA_OUT_OF_RANGE, 255) | RangeValidator[0, 100] | |||||
| │ └── zAxis | — | Struct | — | |||||||||
| │ ├── PPV | 13 | Ppv | mm/s | — | ScalingMutator(×100) | EntryError(DATA_OUT_OF_RANGE, 8191) | RangeValidator[0, 60.0] | |||||
| │ └── predominantFrequency | 8 | PFrequency | Hz | — | MultiplierMutator(×2) | EntryError(DATA_OUT_OF_RANGE, 255) | RangeValidator[0, 100] | |||||
| ├── frameHeader | — | Struct | outputParameter == (PPV, 1) | |||||||||
| │ ├── frameNumber | 1 | UInt | outputParameter == (PPV, 1) | |||||||||
| │ ├── totalEvents | 3 | UInt | outputParameter == (PPV, 1) | RangeValidator[0, 5] | ||||||||
| │ ├── nEvents | 3 | UInt | frameNumber == 0 | RangeValidator[0, 2] | a:20:02:00 | backgroundEvent | boolean | is_background_event | ||||
| │ └── nEvents | 3 | UInt | frameNumber != 0 | RangeValidator[0, 3] | a:20:02:00 | backgroundEvent | boolean | is_background_event | ||||
| ├── temperature | 12 | Int | Cel | frameNumber == 0 | ScalingMutator(×10) | EntryError(DATA_OUT_OF_RANGE, 2047) | a:20:00:00 | temperature | Cel | |||
| ├── transmissionThreshold | 13 | Ppv | mm/s | frameNumber == 0 | ScalingMutator(×100) | EntryError(DATA_OUT_OF_RANGE, 8191) | RangeValidator[0, 60.0] | |||||
| ├── reportingPeriodSummary | — | Struct | frameNumber == 0 | |||||||||
| │ ├── numEventsAboveReportThreshold | 6 | UInt | count | frameNumber == 0 | EntryError(DATA_OUT_OF_RANGE, 63) | a:20:02:00 | overThresholdEvents | count | num_events_above_report_threshold | |||
| │ ├── numEventsBelowReportThreshold | 6 | UInt | count | frameNumber == 0 | EntryError(DATA_OUT_OF_RANGE, 63) | a:20:02:00 | underThresholdEvents | count | num_events_below_report_threshold | |||
| │ └── numActiveWindows | 20 | UInt | count | frameNumber == 0 | EntryError(DATA_OUT_OF_RANGE, 1048575) | a:20:02:00 | activeTime | s | active_time_seconds | |||
| ├── Reporting Events [nEvents] | — | Seq | outputParameter == (PPV, 1) | |||||||||
| │ ├── timestampEvent | 17 | UInt | — | RelativeTimestampMutator | RelativeTimestampValidator[0, 86399] | |||||||
| │ ├── numWindowsEvent | 7 | UInt | count | — | EntryError(DATA_OUT_OF_RANGE, 127) | |||||||
| │ ├── xAxis | — | Struct | — | |||||||||
| │ │ ├── PPV | 13 | Ppv | mm/s | — | ScalingMutator(×100) | EntryError(DATA_OUT_OF_RANGE, 8191) | RangeValidator[0, 60.0] | |||||
| │ │ └── predominantFrequency | 8 | PFrequency | Hz | — | MultiplierMutator(×2) | EntryError(DATA_OUT_OF_RANGE, 255) | RangeValidator[0, 100] | |||||
| │ ├── yAxis | — | Struct | — | |||||||||
| │ │ ├── PPV | 13 | Ppv | mm/s | — | ScalingMutator(×100) | EntryError(DATA_OUT_OF_RANGE, 8191) | RangeValidator[0, 60.0] | |||||
| │ │ └── predominantFrequency | 8 | PFrequency | Hz | — | MultiplierMutator(×2) | EntryError(DATA_OUT_OF_RANGE, 255) | RangeValidator[0, 100] | |||||
| │ ├── zAxis | — | Struct | — | |||||||||
| │ │ ├── PPV | 13 | Ppv | mm/s | — | ScalingMutator(×100) | EntryError(DATA_OUT_OF_RANGE, 8191) | RangeValidator[0, 60.0] | |||||
| │ │ └── predominantFrequency | 8 | PFrequency | Hz | — | MultiplierMutator(×2) | EntryError(DATA_OUT_OF_RANGE, 255) | RangeValidator[0, 100] | |||||
| │ └── composedAxis | — | Struct | — | |||||||||
| │ └── PPV | 13 | Ppv | mm/s | — | ScalingMutator(×100) | EntryError(DATA_OUT_OF_RANGE, 8191) | RangeValidator[0, 60.0] | |||||
| ├── frameHeader | — | Struct | outputParameter == (PPV, 2) | |||||||||
| │ ├── frameNumber | 1 | UInt | outputParameter == (PPV, 2) | |||||||||
| │ ├── totalEvents | 3 | UInt | outputParameter == (PPV, 2) | RangeValidator[0, 4] | ||||||||
| │ └── nEvents | 2 | UInt | outputParameter == (PPV, 2) | RangeValidator[0, 2] | a:20:02:00 | backgroundEvent | boolean | is_background_event | ||||
| ├── temperature | 12 | Int | Cel | frameNumber == 0 | ScalingMutator(×10) | EntryError(DATA_OUT_OF_RANGE, 2047) | a:20:00:00 | temperature | Cel | |||
| ├── reportingPeriodSummary | — | Struct | frameNumber == 0 | |||||||||
| │ ├── numEventsAboveReportThreshold | 6 | UInt | count | frameNumber == 0 | EntryError(DATA_OUT_OF_RANGE, 63) | a:20:02:00 | overThresholdEvents | count | num_events_above_report_threshold | |||
| │ ├── numEventsBelowReportThreshold | 6 | UInt | count | frameNumber == 0 | EntryError(DATA_OUT_OF_RANGE, 63) | a:20:02:00 | underThresholdEvents | count | num_events_below_report_threshold | |||
| │ └── numActiveWindows | 20 | UInt | count | frameNumber == 0 | EntryError(DATA_OUT_OF_RANGE, 1048575) | a:20:02:00 | activeTime | s | active_time_seconds | |||
| ├── Reporting Events [nEvents] | — | Seq | outputParameter == (PPV, 2) | |||||||||
| │ ├── timestampEvent | 17 | UInt | — | RelativeTimestampMutator | EntryError(DATA_OUT_OF_RANGE, 131071) | |||||||
| │ ├── numWindowsEvent | 8 | UInt | count | — | EntryError(DATA_OUT_OF_RANGE, 255) | |||||||
| │ ├── xAxis | — | Struct | — | |||||||||
| │ │ ├── PPV | 15 | Ppv | mm/s | — | ScalingMutator(×100) | EntryError(DATA_OUT_OF_RANGE, 32767) | RangeValidator[0, 200.0] | |||||
| │ │ └── predominantFrequency | 10 | PFrequency | Hz | — | MultiplierMutator(×2) | EntryError(DATA_OUT_OF_RANGE, 1023) | RangeValidator[0, 315] | |||||
| │ ├── yAxis | — | Struct | — | |||||||||
| │ │ ├── PPV | 15 | Ppv | mm/s | — | ScalingMutator(×100) | EntryError(DATA_OUT_OF_RANGE, 32767) | RangeValidator[0, 200.0] | |||||
| │ │ └── predominantFrequency | 10 | PFrequency | Hz | — | MultiplierMutator(×2) | EntryError(DATA_OUT_OF_RANGE, 1023) | RangeValidator[0, 315] | |||||
| │ ├── zAxis | — | Struct | — | |||||||||
| │ │ ├── PPV | 15 | Ppv | mm/s | — | ScalingMutator(×100) | EntryError(DATA_OUT_OF_RANGE, 32767) | RangeValidator[0, 200.0] | |||||
| │ │ └── predominantFrequency | 10 | PFrequency | Hz | — | MultiplierMutator(×2) | EntryError(DATA_OUT_OF_RANGE, 1023) | RangeValidator[0, 315] | |||||
| │ └── composedAxis | — | Struct | — | |||||||||
| │ └── PPV | 15 | Ppv | mm/s | — | ScalingMutator(×100) | EntryError(DATA_OUT_OF_RANGE, 32767) | RangeValidator[0, 200.0] | |||||
| ├── frameHeader | — | Struct | outputParameter == (PGA, 2) | |||||||||
| │ ├── frameNumber | 1 | UInt | outputParameter == (PGA, 2) | |||||||||
| │ ├── totalEvents | 3 | UInt | outputParameter == (PGA, 2) | RangeValidator[0, 4] | ||||||||
| │ └── nEvents | 2 | UInt | outputParameter == (PGA, 2) | RangeValidator[0, 2] | a:20:02:00 | backgroundEvent | boolean | is_background_event | ||||
| ├── temperature | 12 | Int | Cel | frameNumber == 0 | ScalingMutator(×10) | EntryError(DATA_OUT_OF_RANGE, 2047) | a:20:00:00 | temperature | Cel | |||
| ├── numEventsCounted | 6 | UInt | count | frameNumber == 0 | a:20:08:00 | overThresholdEvents | count | num_events_above_report_threshold | ||||
| ├── numActiveWindows | 14 | UInt | count | frameNumber == 0 | EntryError(DATA_OUT_OF_RANGE, 16383) | a:20:06:00 | activeTime | s | active_time_seconds | |||
| ├── samplingRate | 2 | Enum | frameNumber == 0 | F62_5HZ (0), F125HZ (1), F250HZ (2), F500HZ (3) | a:20:08:00 | activeTime | s | active_time_seconds | ||||
| ├── samplingRate | 2 | Enum | frameNumber != 0 | F62_5HZ (0), F125HZ (1), F250HZ (2), F500HZ (3) | a:20:08:00 | activeTime | s | active_time_seconds | ||||
| ├── Reporting Events [nEvents] | — | Seq | outputParameter == (PGA, 2) | |||||||||
| │ ├── timestampEvent | 17 | UInt | — | RelativeTimestampMutator | EntryError(DATA_OUT_OF_RANGE, 131071) | |||||||
| │ ├── composedPGAEvent | 15 | PGA | mg_acc | — | ScalingMutator(×10) | EntryError(DATA_OUT_OF_RANGE, 32767) | RangeValidator[0, 2000.0] | |||||
| │ ├── composedRMSEvent | 14 | RMS | mg_acc | — | ScalingMutator(×10) | EntryError(DATA_OUT_OF_RANGE, 16383) | RangeValidator[0, 1000.0] | |||||
| │ ├── xAxis | — | Struct | — | |||||||||
| │ │ ├── PGA | 15 | PGA | mg_acc | — | ScalingMutator(×10) | EntryError(DATA_OUT_OF_RANGE, 32767) | RangeValidator[0, 2000.0] | |||||
| │ │ └── frequency | 11 | UInt | Hz | — | RawFrequencyToFrequencyMutator | |||||||
| │ ├── yAxis | — | Struct | — | |||||||||
| │ │ ├── PGA | 15 | PGA | mg_acc | — | ScalingMutator(×10) | EntryError(DATA_OUT_OF_RANGE, 32767) | RangeValidator[0, 2000.0] | |||||
| │ │ └── frequency | 11 | UInt | Hz | — | RawFrequencyToFrequencyMutator | |||||||
| │ └── zAxis | — | Struct | — | |||||||||
| │ ├── PGA | 15 | PGA | mg_acc | — | ScalingMutator(×10) | EntryError(DATA_OUT_OF_RANGE, 32767) | RangeValidator[0, 2000.0] | |||||
| │ └── frequency | 11 | UInt | Hz | — | RawFrequencyToFrequencyMutator | |||||||
| ├── reportingInfo | — | Struct | outputParameter == (PSA, 2) | |||||||||
| │ ├── temperature | 12 | Int | Cel | outputParameter == (PSA, 2) | ScalingMutator(×10) | EntryError(DATA_OUT_OF_RANGE, 2047) | a:20:00:00 | temperature | Cel | |||
| │ ├── numEventsCounted | 6 | UInt | count | outputParameter == (PSA, 2) | a:20:08:00 | overThresholdEvents | count | num_events_above_report_threshold | ||||
| │ ├── numActiveWindows | 14 | UInt | count | outputParameter == (PSA, 2) | EntryError(DATA_OUT_OF_RANGE, 16383) | a:20:06:00 | activeTime | s | active_time_seconds | |||
| │ ├── samplingRate | 2 | Enum | outputParameter == (PSA, 2) | F62_5HZ (0), F125HZ (1), F250HZ (2), F500HZ (3) | a:20:08:00 | activeTime | s | active_time_seconds | ||||
| │ └── acquisitionMode | 1 | Enum | outputParameter == (PSA, 2) | ALWAYS_ON (0), PERIODIC (1) | ||||||||
| ├── timestampEvent | 17 | UInt | numActiveWindows > 0 | RelativeTimestampMutator | EntryError(DATA_OUT_OF_RANGE, 131071) | |||||||
| ├── xAxis | — | Struct | numActiveWindows > 0 | |||||||||
| │ ├── PGA | 15 | PGA | mg_acc | numActiveWindows > 0 | ScalingMutator(×10) | EntryError(DATA_OUT_OF_RANGE, 32767) | RangeValidator[0, 2000.0] | a:20:05:00 | pgaXAxis | mg_acc | peak_ground_acceleration_axis_x_event | |
| │ ├── RMS | 14 | RMS | mg_acc | numActiveWindows > 0 | ScalingMutator(×10) | EntryError(DATA_OUT_OF_RANGE, 16383) | RangeValidator[0, 1000.0] | a:20:05:00 | rmsXAxis | mg_acc | root_mean_square_axis_x_event | |
| │ └── Frequencies [5] | — | Seq | numActiveWindows > 0 | |||||||||
| │ └── | 11 | UInt | Hz | — | RawFrequencyToFrequencyMutator | a:20:05:00 | freq1Xaxis | Hz | frequency_1_axis_x_event | |||
| ├── yAxis | — | Struct | numActiveWindows > 0 | |||||||||
| │ ├── PGA | 15 | PGA | mg_acc | numActiveWindows > 0 | ScalingMutator(×10) | EntryError(DATA_OUT_OF_RANGE, 32767) | RangeValidator[0, 2000.0] | a:20:05:00 | pgaYAxis | mg_acc | peak_ground_acceleration_axis_y_event | |
| │ ├── RMS | 14 | RMS | mg_acc | numActiveWindows > 0 | ScalingMutator(×10) | EntryError(DATA_OUT_OF_RANGE, 16383) | RangeValidator[0, 1000.0] | a:20:05:00 | rmsYAxis | mg_acc | root_mean_square_axis_y_event | |
| │ └── Frequencies [5] | — | Seq | numActiveWindows > 0 | |||||||||
| │ └── | 11 | UInt | Hz | — | RawFrequencyToFrequencyMutator | a:20:05:00 | freq1Yaxis | Hz | frequency_1_axis_y_event | |||
| ├── zAxis | — | Struct | numActiveWindows > 0 | |||||||||
| │ ├── PGA | 15 | PGA | mg_acc | numActiveWindows > 0 | ScalingMutator(×10) | EntryError(DATA_OUT_OF_RANGE, 32767) | RangeValidator[0, 2000.0] | a:20:05:00 | pgaZAxis | mg_acc | peak_ground_acceleration_axis_z_event | |
| │ ├── RMS | 14 | RMS | mg_acc | numActiveWindows > 0 | ScalingMutator(×10) | EntryError(DATA_OUT_OF_RANGE, 16383) | RangeValidator[0, 1000.0] | a:20:05:00 | rmsZAxis | mg_acc | root_mean_square_axis_z_event | |
| │ └── Frequencies [5] | — | Seq | numActiveWindows > 0 | |||||||||
| │ └── | 11 | UInt | Hz | — | RawFrequencyToFrequencyMutator | a:20:05:00 | freq1Zaxis | Hz | frequency_1_axis_z_event | |||
| └── | 0 | — | outputParameter == default |
Worldsensing Format Sources
| Address | Manufacturer | Type | Model | Status |
|---|---|---|---|---|
| a:20:00:00 | Worldsensing | Thermometer | 0 | |
| a:20:01:00 | Worldsensing | MTVVEvent | 0 | |
| a:20:02:00 | Worldsensing | MTVVStats | 0 | |
| a:20:07:00 | Worldsensing | PGAEvent | 0 | |
| a:20:08:00 | Worldsensing | PGAStats | 0 | |
| a:20:03:00 | Worldsensing | PPVEvent | 0 | |
| a:20:04:00 | Worldsensing | PPVStats | 0 | |
| a:20:05:00 | Worldsensing | PSAEvent | 0 | |
| a:20:06:00 | Worldsensing | PSAStats | 0 |
Example
mtvv_v1_msg_fits_in_one_frame
Source: VibrationMeterDataStrMessagesMTVV.py
JSON Message
{
"ls_header": {
"uplink_version": {
"value": "4",
"raw": 4
},
"product_code": {
"value": "94",
"raw": 94
},
"node_id": {
"value": "87",
"raw": 87
},
"sequence_number": {
"value": "1",
"raw": 1
},
"am_type": {
"value": "82",
"raw": 82
}
},
"timestamp": {
"value": "1970-01-01T00:00:00Z",
"raw": 0
},
"version": {
"value": "1",
"raw": 1
},
"commonHeader": {
"reserved": {
"value": "0",
"raw": 0
},
"alertReport": {
"value": false,
"raw": false
},
"outputParameter": {
"value": "MTVV",
"raw": 1
}
},
"readings": {
"frameHeader": {
"frameNumber": {
"value": "0",
"raw": 0
},
"totalEvents": {
"value": "3",
"raw": 3
},
"nEvents": {
"value": "3",
"raw": 3
}
},
"reportingInfo": {
"temperature": {
"value": "20.8",
"unit": "Cel",
"raw": 208
},
"transmissionThreshold": {
"value": "56",
"unit": "dB",
"raw": 20
},
"reportingPeriodSummary": {
"numEventsAboveReportThreshold": {
"value": "3",
"unit": "count",
"raw": 3
},
"numEventsBelowReportThreshold": {
"value": "4",
"unit": "count",
"raw": 4
},
"numActiveWindows": {
"value": "5",
"unit": "count",
"raw": 5
}
}
},
"reportingEvents": [
{
"timestampEvent": {
"value": "1970-01-01T00:00:00Z",
"raw": 0
},
"numWindowsEvent": {
"value": "22",
"unit": "count",
"raw": 22
},
"xAxis": {
"MTVV": {
"value": "60.5",
"unit": "dB",
"raw": 110
}
},
"yAxis": {
"MTVV": {
"value": "60.6",
"unit": "dB",
"raw": 112
}
},
"zAxis": {
"MTVV": {
"value": "60.7",
"unit": "dB",
"raw": 114
}
}
},
{
"timestampEvent": {
"value": "1970-01-01T02:28:21Z",
"raw": 8901
},
"numWindowsEvent": {
"value": "7",
"unit": "count",
"raw": 7
},
"xAxis": {
"MTVV": {
"value": "55",
"unit": "dB",
"raw": 0
}
},
"yAxis": {
"MTVV": {
"error": {
"code": 2,
"subCode": 4
},
"raw": 1023,
"unit": "dB"
}
},
"zAxis": {
"MTVV": {
"error": {
"code": 2,
"subCode": 4
},
"raw": 1023,
"unit": "dB"
}
}
},
{
"timestampEvent": {
"value": "2001-11-24T20:15:45Z",
"raw": 1006632945
},
"numWindowsEvent": {
"error": {
"code": 2,
"subCode": 4
},
"raw": 127,
"unit": "count"
},
"xAxis": {
"MTVV": {
"value": "55.5",
"unit": "dB",
"raw": 10
}
},
"yAxis": {
"MTVV": {
"value": "55.6",
"unit": "dB",
"raw": 12
}
},
"zAxis": {
"MTVV": {
"value": "55.7",
"unit": "dB",
"raw": 14
}
}
}
]
},
"padding": {
"value": "0",
"raw": 0
}
}
Encoded Bytes
40 5E 00 57 01 52 00 00 00 00 11 1B 0D 00 50 31 00 00 14 00 00 00 00 B0 DC 38 0E 40 00 04 58 A1 C0 0F FF FF 3B FF FF F1 FE 05 01 80 70
Related Fixture Files
DynRawDataStrMsg
Dyn Raw Data Str Msg
AM Type: 83
Source Code
| Field | Bits | Type | Unit | Condition | Mutator | Error | Validator | Description |
|---|---|---|---|---|---|---|---|---|
| ls_header | — | Struct | Always | |||||
| ├── uplink_version | 4 | UInt | Always | |||||
| ├── node_id_high | 4 | Fragment | Always | |||||
| ├── product_code | 8 | UInt | Always | |||||
| ├── node_id | 16 | UInt | Always | |||||
| ├── sequence_number | 8 | UInt | Always | |||||
| └── am_type | 8 | UInt | Always | |||||
| timestamp | 32 | TimestampField | Always | TimestampMutator | ||||
| version | 4 | UInt | Always | RangeValidator[0, 1] | ||||
| commonHeader | — | Switch | Always | |||||
| ├── reserved | 2 | Reserved | version == 0 | |||||
| ├── outputParameter | 2 | Enum | version == 0 | NO_ALGORITHM (0), MTVV (1), PPV (2), PGA (3), PSA (4) | ||||
| ├── outputParameter | 3 | Enum | version == 1 | NO_ALGORITHM (0), MTVV (1), PPV (2), PGA (3), PSA (4) | ||||
| └── reserved | 1 | Reserved | version == 1 | |||||
| readings | — | Switch | Always | |||||
| ├── isShortMonitoringEvent | 1 | Bool | outputParameter == (MTVV, 0) | |||||
| ├── wakeUpThreshold | 16 | UInt | outputParameter == (MTVV, 0) | |||||
| ├── transmissionThreshold | 10 | Mtvv | dB | outputParameter == (MTVV, 0) | OffsetMutator(-55), MultiplierMutator(×20) | EntryError(DATA_OUT_OF_RANGE, 1023) | RangeValidator[55.0, 100.0] | |
| ├── reading | — | Struct | outputParameter == (MTVV, 0) | |||||
| │ ├── numWindowsEvent | 7 | UInt | count | outputParameter == (MTVV, 0) | EntryError(DATA_OUT_OF_RANGE, 127) | |||
| │ ├── xAxis | — | Struct | outputParameter == (MTVV, 0) | |||||
| │ │ └── MTVV | 10 | Mtvv | dB | outputParameter == (MTVV, 0) | OffsetMutator(-55), MultiplierMutator(×20) | EntryError(DATA_OUT_OF_RANGE, 1023) | RangeValidator[55.0, 100.0] | |
| │ ├── yAxis | — | Struct | outputParameter == (MTVV, 0) | |||||
| │ │ └── MTVV | 10 | Mtvv | dB | outputParameter == (MTVV, 0) | OffsetMutator(-55), MultiplierMutator(×20) | EntryError(DATA_OUT_OF_RANGE, 1023) | RangeValidator[55.0, 100.0] | |
| │ └── zAxis | — | Struct | outputParameter == (MTVV, 0) | |||||
| │ └── MTVV | 10 | Mtvv | dB | outputParameter == (MTVV, 0) | OffsetMutator(-55), MultiplierMutator(×20) | EntryError(DATA_OUT_OF_RANGE, 1023) | RangeValidator[55.0, 100.0] | |
| ├── temperature | 12 | Int | Cel | outputParameter == (MTVV, 1) | ScalingMutator(×10) | EntryError(DATA_OUT_OF_RANGE, 2047) | ||
| ├── reading | — | Struct | outputParameter == (MTVV, 1) | |||||
| │ ├── numWindowsEvent | 7 | UInt | count | outputParameter == (MTVV, 1) | EntryError(DATA_OUT_OF_RANGE, 127) | |||
| │ ├── xAxis | — | Struct | outputParameter == (MTVV, 1) | |||||
| │ │ └── MTVV | 10 | Mtvv | dB | outputParameter == (MTVV, 1) | OffsetMutator(-55), MultiplierMutator(×20) | EntryError(DATA_OUT_OF_RANGE, 1023) | RangeValidator[55.0, 100.0] | |
| │ ├── yAxis | — | Struct | outputParameter == (MTVV, 1) | |||||
| │ │ └── MTVV | 10 | Mtvv | dB | outputParameter == (MTVV, 1) | OffsetMutator(-55), MultiplierMutator(×20) | EntryError(DATA_OUT_OF_RANGE, 1023) | RangeValidator[55.0, 100.0] | |
| │ └── zAxis | — | Struct | outputParameter == (MTVV, 1) | |||||
| │ └── MTVV | 10 | Mtvv | dB | outputParameter == (MTVV, 1) | OffsetMutator(-55), MultiplierMutator(×20) | EntryError(DATA_OUT_OF_RANGE, 1023) | RangeValidator[55.0, 100.0] | |
| ├── isShortMonitoringEvent | 1 | Bool | outputParameter == (PPV, 0) | |||||
| ├── wakeUpThreshold | 16 | UInt | outputParameter == (PPV, 0) | |||||
| ├── transmissionThreshold | 13 | Ppv | mm/s | outputParameter == (PPV, 0) | ScalingMutator(×100) | EntryError(DATA_OUT_OF_RANGE, 8191) | RangeValidator[0, 60.0] | |
| ├── reading | — | Struct | outputParameter == (PPV, 0) | |||||
| │ ├── numWindowsEvent | 7 | UInt | count | outputParameter == (PPV, 0) | EntryError(DATA_OUT_OF_RANGE, 127) | |||
| │ ├── xAxis | — | Struct | outputParameter == (PPV, 0) | |||||
| │ │ ├── PPV | 13 | Ppv | mm/s | outputParameter == (PPV, 0) | ScalingMutator(×100) | EntryError(DATA_OUT_OF_RANGE, 8191) | RangeValidator[0, 60.0] | |
| │ │ └── predominantFrequency | 8 | PFrequency | Hz | outputParameter == (PPV, 0) | MultiplierMutator(×2) | EntryError(DATA_OUT_OF_RANGE, 255) | RangeValidator[0, 100] | |
| │ ├── yAxis | — | Struct | outputParameter == (PPV, 0) | |||||
| │ │ ├── PPV | 13 | Ppv | mm/s | outputParameter == (PPV, 0) | ScalingMutator(×100) | EntryError(DATA_OUT_OF_RANGE, 8191) | RangeValidator[0, 60.0] | |
| │ │ └── predominantFrequency | 8 | PFrequency | Hz | outputParameter == (PPV, 0) | MultiplierMutator(×2) | EntryError(DATA_OUT_OF_RANGE, 255) | RangeValidator[0, 100] | |
| │ └── zAxis | — | Struct | outputParameter == (PPV, 0) | |||||
| │ ├── PPV | 13 | Ppv | mm/s | outputParameter == (PPV, 0) | ScalingMutator(×100) | EntryError(DATA_OUT_OF_RANGE, 8191) | RangeValidator[0, 60.0] | |
| │ └── predominantFrequency | 8 | PFrequency | Hz | outputParameter == (PPV, 0) | MultiplierMutator(×2) | EntryError(DATA_OUT_OF_RANGE, 255) | RangeValidator[0, 100] | |
| ├── temperature | 12 | Int | Cel | outputParameter == (PPV, 1) | ScalingMutator(×10) | EntryError(DATA_OUT_OF_RANGE, 2047) | ||
| ├── reading | — | Struct | outputParameter == (PPV, 1) | |||||
| │ ├── numWindowsEvent | 8 | UInt | count | outputParameter == (PPV, 1) | EntryError(DATA_OUT_OF_RANGE, 255) | |||
| │ ├── xAxis | — | Struct | outputParameter == (PPV, 1) | |||||
| │ │ ├── PPV | 15 | Ppv | mm/s | outputParameter == (PPV, 1) | ScalingMutator(×100) | EntryError(DATA_OUT_OF_RANGE, 32767) | RangeValidator[0, 200.0] | |
| │ │ └── predominantFrequency | 10 | PFrequency | Hz | outputParameter == (PPV, 1) | MultiplierMutator(×2) | EntryError(DATA_OUT_OF_RANGE, 1023) | RangeValidator[0, 315] | |
| │ ├── yAxis | — | Struct | outputParameter == (PPV, 1) | |||||
| │ │ ├── PPV | 15 | Ppv | mm/s | outputParameter == (PPV, 1) | ScalingMutator(×100) | EntryError(DATA_OUT_OF_RANGE, 32767) | RangeValidator[0, 200.0] | |
| │ │ └── predominantFrequency | 10 | PFrequency | Hz | outputParameter == (PPV, 1) | MultiplierMutator(×2) | EntryError(DATA_OUT_OF_RANGE, 1023) | RangeValidator[0, 315] | |
| │ └── zAxis | — | Struct | outputParameter == (PPV, 1) | |||||
| │ ├── PPV | 15 | Ppv | mm/s | outputParameter == (PPV, 1) | ScalingMutator(×100) | EntryError(DATA_OUT_OF_RANGE, 32767) | RangeValidator[0, 200.0] | |
| │ └── predominantFrequency | 10 | PFrequency | Hz | outputParameter == (PPV, 1) | MultiplierMutator(×2) | EntryError(DATA_OUT_OF_RANGE, 1023) | RangeValidator[0, 315] | |
| ├── temperature | 12 | Int | Cel | outputParameter == (PGA, 1) | ScalingMutator(×10) | EntryError(DATA_OUT_OF_RANGE, 2047) | ||
| ├── samplingRate | 2 | Enum | outputParameter == (PGA, 1) | F62_5HZ (0), F125HZ (1), F250HZ (2), F500HZ (3) | ||||
| ├── reading | — | Struct | outputParameter == (PGA, 1) | |||||
| │ ├── composedPGAEvent | 15 | PGA | mg_acc | outputParameter == (PGA, 1) | ScalingMutator(×10) | EntryError(DATA_OUT_OF_RANGE, 32767) | RangeValidator[0, 2000.0] | |
| │ ├── composedRMSEvent | 14 | RMS | mg_acc | outputParameter == (PGA, 1) | ScalingMutator(×10) | EntryError(DATA_OUT_OF_RANGE, 16383) | RangeValidator[0, 1000.0] | |
| │ ├── xAxis | — | Struct | outputParameter == (PGA, 1) | |||||
| │ │ ├── PGA | 15 | PGA | mg_acc | outputParameter == (PGA, 1) | ScalingMutator(×10) | EntryError(DATA_OUT_OF_RANGE, 32767) | RangeValidator[0, 2000.0] | |
| │ │ └── frequency | 11 | UInt | Hz | outputParameter == (PGA, 1) | RawFrequencyToFrequencyMutator | |||
| │ ├── yAxis | — | Struct | outputParameter == (PGA, 1) | |||||
| │ │ ├── PGA | 15 | PGA | mg_acc | outputParameter == (PGA, 1) | ScalingMutator(×10) | EntryError(DATA_OUT_OF_RANGE, 32767) | RangeValidator[0, 2000.0] | |
| │ │ └── frequency | 11 | UInt | Hz | outputParameter == (PGA, 1) | RawFrequencyToFrequencyMutator | |||
| │ └── zAxis | — | Struct | outputParameter == (PGA, 1) | |||||
| │ ├── PGA | 15 | PGA | mg_acc | outputParameter == (PGA, 1) | ScalingMutator(×10) | EntryError(DATA_OUT_OF_RANGE, 32767) | RangeValidator[0, 2000.0] | |
| │ └── frequency | 11 | UInt | Hz | outputParameter == (PGA, 1) | RawFrequencyToFrequencyMutator | |||
| ├── temperature | 12 | Int | Cel | outputParameter == (PSA, 1) | ScalingMutator(×10) | EntryError(DATA_OUT_OF_RANGE, 2047) | ||
| ├── samplingRate | 2 | Enum | outputParameter == (PSA, 1) | F62_5HZ (0), F125HZ (1), F250HZ (2), F500HZ (3) | ||||
| ├── reading | — | Struct | outputParameter == (PSA, 1) | |||||
| │ ├── xAxis | — | Struct | outputParameter == (PSA, 1) | |||||
| │ │ ├── PGA | 15 | PGA | mg_acc | outputParameter == (PSA, 1) | ScalingMutator(×10) | EntryError(DATA_OUT_OF_RANGE, 32767) | RangeValidator[0, 2000.0] | |
| │ │ ├── RMS | 14 | RMS | mg_acc | outputParameter == (PSA, 1) | ScalingMutator(×10) | EntryError(DATA_OUT_OF_RANGE, 16383) | RangeValidator[0, 1000.0] | |
| │ │ └── Frequencies [5] | — | Seq | outputParameter == (PSA, 1) | |||||
| │ │ └── | 11 | UInt | Hz | — | RawFrequencyToFrequencyMutator | |||
| │ ├── yAxis | — | Struct | outputParameter == (PSA, 1) | |||||
| │ │ ├── PGA | 15 | PGA | mg_acc | outputParameter == (PSA, 1) | ScalingMutator(×10) | EntryError(DATA_OUT_OF_RANGE, 32767) | RangeValidator[0, 2000.0] | |
| │ │ ├── RMS | 14 | RMS | mg_acc | outputParameter == (PSA, 1) | ScalingMutator(×10) | EntryError(DATA_OUT_OF_RANGE, 16383) | RangeValidator[0, 1000.0] | |
| │ │ └── Frequencies [5] | — | Seq | outputParameter == (PSA, 1) | |||||
| │ │ └── | 11 | UInt | Hz | — | RawFrequencyToFrequencyMutator | |||
| │ └── zAxis | — | Struct | outputParameter == (PSA, 1) | |||||
| │ ├── PGA | 15 | PGA | mg_acc | outputParameter == (PSA, 1) | ScalingMutator(×10) | EntryError(DATA_OUT_OF_RANGE, 32767) | RangeValidator[0, 2000.0] | |
| │ ├── RMS | 14 | RMS | mg_acc | outputParameter == (PSA, 1) | ScalingMutator(×10) | EntryError(DATA_OUT_OF_RANGE, 16383) | RangeValidator[0, 1000.0] | |
| │ └── Frequencies [5] | — | Seq | outputParameter == (PSA, 1) | |||||
| │ └── | 11 | UInt | Hz | — | RawFrequencyToFrequencyMutator | |||
| └── | 0 | — | outputParameter == default |
Example
mtvv_v1_normal_msg
Source: VibrationMeterSingleDataStrMessagesMTVV.py
JSON Message
{
"ls_header": {
"uplink_version": {
"value": "4",
"raw": 4
},
"product_code": {
"value": "94",
"raw": 94
},
"node_id": {
"value": "87",
"raw": 87
},
"sequence_number": {
"value": "1",
"raw": 1
},
"am_type": {
"value": "83",
"raw": 83
}
},
"timestamp": {
"value": "1970-01-01T00:08:52Z",
"raw": 532
},
"version": {
"value": "0",
"raw": 0
},
"commonHeader": {
"reserved": {
"value": "0",
"raw": 0
},
"outputParameter": {
"value": "MTVV",
"raw": 1
}
},
"readings": {
"isShortMonitoringEvent": {
"value": true,
"raw": true
},
"wakeUpThreshold": {
"value": "50",
"raw": 50
},
"transmissionThreshold": {
"value": "55.1",
"unit": "dB",
"raw": 2
},
"reading": {
"numWindowsEvent": {
"value": "3",
"unit": "count",
"raw": 3
},
"xAxis": {
"MTVV": {
"value": "60.5",
"unit": "dB",
"raw": 110
}
},
"yAxis": {
"MTVV": {
"value": "60.6",
"unit": "dB",
"raw": 112
}
},
"zAxis": {
"MTVV": {
"value": "60.7",
"unit": "dB",
"raw": 114
}
}
}
},
"padding": {
"value": "0",
"raw": 0
}
}
Encoded Bytes
40 5E 00 57 01 53 00 00 02 14 01 80 19 00 40 C6 E1 C0 72
Related Fixture Files
GnssStatisticsStrMsg
Gnss Statistics Str Msg
AM Type: 84
Source Code
| Field | Bits | Type | Unit | Condition | Mutator | Description |
|---|---|---|---|---|---|---|
| ls_header | — | Struct | Always | |||
| ├── uplink_version | 4 | UInt | Always | |||
| ├── node_id_high | 4 | Fragment | Always | |||
| ├── product_code | 8 | UInt | Always | |||
| ├── node_id | 16 | UInt | Always | |||
| ├── sequence_number | 8 | UInt | Always | |||
| └── am_type | 8 | UInt | Always | |||
| readTimestamp | 32 | TimestampField | Always | TimestampMutator | ||
| version | 4 | UInt | Always | |||
| mode | 1 | Enum | Always | BASE (1), ROVER (0) | ||
| satellites | — | Struct | Always | |||
| ├── inUse | 6 | UInt | count | Always | ||
| └── inView | 6 | UInt | count | Always | ||
| avgCorrectionsLength | 10 | UInt | count | Always | ||
| gpsFix | — | Struct | Always | |||
| ├── timeToFix | 8 | UInt | s | Always | ||
| ├── hasFixBeforeCorrections | 1 | Bool | boolean | Always | NegateMutator | |
| ├── hasFix | 1 | Bool | boolean | Always | NegateMutator | |
| └── numSamplesNoFixDuringCorrections | 4 | UInt | count | Always | ||
| time | — | Struct | Always | |||
| ├── dateUpdated | 1 | Bool | boolean | Always | NegateMutator | |
| └── deviation | 12 | Int | s | Always | ScalingMutator(×1000) | |
| corrections | — | Struct | Always | |||
| ├── numPerSample | 8 | UInt | count | Always | ||
| └── timeToFirst | 8 | UInt | s | Always | ||
| carrierToNoise | — | Struct | Always | |||
| ├── gps | — | Struct | Always | |||
| │ ├── L1 | 6 | UInt | dBHz | Always | ||
| │ └── L2 | 6 | UInt | dBHz | Always | ||
| ├── galileo | — | Struct | Always | |||
| │ ├── E1 | 6 | UInt | dBHz | Always | ||
| │ └── E5b | 6 | UInt | dBHz | Always | ||
| ├── glonas | — | Struct | Always | |||
| │ ├── G1 | 6 | UInt | dBHz | Always | ||
| │ └── G2 | 6 | UInt | dBHz | Always | ||
| └── beidou | — | Struct | Always | |||
| ├── B1 | 6 | UInt | dBHz | Always | ||
| └── B2 | 6 | UInt | dBHz | Always | ||
| corrections | — | Struct | mode == ROVER | |||
| ├── numCorrectionsApplied | 6 | UInt | count | mode == ROVER | ||
| ├── unexpectedPackets | 6 | UInt | count | mode == ROVER | ||
| ├── snr | — | Struct | mode == ROVER | |||
| │ ├── avg | 9 | Int | dB | mode == ROVER | ScalingMutator(×10) | |
| │ └── stdDev | 8 | UInt | dB | mode == ROVER | ScalingMutator(×10) | |
| └── rssi | — | Struct | mode == ROVER | |||
| ├── avg | 8 | UInt | dBm | mode == ROVER | MultiplierMutator(×-1) | |
| └── stdDev | 8 | UInt | dBm | mode == ROVER | ||
| timeToRTKFix | 8 | UInt | s | mode == ROVER | ||
| dilutionOfPrecision | — | Struct | mode == ROVER | |||
| ├── horizontal | 8 | UInt | count | mode == ROVER | ScalingMutator(×10) | |
| └── vertical | 8 | UInt | count | mode == ROVER | ScalingMutator(×10) | |
| positionMAD | — | Struct | mode == ROVER | |||
| ├── oneSample | — | Struct | mode == ROVER | |||
| │ ├── latLon | 8 | UInt | mm | mode == ROVER | ||
| │ └── altitude | 8 | UInt | mm | mode == ROVER | ||
| ├── shortTermAgg | — | Struct | mode == ROVER | |||
| │ ├── latLon | 8 | UInt | mm | mode == ROVER | ||
| │ └── altitude | 8 | UInt | mm | mode == ROVER | ||
| └── longTermAgg | — | Struct | mode == ROVER | |||
| ├── latLon | 8 | UInt | mm | mode == ROVER | ||
| └── altitude | 8 | UInt | mm | mode == ROVER |
| Field | Bits | Type | Unit | Condition | Mutator | Description | WF Address | WF Name | WF Unit | Cloud DP Name |
|---|---|---|---|---|---|---|---|---|---|---|
| ls_header | — | Struct | Always | |||||||
| ├── uplink_version | 4 | UInt | Always | |||||||
| ├── node_id_high | 4 | Fragment | Always | |||||||
| ├── product_code | 8 | UInt | Always | |||||||
| ├── node_id | 16 | UInt | Always | |||||||
| ├── sequence_number | 8 | UInt | Always | |||||||
| └── am_type | 8 | UInt | Always | |||||||
| readTimestamp | 32 | TimestampField | Always | TimestampMutator | ||||||
| version | 4 | UInt | Always | |||||||
| mode | 1 | Enum | Always | BASE (1), ROVER (0) | ||||||
| satellites | — | Struct | Always | |||||||
| ├── inUse | 6 | UInt | count | Always | a:05:00:12 | inUse | count | avg_satellites_in_use | ||
| └── inView | 6 | UInt | count | Always | a:05:00:12 | inView | count | avg_satellites_in_view | ||
| avgCorrectionsLength | 10 | UInt | count | Always | a:05:00:13 | length | count | avg_corrections_length | ||
| gpsFix | — | Struct | Always | |||||||
| ├── timeToFix | 8 | UInt | s | Always | a:05:00:10 | timeToFix | s | time_to_gps_fix | ||
| ├── hasFixBeforeCorrections | 1 | Bool | boolean | Always | NegateMutator | a:05:00:10 | fixBeforeCorrections | boolean | has_fix_before_corrections | |
| ├── hasFix | 1 | Bool | boolean | Always | NegateMutator | a:05:00:10 | hasFix | boolean | has_fix | |
| └── numSamplesNoFixDuringCorrections | 4 | UInt | count | Always | a:05:00:10 | samplesNoFix | count | no_fix_correction_samples | ||
| time | — | Struct | Always | |||||||
| ├── dateUpdated | 1 | Bool | boolean | Always | NegateMutator | a:05:00:11 | updated | boolean | date_updated | |
| └── deviation | 12 | Int | s | Always | ScalingMutator(×1000) | a:05:00:11 | deviation | s | time_deviation | |
| corrections | — | Struct | Always | |||||||
| ├── numPerSample | 8 | UInt | count | Always | a:05:00:13 | numPerSample | count | corrections_per_sample | ||
| └── timeToFirst | 8 | UInt | s | Always | a:05:00:13 | timeToFirst | s | time_to_first_correction | ||
| carrierToNoise | — | Struct | Always | |||||||
| ├── gps | — | Struct | Always | |||||||
| │ ├── L1 | 6 | UInt | dBHz | Always | a:05:00:14 | cn0 | dBHz | avg_max_cn0_gps_l1 | ||
| │ └── L2 | 6 | UInt | dBHz | Always | a:05:00:15 | cn0 | dBHz | avg_max_cn0_gps_l2 | ||
| ├── galileo | — | Struct | Always | |||||||
| │ ├── E1 | 6 | UInt | dBHz | Always | a:05:00:16 | cn0 | dBHz | avg_max_cn0_galileo_e1 | ||
| │ └── E5b | 6 | UInt | dBHz | Always | a:05:00:17 | cn0 | dBHz | avg_max_cn0_galileo_e5b | ||
| ├── glonas | — | Struct | Always | |||||||
| │ ├── G1 | 6 | UInt | dBHz | Always | a:05:00:18 | cn0 | dBHz | avg_max_cn0_glonas_g1 | ||
| │ └── G2 | 6 | UInt | dBHz | Always | a:05:00:19 | cn0 | dBHz | avg_max_cn0_glonas_g2 | ||
| └── beidou | — | Struct | Always | |||||||
| ├── B1 | 6 | UInt | dBHz | Always | a:05:00:20 | cn0 | dBHz | avg_max_cn0_beidou_b1 | ||
| └── B2 | 6 | UInt | dBHz | Always | a:05:00:21 | cn0 | dBHz | avg_max_cn0_beidou_b2 | ||
| corrections | — | Struct | mode == ROVER | |||||||
| ├── numCorrectionsApplied | 6 | UInt | count | mode == ROVER | a:05:00:13 | applied | count | seconds_with_corrections | ||
| ├── unexpectedPackets | 6 | UInt | count | mode == ROVER | a:05:00:13 | unexpectedPackets | count | unexpected_packets | ||
| ├── snr | — | Struct | mode == ROVER | |||||||
| │ ├── avg | 9 | Int | dB | mode == ROVER | ScalingMutator(×10) | a:05:00:23 | snrAvg | dB | avg_snr_corrections | |
| │ └── stdDev | 8 | UInt | dB | mode == ROVER | ScalingMutator(×10) | a:05:00:23 | snrStdDev | dB | std_dev_snr_corrections | |
| └── rssi | — | Struct | mode == ROVER | |||||||
| ├── avg | 8 | UInt | dBm | mode == ROVER | MultiplierMutator(×-1) | a:05:00:23 | rssiAvg | dBm | avg_rssi_corrections | |
| └── stdDev | 8 | UInt | dBm | mode == ROVER | a:05:00:23 | rssiStdDev | dBm | std_dev_rssi_corrections | ||
| timeToRTKFix | 8 | UInt | s | mode == ROVER | a:05:00:24 | timeToFix | s | time_to_get_rtk_fix | ||
| dilutionOfPrecision | — | Struct | mode == ROVER | |||||||
| ├── horizontal | 8 | UInt | count | mode == ROVER | ScalingMutator(×10) | a:05:00:22 | horizontal | count | avg_horizontal_dop | |
| └── vertical | 8 | UInt | count | mode == ROVER | ScalingMutator(×10) | a:05:00:22 | vertical | count | avg_vertical_dop | |
| positionMAD | — | Struct | mode == ROVER | |||||||
| ├── oneSample | — | Struct | mode == ROVER | |||||||
| │ ├── latLon | 8 | UInt | mm | mode == ROVER | a:05:00:25 | latLon | mm | onesample_mad_lat_lon | ||
| │ └── altitude | 8 | UInt | mm | mode == ROVER | a:05:00:25 | alt | mm | onesample_mad_alt | ||
| ├── shortTermAgg | — | Struct | mode == ROVER | |||||||
| │ ├── latLon | 8 | UInt | mm | mode == ROVER | a:05:00:26 | latLon | mm | short_term_agg_mad_lat_lon | ||
| │ └── altitude | 8 | UInt | mm | mode == ROVER | a:05:00:26 | alt | mm | short_term_agg_mad_alt | ||
| └── longTermAgg | — | Struct | mode == ROVER | |||||||
| ├── latLon | 8 | UInt | mm | mode == ROVER | a:05:00:27 | latLon | mm | long_term_agg_mad_lat_lon | ||
| └── altitude | 8 | UInt | mm | mode == ROVER | a:05:00:27 | alt | mm | long_term_agg_mad_alt |
Worldsensing Format Sources
| Address | Manufacturer | Type | Model | Status |
|---|---|---|---|---|
| a:05:00:10 | Worldsensing | GPSFix | 0 | |
| a:05:00:11 | Worldsensing | Time | 0 | |
| a:05:00:12 | Worldsensing | Satellites | 0 | |
| a:05:00:13 | Worldsensing | Corrections | 0 | |
| a:05:00:14 | Worldsensing | GPSL1 | 0 | |
| a:05:00:15 | Worldsensing | GPSL2 | 0 | |
| a:05:00:16 | Worldsensing | GalileoE1 | 0 | |
| a:05:00:17 | Worldsensing | GalileoE5b | 0 | |
| a:05:00:18 | Worldsensing | GLONASSG1 | 0 | |
| a:05:00:19 | Worldsensing | GLONASSG2 | 0 | |
| a:05:00:20 | Worldsensing | BeiDouB1 | 0 | |
| a:05:00:21 | Worldsensing | BeiDouB2 | 0 | |
| a:05:00:22 | Worldsensing | DilutionOfPrecision | 0 | |
| a:05:00:23 | Worldsensing | CorrectionsRadioInfo | 0 | |
| a:05:00:24 | Worldsensing | RTK | 0 | |
| a:05:00:25 | Worldsensing | PositionMAD1Sample | 0 | |
| a:05:00:26 | Worldsensing | PositionMADShortAgg | 0 | |
| a:05:00:27 | Worldsensing | PositionMADLongAgg | 0 |
Example
base_stats_all_zeros_no_errors
Source: GnssStatsStrMessages.py
JSON Message
{
"ls_header": {
"uplink_version": {
"value": "4",
"raw": 4
},
"product_code": {
"value": "89",
"raw": 89
},
"node_id": {
"value": "5",
"raw": 5
},
"sequence_number": {
"value": "0",
"raw": 0
},
"am_type": {
"value": "84",
"raw": 84
}
},
"readTimestamp": {
"value": "1970-01-01T00:00:00Z",
"raw": 0
},
"version": {
"value": "0",
"raw": 0
},
"mode": {
"value": "BASE",
"raw": 1
},
"satellites": {
"inUse": {
"value": "0",
"unit": "count",
"raw": 0
},
"inView": {
"value": "0",
"unit": "count",
"raw": 0
}
},
"avgCorrectionsLength": {
"value": "0",
"unit": "count",
"raw": 0
},
"gpsFix": {
"timeToFix": {
"value": "0",
"unit": "s",
"raw": 0
},
"hasFixBeforeCorrections": {
"value": true,
"unit": "boolean",
"raw": false
},
"hasFix": {
"value": true,
"unit": "boolean",
"raw": false
},
"numSamplesNoFixDuringCorrections": {
"value": "0",
"unit": "count",
"raw": 0
}
},
"time": {
"dateUpdated": {
"value": true,
"unit": "boolean",
"raw": false
},
"deviation": {
"value": "0",
"unit": "s",
"raw": 0
}
},
"corrections": {
"numPerSample": {
"value": "0",
"unit": "count",
"raw": 0
},
"timeToFirst": {
"value": "0",
"unit": "s",
"raw": 0
}
},
"carrierToNoise": {
"gps": {
"L1": {
"value": "0",
"unit": "dBHz",
"raw": 0
},
"L2": {
"value": "0",
"unit": "dBHz",
"raw": 0
}
},
"galileo": {
"E1": {
"value": "0",
"unit": "dBHz",
"raw": 0
},
"E5b": {
"value": "0",
"unit": "dBHz",
"raw": 0
}
},
"glonas": {
"G1": {
"value": "0",
"unit": "dBHz",
"raw": 0
},
"G2": {
"value": "0",
"unit": "dBHz",
"raw": 0
}
},
"beidou": {
"B1": {
"value": "0",
"unit": "dBHz",
"raw": 0
},
"B2": {
"value": "0",
"unit": "dBHz",
"raw": 0
}
}
}
}
Encoded Bytes
40 59 00 05 00 54 00 00 00 00 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Related Fixture Files
GnssDataStrMsg
Gnss Data Str Msg
AM Type: 85
Source Code
| Field | Bits | Type | Unit | Condition | Mutator | Error | Description |
|---|---|---|---|---|---|---|---|
| ls_header | — | Struct | Always | ||||
| ├── uplink_version | 4 | UInt | Always | ||||
| ├── node_id_high | 4 | Fragment | Always | ||||
| ├── product_code | 8 | UInt | Always | ||||
| ├── node_id | 16 | UInt | Always | ||||
| ├── sequence_number | 8 | UInt | Always | ||||
| └── am_type | 8 | UInt | Always | ||||
| readTimestamp | 32 | TimestampField | Always | TimestampMutator | |||
| version | 3 | UInt | Always | ||||
| oneSample | — | Struct | Always | ||||
| ├── numSamples | 6 | UInt | count | Always | |||
| ├── avgLat | 38 | Int | DD | Always | ScalingMutator(×1000000000) | ReferenceEntryError(NOT_VALID, 0) | |
| ├── avgLon | 39 | Int | DD | Always | ScalingMutator(×1000000000) | ReferenceEntryError(NOT_VALID, 0) | |
| └── avgAlt | 26 | UInt | m | Always | OffsetMutator(+1000), ScalingMutator(×10000) | ReferenceEntryError(NOT_VALID, 0) | |
| shortTermAgg | — | Struct | Always | ||||
| ├── numSamples | 3 | UInt | count | Always | |||
| ├── avgLat | 38 | Int | DD | Always | ScalingMutator(×1000000000) | ReferenceEntryError(NOT_VALID, 0) | |
| ├── avgLon | 39 | Int | DD | Always | ScalingMutator(×1000000000) | ReferenceEntryError(NOT_VALID, 0) | |
| └── avgAlt | 26 | UInt | m | Always | OffsetMutator(+1000), ScalingMutator(×10000) | ReferenceEntryError(NOT_VALID, 0) | |
| longTermAgg | — | Struct | Always | ||||
| ├── numSamples | 5 | UInt | count | Always | |||
| ├── avgLat | 38 | Int | DD | Always | ScalingMutator(×1000000000) | ReferenceEntryError(NOT_VALID, 0) | |
| ├── avgLon | 39 | Int | DD | Always | ScalingMutator(×1000000000) | ReferenceEntryError(NOT_VALID, 0) | |
| └── avgAlt | 26 | UInt | m | Always | OffsetMutator(+1000), ScalingMutator(×10000) | ReferenceEntryError(NOT_VALID, 0) |
| Field | Bits | Type | Unit | Condition | Mutator | Error | Description | WF Address | WF Name | WF Unit | Cloud DP Name |
|---|---|---|---|---|---|---|---|---|---|---|---|
| ls_header | — | Struct | Always | ||||||||
| ├── uplink_version | 4 | UInt | Always | ||||||||
| ├── node_id_high | 4 | Fragment | Always | ||||||||
| ├── product_code | 8 | UInt | Always | ||||||||
| ├── node_id | 16 | UInt | Always | ||||||||
| ├── sequence_number | 8 | UInt | Always | ||||||||
| └── am_type | 8 | UInt | Always | ||||||||
| readTimestamp | 32 | TimestampField | Always | TimestampMutator | |||||||
| version | 3 | UInt | Always | ||||||||
| oneSample | — | Struct | Always | ||||||||
| ├── numSamples | 6 | UInt | count | Always | a:05:00:00 | numSamples | count | onesample_num_samples | |||
| ├── avgLat | 38 | Int | DD | Always | ScalingMutator(×1000000000) | ReferenceEntryError(NOT_VALID, 0) | a:05:00:00 | lat | DD | onesample_avg_latitude | |
| ├── avgLon | 39 | Int | DD | Always | ScalingMutator(×1000000000) | ReferenceEntryError(NOT_VALID, 0) | a:05:00:00 | lon | DD | onesample_avg_longitude | |
| └── avgAlt | 26 | UInt | m | Always | OffsetMutator(+1000), ScalingMutator(×10000) | ReferenceEntryError(NOT_VALID, 0) | a:05:00:00 | alt | m | onesample_avg_altitude | |
| shortTermAgg | — | Struct | Always | ||||||||
| ├── numSamples | 3 | UInt | count | Always | a:05:00:01 | numSamples | count | short_term_agg_num_samples | |||
| ├── avgLat | 38 | Int | DD | Always | ScalingMutator(×1000000000) | ReferenceEntryError(NOT_VALID, 0) | a:05:00:01 | lat | DD | short_term_agg_avg_latitude | |
| ├── avgLon | 39 | Int | DD | Always | ScalingMutator(×1000000000) | ReferenceEntryError(NOT_VALID, 0) | a:05:00:01 | lon | DD | short_term_agg_avg_longitude | |
| └── avgAlt | 26 | UInt | m | Always | OffsetMutator(+1000), ScalingMutator(×10000) | ReferenceEntryError(NOT_VALID, 0) | a:05:00:01 | alt | m | short_term_agg_avg_altitude | |
| longTermAgg | — | Struct | Always | ||||||||
| ├── numSamples | 5 | UInt | count | Always | a:05:00:02 | numSamples | count | long_term_agg_num_samples | |||
| ├── avgLat | 38 | Int | DD | Always | ScalingMutator(×1000000000) | ReferenceEntryError(NOT_VALID, 0) | a:05:00:02 | lat | DD | long_term_agg_avg_latitude | |
| ├── avgLon | 39 | Int | DD | Always | ScalingMutator(×1000000000) | ReferenceEntryError(NOT_VALID, 0) | a:05:00:02 | lon | DD | long_term_agg_avg_longitude | |
| └── avgAlt | 26 | UInt | m | Always | OffsetMutator(+1000), ScalingMutator(×10000) | ReferenceEntryError(NOT_VALID, 0) | a:05:00:02 | alt | m | long_term_agg_avg_altitude |
Worldsensing Format Sources
| Address | Manufacturer | Type | Model | Status |
|---|---|---|---|---|
| a:05:00:00 | Worldsensing | 1Sample | GNSS | 0 |
| a:05:00:01 | Worldsensing | ShortTermAgg | GNSS | 0 |
| a:05:00:02 | Worldsensing | LongTermAgg | GNSS | 0 |
Example
all_zeros
Source: GnssDataStrMessages.py
JSON Message
{
"ls_header": {
"uplink_version": {
"value": "4",
"raw": 4
},
"product_code": {
"value": "89",
"raw": 89
},
"node_id": {
"value": "5",
"raw": 5
},
"sequence_number": {
"value": "5",
"raw": 5
},
"am_type": {
"value": "85",
"raw": 85
}
},
"readTimestamp": {
"value": "1970-01-01T00:00:00Z",
"raw": 0
},
"version": {
"value": "0",
"raw": 0
},
"oneSample": {
"numSamples": {
"raw": 0,
"unit": "count",
"value": "0"
},
"avgLat": {
"error": {
"code": 2,
"subCode": 0
},
"raw": 0,
"unit": "DD"
},
"avgLon": {
"error": {
"code": 2,
"subCode": 0
},
"raw": 0,
"unit": "DD"
},
"avgAlt": {
"error": {
"code": 2,
"subCode": 0
},
"raw": 0,
"unit": "m"
}
},
"shortTermAgg": {
"numSamples": {
"raw": 0,
"unit": "count",
"value": "0"
},
"avgLat": {
"error": {
"code": 2,
"subCode": 0
},
"raw": 0,
"unit": "DD"
},
"avgLon": {
"error": {
"code": 2,
"subCode": 0
},
"raw": 0,
"unit": "DD"
},
"avgAlt": {
"error": {
"code": 2,
"subCode": 0
},
"raw": 0,
"unit": "m"
}
},
"longTermAgg": {
"numSamples": {
"raw": 0,
"unit": "count",
"value": "0"
},
"avgLat": {
"error": {
"code": 2,
"subCode": 0
},
"raw": 0,
"unit": "DD"
},
"avgLon": {
"error": {
"code": 2,
"subCode": 0
},
"raw": 0,
"unit": "DD"
},
"avgAlt": {
"error": {
"code": 2,
"subCode": 0
},
"raw": 0,
"unit": "m"
}
}
}
Encoded Bytes
40 59 00 05 05 55 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Related Fixture Files
VwDataStrMsg
Vw Data Str Msg
AM Type: 88
Source Code
| Field | Bits | Type | Unit | Condition | Mutator | Error | Description |
|---|---|---|---|---|---|---|---|
| ls_header | — | Struct | Always | ||||
| ├── uplink_version | 4 | UInt | Always | ||||
| ├── node_id_high | 4 | Fragment | Always | ||||
| ├── product_code | 8 | UInt | Always | ||||
| ├── node_id | 16 | UInt | Always | ||||
| ├── sequence_number | 8 | UInt | Always | ||||
| └── am_type | 8 | UInt | Always | ||||
| readTimestamp | 32 | TimestampField | Always | TimestampMutator | |||
| version | 3 | UInt | Always | ||||
| pressure | 21 | UInt | hPa | Always | ScalingMutator(×1000) | ||
| temperature | 8 | Int | Cel | Always | |||
| readings (bitmap) | 8 | Bitmap | Always | ||||
| Readings [bitmap] | — | Seq | Always | ||||
| ├── frequency | 24 | UInt | Hz | — | ScalingMutator(×1000) | EntryError(NOT_DETECTED, 16777215) | |
| └── thermistor | 24 | UInt | Ohm | — | DividerMutator(÷240), ScalingMutator(×1000) | EntryError(NOT_DETECTED, 16777215) |
| Field | Bits | Type | Unit | Condition | Mutator | Error | Description | WF Address | WF Name | WF Unit | Cloud DP Name |
|---|---|---|---|---|---|---|---|---|---|---|---|
| ls_header | — | Struct | Always | ||||||||
| ├── uplink_version | 4 | UInt | Always | ||||||||
| ├── node_id_high | 4 | Fragment | Always | ||||||||
| ├── product_code | 8 | UInt | Always | ||||||||
| ├── node_id | 16 | UInt | Always | ||||||||
| ├── sequence_number | 8 | UInt | Always | ||||||||
| └── am_type | 8 | UInt | Always | ||||||||
| readTimestamp | 32 | TimestampField | Always | TimestampMutator | |||||||
| version | 3 | UInt | Always | ||||||||
| pressure | 21 | UInt | hPa | Always | ScalingMutator(×1000) | a:15:00:00 | pressure | hPa | |||
| temperature | 8 | Int | Cel | Always | a:15:01:00 | temperature | Cel | ||||
| readings (bitmap) | 8 | Bitmap | Always | ||||||||
| Readings [bitmap] | — | Seq | Always | ||||||||
| ├── frequency | 24 | UInt | Hz | — | ScalingMutator(×1000) | EntryError(NOT_DETECTED, 16777215) | b:15:00:00 | frequency | Hz | ||
| └── thermistor | 24 | UInt | Ohm | — | DividerMutator(÷240), ScalingMutator(×1000) | EntryError(NOT_DETECTED, 16777215) | b:15:00:01 | resistance | Ohm | thermistor |
Worldsensing Format Sources
| Address | Manufacturer | Type | Model | Status |
|---|---|---|---|---|
| b:15:00:00 | Worldsensing | VibratingWire | 0 | |
| b:15:00:01 | Worldsensing | Thermistor | 0 | |
| b:15:01:00 | Worldsensing | VibratingWire | 0 | |
| b:15:01:01 | Worldsensing | Thermistor | 0 | |
| b:15:02:00 | Worldsensing | VibratingWire | 0 | |
| b:15:02:01 | Worldsensing | Thermistor | 0 | |
| b:15:03:00 | Worldsensing | VibratingWire | 0 | |
| b:15:03:01 | Worldsensing | Thermistor | 0 | |
| b:15:04:00 | Worldsensing | VibratingWire | 0 | |
| b:15:04:01 | Worldsensing | Thermistor | 0 | |
| b:15:05:00 | Worldsensing | VibratingWire | 0 | |
| b:15:05:01 | Worldsensing | Thermistor | 0 | |
| a:15:00:00 | Worldsensing | Barometer | 0 | |
| a:15:01:00 | Worldsensing | Thermometer | 0 |
Example
all_zeros
Source: VwDataStrMessages.py
JSON Message
{
"ls_header": {
"uplink_version": {
"value": "4",
"raw": 4
},
"product_code": {
"value": "96",
"raw": 96
},
"node_id": {
"value": "50",
"raw": 50
},
"sequence_number": {
"value": "1",
"raw": 1
},
"am_type": {
"value": "88",
"raw": 88
}
},
"readTimestamp": {
"value": "1970-01-01T00:00:00Z",
"raw": 0
},
"version": {
"value": "0",
"raw": 0
},
"pressure": {
"value": "0",
"unit": "hPa",
"raw": 0
},
"temperature": {
"value": "0",
"unit": "Cel",
"raw": 0
},
"readings": [
{},
{},
{},
{},
{},
{},
{},
{}
]
}
Encoded Bytes
40 60 00 32 01 58 00 00 00 00 00 00 00 00 00
Related Fixture Files
TMDataStrMsg
TM Data Str Msg
AM Type: 91
Source Code
| Field | Bits | Type | Unit | Condition | Mutator | Error | Validator | Description |
|---|---|---|---|---|---|---|---|---|
| ls_header | — | Struct | Always | |||||
| ├── uplink_version | 4 | UInt | Always | |||||
| ├── node_id_high | 4 | Fragment | Always | |||||
| ├── product_code | 8 | UInt | Always | |||||
| ├── node_id | 16 | UInt | Always | |||||
| ├── sequence_number | 8 | UInt | Always | |||||
| └── am_type | 8 | UInt | Always | |||||
| readTimestamp | 32 | TimestampField | Always | TimestampMutator | ||||
| version | 4 | UInt | Always | ValueValidator(0) | ||||
| msgType | 2 | Enum | Always | PERIODIC (0), TRIGGER (1), BASELINE (2), RFU (3) | ||||
| msgTypePayload | — | Switch | Always | |||||
| ├── numEvents | 8 | UInt | count | PERIODIC | EntryError(DATA_OUT_OF_RANGE, 255) | RangeValidator[0, 254] | ||
| ├── totalActivityDuration | 12 | UInt | s | PERIODIC | EntryError(DATA_OUT_OF_RANGE, 4095) | RangeValidator[0, 4094] | ||
| ├── eventStartTime | 32 | TimestampField | datetime | TRIGGER | TimestampMutator | |||
| ├── eventDuration | 14 | UInt | s | TRIGGER | EntryError(DATA_OUT_OF_RANGE, 16383) | RangeValidator[0, 10800] | ||
| ├── dataMessageTime | 32 | TimestampField | datetime | TRIGGER | TimestampMutator | |||
| └── | 0 | — | default | |||||
| triggerType | 2 | Enum | Always | ACCELERATION (0), ABSOLUTE_ANGLE (1), ANGULAR_VELOCITY (2), UNUSED (3) | ||||
| triggerTypePayload | — | Switch | Always | |||||
| ├── inactivityPeakAccel | 16 | UInt | mg_acc | ACCELERATION | ScalingMutator(×10) | EntryError(NOT_VALID, 65534), EntryError(DATA_OUT_OF_RANGE, 65535) | RangeValidator[0, 2000] | |
| ├── maxActivityPeakAccel | 16 | UInt | mg_acc | msgType != MsgTypeEnum | ScalingMutator(×10) | EntryError(NOT_VALID, 65534), EntryError(DATA_OUT_OF_RANGE, 65535) | RangeValidator[0, 2000] | |
| ├── meanInactivityAngleX | 10 | UInt | deg | ABSOLUTE_ANGLE | OffsetMutator(+90), DividerMutator(÷2.0), ScalingMutator(×10) | EntryError(NOT_VALID, 1022), EntryError(DATA_OUT_OF_RANGE, 1023) | RangeValidator[-90, 90] | |
| ├── meanInactivityAngleY | 10 | UInt | deg | ABSOLUTE_ANGLE | OffsetMutator(+90), DividerMutator(÷2.0), ScalingMutator(×10) | EntryError(NOT_VALID, 1022), EntryError(DATA_OUT_OF_RANGE, 1023) | RangeValidator[-90, 90] | |
| ├── meanInactivityAngleZ | 10 | UInt | deg | ABSOLUTE_ANGLE | OffsetMutator(+90), DividerMutator(÷2.0), ScalingMutator(×10) | EntryError(NOT_VALID, 1022), EntryError(DATA_OUT_OF_RANGE, 1023) | RangeValidator[-90, 90] | |
| ├── maxAngleDeviationX | 10 | UInt | deg | msgType != MsgTypeEnum | OffsetMutator(+90), DividerMutator(÷2.0), ScalingMutator(×10) | EntryError(NOT_VALID, 1022), EntryError(DATA_OUT_OF_RANGE, 1023) | RangeValidator[-90, 90] | |
| ├── maxAngleDeviationY | 10 | UInt | deg | msgType != MsgTypeEnum | OffsetMutator(+90), DividerMutator(÷2.0), ScalingMutator(×10) | EntryError(NOT_VALID, 1022), EntryError(DATA_OUT_OF_RANGE, 1023) | RangeValidator[-90, 90] | |
| ├── maxAngleDeviationZ | 10 | UInt | deg | msgType != MsgTypeEnum | OffsetMutator(+90), DividerMutator(÷2.0), ScalingMutator(×10) | EntryError(NOT_VALID, 1022), EntryError(DATA_OUT_OF_RANGE, 1023) | RangeValidator[-90, 90] | |
| ├── meanInactivityAngularVelX | 9 | UInt | deg/s | ANGULAR_VELOCITY | ScalingMutator(×100) | EntryError(NOT_VALID, 510), EntryError(DATA_OUT_OF_RANGE, 511) | RangeValidator[0, 2.55] | |
| ├── meanInactivityAngularVelY | 9 | UInt | deg/s | ANGULAR_VELOCITY | ScalingMutator(×100) | EntryError(NOT_VALID, 510), EntryError(DATA_OUT_OF_RANGE, 511) | RangeValidator[0, 2.55] | |
| ├── meanInactivityAngularVelZ | 9 | UInt | deg/s | ANGULAR_VELOCITY | ScalingMutator(×100) | EntryError(NOT_VALID, 510), EntryError(DATA_OUT_OF_RANGE, 511) | RangeValidator[0, 2.55] | |
| ├── maxAngularVelX | 9 | UInt | deg/s | msgType != MsgTypeEnum | ScalingMutator(×100) | EntryError(NOT_VALID, 510), EntryError(DATA_OUT_OF_RANGE, 511) | RangeValidator[0, 2.55] | |
| ├── maxAngularVelY | 9 | UInt | deg/s | msgType != MsgTypeEnum | ScalingMutator(×100) | EntryError(NOT_VALID, 510), EntryError(DATA_OUT_OF_RANGE, 511) | RangeValidator[0, 2.55] | |
| ├── maxAngularVelZ | 9 | UInt | deg/s | msgType != MsgTypeEnum | ScalingMutator(×100) | EntryError(NOT_VALID, 510), EntryError(DATA_OUT_OF_RANGE, 511) | RangeValidator[0, 2.55] | |
| └── | 0 | — | default |
| Field | Bits | Type | Unit | Condition | Mutator | Error | Validator | Description | WF Address | WF Name | WF Unit | Cloud DP Name |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ls_header | — | Struct | Always | |||||||||
| ├── uplink_version | 4 | UInt | Always | |||||||||
| ├── node_id_high | 4 | Fragment | Always | |||||||||
| ├── product_code | 8 | UInt | Always | |||||||||
| ├── node_id | 16 | UInt | Always | |||||||||
| ├── sequence_number | 8 | UInt | Always | |||||||||
| └── am_type | 8 | UInt | Always | |||||||||
| readTimestamp | 32 | TimestampField | Always | TimestampMutator | ||||||||
| version | 4 | UInt | Always | ValueValidator(0) | ||||||||
| msgType | 2 | Enum | Always | PERIODIC (0), TRIGGER (1), BASELINE (2), RFU (3) | ||||||||
| msgTypePayload | — | Switch | Always | |||||||||
| ├── numEvents | 8 | UInt | count | PERIODIC | EntryError(DATA_OUT_OF_RANGE, 255) | RangeValidator[0, 254] | a:01:00:00 | numEvents | count | num_events | ||
| ├── totalActivityDuration | 12 | UInt | s | PERIODIC | EntryError(DATA_OUT_OF_RANGE, 4095) | RangeValidator[0, 4094] | a:01:00:00 | totalDuration | s | total_activity_duration | ||
| ├── eventStartTime | 32 | TimestampField | datetime | TRIGGER | TimestampMutator | a:01:01:00 | startTime | datetime | event_start_time | |||
| ├── eventDuration | 14 | UInt | s | TRIGGER | EntryError(DATA_OUT_OF_RANGE, 16383) | RangeValidator[0, 10800] | a:01:01:00 | endTime | datetime | event_end_time | ||
| ├── dataMessageTime | 32 | TimestampField | datetime | TRIGGER | TimestampMutator | a:01:01:00 | readingTime | datetime | data_message_time | |||
| └── | 0 | — | default | |||||||||
| triggerType | 2 | Enum | Always | ACCELERATION (0), ABSOLUTE_ANGLE (1), ANGULAR_VELOCITY (2), UNUSED (3) | ||||||||
| triggerTypePayload | — | Switch | Always | |||||||||
| ├── inactivityPeakAccel | 16 | UInt | mg_acc | ACCELERATION | ScalingMutator(×10) | EntryError(NOT_VALID, 65534), EntryError(DATA_OUT_OF_RANGE, 65535) | RangeValidator[0, 2000] | a:01:02:00 | maxInactivityPeak | mg_acc | inactivity_peak_acceleration | |
| ├── maxActivityPeakAccel | 16 | UInt | mg_acc | msgType != MsgTypeEnum | ScalingMutator(×10) | EntryError(NOT_VALID, 65534), EntryError(DATA_OUT_OF_RANGE, 65535) | RangeValidator[0, 2000] | a:01:02:00 | maxActivityPeak | mg_acc | max_activity_peak_acceleration | |
| ├── meanInactivityAngleX | 10 | UInt | deg | ABSOLUTE_ANGLE | OffsetMutator(+90), DividerMutator(÷2.0), ScalingMutator(×10) | EntryError(NOT_VALID, 1022), EntryError(DATA_OUT_OF_RANGE, 1023) | RangeValidator[-90, 90] | a:01:02:01 | xAxisInactivityMean | deg | mean_inactivity_angle_axis_x | |
| ├── meanInactivityAngleY | 10 | UInt | deg | ABSOLUTE_ANGLE | OffsetMutator(+90), DividerMutator(÷2.0), ScalingMutator(×10) | EntryError(NOT_VALID, 1022), EntryError(DATA_OUT_OF_RANGE, 1023) | RangeValidator[-90, 90] | a:01:02:01 | yAxisInactivityMean | deg | mean_inactivity_angle_axis_y | |
| ├── meanInactivityAngleZ | 10 | UInt | deg | ABSOLUTE_ANGLE | OffsetMutator(+90), DividerMutator(÷2.0), ScalingMutator(×10) | EntryError(NOT_VALID, 1022), EntryError(DATA_OUT_OF_RANGE, 1023) | RangeValidator[-90, 90] | a:01:02:01 | zAxisInactivityMean | deg | mean_inactivity_angle_axis_z | |
| ├── maxAngleDeviationX | 10 | UInt | deg | msgType != MsgTypeEnum | OffsetMutator(+90), DividerMutator(÷2.0), ScalingMutator(×10) | EntryError(NOT_VALID, 1022), EntryError(DATA_OUT_OF_RANGE, 1023) | RangeValidator[-90, 90] | a:01:02:01 | xAxisActivityMax | deg | max_angle_deviation_axis_x | |
| ├── maxAngleDeviationY | 10 | UInt | deg | msgType != MsgTypeEnum | OffsetMutator(+90), DividerMutator(÷2.0), ScalingMutator(×10) | EntryError(NOT_VALID, 1022), EntryError(DATA_OUT_OF_RANGE, 1023) | RangeValidator[-90, 90] | a:01:02:01 | yAxisActivityMax | deg | max_angle_deviation_axis_y | |
| ├── maxAngleDeviationZ | 10 | UInt | deg | msgType != MsgTypeEnum | OffsetMutator(+90), DividerMutator(÷2.0), ScalingMutator(×10) | EntryError(NOT_VALID, 1022), EntryError(DATA_OUT_OF_RANGE, 1023) | RangeValidator[-90, 90] | a:01:02:01 | zAxisActivityMax | deg | max_angle_deviation_axis_z | |
| ├── meanInactivityAngularVelX | 9 | UInt | deg/s | ANGULAR_VELOCITY | ScalingMutator(×100) | EntryError(NOT_VALID, 510), EntryError(DATA_OUT_OF_RANGE, 511) | RangeValidator[0, 2.55] | a:01:02:02 | xAxisInactivityMean | deg/s | mean_inactivity_angular_velocity_axis_x | |
| ├── meanInactivityAngularVelY | 9 | UInt | deg/s | ANGULAR_VELOCITY | ScalingMutator(×100) | EntryError(NOT_VALID, 510), EntryError(DATA_OUT_OF_RANGE, 511) | RangeValidator[0, 2.55] | a:01:02:02 | yAxisInactivityMean | deg/s | mean_inactivity_angular_velocity_axis_y | |
| ├── meanInactivityAngularVelZ | 9 | UInt | deg/s | ANGULAR_VELOCITY | ScalingMutator(×100) | EntryError(NOT_VALID, 510), EntryError(DATA_OUT_OF_RANGE, 511) | RangeValidator[0, 2.55] | a:01:02:02 | zAxisInactivityMean | deg/s | mean_inactivity_angular_velocity_axis_z | |
| ├── maxAngularVelX | 9 | UInt | deg/s | msgType != MsgTypeEnum | ScalingMutator(×100) | EntryError(NOT_VALID, 510), EntryError(DATA_OUT_OF_RANGE, 511) | RangeValidator[0, 2.55] | a:01:02:02 | xAxisActivityMax | deg/s | max_angular_velocity_deviation_axis_x | |
| ├── maxAngularVelY | 9 | UInt | deg/s | msgType != MsgTypeEnum | ScalingMutator(×100) | EntryError(NOT_VALID, 510), EntryError(DATA_OUT_OF_RANGE, 511) | RangeValidator[0, 2.55] | a:01:02:02 | yAxisActivityMax | deg/s | max_angular_velocity_deviation_axis_y | |
| ├── maxAngularVelZ | 9 | UInt | deg/s | msgType != MsgTypeEnum | ScalingMutator(×100) | EntryError(NOT_VALID, 510), EntryError(DATA_OUT_OF_RANGE, 511) | RangeValidator[0, 2.55] | a:01:02:02 | zAxisActivityMax | deg/s | max_angular_velocity_deviation_axis_z | |
| └── | 0 | — | default |
Worldsensing Format Sources
| Address | Manufacturer | Type | Model | Status |
|---|---|---|---|---|
| a:01:00:00 | Worldsensing | PeriodicStats | 0 | |
| a:01:01:00 | Worldsensing | EventStats | 0 | |
| a:01:02:01 | Worldsensing | AbsoluteAngle | 0 | |
| a:01:02:02 | Worldsensing | AngularVelocity | 0 | |
| a:01:02:00 | Worldsensing | Acceleration | 0 |
Example
ok_periodic_acceleration
Source: TMDataStrMessages.py
JSON Message
{
"readTimestamp": {
"value": "1970-01-01T00:00:00Z",
"raw": 0
},
"version": {
"value": "0",
"raw": 0
},
"ls_header": {
"am_type": {
"raw": 91,
"value": "91"
},
"node_id": {
"raw": 1212,
"value": "1212"
},
"product_code": {
"raw": 65,
"value": "65"
},
"sequence_number": {
"raw": 1,
"value": "1"
},
"uplink_version": {
"raw": 4,
"value": "4"
}
},
"msgType": {
"value": "PERIODIC",
"raw": 0
},
"msgTypePayload": {
"numEvents": {
"raw": 10,
"unit": "count",
"value": "10"
},
"totalActivityDuration": {
"raw": 3600,
"unit": "s",
"value": "3600"
}
},
"triggerType": {
"value": "ACCELERATION",
"raw": 0
},
"triggerTypePayload": {
"inactivityPeakAccel": {
"raw": 5000,
"unit": "mg_acc",
"value": "500"
},
"maxActivityPeakAccel": {
"raw": 12345,
"unit": "mg_acc",
"value": "1234.5"
}
},
"padding": {
"raw": 0,
"value": "0"
}
}
Encoded Bytes
40 41 04 BC 01 5B 00 00 00 00 00 2B 84 01 38 83 03 90
Related Fixture Files
DigGenDataStrMsg
Dig Gen Data Str Msg
AM Type: 92
Source Code
| Field | Bits | Type | Unit | Condition | Mutator | Validator | Description |
|---|---|---|---|---|---|---|---|
| ls_header | — | Struct | Always | ||||
| ├── uplink_version | 4 | UInt | Always | ||||
| ├── node_id_high | 4 | Fragment | Always | ||||
| ├── product_code | 8 | UInt | Always | ||||
| ├── node_id | 16 | UInt | Always | ||||
| ├── sequence_number | 8 | UInt | Always | ||||
| └── am_type | 8 | UInt | Always | ||||
| readTimestamp | 32 | TimestampField | Always | TimestampMutator | |||
| msgVersion | 3 | UInt | Always | ||||
| portNumber | 3 | UInt | Always | ||||
| totalFragments | 5 | UInt | Always | OffsetMutator(-1) | |||
| numFragment | 5 | UInt | Always | ||||
| numRedundancyFragments | 2 | UInt | Always | ||||
| integrationIdLength | 2 | Enum | Always | SHORT_ID (0), LONG_ID (1), RFU (2), SHORT_CUSTOM_ID (3) | |||
| error | 3 | Enum | Always | NO_ERROR (0), NOT_STARTED (1), FILLING (2), TIMEOUT (3), PAYLOAD_TOO_LARGE (4) | |||
| rfu | 1 | UInt | Always | ||||
| integrationId | — | Switch | totalFragments == 1 | ||||
| ├── SHORT_ID | 8 | UInt | integrationIdLength == SHORT_ID | ||||
| └── LONG_ID | 16 | UInt | integrationIdLength == LONG_ID | ||||
| integrationIdMsgVersion | 3 | UInt | totalFragments == 1 | ||||
| readings | — | Switch | totalFragments == 1 | ||||
| ├── x | 5 | UInt | integrationId == (65534, 0) | ||||
| ├── x | 5 | UInt | integrationId == (65534, 1) | ||||
| ├── addedField | 8 | UInt | integrationId == (65534, 1) | ||||
| ├── rfu | 5 | UInt | integrationId == (65534, 2) | ||||
| ├── error | 8 | UInt | integrationId == (65534, 2) | ||||
| ├── numSensors | 8 | UInt | integrationId == (65534, 2) | ||||
| ├── Sensors [numSensors] | — | Seq | integrationId == (65534, 2) | ||||
| │ ├── x | 32 | Int | — | ||||
| │ ├── y | 32 | Int | — | ||||
| │ ├── z | 32 | Int | — | ||||
| │ └── tmp | 32 | Int | — | ||||
| ├── numSensors | 6 | UInt | count | integrationId == (0, 0) | RangeValidator[0, 62] | Number of sensors read from the SDI-12 port. Limit 62 by protocol. | |
| ├── numChannels | 6 | UInt | count | integrationId == (0, 0) | RangeValidator[0, 31] | Number of channels read from each sensor. It is assumed that all sensors have the same number of channels. If numSensors is 0, numChannels is also 0. In current implementation the limit should be 9. If we add a list of reading commands, it can be 9 per command. Limit 31 to be aligned with the 5bits of errorParameter. | |
| ├── portError | 1 | Bool | boolean | integrationId == (0, 0) | Whether there was an error reading the SDI-12 port. If true, no sensor or channel data is included in the message. | ||
| └── portData | — | Switch | integrationId == (0, 0) | ||||
| ├── errorCode | 3 | Enum | portError == 1 | Type of error encountered on the SDI-12 port GENERIC (0), HW_FAILURE (1), NUM_CH_MISMATCH (2) | |||
| ├── errorParameter | 5 | UInt | count | portError == 1 | Number of channels read if errorCode is NUM_CH_MISMATCH, otherwise 0. It is useful to the user to understand how many channels is really reading. | ||
| └── Sensor Data [numSensors] | — | Seq | portError == 0 | Data for each sensor read from the SDI-12 port | |||
| ├── sensorError | 1 | Bool | boolean | — | Whether there was an error reading the sensor. If true, no channel data is included for this sensor. | ||
| ├── errorCode | 3 | Enum | sensorError == 1 | Type of error encountered on the sensor GENERIC (0), NO_RESPONSE (1), PROTOCOL_ERR (2) | |||
| └── Channel Data [numChannels] | — | Seq | sensorError == 0 | Data for each channel read from the sensor | |||
| ├── channelError | 1 | Bool | boolean | — | Whether there was an error reading the channel. If true, no channel data is included for this channel. | ||
| ├── errorCode | 3 | Enum | channelError == 1 | Type of error encountered on the channel GENERIC (0), NAN (1), NEG_INF (2), POS_INF (3) | |||
| ├── decimalPlace | 3 | UInt | count | channelError == 0 | Number of decimal places for the channel value | ||
| └── scaledInteger | 25 | Int | channelError == 0 | DynamicScalingMutator(decimalPlace) | Scaled integer value for the channel. The actual value is obtained by applying the scaling factor based on the decimalPlace field. | ||
| Payload [totalFragments] | — | Seq | totalFragments > 1 | ||||
| ├── True | None | Bytes | numFragment == 1 | ||||
| └── | 0 | — | numFragment == default |
Example
DummyIntegrationIdv0
Source: DigGenDataStrMessages.py
JSON Message
{
"ls_header": {
"uplink_version": {
"value": "4",
"raw": 4
},
"product_code": {
"value": "89",
"raw": 89
},
"node_id": {
"value": "5",
"raw": 5
},
"sequence_number": {
"value": "5",
"raw": 5
},
"am_type": {
"value": "92",
"raw": 92
}
},
"readTimestamp": {
"value": "1970-01-01T00:00:00Z",
"raw": 0
},
"msgVersion": {
"value": "0",
"raw": 0
},
"portNumber": {
"value": "0",
"raw": 0
},
"totalFragments": {
"value": "1",
"raw": 0
},
"numFragment": {
"value": "0",
"raw": 0
},
"numRedundancyFragments": {
"value": "0",
"raw": 0
},
"integrationIdLength": {
"value": "LONG_ID",
"raw": 1
},
"error": {
"value": "NO_ERROR",
"raw": 0
},
"rfu": {
"value": "0",
"raw": 0
},
"integrationId": {
"value": "65534",
"raw": 65534
},
"integrationIdMsgVersion": {
"value": "0",
"raw": 0
},
"readings": {
"x": {
"value": "1",
"raw": 1
}
}
}
Encoded Bytes
Source:
BitArray(
"hex = 40 59 00 05 05 5c 00 00 00 00," # Header + readTimestamp
# Start DigGen header
"uint:3 = 0," # MsgVersion
"uint:3 = 0," # portNumber
"uint:5 = 0," # totalFragments (+1)
"uint:5 = 0," # numFragment
"uint:2 = 0," # numRedundancyFragments
"uint:2 = 1," # integrationIdLength
"uint:3 = 0," # error
"uint:1 = 0," # rfu
# End DigGen header
"hex = FFFE," # Payload 1st part (Integration Id = 65534, no padding)
"uint:3 = 0," # IntegrationMsgVersion
"uint:5 = 1" # x
).hex
Result:
40 59 00 05 05 5c 00 00 00 00 00 00 10 ff fe 01
Related Fixture Files
LoRaAdrAckCfgStructMsg
Lo Ra Adr Ack Cfg Struct Msg
AM Type: 167
Source Code
| Field | Bits | Type | Condition | Mutator | Validator | Description |
|---|---|---|---|---|---|---|
| ls_header | — | Struct | Always | |||
| ├── uplink_version | 4 | UInt | Always | |||
| ├── node_id_high | 4 | Fragment | Always | |||
| ├── product_code | 8 | UInt | Always | |||
| ├── node_id | 16 | UInt | Always | |||
| ├── sequence_number | 8 | UInt | Always | |||
| └── am_type | 8 | UInt | Always | |||
| version | 2 | UInt | Always | ValueValidator(0) | ||
| cfg | — | Struct | Always | |||
| ├── adrAckLimit | 15 | UInt | Always | OffsetMutator(-1) | RangeValidator[1, 32768] | |
| └── adrAckDelay | 15 | UInt | Always | OffsetMutator(-1) | RangeValidator[1, 32768] |
Example
ok_default_cfg
Source: LoRaAdrAckCfgMessages.py
JSON Message
{
"ls_header": {
"uplink_version": {
"value": "4",
"raw": 4
},
"product_code": {
"value": "87",
"raw": 87
},
"node_id": {
"value": "87",
"raw": 87
},
"sequence_number": {
"value": "1",
"raw": 1
},
"am_type": {
"value": "167",
"raw": 167
}
},
"version": {
"value": "0",
"raw": 0
},
"cfg": {
"adrAckLimit": {
"value": "6",
"raw": 5
},
"adrAckDelay": {
"value": "3",
"raw": 2
}
}
}
Encoded Bytes
40 57 00 57 01 A7 00 02 80 02
Related Fixture Files
DigPort0CfgStrMsg
Dig Port 0 Cfg Str Msg
AM Type: 168
Source Code
| Field | Bits | Type | Condition | Description |
|---|---|---|---|---|
| ls_header | — | Struct | Always | |
| ├── uplink_version | 4 | UInt | Always | |
| ├── node_id_high | 4 | Fragment | Always | |
| ├── product_code | 8 | UInt | Always | |
| ├── node_id | 16 | UInt | Always | |
| ├── sequence_number | 8 | UInt | Always | |
| └── am_type | 8 | UInt | Always | |
| messageVersion | 4 | UInt | Always | |
| typeOfSensor | 8 | Enum | Always | MODBUS (0), LUA (1) |
| portEnabled | 1 | Bool | Always | |
| powerVoltage | 1 | Enum | Always | V_5 (0), V_12 (1) |
| powerAlwaysOn | 1 | Bool | Always | |
| powerThreshold | 16 | UInt | Always | |
| resetOnFailure | 1 | Bool | Always | |
| terminationResistor | 1 | Bool | Always | |
| usbPowerRailOff | 1 | Bool | Always | |
| rfu | 2 | Reserved | Always | |
| sensorTypeMsgVersion | 4 | UInt | Always | |
| payload | — | Switch | Always | |
| ├── modbusBaudrate | 24 | UInt | typeOfSensor == MODBUS | |
| ├── uartDatabits | 8 | UInt | typeOfSensor == MODBUS | |
| ├── parity | 8 | Enum | typeOfSensor == MODBUS | NONE (0), EVEN (1), ODD (2) |
| ├── stopBits | 8 | Enum | typeOfSensor == MODBUS | HALF (0), ONE (1), ONE_AND_HALF (2), TWO (3) |
| ├── Sensor Addresses [ ] | — | Seq | typeOfSensor == MODBUS | |
| │ └── | 8 | UInt | — | |
| ├── luaTimeOut | 16 | UInt | typeOfSensor == LUA | |
| ├── luaRedundancyFrames | 2 | UInt | typeOfSensor == LUA | |
| ├── maximumDataSize | 14 | UInt | typeOfSensor == LUA | |
| ├── integration | — | Struct | typeOfSensor == LUA | |
| │ ├── id | 16 | UInt | typeOfSensor == LUA | |
| │ └── version | — | Struct | typeOfSensor == LUA | |
| │ ├── major | 5 | UInt | typeOfSensor == LUA | |
| │ └── minor | 5 | UInt | typeOfSensor == LUA | |
| └── rfu | 6 | Reserved | typeOfSensor == LUA |
Example
modbus_empty_sensors
Source: DigPort0CfgMessages.py
JSON Message
{
"ls_header": {
"uplink_version": {
"value": "4",
"raw": 4
},
"product_code": {
"value": "94",
"raw": 94
},
"node_id": {
"value": "87",
"raw": 87
},
"sequence_number": {
"value": "1",
"raw": 1
},
"am_type": {
"value": "168",
"raw": 168
}
},
"messageVersion": {
"value": "0",
"raw": 0
},
"typeOfSensor": {
"value": "MODBUS",
"raw": 0
},
"portEnabled": {
"value": true,
"raw": true
},
"powerVoltage": {
"value": "V_5",
"raw": 0
},
"powerAlwaysOn": {
"value": false,
"raw": false
},
"powerThreshold": {
"value": "1000",
"raw": 1000
},
"resetOnFailure": {
"value": true,
"raw": true
},
"terminationResistor": {
"value": false,
"raw": false
},
"usbPowerRailOff": {
"value": false,
"raw": false
},
"rfu": {
"value": "0",
"raw": 0
},
"sensorTypeMsgVersion": {
"value": "0",
"raw": 0
},
"payload": {
"modbusBaudrate": {
"value": "9600",
"raw": 9600
},
"uartDatabits": {
"value": "8",
"raw": 8
},
"parity": {
"value": "NONE",
"raw": 0
},
"stopBits": {
"value": "ONE",
"raw": 1
},
"sensorAddresses": []
}
}
Encoded Bytes
Source:
BitArray(
"hex = 40 5E 00 57 01 A8," # LS Header (am_type 168)
"uint:4 = 0," # messageVersion
"uint:8 = 0," # typeOfSensor (MODBUS)
"bool = True," # portEnabled
"uint:1 = 0," # powerVoltage (V_5)
"bool = False," # powerAlwaysOn
"uint:16 = 1000," # powerThreshold
"bool = True," # resetOnFailure
"bool = False," # terminationResistor
"bool = False," # usbPowerRailOff
"uint:2 = 0," # rfu
"uint:4 = 0," # sensorTypeMsgVersion
# MODBUS Payload
"uint:24 = 9600," # modbusBaudrate
"uint:8 = 8," # uartDatabits
"uint:8 = 0," # parity (NONE)
"uint:8 = 1," # stopBits (ONE)
"uint:8 = 0" # numSensors
# No sensorAddresses (empty list)
).hex
Result:
40 5e 00 57 01 a8 00 08 07 d1 00 00 25 80 08 00 01 00
Related Fixture Files
CommPeriodCfgStructMsg
Comm Period Cfg Struct Msg
AM Type: 172
Source Code
| Field | Bits | Type | Condition | Validator | Description |
|---|---|---|---|---|---|
| ls_header | — | Struct | Always | ||
| ├── uplink_version | 4 | UInt | Always | ||
| ├── node_id_high | 4 | Fragment | Always | ||
| ├── product_code | 8 | UInt | Always | ||
| ├── node_id | 16 | UInt | Always | ||
| ├── sequence_number | 8 | UInt | Always | ||
| └── am_type | 8 | UInt | Always | ||
| version | 2 | UInt | Always | ValueValidator(0) | |
| reserved | 6 | Reserved | Always | ||
| cfg | — | Struct | Always | ||
| └── commPeriod | 24 | UInt | Always | RangeValidator[0, 86400] |
Example
ok_default_cfg
Source: CommPeriodCfgMessages.py
JSON Message
{
"ls_header": {
"uplink_version": {
"value": "4",
"raw": 4
},
"product_code": {
"value": "87",
"raw": 87
},
"node_id": {
"value": "87",
"raw": 87
},
"sequence_number": {
"value": "1",
"raw": 1
},
"am_type": {
"value": "172",
"raw": 172
}
},
"version": {
"value": "0",
"raw": 0
},
"reserved": {
"value": "0",
"raw": 0
},
"cfg": {
"commPeriod": {
"value": "54678",
"raw": 54678
}
}
}
Encoded Bytes
40 57 00 57 01 AC 00 00 D5 96
Related Fixture Files
AggregatedReportingPeriodAndSlotTime
Aggregated Reporting Period And Slot Time
AM Type: 192
Source Code
| Field | Bits | Type | Unit | Condition | Description |
|---|---|---|---|---|---|
| ls_header | — | Struct | Always | ||
| ├── uplink_version | 4 | UInt | Always | ||
| ├── node_id_high | 4 | Fragment | Always | ||
| ├── product_code | 8 | UInt | Always | ||
| ├── node_id | 16 | UInt | Always | ||
| ├── sequence_number | 8 | UInt | Always | ||
| └── am_type | 8 | UInt | Always | ||
| reporting_period | 24 | UInt | s | Always | |
| slot_time | 16 | UInt | s | Always |
Example
all_zeros
Source: AggReportingSlotTimeMessages.py
JSON Message
{
"ls_header": {
"uplink_version": {
"value": "4",
"raw": 4
},
"product_code": {
"value": "96",
"raw": 96
},
"node_id": {
"value": "50",
"raw": 50
},
"sequence_number": {
"value": "1",
"raw": 1
},
"am_type": {
"value": "192",
"raw": 192
}
},
"reporting_period": {
"value": "56437",
"unit": "s",
"raw": 56437
},
"slot_time": {
"value": "1119",
"unit": "s",
"raw": 1119
}
}
Encoded Bytes
40 60 00 32 01 C0 00 DC 75 04 5F
Related Fixture Files
Digital Generic Integrations
DigGenSDI12GenericDataStrMsg
Dig Gen SDI12 Generic Data Str Msg
Message containing the data read from a SDI-12 sensor connected to the DIG Gen. The message contains information about the port, sensor and channels errors, as well as the read values for each channel, if no errors are present.
Integration ID: 0 | Message Version: 0
Source Code
| Field | Bits | Type | Unit | Condition | Mutator | Validator | Description |
|---|---|---|---|---|---|---|---|
| numSensors | 6 | UInt | count | Always | RangeValidator[0, 62] | Number of sensors read from the SDI-12 port. Limit 62 by protocol. | |
| numChannels | 6 | UInt | count | Always | RangeValidator[0, 31] | Number of channels read from each sensor. It is assumed that all sensors have the same number of channels. If numSensors is 0, numChannels is also 0. In current implementation the limit should be 9. If we add a list of reading commands, it can be 9 per command. Limit 31 to be aligned with the 5bits of errorParameter. | |
| portError | 1 | Bool | boolean | Always | Whether there was an error reading the SDI-12 port. If true, no sensor or channel data is included in the message. | ||
| portData | — | Switch | Always | ||||
| ├── errorCode | 3 | Enum | portError == 1 | Type of error encountered on the SDI-12 port GENERIC (0), HW_FAILURE (1), NUM_CH_MISMATCH (2) | |||
| ├── errorParameter | 5 | UInt | count | portError == 1 | Number of channels read if errorCode is NUM_CH_MISMATCH, otherwise 0. It is useful to the user to understand how many channels is really reading. | ||
| └── Sensor Data [numSensors] | — | Seq | portError == 0 | Data for each sensor read from the SDI-12 port | |||
| ├── sensorError | 1 | Bool | boolean | — | Whether there was an error reading the sensor. If true, no channel data is included for this sensor. | ||
| ├── errorCode | 3 | Enum | sensorError == 1 | Type of error encountered on the sensor GENERIC (0), NO_RESPONSE (1), PROTOCOL_ERR (2) | |||
| └── Channel Data [numChannels] | — | Seq | sensorError == 0 | Data for each channel read from the sensor | |||
| ├── channelError | 1 | Bool | boolean | — | Whether there was an error reading the channel. If true, no channel data is included for this channel. | ||
| ├── errorCode | 3 | Enum | channelError == 1 | Type of error encountered on the channel GENERIC (0), NAN (1), NEG_INF (2), POS_INF (3) | |||
| ├── decimalPlace | 3 | UInt | count | channelError == 0 | Number of decimal places for the channel value | ||
| └── scaledInteger | 25 | Int | channelError == 0 | DynamicScalingMutator(decimalPlace) | Scaled integer value for the channel. The actual value is obtained by applying the scaling factor based on the decimalPlace field. |
Example
SDI12 generic single message with error
Source: DigGenSDI12GenericDataStrMessages.py
JSON Message
{
"ls_header": {
"uplink_version": {
"value": "4",
"raw": 4
},
"product_code": {
"value": "89",
"raw": 89
},
"node_id": {
"value": "5",
"raw": 5
},
"sequence_number": {
"value": "5",
"raw": 5
},
"am_type": {
"value": "92",
"raw": 92
}
},
"readTimestamp": {
"value": "1970-01-01T00:00:00Z",
"raw": 0
},
"msgVersion": {
"value": "0",
"raw": 0
},
"portNumber": {
"value": "0",
"raw": 0
},
"totalFragments": {
"value": "1",
"raw": 0
},
"numFragment": {
"value": "0",
"raw": 0
},
"numRedundancyFragments": {
"value": "0",
"raw": 0
},
"integrationIdLength": {
"value": "SHORT_ID",
"raw": 0
},
"error": {
"value": "NO_ERROR",
"raw": 0
},
"rfu": {
"value": "0",
"raw": 0
},
"integrationId": {
"value": "0",
"raw": 0
},
"integrationIdMsgVersion": {
"value": "0",
"raw": 0
},
"readings": {
"numSensors": {
"value": "1",
"raw": 1,
"unit": "count"
},
"numChannels": {
"value": "2",
"raw": 2,
"unit": "count"
},
"portError": {
"value": true,
"raw": true,
"unit": "boolean"
},
"portData": {
"errorCode": {
"raw": 2,
"value": "NUM_CH_MISMATCH"
},
"errorParameter": {
"raw": 6,
"value": "6",
"unit": "count"
}
}
}
}
Encoded Bytes
Source:
BitArray(
"hex = 40 59 00 05 05 5c 00 00 00 00," # Header + readTimestamp
# Start DigGen header
"uint:3 = 0," # MsgVersion
"uint:3 = 0," # portNumber
"uint:5 = 0," # totalFragments (+1)
"uint:5 = 0," # numFragment
"uint:2 = 0," # numRedundancyFragments
"uint:2 = 0," # integrationIdLength
"uint:3 = 0," # error
"uint:1 = 0," # rfu
# End DigGen header
"uint:8 = 0," # Payload 1st part (Integration Id, no padding)
"uint:3 = 0," # IntegrationMsgVersion
"uint:6 = 1," # numSensors
"uint:6 = 2," # numChannels
"bool = True," # portError
"uint:3 = 2," # errorCode
"uint:5 = 6," # errorParameter
).hex
Result:
40 59 00 05 05 5c 00 00 00 00 00 00 00 00 00 85 46
Related Fixture Files
DigGenDummyIntegrationForTestsDataStrMsgV0
Dig Gen Dummy Integration For Tests Data Str Msg V0
Integration ID: 65534 | Message Version: 0
Source Code
| Field | Bits | Type | Condition | Description |
|---|---|---|---|---|
| x | 5 | UInt | Always |
Example
DummyIntegrationIdv0
Source: DigGenDataStrMessages.py
JSON Message
{
"ls_header": {
"uplink_version": {
"value": "4",
"raw": 4
},
"product_code": {
"value": "89",
"raw": 89
},
"node_id": {
"value": "5",
"raw": 5
},
"sequence_number": {
"value": "5",
"raw": 5
},
"am_type": {
"value": "92",
"raw": 92
}
},
"readTimestamp": {
"value": "1970-01-01T00:00:00Z",
"raw": 0
},
"msgVersion": {
"value": "0",
"raw": 0
},
"portNumber": {
"value": "0",
"raw": 0
},
"totalFragments": {
"value": "1",
"raw": 0
},
"numFragment": {
"value": "0",
"raw": 0
},
"numRedundancyFragments": {
"value": "0",
"raw": 0
},
"integrationIdLength": {
"value": "LONG_ID",
"raw": 1
},
"error": {
"value": "NO_ERROR",
"raw": 0
},
"rfu": {
"value": "0",
"raw": 0
},
"integrationId": {
"value": "65534",
"raw": 65534
},
"integrationIdMsgVersion": {
"value": "0",
"raw": 0
},
"readings": {
"x": {
"value": "1",
"raw": 1
}
}
}
Encoded Bytes
Source:
BitArray(
"hex = 40 59 00 05 05 5c 00 00 00 00," # Header + readTimestamp
# Start DigGen header
"uint:3 = 0," # MsgVersion
"uint:3 = 0," # portNumber
"uint:5 = 0," # totalFragments (+1)
"uint:5 = 0," # numFragment
"uint:2 = 0," # numRedundancyFragments
"uint:2 = 1," # integrationIdLength
"uint:3 = 0," # error
"uint:1 = 0," # rfu
# End DigGen header
"hex = FFFE," # Payload 1st part (Integration Id = 65534, no padding)
"uint:3 = 0," # IntegrationMsgVersion
"uint:5 = 1" # x
).hex
Result:
40 59 00 05 05 5c 00 00 00 00 00 00 10 ff fe 01
Related Fixture Files
DigGenDummyIntegrationForTestsDataStrMsgV1
Dig Gen Dummy Integration For Tests Data Str Msg V1
Integration ID: 65534 | Message Version: 1
Source Code
| Field | Bits | Type | Condition | Description |
|---|---|---|---|---|
| x | 5 | UInt | Always | |
| addedField | 8 | UInt | Always |
Example
DummyIntegrationIdv1
Source: DigGenDataStrMessages.py
JSON Message
{
"ls_header": {
"uplink_version": {
"value": "4",
"raw": 4
},
"product_code": {
"value": "89",
"raw": 89
},
"node_id": {
"value": "5",
"raw": 5
},
"sequence_number": {
"value": "5",
"raw": 5
},
"am_type": {
"value": "92",
"raw": 92
}
},
"readTimestamp": {
"value": "1970-01-01T00:00:00Z",
"raw": 0
},
"msgVersion": {
"value": "0",
"raw": 0
},
"portNumber": {
"value": "0",
"raw": 0
},
"totalFragments": {
"value": "1",
"raw": 0
},
"numFragment": {
"value": "0",
"raw": 0
},
"numRedundancyFragments": {
"value": "0",
"raw": 0
},
"integrationIdLength": {
"value": "LONG_ID",
"raw": 1
},
"error": {
"value": "NO_ERROR",
"raw": 0
},
"rfu": {
"value": "0",
"raw": 0
},
"integrationId": {
"value": "65534",
"raw": 65534
},
"integrationIdMsgVersion": {
"value": "1",
"raw": 1
},
"readings": {
"x": {
"value": "1",
"raw": 1
},
"addedField": {
"value": "3",
"raw": 3
}
}
}
Encoded Bytes
Source:
BitArray(
"hex = 40 59 00 05 05 5c 00 00 00 00," # Header + readTimestamp
# Start DigGen header
"uint:3 = 0," # MsgVersion
"uint:3 = 0," # portNumber
"uint:5 = 0," # totalFragments (+1)
"uint:5 = 0," # numFragment
"uint:2 = 0," # numRedundancyFragments
"uint:2 = 1," # integrationIdLength
"uint:3 = 0," # error
"uint:1 = 0," # rfu
# End DigGen header
"hex = FFFE," # Payload 1st part (Integration Id = 65534, no padding)
"uint:3 = 1," # IntegrationMsgVersion
"uint:5 = 1," # x
"uint:8 = 3" # addedField
).hex
Result:
40 59 00 05 05 5c 00 00 00 00 00 00 10 ff fe 21 03
Related Fixture Files
DigGenDummyIntegrationForTestsDataStrMsgV2
Dig Gen Dummy Integration For Tests Data Str Msg V2
Integration ID: 65534 | Message Version: 2
Source Code
| Field | Bits | Type | Condition | Description |
|---|---|---|---|---|
| rfu | 5 | UInt | Always | |
| error | 8 | UInt | Always | |
| numSensors | 8 | UInt | Always | |
| Sensors [numSensors] | — | Seq | Always | |
| ├── x | 32 | Int | — | |
| ├── y | 32 | Int | — | |
| ├── z | 32 | Int | — | |
| └── tmp | 32 | Int | — |
Input Messages
Input Messages
Downlink messages sent from the gateway to the node.
| AM Type | Message |
|---|---|
| 167 | SetLoRaAdrAckCfgMsg |
| 168 | SetDigPort0CfgStructMsg |
| 172 | SetCommPeriodAckCfgMsg |
SetLoRaAdrAckCfgMsg
Set Lo Ra Adr Ack Cfg Msg
AM Type: 167
Source Code
| Field | Bits | Type | Condition | Mutator | Validator | Description |
|---|---|---|---|---|---|---|
| ls_header_down | — | Struct | Always | |||
| └── am_type | 8 | UInt | Always | |||
| version | 2 | UInt | Always | ValueValidator(0) | ||
| cfg | — | Struct | Always | |||
| ├── adrAckLimit | 15 | UInt | Always | OffsetMutator(-1) | RangeValidator[1, 32768] | |
| └── adrAckDelay | 15 | UInt | Always | OffsetMutator(-1) | RangeValidator[1, 32768] |
Example
ok_default_cfg
Source: LoRaAdrAckCfgMessages.py
JSON Message
{
"ls_header": {
"uplink_version": {
"value": "4",
"raw": 4
},
"product_code": {
"value": "87",
"raw": 87
},
"node_id": {
"value": "87",
"raw": 87
},
"sequence_number": {
"value": "1",
"raw": 1
},
"am_type": {
"value": "167",
"raw": 167
}
},
"version": {
"value": "0",
"raw": 0
},
"cfg": {
"adrAckLimit": {
"value": "6",
"raw": 5
},
"adrAckDelay": {
"value": "3",
"raw": 2
}
}
}
Encoded Bytes
40 57 00 57 01 A7 00 02 80 02
Related Fixture Files
SetDigPort0CfgStructMsg
Set Dig Port 0 Cfg Struct Msg
AM Type: 168
Source Code
| Field | Bits | Type | Condition | Description |
|---|---|---|---|---|
| ls_header_down | — | Struct | Always | |
| └── am_type | 8 | UInt | Always | |
| messageVersion | 4 | UInt | Always | |
| typeOfSensor | 8 | Enum | Always | MODBUS (0), LUA (1) |
| portEnabled | 1 | Bool | Always | |
| powerVoltage | 1 | Enum | Always | V_5 (0), V_12 (1) |
| powerAlwaysOn | 1 | Bool | Always | |
| powerThreshold | 16 | UInt | Always | |
| resetOnFailure | 1 | Bool | Always | |
| terminationResistor | 1 | Bool | Always | |
| usbPowerRailOff | 1 | Bool | Always | |
| rfu | 2 | Reserved | Always | |
| sensorTypeMsgVersion | 4 | UInt | Always | |
| payload | — | Switch | Always | |
| ├── modbusBaudrate | 24 | UInt | typeOfSensor == MODBUS | |
| ├── uartDatabits | 8 | UInt | typeOfSensor == MODBUS | |
| ├── parity | 8 | Enum | typeOfSensor == MODBUS | NONE (0), EVEN (1), ODD (2) |
| ├── stopBits | 8 | Enum | typeOfSensor == MODBUS | HALF (0), ONE (1), ONE_AND_HALF (2), TWO (3) |
| ├── Sensor Addresses [ ] | — | Seq | typeOfSensor == MODBUS | |
| │ └── | 8 | UInt | — | |
| ├── luaTimeOut | 16 | UInt | typeOfSensor == LUA | |
| ├── luaRedundancyFrames | 2 | UInt | typeOfSensor == LUA | |
| ├── maximumDataSize | 14 | UInt | typeOfSensor == LUA | |
| ├── integration | — | Struct | typeOfSensor == LUA | |
| │ ├── id | 16 | UInt | typeOfSensor == LUA | |
| │ └── version | — | Struct | typeOfSensor == LUA | |
| │ ├── major | 5 | UInt | typeOfSensor == LUA | |
| │ └── minor | 5 | UInt | typeOfSensor == LUA | |
| └── rfu | 6 | Reserved | typeOfSensor == LUA |
Example
modbus_empty_sensors
Source: DigPort0CfgMessages.py
JSON Message
{
"ls_header": {
"uplink_version": {
"value": "4",
"raw": 4
},
"product_code": {
"value": "94",
"raw": 94
},
"node_id": {
"value": "87",
"raw": 87
},
"sequence_number": {
"value": "1",
"raw": 1
},
"am_type": {
"value": "168",
"raw": 168
}
},
"messageVersion": {
"value": "0",
"raw": 0
},
"typeOfSensor": {
"value": "MODBUS",
"raw": 0
},
"portEnabled": {
"value": true,
"raw": true
},
"powerVoltage": {
"value": "V_5",
"raw": 0
},
"powerAlwaysOn": {
"value": false,
"raw": false
},
"powerThreshold": {
"value": "1000",
"raw": 1000
},
"resetOnFailure": {
"value": true,
"raw": true
},
"terminationResistor": {
"value": false,
"raw": false
},
"usbPowerRailOff": {
"value": false,
"raw": false
},
"rfu": {
"value": "0",
"raw": 0
},
"sensorTypeMsgVersion": {
"value": "0",
"raw": 0
},
"payload": {
"modbusBaudrate": {
"value": "9600",
"raw": 9600
},
"uartDatabits": {
"value": "8",
"raw": 8
},
"parity": {
"value": "NONE",
"raw": 0
},
"stopBits": {
"value": "ONE",
"raw": 1
},
"sensorAddresses": []
}
}
Encoded Bytes
Source:
BitArray(
"hex = 40 5E 00 57 01 A8," # LS Header (am_type 168)
"uint:4 = 0," # messageVersion
"uint:8 = 0," # typeOfSensor (MODBUS)
"bool = True," # portEnabled
"uint:1 = 0," # powerVoltage (V_5)
"bool = False," # powerAlwaysOn
"uint:16 = 1000," # powerThreshold
"bool = True," # resetOnFailure
"bool = False," # terminationResistor
"bool = False," # usbPowerRailOff
"uint:2 = 0," # rfu
"uint:4 = 0," # sensorTypeMsgVersion
# MODBUS Payload
"uint:24 = 9600," # modbusBaudrate
"uint:8 = 8," # uartDatabits
"uint:8 = 0," # parity (NONE)
"uint:8 = 1," # stopBits (ONE)
"uint:8 = 0" # numSensors
# No sensorAddresses (empty list)
).hex
Result:
40 5e 00 57 01 a8 00 08 07 d1 00 00 25 80 08 00 01 00
Related Fixture Files
SetCommPeriodAckCfgMsg
Set Comm Period Ack Cfg Msg
AM Type: 172
Source Code
| Field | Bits | Type | Condition | Validator | Description |
|---|---|---|---|---|---|
| ls_header_down | — | Struct | Always | ||
| └── am_type | 8 | UInt | Always | ||
| version | 2 | UInt | Always | ValueValidator(0) | |
| reserved | 6 | Reserved | Always | ||
| cfg | — | Struct | Always | ||
| └── commPeriod | 24 | UInt | Always | RangeValidator[0, 86400] |
Example
ok_default_cfg
Source: CommPeriodCfgMessages.py
JSON Message
{
"ls_header": {
"uplink_version": {
"value": "4",
"raw": 4
},
"product_code": {
"value": "87",
"raw": 87
},
"node_id": {
"value": "87",
"raw": 87
},
"sequence_number": {
"value": "1",
"raw": 1
},
"am_type": {
"value": "172",
"raw": 172
}
},
"version": {
"value": "0",
"raw": 0
},
"reserved": {
"value": "0",
"raw": 0
},
"cfg": {
"commPeriod": {
"value": "54678",
"raw": 54678
}
}
}
Encoded Bytes
40 57 00 57 01 AC 00 00 D5 96
Related Fixture Files
Tags
Browse all messages by tag.
ack
adr
aggregated
and
cfg
- CommPeriodCfgStructMsg
- DigPort0CfgStrMsg
- LoRaAdrAckCfgStructMsg
- SetCommPeriodAckCfgMsg
- SetDigPort0CfgStructMsg
- SetLoRaAdrAckCfgMsg
cmds
comm
data
- DigGenDataStrMsg
- DigGenDummyIntegrationForTestsDataStrMsgV0
- DigGenDummyIntegrationForTestsDataStrMsgV1
- DigGenDummyIntegrationForTestsDataStrMsgV2
- DigGenSDI12GenericDataStrMsg
- DynDataStrMsg
- DynRawDataStrMsg
- GnssDataStrMsg
- HealthV3DataStructMsg
- TMDataStrMsg
- Til90DataStrMsg
- Til90EDataStrMsg
- VwDataStrMsg
dig
- DigGenDataStrMsg
- DigGenDummyIntegrationForTestsDataStrMsgV0
- DigGenDummyIntegrationForTestsDataStrMsgV1
- DigGenDummyIntegrationForTestsDataStrMsgV2
- DigGenSDI12GenericDataStrMsg
- DigPort0CfgStrMsg
- SetDigPort0CfgStructMsg
dummy
- DigGenDummyIntegrationForTestsDataStrMsgV0
- DigGenDummyIntegrationForTestsDataStrMsgV1
- DigGenDummyIntegrationForTestsDataStrMsgV2
dyn
e
for
- DigGenDummyIntegrationForTestsDataStrMsgV0
- DigGenDummyIntegrationForTestsDataStrMsgV1
- DigGenDummyIntegrationForTestsDataStrMsgV2
gen
- DigGenDataStrMsg
- DigGenDummyIntegrationForTestsDataStrMsgV0
- DigGenDummyIntegrationForTestsDataStrMsgV1
- DigGenDummyIntegrationForTestsDataStrMsgV2
- DigGenSDI12GenericDataStrMsg
generic
gnss
health
integration
- DigGenDummyIntegrationForTestsDataStrMsgV0
- DigGenDummyIntegrationForTestsDataStrMsgV1
- DigGenDummyIntegrationForTestsDataStrMsgV2
lo
misc
period
port
ra
raw
reporting
sdi12
set
slot
statistics
struct
- CommPeriodCfgStructMsg
- HealthV3DataStructMsg
- LoRaAdrAckCfgStructMsg
- MiscCmdsStructMsg
- SetDigPort0CfgStructMsg
tests
- DigGenDummyIntegrationForTestsDataStrMsgV0
- DigGenDummyIntegrationForTestsDataStrMsgV1
- DigGenDummyIntegrationForTestsDataStrMsgV2
til
time
tm
v0
v1
v2
v3
vw
Technical Annex
AM Type
The AM Type (Application Message Type) is an 8-bit identifier present in the message header that uniquely identifies the message format.
- Uplink messages (output): Sent from the node to the gateway. The header
(
ls_header) containsuplink_version,node_id,product_code,sequence_number, andam_type. - Downlink messages (input): Sent from the gateway to the node. The header
(
ls_header_down) contains onlyam_type.
DIG Gen Payloads
DIG Generic messages (DigGenDataStrMsg) carry integration-specific payloads
identified by a combination of integration_id and message_version. Each
payload type is documented as a separate message page.
Field Types
| Type | Description |
|---|---|
| UInt | Unsigned integer |
| Int | Signed integer |
| Bool | Boolean (1 bit) |
| Enum | Enumerated value — possible values listed in Description |
| Struct | Container grouping sub-fields |
| Switch | Conditional container — only one branch is active |
| Seq | Variable-length sequence of repeated elements |
| Bytes | Raw byte payload |
| TimestampField | Unix timestamp |
| Fragment | Part of a larger field reassembled from fragments |
| Reserved | Reserved for future use |
| Bitmap | Bit-level flags |
Auto-generated documentation — Copyright © 2026 Worldsensing S.L.