Core Models¶
models
¶
Pydantic models for Drone API inputs and outputs.
All models use Pydantic v2 for runtime validation and serialization.
Vector3
¶
Bases: BaseModel
3D vector for position, velocity, or acceleration.
Units depend on context:
- Position: centimeters (cm)
- Velocity: cm/s
- Acceleration: cm/s^2
Orientation
¶
Bases: BaseModel
Orientation angles in degrees.
Yaw: rotation around vertical axis (0-360) Pitch: nose up/down (-90 to 90) Roll: wing tilt (-180 to 180)
LEDConfig
¶
Bases: BaseModel
LED configuration for flight commands.
Replaces the untyped dict {'r': 0, 'g': 0, 'b': 0, 'mode': 1} pattern.
Usage:
# Using predefined colors
from pypack.core import LEDColor
led = LEDColor.RED
led = LEDColor.BLUE.with_mode(LEDMode.BLINK)
# Using custom RGB
led = LEDConfig.rgb(128, 64, 255)
led = LEDConfig(r=255, g=128, b=0, mode=LEDMode.BREATHING)
r
class-attribute
instance-attribute
¶
g
class-attribute
instance-attribute
¶
b
class-attribute
instance-attribute
¶
mode
class-attribute
instance-attribute
¶
to_param4
¶
Convert to MAVLink param4 format for formation_cmd_encode().
Bit layout: [mode:8][b:8][g:8][r:8]
with_mode
¶
Return new LEDConfig with different mode, keeping same color.
LEDColor
¶
Predefined LED colors for convenience.
Usage:
from pypack.core import LEDColor, LEDMode
# Use directly
drone.move(Direction.FORWARD, 100, led=LEDColor.RED)
# With different mode
drone.takeoff(led=LEDColor.GREEN.with_mode(LEDMode.BLINK))
# Custom RGB still available
drone.land(led=LEDConfig.rgb(128, 64, 255))
FlightData
¶
Bases: BaseModel
Complete flight telemetry snapshot.
Parsed from MAVLink REPORT_FLIGHT_DATA (msg ID 206).
position
class-attribute
instance-attribute
¶
position: Vector3 = Field(description='Position in cm')
velocity
class-attribute
instance-attribute
¶
velocity: Vector3 = Field(description='Velocity in cm/s')
acceleration
class-attribute
instance-attribute
¶
acceleration: Vector3 = Field(description='Acceleration in cm/s^2')
orientation
class-attribute
instance-attribute
¶
orientation: Orientation = Field(description='Orientation in degrees')
altitude_tof
class-attribute
instance-attribute
¶
altitude_baro
class-attribute
instance-attribute
¶
battery_percent
class-attribute
instance-attribute
¶
barrier
class-attribute
instance-attribute
¶
from_mavlink
classmethod
¶
from_mavlink(msg) -> FlightData
Create FlightData from MAVLink report_flight_data message.
Obstacles
¶
Bases: BaseModel
Obstacle detection state from barrier sensors.
Parsed from the barrier bitmask in REPORT_FLIGHT_DATA.
DroneState
¶
Bases: BaseModel
Complete drone state snapshot.
Combines connection status, telemetry, and obstacle detection.
status
class-attribute
instance-attribute
¶
status: DroneStatus = Field(description='Current drone status')
flight_data
class-attribute
instance-attribute
¶
flight_data: FlightData | None = Field(default=None, description='Latest telemetry')
obstacles
class-attribute
instance-attribute
¶
drone_id
class-attribute
instance-attribute
¶
is_connected
class-attribute
instance-attribute
¶
last_heartbeat
class-attribute
instance-attribute
¶
AIResult
¶
Bases: BaseModel
Result from AI/vision recognition operations.
Used for digit/arrow recognition, QR code detection, etc.
success
class-attribute
instance-attribute
¶
target_type
class-attribute
instance-attribute
¶
position
class-attribute
instance-attribute
¶
position: Vector3 | None = Field(default=None, description='Target position if found')
angle
class-attribute
instance-attribute
¶
qr_id
class-attribute
instance-attribute
¶
ColorResult
¶
Bases: BaseModel
Result from color recognition.
Returns the dominant color detected by the camera.
success
class-attribute
instance-attribute
¶
r
class-attribute
instance-attribute
¶
g
class-attribute
instance-attribute
¶
b
class-attribute
instance-attribute
¶
from_response
classmethod
¶
from_response(r: int, g: int, b: int, state: int) -> ColorResult
Create ColorResult from legacy response values.
SystemStats
¶
Bases: BaseModel
Extended system statistics from REPORT_STATS (msg ID 207).
Contains comprehensive drone status beyond basic telemetry.
firmware_version
class-attribute
instance-attribute
¶
system_version
class-attribute
instance-attribute
¶
flight_time
class-attribute
instance-attribute
¶
utc_timestamp
class-attribute
instance-attribute
¶
gps_lat
class-attribute
instance-attribute
¶
gps_lon
class-attribute
instance-attribute
¶
sensors_present
class-attribute
instance-attribute
¶
sensors_health
class-attribute
instance-attribute
¶
temperature
class-attribute
instance-attribute
¶
drone_status
class-attribute
instance-attribute
¶
block_status
class-attribute
instance-attribute
¶
rgb_status
class-attribute
instance-attribute
¶
battery_percent
class-attribute
instance-attribute
¶
firmware_version_str
property
¶
Get firmware version as dotted string (e.g., '1.1.7.0').
system_version_str
property
¶
Get system version as dotted string (e.g., '1.9.0.3').
parse_version
staticmethod
¶
Parse 2-byte version value to dotted string.
The version is encoded as a 4-digit decimal where each digit represents a version component (major.minor.patch.revision).
Examples:
1170 -> "1.1.7.0" 1903 -> "1.9.0.3"
MediaFile
¶
Bases: BaseModel
Media file metadata from drone storage.
Represents a photo, video, or log file stored on the drone. Retrieved via HTTP CGI API at port 12346.
name
class-attribute
instance-attribute
¶
path
class-attribute
instance-attribute
¶
thumb_path
class-attribute
instance-attribute
¶
date
class-attribute
instance-attribute
¶
media_type
class-attribute
instance-attribute
¶
from_snap_info
classmethod
¶
Create MediaFile from drone's snaplist JSON response.
get_download_url
¶
Get HTTP URL for downloading this file.
get_thumb_url
¶
Get HTTP URL for downloading thumbnail.