| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- from dataclasses import dataclass, field
- from typing import List, Optional
- from enum import Enum
- class ModuleType(Enum):
- HD3200 = "HD3200"
- RFID = "RFID"
- class CameraPosition(Enum):
- LEFT = "left"
- RIGHT = "right"
- class CameraState(Enum):
- ONLINE = "online"
- OFFLINE = "offline"
- class SwitchMode(Enum):
- AUTO = "auto"
- HAND = "hand"
- @dataclass
- class CameraModel:
- position: CameraPosition
- rtsp_url: str
- topic: Optional[str] = None
- state: CameraState = CameraState.OFFLINE
- class HookState(Enum):
- IDLE = "idle"
- RELEASING = "releasing" # 放包中
- HOOKING = "hooking" # 挂包中
- READY = "ready" # 挂包成功
- @dataclass
- class BucketModel:
- id: int
- description: str
- code_x: str # 大车标识(RFID卡号或Modbus点号)
- code_y: str = "" # 小车标识(垂直工位)
- ai_module_id: Optional[int] = None # 关联AI模块索引
- cameras: List[CameraModel] = field(default_factory=list)
- is_active: bool = False
- ready_x: bool = False
- ready_y: bool = True # 无垂直工位时为True
- @dataclass
- class AIModuleModel:
- id: int
- broker: str = "127.0.0.1"
- port: int = 1883
- topics: List[str] = field(default_factory=list)
- @dataclass
- class AIConfig:
- enabled: bool = False
- tts_enabled: bool = False
- @dataclass
- class ModbusConfig:
- ip: str
- port: int = 502
- frequency: int = 100
- stability_count: int = 3
- @dataclass
- class SocketConfig:
- ip: str
- port: int = 6000
- stability_time: int = 20
- stability_count: int = 3
- @dataclass
- class VideoConfig:
- rtsp_timeout: float = 5.0 # 默认 5 秒
- @dataclass
- class Config:
- app_name: str = "钢包工位视频监测系统"
- copyright: str = "恒莱达"
- screen: int = 0
- module_type: ModuleType = ModuleType.RFID
- rfid: Optional[SocketConfig] = None
- modbus: Optional[ModbusConfig] = None
- ai: AIConfig = field(default_factory=AIConfig)
- ai_modules: List[AIModuleModel] = field(default_factory=list)
- buckets: List[BucketModel] = field(default_factory=list)
- video: VideoConfig = field(default_factory=VideoConfig)
|