一、项目背景
这不是一个实践应用项目,只是一个摸索,AI在物联领域赋能的验证测试,希望给大家思路和启发。在物联网设备大规模部署的背景下,如何高效地监控海量设备、快速识别异常、智能分析数据成为核心挑战。本文分享一个完整的物联网智能监控系统DEMO,涵盖:
-
MQTT 协议接入
-
多协议数据解析(JSON/NMEA/TLV/Modbus/CoAP)
-
向量数据库 + 时序数据库
-
大模型意图识别 + 工具调用
-
异常检测 + 自动训练
**技术栈**:Python + Ollama + ChromaDB + SQLite + Streamlit
二、系统架构
┌─────────────────────────────────────────────────────────────┐
│ 物联网设备层 │
│ GPS设备 │ 传感器设备 │ 摄像头 │ 其他IoT设备 │
└─────────────────────────────────────────────────────────────┘
↓ MQTT / RTSP
┌─────────────────────────────────────────────────────────────┐
│ 数据接入层 │
│ MQTT 监控 │ 摄像头监控 │
└─────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────┐
│ 协议识别层 │
│ 11种协议识别器(JSON/NMEA/GNSS/TLV/Modbus/CoAP/...) │
└─────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────┐
│ AI 智能层 │
│ 意图识别(微调模型) │ 视觉分析 │ 对话 │ 工具调用 │
└─────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────┐
│ 存储层 │
│ ChromaDB(指纹库) │ SQLite(时序库) │ 告警日志 │
└─────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────┐
│ 应用层 │
│ Web界面 │ 仪表盘 │ 告警通知 │ 反馈学习 │ 自动训练 │
└─────────────────────────────────────────────────────────────┘
三、核心功能实现
3.1 MQTT 数据接入
import paho.mqtt.client as mqtt
MQTT_BROKERS = [
{"host": "IP", "port": 1883},
{"host": "IP", "port": 1883}
]
def on_message(client, userdata, msg):
payload_str = msg.payload.decode('utf-8')
process_data(payload_str, msg.topic, broker_str)
3.2 协议识别器(11种格式)
|------------------------------|------------------------------|
| 识别器 | 说明 |
| JsonRecognizer | 标准 JSON |
| Base64JsonRecognizer | Base64JsonRecognizer |
| ModbusRecognizer | Modbus RTU/TC |
| BinaryRecognizer | 二进制兜底 |
| NmeaRecognizer | NMEA 定位协议 |
| ...... | .... |
3.3 意图识别(微调模型 + qwen3:0.6b)
USE_FINETUNED_MODEL = True
FALLBACK_MODEL = "qwen3:0.6b"
def identify_intent(prompt):
if _intent_classifier:
result = _intent_classifier(prompt)[0]
return result['label'].split('_')[-1]
resp = requests.post(
"http://localhost:11434/api/generate",
json={"model": FALLBACK_MODEL, "prompt": prompt}
)
return resp.json()["response"]
3.4 工具调用(Function Calling)
TOOLS = [
{"name": "get_weather", "description": "获取天气"},
{"name": "get_device_status", "description": "获取设备状态"},
{"name": "get_device_list", "description": "获取设备列表"},
]
def chat_with_function_calling(user_message):
response = requests.post(
"http://localhost:11434/api/chat",
json={"model": "llama3.2:3b", "messages": messages, "tools": TOOLS}
)
return response.json()["message"]["content"]
3.5 自动训练(随机森林)
def full_train():
data = get_all_data()
X, y = prepare_features(data)
model = RandomForestClassifier(n_estimators=100)
model.fit(X, y)
joblib.dump(model, "models/device_identifier_latest.pkl")
四、部署与运行
安装依赖
pip install -r requirements.txt
拉取模型
ollama pull qwen3:0.6b
ollama pull llama3.2:3b
ollama pull qwen3-vl:4b
ollama pull mxbai-embed-large
启动服务
python mqtt_auto_ai.py # 终端1
streamlit run web_app.py # 终端2
五、技术亮点
1. **多协议识别**:11 种协议识别器,覆盖主流物联网格式
2. **混合 AI 架构**:微调模型做分类 + LLM 做对话
3. **双数据库**:向量库存指纹,时序库存原始数据
4. **自动训练闭环**:数据积累 → 自动训练 → 模型更新
5. **反馈学习**:用户纠正入库,系统越用越准
6. **完全离线**:所有模型本地部署,数据不外传
六、效果展示
对话示例
用户: 有多少个设备?
系统: 当前共有 45 个设备
用户: XXXX 状态
系统: 设备XXX 最新状态:温度25.5°C,湿度60%,状态正常
用户: 成都天气怎么样
系统: 成都天气:晴,温度25°C
训练效果
设备识别模型准确率: 98.05%
LSTM 异常检测: 已训练
时序数据积累: 5000+ 条
七、项目结构
D:\py\
├── mqtt_auto_ai.py # MQTT 监控主程序
├── web_app.py # Streamlit Web 界面
├── camera_ai.py # 摄像头监控
├── ai_intent.py # 意图识别模块
├── ai_tools.py # 工具函数
├── fingerprint_utils.py # 指纹库管理
├── protocol_recognizer/ # 11种协议识别器
├── full_train.py # 全量训练脚本
├── timeseries.db # 时序数据库
├── device_fingerprints_db/ # 向量数据库
└── models/ # 训练好的模型
八、总结
已完成
-
✅ MQTT 多 Broker 数据接入
-
✅ 11 种协议自动识别
-
✅ 设备 ID 智能提取
-
✅ 意图识别 + 工具调用
-
✅ 双数据库存储
-
✅ LSTM + IsolationForest 异常检测
-
✅ 随机森林自动训练(98% 准确率)
-
✅ Web 可视化界面
-
✅ 反馈学习闭环
可以参考的模型清单
一、Ollama 部署的模型(4个)
| 模型 | 大小 | 用途 |
|---|---|---|
| <b>qwen3:0.6b</b> | 522 MB | 意图识别 |
| <b>llama3.2:3b</b> | 2.0 GB | 对话生成、工具调用 |
| <b>qwen3-vl:4b</b> | 3.3 GB | 视觉分析、图片理解 |
| <b>mxbai-embed-large</b> | 669 MB | 文本向量化(1024维) |
二、自训练模型(4个)
| 模型 | 类型 | 用途 | 准确率 |
|---|---|---|---|
| <b>微调意图识别</b> | BERT 分类 | 意图分类加速 | 99% |
| <b>LSTM 异常检测</b> | 神经网络 | 时序异常检测 | 已训练 |
| <b>IsolationForest</b> | 随机森林 | 数值异常检测 | 在线学习 |
| <b>设备识别模型</b> | 随机森林 | 识别设备类型 | 98% |
**如果这篇文章对你有帮助,欢迎点赞、收藏、转发!**