mwings.parsers.act Module
Parsers for packets sent from act and data structures to store their contents.
Parsers for packets sent from act and data structures to store their contents.
PacketParser
Static class to parse packets sent from act
Inherits:
common.PacketParserBase
Lists members inherited from the base class.
is_valid()
is_valid(bare_packet)
Checks whether the given bare packet is valid.
Arguments
| Name | Type | Description |
|---|---|---|
bare_packet | common.BarePacket | Raw packet data |
Returns
| Type | Value | Description |
|---|---|---|
bool | True | Valid, parsable |
False | Invalid, not parsable |
parse()
parse(bare_packet)
Parses the given bare packet.
Arguments
| Name | Type | Description |
|---|---|---|
bare_packet | common.BarePacket | Raw packet data |
Returns
| Type | Value | Description |
|---|---|---|
optional ParsedPacket | ParsedPacket instance | Parsed data |
None | Parsing failed |
ParsedPacket
Structure to store the result of parsing packets sent from act
Inherits:
common.ParsedPacketBase
Also lists members inherited from the base class.
ParsedPacket()
ParsedPacket(*, time_parsed=None, packet_type=PacketType.BARE, sequence_number=None, source_serial_id=0, source_logical_id=0, lqi=None, supply_voltage=None, command_id=0, data=b'')
Arguments
Includes properties inherited from the base class.
| Name | Type | Description |
|---|---|---|
time_parsed | optional AwareDatetime | Parsing timestamp |
packet_type | common.PacketType | Packet type |
sequence_number | optional common.UInt16 | Not available, always None |
source_serial_id | common.UInt32 | Source serial ID |
source_logical_id | common.UInt8 | Source logical device ID |
lqi | optional common.UInt8 | Radio communication quality |
supply_voltage | optional common.UInt16 | Not available, always None |
command_id | common.UInt8 | Command ID |
data | bytes | Data |
You can also pass a dictionary unpacked with
**.
In addition to the constructor arguments, the following @computed_field are available:
| Name | Type | Description |
|---|---|---|
mwings_implementation | str | MWings implementation (only "python") |
mwings_version | str | MWings version (PEP440 format) |
hostname | str | Host machine name |
system_type | str | System type (e.g., "Linux") |
data_base64 | str | Base64 representation of the data |
data_hexstr | str | Hexadecimal representation of the data |
data is not included in JSON or similar outputs. Use data_base64 or data_hexstr instead.Applicable field_validator
source_logical_id: Automatically validates value rangecheck_source_logical_id(lid)
time_parsed: Automatically validates that timezone is attacheddatetime_must_be_clear(dt)
sampling_frequency: Validates the valuecheck_sampling_frequency(freq)
Applicable field_serializer
packet_type: Serializes enum name as is to JSON etc.serialize_packet_type(packet_type)
source_serial_id: Serializes as hexadecimal string to JSON etc.serialize_source_serial_id(source_serial_id)
time_parsed: Serializes as ISO 8601 string to JSON etc.serialize_time_parsed(dt)
to_df()
to_df(include=None, exclude=None, verbose=True)
Converts parsed data into a pandas DataFrame.
Arguments
| Name | Type | Description |
|---|---|---|
include | optional set[str] | Set of columns (members) to include in the DataFrame |
exclude | optional set[str] | Set of columns (members) to exclude from the DataFrame |
verbose | bool | Whether to include system information (only effective if other args are None) |
Returns
| Type | Value | Description |
|---|---|---|
pd.DataFrame | - | Converted DataFrame |
Exceptions
EnvironmentErrorif pandas is not available
to_dict()
to_dict(include=None, exclude=None, verbose=True, spread=False, sort_keys=False)
Converts parsed data into a dictionary.
Arguments
| Name | Type | Description |
|---|---|---|
include | optional set[str] | Set of keys (members) to include in the dictionary |
exclude | optional set[str] | Set of keys (members) to exclude from the dictionary |
verbose | bool | Whether to include system information (only effective if other args are None) |
spread | bool | Whether to split non-time-series list-like data |
sort_keys | bool | Whether to sort keys |
Returns
| Type | Value | Description |
|---|---|---|
dict[str, Any] | - | Converted dictionary |
to_json()
to_json(include=None, exclude=None, verbose=True, spread=False, indent=2, sort_keys=False)
Converts parsed data into JSON format.
Arguments
| Name | Type | Description |
|---|---|---|
include | optional set[str] | Set of keys (members) to include in the JSON |
exclude | optional set[str] | Set of keys (members) to exclude from the JSON |
verbose | bool | Whether to include system information (only effective if other args are None) |
spread | bool | Whether to split non-time-series list-like data |
indent | optional int | Number of indent spaces (None for no line breaks) |
sort_keys | bool | Whether to sort keys |
Returns
| Type | Value | Description |
|---|---|---|
str | - | Converted JSON string |
model_*()
In addition, you can use various methods of
pydantic.BaseModel.