ホーム -> Python -> Python APIの解説 -> メッセージ
ホーム -> Python -> Python APIの解説 -> メッセージ
4. Messages (スマートトレインからのメッセージ)
スマートトレインは、走行中の状態やセンサーの変化など、さまざまな情報を自動で送信します。
これらの情報は、専用のデータクラス(読み取り専用)を通じてプログラムから取得できます。
送られる情報には大きく2種類あります。
・イベント情報:進行方向の変更や電池残量の低下など、スマートトレイン側から自動で通知されるもの
・応答情報:バッテリー残量の確認など、プログラムからのリクエストに対して返ってくるもの
このようにして、スマートトレインの状態をリアルタイムで把握・制御することができます。
スマートトレインから送られるメッセージは、「共通のルール」にしたがって作られています。この共通ルールをまとめたものがこの「ベースクラス」です。
通常は直接使うことはありませんが、すべてのメッセージの元になっている大事な仕組みです。
TrainMsgBase
スマートトレインから送られてくるすべてのメッセージの土台となる基本の形です。
この形をもとに、「進行方向の変化」や「電池の残量」など、いろんな種類のメッセージが作られています。
command_id:メッセージの種類を表す番号
raw_packet:実際にスマートトレインから送られてきた生のデータ
TrainMsgEventBase
スマートトレインから送られてくる「イベント通知」の基本の形です。
このクラスは、すべてのメッセージの土台である TrainMsgBase をもとに作られています。
command_id = 224:このメッセージがイベント通知であることを示す番号
event_id:どんなイベントかを表す番号
timestamp_ms:このメッセージを受け取った時刻
raw_packet:実際にスマートトレインから送られてきた生のデータ
TrainMsgEventSensorColorChangedBase
スマートトレインがスナップを読み取ったときに送られる通知の基本の形です。
このクラスは、イベント通知の基本形である TrainMsgEventBase をもとに作られています。
sensor = 「値はこちら」:どのセンサーが色を読み取ったか(前/後)
color = 「値はこちら」:読み取ったスナップの色
command_id = 224:このメッセージがイベント通知であることを表す番号
event_id:色の検知イベントを表す番号
timestamp_ms:このメッセージを受け取った時刻
raw_packet:実際にスマートトレインから送られてきた生のデータ
TrainMsgMacAddress
スマートトレインのBluetoothアドレス(MACアドレス)を取得するための応答メッセージです。
このクラスは、すべてのメッセージの土台である TrainMsgBase をもとに作られています。
TrainMsgMacAddress(raw_packet: TrainBlePacket, mac_address: str)
command_id = 66: このメッセージがMACアドレスの通知であることを表す番号
mac_address: スマートトレインのMACアドレス
raw_packet: 実際にスマートトレインから送られてきた生のデータ
TrainMsgTrainUuid
スマートトレインの一意な識別子(UUID)を取得するための応答メッセージです。UUIDは、他のスマートトレインと区別するための専用番号です。
このクラスは、すべてのメッセージの土台である TrainMsgBase をもとに作られています。
TrainMsgTrainUuid(raw_packet: ‘TrainBlePacket’, uuid: str)
・command_id = 67: このメッセージがUUIDの通知であることを表す番号
・uuid::スマートトレインのUUID
・raw_packet: 実際にスマートトレインから送られてきた生のデータ
TrainMsgVersionDetail
スマートトレインのバージョン情報を取得するための応答メッセージです。
BLEのバージョン(通信に使うAPI)や、ファームウェアのバージョンが含まれています。
このクラスは、すべてのメッセージの土台である TrainMsgBase をもとに作られています。
command_id = 7: このメッセージの種類を表す番号
ble_api_version: BLE APIのバージョン
fw_version: ファームウェアのバージョン
raw_packet:実際にスマートトレインから送られてきた生のデータ
Version(major: int, minor: int, patch: Optional[int] = None)
major:メジャーバージョン(大きな変更があると上がる)
minor:マイナーバージョン(小さな機能追加など)
patch:パッチバージョン(不具合修正など)
この Version クラスは、Python の基本クラスである object をもとに作られています。
TrainMsgMovement
スマートトレインの動きの情報を取得する応答メッセージです。
このクラスは、すべてのメッセージの土台である TrainMsgBase をもとに作られています。
command_id = 183:このメッセージの種類を表す番号
direction = 「値はこちら」:進行方向(前後)
speed_cmps:現在の速度
pwm:モーターの出力値(PWM値)
speed_control:速度制御が有効かどうか
desired_speed_cmps:目標とする速度
pause_time_ms:一時停止の時間
next_split_decision = 「値はこちら」:分岐のときに進む方向
lifetime_odometer_meters:これまでに走った距離
raw_packet:実際にスマートトレインから送られてきた生のデータ
TrainMsgEventMovementDirectionChanged
スマートトレインの進行方向が変わったとき、または停止したときに送られるイベントメッセージです。
このクラスは、すべてのメッセージの土台である TrainMsgBase をもとに作られています。
event_id = 1:どんなイベントかを表す番号
direction = 「値はこちら」:進行方向(前後)
command_id = 224:このメッセージの種類を表す番号
timestamp_ms:このメッセージを受け取った時刻
raw_packet:実際にスマートトレインから送られてきた生のデータ
TrainMsgEventLowBattery
スマートトレインのバッテリー残量が少なくなったときに送られるイベントメッセージです。
このクラスは、すべてのメッセージの土台である TrainMsgBase をもとに作られています。
event_id = 2:どんなイベントかを表す番号
command_id = 224:このメッセージの種類を表す番号
timestamp_ms:このメッセージを受け取った時刻
raw_packet:実際にスマートトレインから送られてきた生のデータ
TrainMsgEventChargingStateChanged
スマートトレインが充電器に接続された/外されたときに送られるイベントメッセージです。
このクラスは、すべてのメッセージの土台である TrainMsgBase をもとに作られています。
event_id = 4:どんなイベントかを表す番号
is_charging:充電中かどうか(True=充電中、False=未接続)
command_id = 224:このメッセージの種類を表す番号
timestamp_ms:このメッセージを受け取った時刻
raw_packet:実際にスマートトレインから送られてきた生のデータ
TrainMsgEventButtonPressDetected
スマートトレインの本体の上のボタンが押されたときに発生するイベントメッセージです。
このクラスは、すべてのメッセージの土台である TrainMsgBase をもとに作られています。
event_id = 5:どんなイベントかを表す番号
button_press_type = 「値はこちら」:ボタンの押し方(短押し・長押し)
command_id = 224:このメッセージの種類を表す番号
timestamp_ms:このメッセージを受け取った時刻
raw_packet:実際にスマートトレインから送られてきた生のデータ
スナップを検出したときに発生するイベントメッセージです。
コマンドが実行されるかどうかに関係なく、見つけた時点で通知されます。
このクラスは、すべてのメッセージの土台である TrainMsgBase をもとに作られています。
event_id = 9:どんなイベントかを表す番号
snap_counter:スナップを検知した回数
color = 「値はこちら」:読み取ったスナップの色
command_id = 224:このメッセージの種類を表す番号
timestamp_ms:このメッセージを受け取った時刻
raw_packet:実際にスマートトレインから送られてきた生のデータ
TrainMsgEventSnapCommandExecuted
スナップコマンドが実行した時に送られるイベントメッセージです。。
スナップ機能をオフに設定した場合、このイベントは発生しません。
このクラスは、すべてのメッセージの土台である TrainMsgBase をもとに作られています。
event_id = 6:どんなイベントかを表す番号
snap_counter:スナップを検知した回数
color = 「値はこちら」:読み取ったスナップの色
command_id = 224:このメッセージの種類を表す番号
timestamp_ms:このメッセージを受け取った時刻
raw_packet:実際にスマートトレインから送られてきた生のデータ
TrainMsgEventFrontColorChanged
スマートトレインの前方センサーが検知する色が変化したときに送られるイベントメッセージです。
このクラスは、色センサーに関するイベントメッセージの土台であるTrainMsgEventSensorColorChangedBase をもとに作られています。
event_id = 7:どんなイベントかを表す番号
sensor = 1「値はこちら」:前方のセンサーを意味する番号
command_id = 224:このメッセージの種類を表す番号
color = 「値はこちら」:読み取ったスナップの色
timestamp_ms:このメッセージを受け取った時刻
raw_packet:実際にスマートトレインから送られてきた生のデータ
TrainMsgEventBackColorChanged
スマートトレインの後方センサーが検知する色が変化したときに送られるイベントメッセージです。
このクラスは、色センサーに関するイベントメッセージの土台であるTrainMsgEventSensorColorChangedBase をもとに作られています。
event_id = 8:どんなイベントかを表す番号
sensor = 2「値はこちら」:後方センサーを意味する番号
command_id = 224:このメッセージの種類を表す番号
color = 「値はこちら」:読み取ったスナップの色
timestamp_ms:このメッセージを受け取った時刻
raw_packet:実際にスマートトレインから送られてきた生のデータ
TrainMsgEventSplitDecision
スマートトレインが分岐ポイントに到達し、どの方向に進むかを決めたときに送られるイベントメッセージです。
このクラスは、すべてのメッセージの土台である TrainMsgBase をもとに作られています。
event_id = 10:どんなイベントかを表す番号
decision = 「値はこちら」:進行方向(左・右・真ん中)
command_id = 224:このメッセージの種類を表す番号
timestamp_ms:このメッセージを受け取った時刻
raw_packet:実際にスマートトレインから送られてきた生のデータ
TrainMsgUnknown
スマートトレインから送られてきたメッセージの内容がわからない時のエラーメッセージです。
このクラスは、すべてのメッセージの土台である TrainMsgBase をもとに作られています。
command_id = 0:このメッセージの種類を表す番号(コマンド不明)
raw_packet:実際にスマートトレインから送られてきた生のデータ
TrainMsgEventUnknown
イベントメッセージが送られてきたけれど、何のイベントなのか判別できない時のエラーメッセージです。
このクラスは、イベント通知の基本形である TrainMsgEventBase をもとに作られています。
command_id = 0:「コマンドの内容が不明」を表す番号
event_id = 0:「イベントの内容が不明」を表す番号
timestamp_ms:このメッセージを受け取った時刻
raw_packet:実際にスマートトレインから送られてきた生のデータ
TrainMsgMalformed
メッセージの形式自体が壊れていて解析できないときに送られる応答メッセージです。
このクラスは、すべてのメッセージの土台である TrainMsgBase をもとに作られています。
command_id = 256:「通常のコマンドIDの範囲を超えており、エラー」を表す番号
raw_packet:実際にスマートトレインから送られてきたエラーメッセージデータ
ライブラリでは、複数のメッセージ型をまとめた別名クラス(Unionクラス)が定義されています。
関数などで、さまざまな種類のメッセージを受け取れるようにしたい場合は、親クラス(baseクラス)ではなく、この Union クラスを使うことができます。
trainlib.messages.TrainMsg
全てのメッセージタイプ(応答・イベント・エラー)をひとまとめにした共通型です。
関数やイベントリスナーで「すべてのメッセージに対応」したい場合に使用します。
from typing import Union
from intelino.trainlib_async import messages
TrainMsg = Union[
messages.TrainMsgUnknown, # 不明なメッセージ
messages.TrainMsgMalformed, # 壊れたメッセージ
messages.TrainMsgMacAddress, # MACアドレスの情報
messages.TrainMsgTrainUuid, # 車両のUUID(固有ID)情報
messages.TrainMsgVersionDetail, # ファームウェアなどのバージョン情報
messages.TrainMsgStatsLifetimeOdometer, # 累積走行距離
messages.TrainMsgMovement, # 移動状態(前後)
messages.TrainMsgEventUnknown, # 不明なイベントメッセージ
messages.TrainMsgEventMovementDirectionChanged, # 進行方向の変更イベント
messages.TrainMsgEventLowBattery, # バッテリー残量
messages.TrainMsgEventLowBatteryCutOff, # バッテリー切れによるシャットダウン
messages.TrainMsgEventChargingStateChanged, # 充電状態の変化
messages.TrainMsgEventButtonPressDetected, # ボタン押下の検知
messages.TrainMsgEventSnapCommandExecuted, # スナップレールの命令実行
messages.TrainMsgEventFrontColorChanged, # 前方カラーセンサーが検知した色の変化
messages.TrainMsgEventBackColorChanged, # 後方カラーセンサーが検知した色の変化
messages.TrainMsgEventSnapCommandDetected, # スナップの検出
messages.TrainMsgEventSplitDecision, # 分岐レールでの進行方向の決定
]
trainlib.messages.TrainMsgEvent
スマートトレインから送られてくるイベント通知だけをまとめた共通型です。
スナップ検知、バッテリー状態、方向変化など、状態変化に対する通知を処理する際に使用します。
TrainMsgEvent = Union[
messages.TrainMsgEventUnknown, # 不明なイベントメッセージ
messages.TrainMsgEventMovementDirectionChanged, # 進行方向の変更イベント
messages.TrainMsgEventLowBattery, # バッテリー残量低下イベント
messages.TrainMsgEventLowBatteryCutOff, # バッテリー切れによるシャットダウン
messages.TrainMsgEventChargingStateChanged, # 充電状態の変化
messages.TrainMsgEventButtonPressDetected, # ボタン押下の検知
messages.TrainMsgEventSnapCommandExecuted, # スナップレール命令の実行
messages.TrainMsgEventFrontColorChanged, # 前方カラーセンサーの色変化
messages.TrainMsgEventBackColorChanged, # 後方カラーセンサーの色変化
messages.TrainMsgEventSnapCommandDetected, # スナップレール命令の検出(未実行)
messages.TrainMsgEventSplitDecision, # 分岐レールでの進行方向の決定
]
trainlib.messages.TrainMsgEventSensorColorChanged
カラーセンサーのスナップ検知の変化だけを対象とした軽量な共通型です。
色変化に応じて処理を分けたい場合に便利です。
TrainMsgEventSensorColorChanged = Union[
messages.TrainMsgEventFrontColorChanged, # 前方カラーセンサーが検知した色の変化
messages.TrainMsgEventBackColorChanged, # 後方カラーセンサーが検知した色の変化
]