mwings.parsers.act モジュール
mwings.parsers.act
act から送信されたデータを表すパケットを解釈するパーサと、そのデータを扱います。
PacketParser
act から送信されたデータを表すパケットを解釈するパーサの静的クラス
継承元のメンバを記載します。
is_valid()
is_valid(bare_packet)
与えられた素のパケットが有効であるか否かを確認します。
引数
名称 | 型 | 内容 |
---|---|---|
bare_packet | common.BarePacket | 素のパケットデータ |
戻り値
型 | 値 | 内容 |
---|---|---|
bool | True | 有効、パース可 |
False | 無効、パース不可 |
parse()
parse(bare_packet)
与えられた素のパケットをパースします。
引数
名称 | 型 | 内容 |
---|---|---|
bare_packet | common.BarePacket | 素のパケットデータ |
戻り値
型 | 値 | 内容 |
---|---|---|
optional ParsedPacket | ParsedPacket の型をもつデータ | パースしたデータ |
None | パース不可 |
ParsedPacket
act から送信されたデータを表すパケットを解釈した結果を格納するための構造体
継承元のメンバも合わせて記載します。
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'')
引数
継承元のプロパティも合わせて表記します。
名称 | 型 | 内容 |
---|---|---|
time_parsed | optional AwareDatetime | パース時刻 |
packet_type | common.PacketType | パケット種別 |
sequence_number | optional common.UInt16 | 取得不可、常にNone |
source_serial_id | common.UInt32 | 送信元のシリアルID |
source_logical_id | common.UInt8 | 送信元の論理デバイスID |
lqi | optional common.UInt8 | 電波通信品質 |
supply_voltage | optional common.UInt16 | 取得不可、常にNone |
commnad_id | common.UInt8 | コマンドID |
data | bytes | データ |
**
で unpack した辞書を渡すことができます。
コンストラクタの引数へ指定する変数に加えて、次の @computed_field
を持ちます。
名称 | 型 | 内容 |
---|---|---|
mwings_implementation | str | MWings の実装("python" のみ) |
mwings_version | str | MWings のバージョン(PEP440形式) |
hostname | str | ホストマシン名 |
system_type | str | システム種別("Linux" など) |
data_base64 | str | データのBase64表記 |
data_hexstr | str | データの16進数表記 |
data
はJSON等に含まれません。data_base64
やdata_hexstr
を利用してください。適用される field_validator
source_logical_id
:値の範囲を自動的に検証しますcheck_source_logical_id(lid)
time_parsed
:タイムゾーンが付与されているかを自動的に検証しますdatetime_must_be_clear(dt)
sampling_frequency
:値を検証しますcheck_sampling_frequency(freq)
適用される field_serializer
packet_type
:列挙子の名前をそのままJSON等に適用しますserialize_packet_type(packet_type)
source_serial_id
:16進表記の文字列をJSON等に適用しますserialize_source_serial_id(source_serial_id)
time_parsed
:ISO 8601形式の文字列をJSON等に適用しますserialize_time_parsed(dt)
- ``
to_df()
to_df(include=None, exclude=None, verbose=True)
パースしたデータを pandas のデータフレーム形式へ変換します。
引数
名称 | 型 | 内容 |
---|---|---|
include | optional set[str] | データフレームへ含めるカラム(メンバ)の集合 |
exclude | optional set[str] | データフレームへ含めないカラム(メンバ)の集合 |
verbose | bool | システム情報の有無(他の引数がNone の場合のみ) |
戻り値
型 | 値 | 内容 |
---|---|---|
pd.DataFrame | - | 変換したデータフレーム |
例外
EnvironmentError
pandas のない場合
to_dict()
to_dict(include=None, exclude=None, verbose=True, spread=False, sort_keys=False)
パースしたデータを辞書形式へ変換します。
引数
名称 | 型 | 内容 |
---|---|---|
include | optional set[str] | 辞書へ含めるキー(メンバ)の集合 |
exclude | optional set[str] | 辞書へ含めないキー(メンバ)の集合 |
verbose | bool | システム情報の有無(他の引数がNone の場合のみ) |
spread | bool | 時系列でないlist-likeデータの分割の有無 |
sort_keys | bool | キーによるソートの有無 |
戻り値
型 | 値 | 内容 |
---|---|---|
dict[str, Any] | - | 変換した辞書 |
to_json()
to_json(include=None, exclude=None, verbose=True, spread=False, indent=2, sort_keys=False)
パースしたデータをJSON形式へ変換します。
引数
名称 | 型 | 内容 |
---|---|---|
include | optional set[str] | JSONへ含めるキー(メンバ)の集合 |
exclude | optional set[str] | JSONへ含めないキー(メンバ)の集合 |
verbose | bool | システム情報の有無(他の引数がNone の場合のみ) |
spread | bool | 時系列でないlist-likeデータの分割の有無 |
indent | optional int | インデントの数(None で改行なし) |
sort_keys | bool | キーによるソートの有無 |
戻り値
型 | 値 | 内容 |
---|---|---|
str | - | 変換したJSON文字列 |
model_*()
上記に加えて、
pydantic.BaseModel
の各メソッドを利用できます。