4. Messages (from the train)
The intelino train sends a lot of valuable information which is accessible through typed data classes (read only). Some of this information comes as events and some are delivered as responses to single requests or stream requests.
4.1. Base classes
Base classes are not intended for use, but it is good to know what have all messages in common.
- class trainlib.messages.TrainMsgBase
Base train message.
- command_id: ClassVar[int]
- raw_packet: TrainBlePacket
- class trainlib.messages.TrainMsgEventBase
Bases:
intelino.trainlib_async.messages.TrainMsgBase
Base event message.
- command_id: ClassVar[int] = 224
- event_id: ClassVar[intelino.trainlib_async.messages.EventId]
- timestamp_ms: int
- raw_packet: TrainBlePacket
- class trainlib.messages.TrainMsgEventSensorColorChangedBase
Bases:
intelino.trainlib_async.messages.TrainMsgEventBase
Triggered after the color is accepted by the train.
- sensor: ClassVar[intelino.trainlib_async.enums.enums.ColorSensor]
- command_id: ClassVar[int] = 224
- event_id: ClassVar[EventId]
- timestamp_ms: int
- raw_packet: TrainBlePacket
4.2. Response messages
- class trainlib.messages.TrainMsgMacAddress
Bases:
intelino.trainlib_async.messages.TrainMsgBase
TrainMsgMacAddress(raw_packet: ‘TrainBlePacket’, mac_address: str)
- command_id: ClassVar[int] = 66
- mac_address: str
- raw_packet: TrainBlePacket
- class trainlib.messages.TrainMsgTrainUuid
Bases:
intelino.trainlib_async.messages.TrainMsgBase
TrainMsgTrainUuid(raw_packet: ‘TrainBlePacket’, uuid: str)
- command_id: ClassVar[int] = 67
- uuid: str
- raw_packet: TrainBlePacket
- class trainlib.messages.TrainMsgVersionDetail
Bases:
intelino.trainlib_async.messages.TrainMsgBase
Train version information.
- class Version(major: int, minor: int, patch: Optional[int] = None)
Bases:
object
Version number tuple.
- major: int
- minor: int
- patch: Optional[int] = None
- command_id: ClassVar[int] = 7
- ble_api_version: intelino.trainlib_async.messages.TrainMsgVersionDetail.Version
- raw_packet: TrainBlePacket
- class trainlib.messages.TrainMsgStatsLifetimeOdometer
Bases:
intelino.trainlib_async.messages.TrainMsgBase
TrainMsgStatsLifetimeOdometer(raw_packet: ‘TrainBlePacket’, lifetime_odometer_meters: float)
- command_id: ClassVar[int] = 62
- lifetime_odometer_meters: float
- raw_packet: TrainBlePacket
- class trainlib.messages.TrainMsgMovement
Bases:
intelino.trainlib_async.messages.TrainMsgBase
Movement stream message.
- command_id: ClassVar[int] = 183
- speed_cmps: float
- pwm: int
- speed_control: bool
- desired_speed_cmps: float
- pause_time_ms: int
- next_split_decision: intelino.trainlib_async.enums.enums.SteeringDecision
- lifetime_odometer_meters: float
- raw_packet: TrainBlePacket
4.3. Event messages
- class trainlib.messages.TrainMsgEventMovementDirectionChanged
Bases:
intelino.trainlib_async.messages.TrainMsgEventBase
Triggered whenever the direction changes or the train stops.
- event_id: ClassVar[intelino.trainlib_async.messages.EventId] = 1
- command_id: ClassVar[int] = 224
- timestamp_ms: int
- raw_packet: TrainBlePacket
- class trainlib.messages.TrainMsgEventLowBattery
Bases:
intelino.trainlib_async.messages.TrainMsgEventBase
Triggered when the battery voltage is low.
- event_id: ClassVar[intelino.trainlib_async.messages.EventId] = 2
- command_id: ClassVar[int] = 224
- timestamp_ms: int
- raw_packet: TrainBlePacket
- class trainlib.messages.TrainMsgEventChargingStateChanged
Bases:
intelino.trainlib_async.messages.TrainMsgEventBase
Triggered when the charger is connected or disconnected.
- event_id: ClassVar[intelino.trainlib_async.messages.EventId] = 4
- is_charging: bool
- command_id: ClassVar[int] = 224
- timestamp_ms: int
- raw_packet: TrainBlePacket
- class trainlib.messages.TrainMsgEventButtonPressDetected
Bases:
intelino.trainlib_async.messages.TrainMsgEventBase
Triggered when the train’s button is pressed. The detection does not affect the button’s functionality (start/stop driving on a short press, turn off on a long press).
- event_id: ClassVar[intelino.trainlib_async.messages.EventId] = 5
- button_press_type: intelino.trainlib_async.enums.enums.ButtonPress
- command_id: ClassVar[int] = 224
- timestamp_ms: int
- raw_packet: TrainBlePacket
- class trainlib.messages.TrainMsgEventSnapCommandDetected
Bases:
intelino.trainlib_async.messages.TrainMsgEventBase
Triggered when a snap sequence (command) is detected, regardless of the execution status.
- event_id: ClassVar[intelino.trainlib_async.messages.EventId] = 9
- snap_counter: int
- command_id: ClassVar[int] = 224
- timestamp_ms: int
- raw_packet: TrainBlePacket
- class trainlib.messages.TrainMsgEventSnapCommandExecuted
Bases:
intelino.trainlib_async.messages.TrainMsgEventBase
Triggered after the snap sequence (command) execution started.
If snap execution is turned off, this event will not be sent.
- event_id: ClassVar[intelino.trainlib_async.messages.EventId] = 6
- snap_counter: int
- command_id: ClassVar[int] = 224
- timestamp_ms: int
- raw_packet: TrainBlePacket
- class trainlib.messages.TrainMsgEventFrontColorChanged
Bases:
intelino.trainlib_async.messages.TrainMsgEventSensorColorChangedBase
Train’s front color sensor.
- event_id: ClassVar[intelino.trainlib_async.messages.EventId] = 7
- sensor: ClassVar[intelino.trainlib_async.enums.enums.ColorSensor] = 1
- command_id: ClassVar[int] = 224
- color: SnapColorValue
- timestamp_ms: int
- raw_packet: TrainBlePacket
- class trainlib.messages.TrainMsgEventBackColorChanged
Bases:
intelino.trainlib_async.messages.TrainMsgEventSensorColorChangedBase
Train’s back color sensor.
- event_id: ClassVar[intelino.trainlib_async.messages.EventId] = 8
- sensor: ClassVar[intelino.trainlib_async.enums.enums.ColorSensor] = 2
- command_id: ClassVar[int] = 224
- color: SnapColorValue
- timestamp_ms: int
- raw_packet: TrainBlePacket
- class trainlib.messages.TrainMsgEventSplitDecision
Bases:
intelino.trainlib_async.messages.TrainMsgEventBase
Triggered after the split track is detected and the steering decision is made.
- event_id: ClassVar[intelino.trainlib_async.messages.EventId] = 10
- command_id: ClassVar[int] = 224
- timestamp_ms: int
- raw_packet: TrainBlePacket
4.4. Error messages
- class trainlib.messages.TrainMsgUnknown
Bases:
intelino.trainlib_async.messages.TrainMsgBase
TrainMsgUnknown(raw_packet: ‘TrainBlePacket’)
- command_id: ClassVar[int] = 0
- raw_packet: TrainBlePacket
- class trainlib.messages.TrainMsgEventUnknown
Bases:
intelino.trainlib_async.messages.TrainMsgEventBase
TrainMsgEventUnknown(raw_packet: ‘TrainBlePacket’, timestamp_ms: int)
- command_id: ClassVar[int] = 0
- event_id: ClassVar[intelino.trainlib_async.messages.EventId] = 0
- timestamp_ms: int
- raw_packet: TrainBlePacket
- class trainlib.messages.TrainMsgMalformed
Bases:
intelino.trainlib_async.messages.TrainMsgBase
TrainMsgMalformed(raw_packet: ‘TrainBlePacket’)
- command_id: ClassVar[int] = 256
- raw_packet: TrainBlePacket
4.5. Union classes
The library defines aliased union classes for messages. These should be used instead of the base classes e.g. when a function expects various message types as arguments.
- trainlib.messages.TrainMsg
alias of
Union
[intelino.trainlib_async.messages.TrainMsgUnknown
,intelino.trainlib_async.messages.TrainMsgMalformed
,intelino.trainlib_async.messages.TrainMsgMacAddress
,intelino.trainlib_async.messages.TrainMsgTrainUuid
,intelino.trainlib_async.messages.TrainMsgVersionDetail
,intelino.trainlib_async.messages.TrainMsgStatsLifetimeOdometer
,intelino.trainlib_async.messages.TrainMsgMovement
,intelino.trainlib_async.messages.TrainMsgEventUnknown
,intelino.trainlib_async.messages.TrainMsgEventMovementDirectionChanged
,intelino.trainlib_async.messages.TrainMsgEventLowBattery
,intelino.trainlib_async.messages.TrainMsgEventLowBatteryCutOff
,intelino.trainlib_async.messages.TrainMsgEventChargingStateChanged
,intelino.trainlib_async.messages.TrainMsgEventButtonPressDetected
,intelino.trainlib_async.messages.TrainMsgEventSnapCommandExecuted
,intelino.trainlib_async.messages.TrainMsgEventFrontColorChanged
,intelino.trainlib_async.messages.TrainMsgEventBackColorChanged
,intelino.trainlib_async.messages.TrainMsgEventSnapCommandDetected
,intelino.trainlib_async.messages.TrainMsgEventSplitDecision
]
- trainlib.messages.TrainMsgEvent
alias of
Union
[intelino.trainlib_async.messages.TrainMsgEventUnknown
,intelino.trainlib_async.messages.TrainMsgEventMovementDirectionChanged
,intelino.trainlib_async.messages.TrainMsgEventLowBattery
,intelino.trainlib_async.messages.TrainMsgEventLowBatteryCutOff
,intelino.trainlib_async.messages.TrainMsgEventChargingStateChanged
,intelino.trainlib_async.messages.TrainMsgEventButtonPressDetected
,intelino.trainlib_async.messages.TrainMsgEventSnapCommandExecuted
,intelino.trainlib_async.messages.TrainMsgEventFrontColorChanged
,intelino.trainlib_async.messages.TrainMsgEventBackColorChanged
,intelino.trainlib_async.messages.TrainMsgEventSnapCommandDetected
,intelino.trainlib_async.messages.TrainMsgEventSplitDecision
]
- trainlib.messages.TrainMsgEventSensorColorChanged
alias of
Union
[intelino.trainlib_async.messages.TrainMsgEventFrontColorChanged
,intelino.trainlib_async.messages.TrainMsgEventBackColorChanged
]