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