mwings.common モジュール
mwings.commonライブラリ全体で使用するデータや手続きを格納しています。
AccelEvent
加速度イベントの識別子
継承:
enum.IntEnum
DICE_1サイコロ:1DICE_2サイコロ:2DICE_3サイコロ:3DICE_4サイコロ:4DICE_5サイコロ:5DICE_6サイコロ:6SHAKEシェイクMOVEムーブNONEイベントなし
AppPalNoticeBlinkSpeed
通知パル/点滅速度の識別子
継承:
enum.IntEnum
ALWAYS_ON常時点灯SLOWおちついた点滅MEDIUMほどほどの点滅FASTせわしない点滅
AppPalNoticeColor
通知パル/点灯色の識別子
継承:
enum.IntEnum
RED赤GREEN緑BLUE青YELLOW黄PURPLE紫LIGHT_BLUE水色WHITE白WARM_WHITE暖かな白
AppPalNoticeRGBWColor
通知パル/RGBWによる点灯色のデータ
AppPalNoticeRGBWColor()
AppPalNoticeRGBWColor(*, red=0, green=0, blue=0, white=15)
引数
| 名称 | 型 | 内容 |
|---|---|---|
red | common.UInt8 | 赤:0-0xF |
green | common.UInt8 | 緑:0-0xF |
blue | common.UInt8 | 青:0-0xF |
white | common.UInt8 | 白:0-0xF |
**で unpack した辞書を渡すことができます。
u16()
u16()
RGBWの16ビット表現を取得します。
引数
なし
戻り値
| 型 | 値 | 内容 |
|---|---|---|
common.UInt16 | - | RGBWの16ビット表現 |
BarePacket
素のパケットデータ
BarePacket()
BarePacket(payload, checksum=None, logical_and_command_id=None)
引数
| 名称 | 型 | 内容 |
|---|---|---|
payload | bytes | ペイロードのバイナリデータ |
checksum | optional common.UInt8 | LRC8:Noneで自動計算 |
logical_and_command_id | optional tuple(common.UInt8, common.UInt8) | 論理デバイスIDとコマンドID |
第3引数を指定する場合は、ペイロードの冒頭を省略します。
i16_at()
i16_at(index)
指定した位置の符号あり16ビット整数を取得します。
引数
| 名称 | 型 | 内容 |
|---|---|---|
index | int | ペイロードにおける位置 |
戻り値
| 型 | 値 | 内容 |
|---|---|---|
common.Int16 | - | 数値データ |
i32_at()
i32_at(index)
指定した位置の符号あり32ビット整数を取得します。
引数
| 名称 | 型 | 内容 |
|---|---|---|
index | int | ペイロードにおける位置 |
戻り値
| 型 | 値 | 内容 |
|---|---|---|
common.Int32 | - | 数値データ |
i8_at()
i8_at(index)
指定した位置の符号あり8ビット整数を取得します。
引数
| 名称 | 型 | 内容 |
|---|---|---|
index | int | ペイロードにおける位置 |
戻り値
| 型 | 値 | 内容 |
|---|---|---|
common.Int8 | - | 数値データ |
u16_at()
u16_at(index)
指定した位置の符号なし16ビット整数を取得します。
引数
| 名称 | 型 | 内容 |
|---|---|---|
index | int | ペイロードにおける位置 |
戻り値
| 型 | 値 | 内容 |
|---|---|---|
common.UInt16 | - | 数値データ |
u32_at()
u32_at(index)
指定した位置の符号なし32ビット整数を取得します。
引数
| 名称 | 型 | 内容 |
|---|---|---|
index | int | ペイロードにおける位置 |
戻り値
| 型 | 値 | 内容 |
|---|---|---|
common.UInt32 | - | 数値データ |
u8_at()
u8_at(index)
指定した位置の符号なし8ビット整数を取得します。
引数
| 名称 | 型 | 内容 |
|---|---|---|
index | int | ペイロードにおける位置 |
戻り値
| 型 | 値 | 内容 |
|---|---|---|
common.UInt8 | - | 数値データ |
u8_from()
u8_from(index)
指定した位置に続くバイト列を取得します。
引数
| 名称 | 型 | 内容 |
|---|---|---|
index | int | ペイロードにおける先頭の位置 |
戻り値
| 型 | 値 | 内容 |
|---|---|---|
optional bytes | bytes | 部分的なバイト列 |
None | 指定位置が無効 |
CommandBase
コマンドの抽象基底クラス
CommandBase()
CommandBase(*, destination_logical_id=120)
引数
| 名称 | 型 | 内容 |
|---|---|---|
destination_logical_id | common.UInt8 | 送信先の論理デバイスID |
**で unpack した辞書を渡すことができます。
is_valid()
is_valid()
コマンドデータが有効であるか否かを確認します。
引数
なし
戻り値
| 型 | 値 | 内容 |
|---|---|---|
bool | True | 有効 |
False | 無効 |
CommandSerializerBase
コマンドシリアライザの静的抽象基底クラス
継承:
ABC
serialize()
serialize(command)
与えられたコマンドを素のパケットのバイト列へ展開します。
引数
| 名称 | 型 | 内容 |
|---|---|---|
command | common.SomeCommand | 何らかのコマンドデータ |
戻り値
| 型 | 値 | 内容 |
|---|---|---|
optional common.BarePacket | common.BarePacket | 展開したデータ |
None | 無効なコマンドデータである |
CrossSectional[T]
特定の時刻における横断的なデータ列を格納するためのタプルに相当するクラス
CrossSectional[T]()
CrossSectional[T](length, elements)
引数
| 名称 | 型 | 内容 |
|---|---|---|
T | common.T | 要素の型 |
length | int | 要素の数 |
elements | Iterable[T] | 要素 |
例外
ValueError要素の数が不正
DtypedDecimal
pandas の dtype 属性を保持する数値型のための抽象基底クラス
get_dtype()
get_dtype()
pandas の dtype 識別子を取得します。
引数
なし
戻り値
| 型 | 値 | 内容 |
|---|---|---|
str | - | dtype 識別子 |
FixedList[T]
固定長リストに相当するクラス
FixedList[T]()
FixedList[T](length, initial_elements)
引数
| 名称 | 型 | 内容 |
|---|---|---|
T | common.T | 要素の型 |
length | int | 要素の数 |
initial_elements | Iterable[T] | 初期の要素 |
例外
ValueError要素の数が不正
insert()
insert(index, value)
指定した位置へ要素を配置します。
引数
| 名称 | 型 | 内容 |
|---|---|---|
index | int | 配置する位置 |
value | common.T | 配置する要素 |
戻り値
なし
例外
IndexError位置が不正
FixedTuple[T]
固定長タプルに相当するクラス
継承:
Sequence[T]
FixedTuple[T]()
FixedTuple[T](length, elements)
引数
| 名称 | 型 | 内容 |
|---|---|---|
T | common.T | 要素の型 |
length | int | 要素の数 |
elements | Iterable[T] | 要素 |
例外
ValueError要素の数が不正
Float32
32ビット浮動小数点数を格納するクラス
継承:
float,common.DtypedDecimal
Float32()
Float32(value=None)
引数
| 名称 | 型 | 内容 |
|---|---|---|
value | optional float | 初期の値 |
例外
ValueError範囲外の値
Float64
64ビット浮動小数点数を格納するクラス
継承:
float,common.DtypedDecimal
Float64()
Float64(value=None)
引数
| 名称 | 型 | 内容 |
|---|---|---|
value | optional float | 初期の値 |
例外
ValueError範囲外の値
Int16
16ビット整数を格納するクラス
継承:
int,common.DtypedDecimal
Int16()
Int16(value=None)
引数
| 名称 | 型 | 内容 |
|---|---|---|
value | optional int | 初期の値 |
例外
ValueError範囲外の値
hex()
hex()
16進数表記の文字列を取得します。
Python 組み込み関数の hex() は int のサブクラスを受け付けません。float に対する組み込みメソッド hex() と同じように扱えるようにしています。
引数
なし
戻り値
| 型 | 値 | 内容 |
|---|---|---|
str | - | 16進数表記の文字列(小文字) |
Int32
32ビット整数を格納するクラス
継承:
int,common.DtypedDecimal
Int32()
Int32(value=None)
引数
| 名称 | 型 | 内容 |
|---|---|---|
value | optional int | 初期の値 |
例外
ValueError範囲外の値
hex()
hex()
16進数表記の文字列を取得します。
Python 組み込み関数の hex() は int のサブクラスを受け付けません。float に対する組み込みメソッド hex() と同じように扱えるようにしています。
引数
なし
戻り値
| 型 | 値 | 内容 |
|---|---|---|
str | - | 16進数表記の文字列(小文字) |
Int8
8ビット整数を格納するクラス
継承:
int,common.DtypedDecimal
Int8()
Int8(value=None)
引数
| 名称 | 型 | 内容 |
|---|---|---|
value | optional int | 初期の値 |
例外
ValueError範囲外の値
hex()
hex()
16進数表記の文字列を取得します。
Python 組み込み関数の hex() は int のサブクラスを受け付けません。float に対する組み込みメソッド hex() と同じように扱えるようにしています。
引数
なし
戻り値
| 型 | 値 | 内容 |
|---|---|---|
str | - | 16進数表記の文字列(小文字) |
MagnetState
磁石イベントの識別子
継承:
enum.IntEnum
NOT_DETECTED磁石なしN_POLE_IS_CLOSEN極が近くにあるS_POLE_IS_CLOSES極が近くにある
PacketParserBase
パケットパーサの静的抽象基底クラス
継承:
ABC
is_valid()
is_valid(bare_packet)
与えられた素のパケットが有効であるか否かを確認します。
引数
| 名称 | 型 | 内容 |
|---|---|---|
bare_packet | common.BarePacket | 素のパケットデータ |
戻り値
| 型 | 値 | 内容 |
|---|---|---|
bool | True | 有効、パース可 |
False | 無効、パース不可 |
parse()
parse(bare_packet)
与えられた素のパケットをパースします。
引数
| 名称 | 型 | 内容 |
|---|---|---|
bare_packet | common.BarePacket | 素のパケットデータ |
戻り値
| 型 | 値 | 内容 |
|---|---|---|
optional common.ParsedPacketBase | common.ParsedPacketBaseを基底クラスにもつデータ | パースしたデータ |
None | パース不可 |
PacketType
パケット種別の識別子
継承:
enum.StrEnum
BARE素のパケット(未パース)ACTactAPP_TWELITE超簡単!標準アプリAPP_IOリモコンアプリAPP_ARIAアリアアプリAPP_CUEキューアプリ(TWELITE CUE モード)APP_CUE_PAL_EVENTキューアプリ(動作パルモード:ダイス/ムーブモード)APP_PAL_OPENCLOSEパルアプリ(開閉パル)APP_PAL_AMBパルアプリ(環境パル)APP_PAL_MOTパルアプリ(動作パル)/キューアプリ(動作パルモード:加速度計測)APP_UART_ASCIIシリアル通信アプリ(書式モード:簡易形式)/超簡単!標準アプリ/リモコンアプリAPP_UART_ASCII_EXTENDEDシリアル通信アプリ(書式モード:拡張形式)
ParsedPacketBase
パース済みパケットの抽象基底クラス
ParsedPacketBase()
ParsedPacketBase(*, time_parsed=None, packet_type=PacketType.BARE, sequence_number=None, source_serial_id=0, source_logical_id=0, lqi=None, supply_voltage=None)
引数
| 名称 | 型 | 内容 |
|---|---|---|
time_parsed | optional AwareDatetime | パース時刻 |
packet_type | common.PacketType | パケット種別 |
sequence_number | optional common.UInt16 | シーケンス番号 |
source_serial_id | common.UInt32 | 送信元のシリアルID |
source_logical_id | common.UInt8 | 送信元の論理デバイスID |
lqi | common.UInt8 | 電波通信品質 |
supply_voltage | optional common.UInt16 | 電源電圧(mV) |
**で unpack した辞書を渡すことができます。
コンストラクタの引数へ指定する変数に加えて、次の @computed_field を持ちます。
| 名称 | 型 | 内容 |
|---|---|---|
mwings_implementation | str | MWings の実装("python"のみ) |
mwings_version | str | MWings のバージョン(PEP440形式) |
hostname | str | ホストマシン名 |
system_type | str | システム種別("Linux"など) |
適用される field_validator
source_logical_id:値の範囲を自動的に検証しますcheck_source_logical_id(lid)
time_parsed:タイムゾーンが付与されているかを自動的に検証しますdatetime_must_be_clear(dt)
適用される 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 のデータフレーム形式へ変換します。
mwingslite の場合、pandasが導入されていない場合はEnvironmentErrorを発します。引数
| 名称 | 型 | 内容 |
|---|---|---|
include | optional set[str] | データフレームへ含めるカラム(メンバ)の集合 |
exclude | optional set[str] | データフレームへ含めないカラム(メンバ)の集合 |
verbose | bool | システム情報の有無(他の引数がNoneの場合のみ) |
戻り値
| 型 | 値 | 内容 |
|---|---|---|
pd.DataFrame | - | 変換したデータフレーム |
例外
EnvironmentErrorpandas のない場合
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 | キーによるソートの有無 |
spread を設定すると、common.CrossSectional[T]型のデータを分割します。例えば、超簡単!標準アプリのdi_state[4]をdi_state_1/di_state_2/di_state_3/di_state_4へ分割します。common.TimeSeries[T]型の時系列データは分割しません。戻り値
| 型 | 値 | 内容 |
|---|---|---|
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 | キーによるソートの有無 |
spread を設定すると、common.CrossSectional[T]型のデータを分割します。例えば、超簡単!標準アプリのdi_state[4]をdi_state_1/di_state_2/di_state_3/di_state_4へ分割します。common.TimeSeries[T]型の時系列データは分割しません。戻り値
| 型 | 値 | 内容 |
|---|---|---|
str | - | 変換したJSON文字列 |
SomeCallable
TypeVar("SomeCallable", bound=Callable[..., Any])
各種ハンドラを表す型
SomeCommand
TypeVar(‘SomeCommand’, bound=CommandBase)
各種コマンドデータを表す型
SomeParsedPacket
TypeVar(‘SomeParsedPacket’, bound=ParsedPacketBase)
各種パケットデータを表す型
T
TypeVar("T")
ジェネリクスで利用する型
TimeSeries[T]
時系列データを格納するためのタプルに相当するクラス
TimeSeries[T]()
TimeSeries[T](length, elements)
引数
| 名称 | 型 | 内容 |
|---|---|---|
T | common.T | 要素の型 |
length | int | 要素の数 |
elements | Iterable[T] | 要素 |
例外
ValueError要素の数が不正
Timezone
全体へ適用するtzinfo
UInt16
16ビット非不整数を格納するクラス
継承:
int,common.DtypedDecimal
UInt16()
UInt16(value=None)
引数
| 名称 | 型 | 内容 |
|---|---|---|
value | optional int | 初期の値 |
例外
ValueError範囲外の値
hex()
hex()
16進数表記の文字列を取得します。
Python 組み込み関数の hex() は int のサブクラスを受け付けません。float に対する組み込みメソッド hex() と同じように扱えるようにしています。
引数
なし
戻り値
| 型 | 値 | 内容 |
|---|---|---|
str | - | 16進数表記の文字列(小文字) |
UInt32
32ビット非不整数を格納するクラス
継承:
int,common.DtypedDecimal
UInt32()
UInt32(value=None)
引数
| 名称 | 型 | 内容 |
|---|---|---|
value | optional int | 初期の値 |
例外
ValueError範囲外の値
hex()
hex()
16進数表記の文字列を取得します。
Python 組み込み関数の hex() は int のサブクラスを受け付けません。float に対する組み込みメソッド hex() と同じように扱えるようにしています。
引数
なし
戻り値
| 型 | 値 | 内容 |
|---|---|---|
str | - | 16進数表記の文字列(小文字) |
UInt8
8ビット非不整数を格納するクラス
継承:
int,common.DtypedDecimal
UInt8()
UInt8(value=None)
引数
| 名称 | 型 | 内容 |
|---|---|---|
value | optional int | 初期の値 |
例外
ValueError範囲外の値
hex()
hex()
16進数表記の文字列を取得します。
Python 組み込み関数の hex() は int のサブクラスを受け付けません。float に対する組み込みメソッド hex() と同じように扱えるようにしています。
引数
なし
戻り値
| 型 | 値 | 内容 |
|---|---|---|
str | - | 16進数表記の文字列(小文字) |