WIN平台单文件部署的MQTT轻量级物联网数据平台
轻量物联网平台(Lightweight IoT Platform)
单文件部署的轻量级物联网接入平台:内置 MQTT Broker(自研协议解析,支持 3.1 / 3.1.1 / 5.0)+ Web 管理端 + SQLCipher 整库加密存储,一个 EXE 即可运行,适合局域网 / 小型项目的设备接入、数据查看、报警与远程升级。
功能特性
设备接入:自研 MQTT Broker,支持 MQTT 3.1 / 3.1.1 / 5.0(含 CONNECT/PUBLISH 属性解析),设备用「设备号 + 设备密码」认证,认证后报文免密
产品与物模型:按产品定义属性 / 命令 / 报文解析规则,支持低功耗产品(按最后上线时间 + 自定义超时判定离线)
数据管理:实时 / 历史数据上报入库、时间范围查询、CSV 导出、数据保留策略自动清理
命令下发:设备在线立即下发;设备离线自动排队(pending_cmds),设备上线后 FIFO 补发,超时可配置(默认 30 分钟)
远程升级(FTP):下发升级任务(FTP 地址 + 固件文件),设备上报升级结果,升级列表分页展示
报警:属性上限 / 下限规则,触发 / 消除记录,主页统计
用户与权限:admin / 普通用户两级角色,登录 RSA+OAEP 加密传输,会话超时自动退出,修改密码强制其他会话下线
安全:SQLCipher 整库加密(密钥 db.key)、Web 自签名 HTTPS(可关)、非法 MQTT 连接防御(指纹识别 + 限流记录)
多端适配:Web 界面自适应手机端(卡片式布局),侧边栏可隐藏
技术栈
层 说明
后端 Python 3.9+ / FastAPI / uvicorn,纯标准库实现 MQTT Broker 协议解析
前端 原生 HTML / CSS / JS 单页应用(无框架、无构建),纯 JS 实现 RSA-OAEP 加密
存储 SQLCipher(整库 AES 加密),线程内复用连接
打包 PyInstaller 单文件 EXE(Windows)
快速开始
方式一:EXE(Windows,推荐)
双击 iot-platform.exe 即可,首次启动自动生成加密数据库、密钥与 HTTPS 证书。
Linux(需 Python 3.10+):
chmod +x start.sh && ./start.sh
启动后访问 http://本机IP:8000(HTTPS 开启时为 https://,自签名证书首次访问需信任),默认管理员账号 admin / admin123(登录后请立即修改)。
端口:Web 8000、MQTT 1883,防火墙需放行。
配置(config.json)
{
"web_port": 8000,
"mqtt_port": 1883,
"https": true
}
https 省略时默认开启,证书首次启动自动生成(cert.pem / key.pem),生成失败自动回退 HTTP
源码方式需复制 config.json.example 为 config.json
设备接入协议
项目 值
服务器 平台 IP,端口 1883(MQTT 3.1 / 3.1.1 / 5.0)
用户名 / 密码 设备号 / 设备密码(平台「设备管理」中创建并查看凭据)
上行(设备 → 平台,发布到 device/设备号/up):
实时上报: {"data": {"temp": 365, "hum": 600}}
历史上报: {"ts": 1756368000000, "data": {"temp": 365}}
下行(平台 → 设备,订阅 device/设备号/down):
{"cmd": "setTemp", "params": {"target": 25}}
远程升级:
{"cmd": "upgrade", "params": {"version": "v1.2.0", "ftp_host": "ftp.example.com", "ftp_port": 21, "ftp_user": "user", "ftp_pass": "pass", "ftp_dir": "/firmware", "ftp_file": "fw_v1.2.0.bin"}}
升级完成后设备上报 {"upgrade": {"device_no": "...", "version": "...", "result": 0, "message": "..."}}(result=0 成功)。
属性字段名需与物模型 key 一致;带 expr 的属性上报原始值。完整报文规则见 用户使用手册.md。
测试
平台启动后运行(默认 https://127.0.0.1:8000/api ,账号 admin/admin123):
set IOT_BASE=http://127.0.0.1:8000/api
.venv\Scripts\python test_device.py # 功能回归 29 项
.venv\Scripts\python test_concurrent.py # 多设备多用户并发回归
.venv\Scripts\python test_bad_connect.py # MQTT 非法连接防御
目录结构
app/
main.py # 入口:启动 uvicorn + 内嵌 MQTT Broker
mqtt_broker.py # 自研 MQTT Broker(3.1/3.1.1/5.0 报文解析)
mqtt_client.py # 内部 MQTT 客户端(下发、排队补发)
routes.py # Web API
db.py # SQLCipher 加密存储
rsa_crypto.py # 登录 RSA-OAEP(后端)
tls_cert.py # 自签名 HTTPS 证书
thingmodel.py # 物模型解析
security.py # 会话 / 密码
static/ # 前端单页应用(无构建)
build.bat # PyInstaller 打包脚本
reset_password.bat# 管理员密码重置
部署与备份
EXE 单文件部署:替换服务器上的 iot-platform.exe 重启即可,无需其它依赖
备份:必须成对备份 iot.db + db.key(缺一不可解密)




链接: https://pan.baidu.com/s/1KQUDfIR1QLjROQbR3enMSw?pwd=vstp 提取码: vstp
夸克:
链接:https://pan.quark.cn/s/4a9f96ee1af1?pwd=ZsVG
提取码:ZsVG

浙公网安备 33010602011771号