dotbot.models module#
Pydantic models used by the controller and server application.
- class dotbot.models.DotBotAddressModel(*, address)[source]#
Bases:
BaseModelSimple model to hold a DotBot address.
- Parameters:
address (str) –
- address: str#
- model_computed_fields: ClassVar[dict[str, ComputedFieldInfo]] = {}#
A dictionary of computed field names and their corresponding ComputedFieldInfo objects.
- model_config: ClassVar[ConfigDict] = {}#
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- model_fields: ClassVar[dict[str, FieldInfo]] = {'address': FieldInfo(annotation=str, required=True)}#
Metadata about the fields defined on the model, mapping of field names to [FieldInfo][pydantic.fields.FieldInfo].
This replaces Model.__fields__ from Pydantic V1.
- class dotbot.models.DotBotCalibrationIndexModel(*, index)[source]#
Bases:
BaseModelModel that holds the controller LH2 calibration index.
- Parameters:
index (int) –
- index: int#
- model_computed_fields: ClassVar[dict[str, ComputedFieldInfo]] = {}#
A dictionary of computed field names and their corresponding ComputedFieldInfo objects.
- model_config: ClassVar[ConfigDict] = {}#
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- model_fields: ClassVar[dict[str, FieldInfo]] = {'index': FieldInfo(annotation=int, required=True)}#
Metadata about the fields defined on the model, mapping of field names to [FieldInfo][pydantic.fields.FieldInfo].
This replaces Model.__fields__ from Pydantic V1.
- class dotbot.models.DotBotCalibrationStateModel(*, state)[source]#
Bases:
BaseModelModel that holds the controller LH2 calibration state.
- Parameters:
state (str) –
- model_computed_fields: ClassVar[dict[str, ComputedFieldInfo]] = {}#
A dictionary of computed field names and their corresponding ComputedFieldInfo objects.
- model_config: ClassVar[ConfigDict] = {}#
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- model_fields: ClassVar[dict[str, FieldInfo]] = {'state': FieldInfo(annotation=str, required=True)}#
Metadata about the fields defined on the model, mapping of field names to [FieldInfo][pydantic.fields.FieldInfo].
This replaces Model.__fields__ from Pydantic V1.
- state: str#
- class dotbot.models.DotBotControlModeModel(*, mode)[source]#
Bases:
BaseModelMode of a DotBot.
- Parameters:
mode (ControlModeType) –
- mode: ControlModeType#
- model_computed_fields: ClassVar[dict[str, ComputedFieldInfo]] = {}#
A dictionary of computed field names and their corresponding ComputedFieldInfo objects.
- model_config: ClassVar[ConfigDict] = {}#
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- model_fields: ClassVar[dict[str, FieldInfo]] = {'mode': FieldInfo(annotation=ControlModeType, required=True)}#
Metadata about the fields defined on the model, mapping of field names to [FieldInfo][pydantic.fields.FieldInfo].
This replaces Model.__fields__ from Pydantic V1.
- class dotbot.models.DotBotGPSPosition(*, latitude, longitude)[source]#
Bases:
BaseModelGPS position of a DotBot, usually running a SailBot application.
- Parameters:
latitude (float) –
longitude (float) –
- latitude: float#
- longitude: float#
- model_computed_fields: ClassVar[dict[str, ComputedFieldInfo]] = {}#
A dictionary of computed field names and their corresponding ComputedFieldInfo objects.
- model_config: ClassVar[ConfigDict] = {}#
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- model_fields: ClassVar[dict[str, FieldInfo]] = {'latitude': FieldInfo(annotation=float, required=True), 'longitude': FieldInfo(annotation=float, required=True)}#
Metadata about the fields defined on the model, mapping of field names to [FieldInfo][pydantic.fields.FieldInfo].
This replaces Model.__fields__ from Pydantic V1.
- class dotbot.models.DotBotLH2Position(*, x, y, z)[source]#
Bases:
BaseModelPosition of a DotBot.
- Parameters:
x (float) –
y (float) –
z (float) –
- model_computed_fields: ClassVar[dict[str, ComputedFieldInfo]] = {}#
A dictionary of computed field names and their corresponding ComputedFieldInfo objects.
- model_config: ClassVar[ConfigDict] = {}#
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- model_fields: ClassVar[dict[str, FieldInfo]] = {'x': FieldInfo(annotation=float, required=True), 'y': FieldInfo(annotation=float, required=True), 'z': FieldInfo(annotation=float, required=True)}#
Metadata about the fields defined on the model, mapping of field names to [FieldInfo][pydantic.fields.FieldInfo].
This replaces Model.__fields__ from Pydantic V1.
- x: float#
- y: float#
- z: float#
- class dotbot.models.DotBotModel(*, address, application=ApplicationType.DotBot, swarm='0000', status=DotBotStatus.ALIVE, mode=ControlModeType.MANUAL, last_seen, direction=None, wind_angle=None, rudder_angle=None, sail_angle=None, move_raw=None, rgb_led=None, lh2_position=None, gps_position=None, waypoints=[], waypoints_threshold=40, position_history=[])[source]#
Bases:
BaseModelModel class that defines a DotBot.
- Parameters:
address (str) –
application (ApplicationType) –
swarm (str) –
status (DotBotStatus) –
mode (ControlModeType) –
last_seen (float) –
direction (int | None) –
wind_angle (int | None) –
rudder_angle (int | None) –
sail_angle (int | None) –
move_raw (DotBotMoveRawCommandModel | None) –
rgb_led (DotBotRgbLedCommandModel | None) –
lh2_position (DotBotLH2Position | None) –
gps_position (DotBotGPSPosition | None) –
waypoints (List[DotBotLH2Position | DotBotGPSPosition]) –
waypoints_threshold (int) –
position_history (List[DotBotLH2Position | DotBotGPSPosition]) –
- address: str#
- application: ApplicationType#
- direction: int | None#
- gps_position: DotBotGPSPosition | None#
- last_seen: float#
- lh2_position: DotBotLH2Position | None#
- mode: ControlModeType#
- model_computed_fields: ClassVar[dict[str, ComputedFieldInfo]] = {}#
A dictionary of computed field names and their corresponding ComputedFieldInfo objects.
- model_config: ClassVar[ConfigDict] = {}#
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- model_fields: ClassVar[dict[str, FieldInfo]] = {'address': FieldInfo(annotation=str, required=True), 'application': FieldInfo(annotation=ApplicationType, required=False, default=<ApplicationType.DotBot: 0>), 'direction': FieldInfo(annotation=Union[int, NoneType], required=False, default=None), 'gps_position': FieldInfo(annotation=Union[DotBotGPSPosition, NoneType], required=False, default=None), 'last_seen': FieldInfo(annotation=float, required=True), 'lh2_position': FieldInfo(annotation=Union[DotBotLH2Position, NoneType], required=False, default=None), 'mode': FieldInfo(annotation=ControlModeType, required=False, default=<ControlModeType.MANUAL: 0>), 'move_raw': FieldInfo(annotation=Union[DotBotMoveRawCommandModel, NoneType], required=False, default=None), 'position_history': FieldInfo(annotation=List[Union[DotBotLH2Position, DotBotGPSPosition]], required=False, default=[]), 'rgb_led': FieldInfo(annotation=Union[DotBotRgbLedCommandModel, NoneType], required=False, default=None), 'rudder_angle': FieldInfo(annotation=Union[int, NoneType], required=False, default=None), 'sail_angle': FieldInfo(annotation=Union[int, NoneType], required=False, default=None), 'status': FieldInfo(annotation=DotBotStatus, required=False, default=<DotBotStatus.ALIVE: 0>), 'swarm': FieldInfo(annotation=str, required=False, default='0000'), 'waypoints': FieldInfo(annotation=List[Union[DotBotLH2Position, DotBotGPSPosition]], required=False, default=[]), 'waypoints_threshold': FieldInfo(annotation=int, required=False, default=40), 'wind_angle': FieldInfo(annotation=Union[int, NoneType], required=False, default=None)}#
Metadata about the fields defined on the model, mapping of field names to [FieldInfo][pydantic.fields.FieldInfo].
This replaces Model.__fields__ from Pydantic V1.
- move_raw: DotBotMoveRawCommandModel | None#
- position_history: List[DotBotLH2Position | DotBotGPSPosition]#
- rgb_led: DotBotRgbLedCommandModel | None#
- rudder_angle: int | None#
- sail_angle: int | None#
- status: DotBotStatus#
- swarm: str#
- waypoints: List[DotBotLH2Position | DotBotGPSPosition]#
- waypoints_threshold: int#
- wind_angle: int | None#
- class dotbot.models.DotBotMoveRawCommandModel(*, left_x, left_y, right_x, right_y)[source]#
Bases:
BaseModelModel class that defines a move raw command.
- Parameters:
left_x (int) –
left_y (int) –
right_x (int) –
right_y (int) –
- left_x: int#
- left_y: int#
- model_computed_fields: ClassVar[dict[str, ComputedFieldInfo]] = {}#
A dictionary of computed field names and their corresponding ComputedFieldInfo objects.
- model_config: ClassVar[ConfigDict] = {}#
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- model_fields: ClassVar[dict[str, FieldInfo]] = {'left_x': FieldInfo(annotation=int, required=True), 'left_y': FieldInfo(annotation=int, required=True), 'right_x': FieldInfo(annotation=int, required=True), 'right_y': FieldInfo(annotation=int, required=True)}#
Metadata about the fields defined on the model, mapping of field names to [FieldInfo][pydantic.fields.FieldInfo].
This replaces Model.__fields__ from Pydantic V1.
- right_x: int#
- right_y: int#
- class dotbot.models.DotBotNotificationCommand(value, names=None, *, module=None, qualname=None, type=None, start=1, boundary=None)[source]#
Bases:
IntEnumNotification command of a DotBot.
- NONE: int = 0#
- PIN_CODE_UPDATE: int = 3#
- RELOAD: int = 1#
- UPDATE: int = 2#
- class dotbot.models.DotBotNotificationModel(*, cmd, data=None, pin_code=None)[source]#
Bases:
BaseModelModel class used to send controller notifications.
- Parameters:
cmd (DotBotNotificationCommand) –
data (DotBotNotificationUpdate | None) –
pin_code (int | None) –
- data: DotBotNotificationUpdate | None#
- model_computed_fields: ClassVar[dict[str, ComputedFieldInfo]] = {}#
A dictionary of computed field names and their corresponding ComputedFieldInfo objects.
- model_config: ClassVar[ConfigDict] = {}#
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- model_fields: ClassVar[dict[str, FieldInfo]] = {'cmd': FieldInfo(annotation=DotBotNotificationCommand, required=True), 'data': FieldInfo(annotation=Union[DotBotNotificationUpdate, NoneType], required=False, default=None), 'pin_code': FieldInfo(annotation=Union[int, NoneType], required=False, default=None)}#
Metadata about the fields defined on the model, mapping of field names to [FieldInfo][pydantic.fields.FieldInfo].
This replaces Model.__fields__ from Pydantic V1.
- pin_code: int | None#
- class dotbot.models.DotBotNotificationUpdate(*, address, direction, wind_angle, rudder_angle, sail_angle, lh2_position=None, gps_position=None)[source]#
Bases:
BaseModelUpdate notification model.
- Parameters:
address (str) –
direction (int | None) –
wind_angle (int | None) –
rudder_angle (int | None) –
sail_angle (int | None) –
lh2_position (DotBotLH2Position | None) –
gps_position (DotBotGPSPosition | None) –
- address: str#
- direction: int | None#
- gps_position: DotBotGPSPosition | None#
- lh2_position: DotBotLH2Position | None#
- model_computed_fields: ClassVar[dict[str, ComputedFieldInfo]] = {}#
A dictionary of computed field names and their corresponding ComputedFieldInfo objects.
- model_config: ClassVar[ConfigDict] = {}#
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- model_fields: ClassVar[dict[str, FieldInfo]] = {'address': FieldInfo(annotation=str, required=True), 'direction': FieldInfo(annotation=Union[int, NoneType], required=True), 'gps_position': FieldInfo(annotation=Union[DotBotGPSPosition, NoneType], required=False, default=None), 'lh2_position': FieldInfo(annotation=Union[DotBotLH2Position, NoneType], required=False, default=None), 'rudder_angle': FieldInfo(annotation=Union[int, NoneType], required=True), 'sail_angle': FieldInfo(annotation=Union[int, NoneType], required=True), 'wind_angle': FieldInfo(annotation=Union[int, NoneType], required=True)}#
Metadata about the fields defined on the model, mapping of field names to [FieldInfo][pydantic.fields.FieldInfo].
This replaces Model.__fields__ from Pydantic V1.
- rudder_angle: int | None#
- sail_angle: int | None#
- wind_angle: int | None#
- class dotbot.models.DotBotQueryModel(*, max_positions=1000, application=None, mode=None, status=None, swarm=None)[source]#
Bases:
BaseModelModel class used to filter DotBots.
- Parameters:
max_positions (int) –
application (ApplicationType | None) –
mode (ControlModeType | None) –
status (DotBotStatus | None) –
swarm (str | None) –
- application: ApplicationType | None#
- max_positions: int#
- mode: ControlModeType | None#
- model_computed_fields: ClassVar[dict[str, ComputedFieldInfo]] = {}#
A dictionary of computed field names and their corresponding ComputedFieldInfo objects.
- model_config: ClassVar[ConfigDict] = {}#
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- model_fields: ClassVar[dict[str, FieldInfo]] = {'application': FieldInfo(annotation=Union[ApplicationType, NoneType], required=False, default=None), 'max_positions': FieldInfo(annotation=int, required=False, default=1000), 'mode': FieldInfo(annotation=Union[ControlModeType, NoneType], required=False, default=None), 'status': FieldInfo(annotation=Union[DotBotStatus, NoneType], required=False, default=None), 'swarm': FieldInfo(annotation=Union[str, NoneType], required=False, default=None)}#
Metadata about the fields defined on the model, mapping of field names to [FieldInfo][pydantic.fields.FieldInfo].
This replaces Model.__fields__ from Pydantic V1.
- status: DotBotStatus | None#
- swarm: str | None#
- class dotbot.models.DotBotReplyModel(*, request, data)[source]#
Bases:
BaseModelModel class used to handle controller replies.
- Parameters:
request (DotBotRequestType) –
data (Any) –
- data: Any#
- model_computed_fields: ClassVar[dict[str, ComputedFieldInfo]] = {}#
A dictionary of computed field names and their corresponding ComputedFieldInfo objects.
- model_config: ClassVar[ConfigDict] = {}#
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- model_fields: ClassVar[dict[str, FieldInfo]] = {'data': FieldInfo(annotation=Any, required=True), 'request': FieldInfo(annotation=DotBotRequestType, required=True)}#
Metadata about the fields defined on the model, mapping of field names to [FieldInfo][pydantic.fields.FieldInfo].
This replaces Model.__fields__ from Pydantic V1.
- request: DotBotRequestType#
- class dotbot.models.DotBotRequestModel(*, request, reply)[source]#
Bases:
BaseModelModel class used to handle controller request.
- Parameters:
request (DotBotRequestType) –
reply (str) –
- model_computed_fields: ClassVar[dict[str, ComputedFieldInfo]] = {}#
A dictionary of computed field names and their corresponding ComputedFieldInfo objects.
- model_config: ClassVar[ConfigDict] = {}#
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- model_fields: ClassVar[dict[str, FieldInfo]] = {'reply': FieldInfo(annotation=str, required=True), 'request': FieldInfo(annotation=DotBotRequestType, required=True)}#
Metadata about the fields defined on the model, mapping of field names to [FieldInfo][pydantic.fields.FieldInfo].
This replaces Model.__fields__ from Pydantic V1.
- reply: str#
- request: DotBotRequestType#
- class dotbot.models.DotBotRequestType(value, names=None, *, module=None, qualname=None, type=None, start=1, boundary=None)[source]#
Bases:
IntEnumRequest received from MQTT client.
- DOTBOTS: int = 0#
- LH2_CALIBRATION_STATE: int = 1#
- class dotbot.models.DotBotRgbLedCommandModel(*, red, green, blue)[source]#
Bases:
BaseModelModel class that defines an RGB LED command.
- Parameters:
red (int) –
green (int) –
blue (int) –
- blue: int#
- green: int#
- model_computed_fields: ClassVar[dict[str, ComputedFieldInfo]] = {}#
A dictionary of computed field names and their corresponding ComputedFieldInfo objects.
- model_config: ClassVar[ConfigDict] = {}#
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- model_fields: ClassVar[dict[str, FieldInfo]] = {'blue': FieldInfo(annotation=int, required=True), 'green': FieldInfo(annotation=int, required=True), 'red': FieldInfo(annotation=int, required=True)}#
Metadata about the fields defined on the model, mapping of field names to [FieldInfo][pydantic.fields.FieldInfo].
This replaces Model.__fields__ from Pydantic V1.
- red: int#
- class dotbot.models.DotBotStatus(value, names=None, *, module=None, qualname=None, type=None, start=1, boundary=None)[source]#
Bases:
IntEnumStatus of a DotBot.
- ALIVE: int = 0#
- DEAD: int = 2#
- LOST: int = 1#
- class dotbot.models.DotBotWaypoints(*, threshold, waypoints)[source]#
Bases:
BaseModelWaypoints model.
- Parameters:
threshold (int) –
waypoints (List[DotBotLH2Position | DotBotGPSPosition]) –
- model_computed_fields: ClassVar[dict[str, ComputedFieldInfo]] = {}#
A dictionary of computed field names and their corresponding ComputedFieldInfo objects.
- model_config: ClassVar[ConfigDict] = {}#
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- model_fields: ClassVar[dict[str, FieldInfo]] = {'threshold': FieldInfo(annotation=int, required=True), 'waypoints': FieldInfo(annotation=List[Union[DotBotLH2Position, DotBotGPSPosition]], required=True)}#
Metadata about the fields defined on the model, mapping of field names to [FieldInfo][pydantic.fields.FieldInfo].
This replaces Model.__fields__ from Pydantic V1.
- threshold: int#
- waypoints: List[DotBotLH2Position | DotBotGPSPosition]#
- class dotbot.models.DotBotXGOActionCommandModel(*, action)[source]#
Bases:
BaseModelModel class that defines an XGO action command.
- Parameters:
action (int) –
- action: int#
- model_computed_fields: ClassVar[dict[str, ComputedFieldInfo]] = {}#
A dictionary of computed field names and their corresponding ComputedFieldInfo objects.
- model_config: ClassVar[ConfigDict] = {}#
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- model_fields: ClassVar[dict[str, FieldInfo]] = {'action': FieldInfo(annotation=int, required=True)}#
Metadata about the fields defined on the model, mapping of field names to [FieldInfo][pydantic.fields.FieldInfo].
This replaces Model.__fields__ from Pydantic V1.
- class dotbot.models.MqttPinCodeModel(*, pin)[source]#
Bases:
BaseModelPin code used to derive crypto keys for MQTT.
- Parameters:
pin (int) –
- model_computed_fields: ClassVar[dict[str, ComputedFieldInfo]] = {}#
A dictionary of computed field names and their corresponding ComputedFieldInfo objects.
- model_config: ClassVar[ConfigDict] = {}#
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- model_fields: ClassVar[dict[str, FieldInfo]] = {'pin': FieldInfo(annotation=int, required=True)}#
Metadata about the fields defined on the model, mapping of field names to [FieldInfo][pydantic.fields.FieldInfo].
This replaces Model.__fields__ from Pydantic V1.
- pin: int#