dotbot.models module#

Pydantic models used by the controller and server application.

class dotbot.models.DotBotAddressModel(*, address)[source]#

Bases: BaseModel

Simple model to hold a DotBot address.

Parameters:

address (str)

address: str#
model_config: ClassVar[ConfigDict] = {}#

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class dotbot.models.DotBotControlModeModel(*, mode)[source]#

Bases: BaseModel

Mode of a DotBot.

Parameters:

mode (ControlModeType)

mode: ControlModeType#
model_config: ClassVar[ConfigDict] = {}#

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class dotbot.models.DotBotGPSPosition(*, latitude, longitude)[source]#

Bases: BaseModel

GPS position of a DotBot, usually running a SailBot application.

Parameters:
  • latitude (float)

  • longitude (float)

latitude: float#
longitude: float#
model_config: ClassVar[ConfigDict] = {}#

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class dotbot.models.DotBotLH2Position(*, x, y, z)[source]#

Bases: BaseModel

Position of a DotBot.

Parameters:
  • x (float)

  • y (float)

  • z (float)

model_config: ClassVar[ConfigDict] = {}#

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

x: float#
y: float#
z: float#
class dotbot.models.DotBotModel(*, address, application=ApplicationType.DotBot, swarm='0000', status=DotBotStatus.ACTIVE, 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=[], calibrated=False, battery=0.0)[source]#

Bases: BaseModel

Model class that defines a DotBot.

Parameters:
address: str#
application: ApplicationType#
battery: float#
calibrated: bool#
direction: int | None#
gps_position: DotBotGPSPosition | None#
last_seen: float#
lh2_position: DotBotLH2Position | None#
mode: ControlModeType#
model_config: ClassVar[ConfigDict] = {}#

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

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: BaseModel

Model 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_config: ClassVar[ConfigDict] = {}#

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

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: IntEnum

Notification 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: BaseModel

Model class used to send controller notifications.

Parameters:
cmd: DotBotNotificationCommand#
data: DotBotNotificationUpdate | None#
model_config: ClassVar[ConfigDict] = {}#

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

pin_code: int | None#
class dotbot.models.DotBotNotificationUpdate(*, address, direction, wind_angle, rudder_angle, sail_angle, lh2_position=None, gps_position=None, battery=None)[source]#

Bases: BaseModel

Update 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)

  • battery (float | None)

address: str#
battery: float | None#
direction: int | None#
gps_position: DotBotGPSPosition | None#
lh2_position: DotBotLH2Position | None#
model_config: ClassVar[ConfigDict] = {}#

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

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: BaseModel

Model class used to filter DotBots.

Parameters:
application: ApplicationType | None#
max_positions: int#
mode: ControlModeType | None#
model_config: ClassVar[ConfigDict] = {}#

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

status: DotBotStatus | None#
swarm: str | None#
class dotbot.models.DotBotReplyModel(*, request, data)[source]#

Bases: BaseModel

Model class used to handle controller replies.

Parameters:
data: Any#
model_config: ClassVar[ConfigDict] = {}#

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

request: DotBotRequestType#
class dotbot.models.DotBotRequestModel(*, request, reply)[source]#

Bases: BaseModel

Model class used to handle controller request.

Parameters:
model_config: ClassVar[ConfigDict] = {}#

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

reply: str#
request: DotBotRequestType#
class dotbot.models.DotBotRequestType(value, names=None, *, module=None, qualname=None, type=None, start=1, boundary=None)[source]#

Bases: IntEnum

Request received from MQTT client.

DOTBOTS: int = 0#
class dotbot.models.DotBotRgbLedCommandModel(*, red, green, blue)[source]#

Bases: BaseModel

Model class that defines an RGB LED command.

Parameters:
  • red (int)

  • green (int)

  • blue (int)

blue: int#
green: int#
model_config: ClassVar[ConfigDict] = {}#

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

red: int#
class dotbot.models.DotBotStatus(value, names=None, *, module=None, qualname=None, type=None, start=1, boundary=None)[source]#

Bases: IntEnum

Status of a DotBot.

ACTIVE: int = 0#
INACTIVE: int = 1#
LOST: int = 2#
class dotbot.models.DotBotWaypoints(*, threshold, waypoints)[source]#

Bases: BaseModel

Waypoints model.

Parameters:
model_config: ClassVar[ConfigDict] = {}#

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

threshold: int#
waypoints: List[DotBotLH2Position | DotBotGPSPosition]#
class dotbot.models.DotBotXGOActionCommandModel(*, action)[source]#

Bases: BaseModel

Model class that defines an XGO action command.

Parameters:

action (int)

action: int#
model_config: ClassVar[ConfigDict] = {}#

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class dotbot.models.MqttPinCodeModel(*, pin)[source]#

Bases: BaseModel

Pin code used to derive crypto keys for MQTT.

Parameters:

pin (int)

model_config: ClassVar[ConfigDict] = {}#

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

pin: int#
class dotbot.models.WSBase(*, cmd, address, application)[source]#

Bases: BaseModel

Parameters:
address: str#
application: ApplicationType#
cmd: str#
model_config: ClassVar[ConfigDict] = {}#

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class dotbot.models.WSMoveRaw(*, cmd, address, application, data)[source]#

Bases: WSBase

Parameters:
cmd: Literal['move_raw']#
data: DotBotMoveRawCommandModel#
model_config: ClassVar[ConfigDict] = {}#

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class dotbot.models.WSRgbLed(*, cmd, address, application, data)[source]#

Bases: WSBase

Parameters:
cmd: Literal['rgb_led']#
data: DotBotRgbLedCommandModel#
model_config: ClassVar[ConfigDict] = {}#

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class dotbot.models.WSWaypoints(*, cmd, address, application, data)[source]#

Bases: WSBase

Parameters:
cmd: Literal['waypoints']#
data: DotBotWaypoints#
model_config: ClassVar[ConfigDict] = {}#

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].