feat(wits): 添加WITS TCP发送功能和配置重构
- 新增WitsConfig数据类用于WITS配置管理 - 在AppConfig中集成wits配置选项 - 重命名dependencies.py为config.py并重构配置加载逻辑 - 移除db/config.py文件中的TDengine配置相关代码 - 创建新的model.py文件定义MqttConfig、TmsConfig和TdengineConfig模型 - 更新MQTT模块导入路径从config.dependencies到config.config - 添加WITS发送器脚本wits_sender.py实现TCP数据包发送 - 在README.md中添加WITS发送器使用说明和配置选项 - 添加WITS样本数据文件data/wits_sample.txt - 添加requirements.md文档说明项目需求
This commit is contained in:
65
db/config.py
65
db/config.py
@@ -1,65 +0,0 @@
|
||||
from dataclasses import dataclass
|
||||
from urllib.parse import urlparse
|
||||
|
||||
from config import get_value
|
||||
|
||||
|
||||
@dataclass(frozen=True)
|
||||
class TDengineConfig:
|
||||
url: str = ""
|
||||
username: str = ""
|
||||
password: str = ""
|
||||
database: str = ""
|
||||
stable: str = "drilling_realtime_st"
|
||||
device_code: str = "GJ-304-0088"
|
||||
pool_size: int = 2
|
||||
timeout: int = 10
|
||||
|
||||
@property
|
||||
def enabled(self):
|
||||
return bool(self.base_url and self.database and self.username)
|
||||
|
||||
@property
|
||||
def base_url(self):
|
||||
base_url, _ = parse_taos_url(self.url)
|
||||
return base_url
|
||||
|
||||
|
||||
def parse_taos_url(jdbc_url):
|
||||
if not jdbc_url:
|
||||
return "", ""
|
||||
raw = str(jdbc_url).strip()
|
||||
if raw.lower().startswith("jdbc:taos-rs://"):
|
||||
raw = "http://" + raw[len("jdbc:TAOS-RS://") :]
|
||||
elif "://" not in raw:
|
||||
raw = "http://" + raw
|
||||
parsed = urlparse(raw)
|
||||
base_url = f"{parsed.scheme or 'http'}://{parsed.hostname or '127.0.0.1'}:{parsed.port or 6041}"
|
||||
database = (parsed.path or "").strip("/")
|
||||
return base_url, database
|
||||
|
||||
|
||||
def _resolve_raw_config(cfg_or_app):
|
||||
raw = getattr(cfg_or_app, "raw", None)
|
||||
return raw if isinstance(raw, dict) else cfg_or_app
|
||||
|
||||
|
||||
def load_tdengine_config(cfg_or_app, default_device_code="GJ-304-0088"):
|
||||
cfg = _resolve_raw_config(cfg_or_app)
|
||||
url = get_value(cfg, ("tdengine", "url"), ("tdengine-url",), default="")
|
||||
_, database_from_url = parse_taos_url(url)
|
||||
return TDengineConfig(
|
||||
url=url,
|
||||
username=get_value(cfg, ("tdengine", "username"), ("tdengine-username",), default=""),
|
||||
password=get_value(cfg, ("tdengine", "password"), ("tdengine-password",), default=""),
|
||||
database=get_value(cfg, ("tdengine", "database"), ("tdengine-database",), default=database_from_url),
|
||||
stable=get_value(cfg, ("tdengine", "stable"), ("tdengine-stable",), default="drilling_realtime_st"),
|
||||
device_code=get_value(
|
||||
cfg,
|
||||
("tdengine", "device-code"),
|
||||
("tdengine", "equipment-sn"),
|
||||
default=default_device_code,
|
||||
),
|
||||
pool_size=int(get_value(cfg, ("tdengine", "pool-size"), ("tdengine-pool-size",), default=2)),
|
||||
timeout=int(get_value(cfg, ("tdengine", "timeout"), ("tdengine-timeout",), default=10)),
|
||||
)
|
||||
Reference in New Issue
Block a user