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.TrainMsgBaseBase 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.TrainMsgEventBaseTriggered 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.TrainMsgBaseTrainMsgMacAddress(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.TrainMsgBaseTrainMsgTrainUuid(raw_packet: ‘TrainBlePacket’, uuid: str)
- command_id: ClassVar[int] = 67
- uuid: str
- raw_packet: TrainBlePacket
- class trainlib.messages.TrainMsgVersionDetail
Bases:
intelino.trainlib_async.messages.TrainMsgBaseTrain version information.
- class Version(major: int, minor: int, patch: Optional[int] = None)
Bases:
objectVersion 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.TrainMsgBaseTrainMsgStatsLifetimeOdometer(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.TrainMsgBaseMovement 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.TrainMsgEventBaseTriggered 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.TrainMsgEventBaseTriggered 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.TrainMsgEventBaseTriggered 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.TrainMsgEventBaseTriggered 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.TrainMsgEventBaseTriggered 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.TrainMsgEventBaseTriggered 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.TrainMsgEventSensorColorChangedBaseTrain’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.TrainMsgEventSensorColorChangedBaseTrain’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.TrainMsgEventBaseTriggered 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.TrainMsgBaseTrainMsgUnknown(raw_packet: ‘TrainBlePacket’)
- command_id: ClassVar[int] = 0
- raw_packet: TrainBlePacket
- class trainlib.messages.TrainMsgEventUnknown
Bases:
intelino.trainlib_async.messages.TrainMsgEventBaseTrainMsgEventUnknown(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.TrainMsgBaseTrainMsgMalformed(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]