基于 PyQt6 + PyQtGraph 的深色科技风上位机 GUI 支持实时温度曲线、历史查询、MQTT 自动配置下发、SQLite 数据存储等功能。
- 订阅:
/temp(温度上报)/firstConnect(设备首次上线)
- 新设备上线后可自动提示配置。
每条温度数据均按以下格式写入本地数据库:
| 字段 | 说明 |
|---|---|
mac |
设备 MAC 地址 |
ts_ms |
时间戳(毫秒) |
channel |
温度通道号(1~16) |
value |
对应通道温度值 |
数据库文件:temps_data.db
- 主页面展示选中设备的多通道实时曲线
- 自定义 X 轴:显示分钟:秒.毫秒
- 支持多通道颜色区分
- 实时窗口长度:30 秒
点击设备可打开历史曲线窗口,可选查询区间:
- 最近 30 秒
- 最近 1 分钟
- 最近 5 分钟
- 最近 10 分钟
支持多通道叠加绘图。
- 每个设备均可修改并下发配置:
channelssamplingPeriod
- 下发主题:
/config/<mac> - 配置会本地保存到
devices.config并在程序启动时自动重新下发
程序会尝试自动启动本地 Mosquitto:
- 默认配置路径:
~/config/mosquitto.conf - 若不存在,会尝试用默认参数启动
mosquitto
├── main.py # 主程序
├── temps_data.db # SQLite 数据库(自动生成)
├── devices.config # 设备配置保存文件(自动生成)
└── README.md
确保已安装 Python 3.8+。
pip install PyQt6 pyqtgraph paho-mqtt
(建议使用虚拟环境)
python main.py
程序启动后:
- 会尝试自动启动 Mosquitto
- 自动连接
localhost:1884 - 开始监听温度数据
- 新设备上线会弹出配置窗口
- 点击左侧设备列表即可显示实时曲线
设备发送 /temp 消息格式:
{
"time": "2025-01-01 22:10:30.123",
"mac": "AA:BB:CC:DD:EE:FF",
"temp1": 23.5,
"temp2": 24.2,
...
}
设备首次上线会发送至 /firstConnect:
AA:BB:CC:DD:EE:FF
上位机下发配置(主题 /config/<mac>):
{
"channels": 16,
"samplingPeriod": 1000
}
- sqlite 数据库会不断增大,需定期清理或压缩
- 若 Mosquitto 已被其他服务占用,请修改
MQTT_PORT - 若使用树莓派作为服务器,请确认 MQTT 配置路径
- PyQtGraph 绘图依赖于 GUI 环境,Linux 服务器需安装 X11 才能运行