一、项目背景

这不是一个实践应用项目,只是一个摸索,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%

**如果这篇文章对你有帮助,欢迎点赞、收藏、转发!**

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐