mwings.parsers.app_aria Module
Parsers for packets sent from App Aria and data structures to store their contents.
Parsers for packets sent from App Aria and data structures to store their contents.
PacketParser
Static class parser that interprets packets representing data sent from the Aria app
Inherits:
common.PacketParserBase
Members inherited from the base class are listed.
is_valid()
is_valid(bare_packet)
Checks whether the given raw 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 raw packet.
Arguments
| Name | Type | Description |
|---|---|---|
bare_packet | common.BarePacket | Raw packet data |
Returns
| Type | Value | Description |
|---|---|---|
optional ParsedPacket | Data of type ParsedPacket | Parsed data |
None | Parsing failed |
ParsedPacket
Structure to store the result of interpreting packets representing data sent from the Aria app
Inherits:
common.ParsedPacketBase
Members inherited from the base class are also listed.
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, temp_100x=0, humid_100x=0, magnet_state=MagnetState.NOT_DETECTED, magnet_state_changed=False)
Arguments
Including inherited properties.
| Name | Type | Description |
|---|---|---|
time_parsed | optional AwareDatetime | Parsing time |
packet_type | common.PacketType | Packet type |
sequence_number | optional common.UInt16 | Sequence number |
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 | Supply voltage (mV) |
router_serial_id | common.UInt32 | Serial ID of the first relay device (0x80000000 if none) v1.0.13+ |
temp_100x | common.Int16 | Temperature multiplied by 100 (°C) |
humid_100x | common.UInt16 | Relative humidity multiplied by 100 |
magnet_state | common.MagnetState | Magnet state |
magnet_state_changed | bool | Whether the magnet state has changed |
You can also pass a dictionary unpacked with
**.
In addition to the variables specified in the constructor arguments, the following @computed_field are available.
| Name | Type | Description |
|---|---|---|
mwings_implementation | str | MWings implementation (only "python") |
mwings_version | str | MWings version (in PEP440 format) |
hostname | str | Host machine name |
system_type | str | System type (e.g., "Linux") |
Applicable field_validator
source_logical_id: Automatically validates the value rangecheck_source_logical_id(lid)
time_parsed: Automatically validates that a timezone is attacheddatetime_must_be_clear(dt)
Applicable field_serializer
packet_type: Serializes the enum name as-is for JSON etc.serialize_packet_type(packet_type)
source_serial_id: Serializes as a hexadecimal string for JSON etc.serialize_source_serial_id(source_serial_id)
time_parsed: Serializes as ISO 8601 string for JSON etc.serialize_time_parsed(dt)
magnet_state: Serializes the enum name as-is for JSON etc.serialize_magnet_state(magnet_state)
to_df()
to_df(include=None, exclude=None, verbose=True)
Converts the parsed data to a pandas DataFrame format.
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 if other arguments are None) |
Returns
| Type | Value | Description |
|---|---|---|
pd.DataFrame | - | Converted DataFrame |
Exceptions
EnvironmentErrorif pandas is not installed
to_dict()
to_dict(include=None, exclude=None, verbose=True, spread=False, sort_keys=False)
Converts the parsed data to a dictionary format.
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 if other arguments 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 the parsed data to 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 if other arguments are None) |
spread | bool | Whether to split non-time-series list-like data |
indent | optional int | Number of spaces for indentation (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.