58 lines
1.6 KiB
Python
58 lines
1.6 KiB
Python
from typing import Optional
|
||
from pydantic import BaseModel, Field
|
||
|
||
|
||
class GPSQueryRequest(BaseModel):
|
||
device_id: str = Field(..., description="设备ID,如 TalkingQ_001")
|
||
|
||
|
||
class VolumeRequest(BaseModel):
|
||
device_id: str = Field(..., description="设备ID")
|
||
level: int = Field(..., ge=0, le=100, description="音量等级 0-100")
|
||
|
||
|
||
class OTARequest(BaseModel):
|
||
device_id: str = Field(..., description="设备ID")
|
||
url: str = Field(..., description="固件下载地址")
|
||
version: str = Field(..., description="目标版本号")
|
||
|
||
|
||
class NFCNoticeRequest(BaseModel):
|
||
device_id: str = Field(..., description="设备ID")
|
||
url: str = Field(..., description="提示音地址")
|
||
|
||
|
||
class NFCListenRequest(BaseModel):
|
||
device_id: str = Field(..., description="设备ID")
|
||
uuid: str = Field(..., description="NFC卡片UUID")
|
||
|
||
|
||
class NFCUnreadRequest(BaseModel):
|
||
device_id: str = Field(..., description="设备ID")
|
||
url: str = Field(..., description="未读留言音频地址")
|
||
|
||
|
||
class NFCBindRequest(BaseModel):
|
||
device_id: str = Field(..., description="设备ID")
|
||
uuid: str = Field(..., description="NFC卡片UUID")
|
||
|
||
|
||
class CommandResponse(BaseModel):
|
||
code: int = 0
|
||
message: str = "success"
|
||
msg_id: str = Field(..., description="消息ID")
|
||
device_id: str = Field(..., description="设备ID")
|
||
|
||
|
||
class DeviceResponseData(BaseModel):
|
||
msg_id: str
|
||
status: Optional[str] = None
|
||
data: Optional[dict] = None
|
||
timestamp: Optional[float] = None
|
||
|
||
|
||
class DeviceStatusResponse(BaseModel):
|
||
device_id: str
|
||
online: bool
|
||
last_seen: Optional[float] = None
|