110 lines
5.4 KiB
Python
110 lines
5.4 KiB
Python
#!/usr/bin/env python
|
||
# -*- coding: utf-8 -*-
|
||
|
||
"""
|
||
Modbus配置模型模块
|
||
包含Modbus配置相关的请求和响应数据模型
|
||
"""
|
||
|
||
from typing import Optional, List, Dict, Any, Union
|
||
from enum import Enum
|
||
from pydantic import BaseModel, Field, validator
|
||
import re
|
||
|
||
from routes.model.base import PageResult, PaginationParams
|
||
|
||
# Modbus地址类型枚举
|
||
class ModbusAddressType(str, Enum):
|
||
"""Modbus地址类型枚举"""
|
||
COIL = "0X" # 线圈寄存器
|
||
DISCRETE_INPUT = "1X" # 离散输入寄存器
|
||
INPUT_REGISTER = "3X" # 输入寄存器
|
||
HOLDING_REGISTER = "4X" # 保持寄存器
|
||
|
||
# Modbus配置添加请求模型
|
||
class ModbusConfigAddRequest(BaseModel):
|
||
"""Modbus配置添加请求模型"""
|
||
name: str = Field(..., description="配置名称", min_length=1, max_length=100)
|
||
ip: str = Field(..., description="设备IP地址")
|
||
port: int = Field(..., description="通信端口号")
|
||
slave_id: int = Field(..., description="从站ID")
|
||
address_type: ModbusAddressType = Field(..., description="地址类型")
|
||
address_number: int = Field(..., description="地址编号")
|
||
task_id: Optional[str] = Field(None, description="任务ID")
|
||
target_value: Optional[int] = Field(None, description="目标值")
|
||
reset_after_trigger: Optional[bool] = Field(False, description="触发后是否重置")
|
||
reset_signal_address: Optional[int] = Field(None, description="重置信号地址")
|
||
reset_value: Optional[int] = Field(None, description="重置值")
|
||
remark: Optional[str] = Field(None, description="备注")
|
||
tenant_id: Optional[str] = Field(None, description="租户ID")
|
||
|
||
# Modbus配置更新请求模型
|
||
class ModbusConfigUpdateRequest(BaseModel):
|
||
"""Modbus配置更新请求模型"""
|
||
name: Optional[str] = Field(None, description="配置名称", min_length=1, max_length=100)
|
||
ip: Optional[str] = Field(None, description="设备IP地址")
|
||
port: Optional[int] = Field(None, description="通信端口号")
|
||
slave_id: Optional[int] = Field(None, description="从站ID")
|
||
address_type: Optional[ModbusAddressType] = Field(None, description="地址类型")
|
||
address_number: Optional[int] = Field(None, description="地址编号")
|
||
task_id: Optional[str] = Field(None, description="任务ID")
|
||
target_value: Optional[int] = Field(None, description="目标值")
|
||
remark: Optional[str] = Field(None, description="备注")
|
||
|
||
# Modbus连接测试请求模型
|
||
class ModbusConnectionTestRequest(BaseModel):
|
||
"""Modbus连接测试请求模型"""
|
||
ip: str = Field(..., description="设备IP地址")
|
||
port: int = Field(..., description="通信端口号")
|
||
slave_id: int = Field(..., description="从站ID")
|
||
address_type: Optional[ModbusAddressType] = Field(None, description="地址类型")
|
||
address_number: Optional[int] = Field(None, description="地址编号")
|
||
|
||
|
||
# Modbus配置详情返回模型
|
||
class ModbusConfigDetail(BaseModel):
|
||
"""Modbus配置详情返回模型"""
|
||
id: str = Field(..., description="配置ID")
|
||
name: str = Field(..., description="配置名称", min_length=1, max_length=100)
|
||
ip: str = Field(..., description="设备IP地址")
|
||
port: int = Field(..., description="通信端口号")
|
||
slave_id: int = Field(..., description="从站ID")
|
||
address_type: str = Field(..., description="地址类型")
|
||
address_number: int = Field(..., description="地址编号")
|
||
task_id: Optional[str] = Field(None, description="任务ID")
|
||
target_value: Optional[int] = Field(None, description="目标值")
|
||
reset_after_trigger: Optional[bool] = Field(False, description="触发后是否重置")
|
||
reset_signal_address: Optional[int] = Field(None, description="重置信号地址")
|
||
reset_value: Optional[int] = Field(None, description="重置值")
|
||
remark: Optional[str] = Field(None, description="备注")
|
||
status: int = Field(..., description="状态(1:启用, 0:禁用)")
|
||
tenant_id: Optional[str] = Field(None, description="租户ID")
|
||
create_date: Optional[str] = Field(None, description="创建时间")
|
||
update_date: Optional[str] = Field(None, description="更新时间")
|
||
|
||
# Modbus配置列表查询参数
|
||
class ModbusConfigListParams(PaginationParams):
|
||
"""Modbus配置列表查询参数"""
|
||
name: Optional[str] = Field(None, description="配置名称,用于筛选", min_length=1, max_length=100)
|
||
ip: Optional[str] = Field(None, description="设备IP地址,用于筛选")
|
||
|
||
# Modbus配置列表项模型
|
||
class ModbusConfigListItem(BaseModel):
|
||
"""Modbus配置列表项模型"""
|
||
id: str = Field(..., description="配置ID")
|
||
name: str = Field(..., description="配置名称", min_length=1, max_length=100)
|
||
ip: str = Field(..., description="设备IP地址")
|
||
port: int = Field(..., description="通信端口号")
|
||
slave_id: int = Field(..., description="从站ID")
|
||
address_type: str = Field(..., description="地址类型")
|
||
address_number: int = Field(..., description="地址编号")
|
||
target_value: Optional[int] = Field(None, description="目标值")
|
||
remark: Optional[str] = Field(None, description="备注")
|
||
status: int = Field(..., description="状态(1:启用, 0:禁用)")
|
||
create_date: Optional[str] = Field(None, description="创建时间")
|
||
|
||
# Modbus配置列表响应模型
|
||
class ModbusConfigListResponse(PageResult):
|
||
"""Modbus配置列表响应模型"""
|
||
records: List[ModbusConfigListItem] = Field(..., description="配置列表")
|