物联网智能监控系统:搭建 MQTT + AI 模型

一、项目背景

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

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

相关推荐
Omigeq4 小时前
1.4 - 曲线生成轨迹优化算法(以BSpline和ReedsShepp为例) - Python运动规划库教程(Python Motion Planning)
开发语言·人工智能·python·算法·机器人
披星の月4 小时前
一次完整大模型Lora训练实现“AI面试风”
人工智能·大模型
帐篷Li4 小时前
教育部:加快普及中小学生人工智能教育政策汇总
人工智能
网络工程小王4 小时前
【大模型(LLM)的业务开发】学习笔记
人工智能·算法·机器学习
SLAM必须dunk4 小时前
四足强化入门3---Robot Lab重点机器人配置,训练和调参
人工智能·深度学习·机器学习·机器人
AI医影跨模态组学4 小时前
ESMO Open 中国医学科学院肿瘤医院:整合影像组学、病理组学和活检适应性免疫评分预测局部晚期直肠癌远处转移
人工智能·深度学习·机器学习·论文·医学·医学影像
Ztopcloud极拓云视角4 小时前
GPT-6 & DeepSeek V4 双雄临近:企业多模型路由网关实战指南
人工智能·gpt·deepseek·gpt-6
hughnz4 小时前
AI和自动化让油田钻工慢慢消失
大数据·人工智能
不懂的浪漫4 小时前
# mqtt-plus 架构解析(八):Spring Boot 自动装配,这些零件是怎么被粘合起来的
spring boot·后端·物联网·mqtt·架构