时间:2025年10月
关键词:JetLinks、Home Assistant、MQTT、物模型、规则引擎、Pegasus智能家居、鸿蒙小车
一、项目背景
在当前物联网(IoT)教学与产业融合趋势下,许多高校正尝试将智能家居控制 与社区级物联网平台 结合,构建从"设备端 → 家庭端 → 社区端"的多层实训体系。
本项目以两套实验设备为基础:
- 🧩 Pegasus智能家居开发套件 ------ 基于 OpenHarmony 的 IoT 入门平台;
 - ⚙️ 玄武 F103 嵌入式实验仪 ------ 以 STM32F103ZET6 为核心的智能家居实验平台。
 
学生通过编程与系统集成,可以亲手实现:
- 智能家居数据采集与远程控制;
 - 家庭自动化控制(Home Assistant 层);
 - 社区级设备管理与大数据分析(JetLinks 平台层)。
 
二、系统总体架构
整个系统采用三层架构:
┌───────────────────────────────┐
│          JetLinks 平台层(社区级) │
│  - 物模型定义 / 规则引擎 / OTA升级 │
│  - 统一管理多个 Home Assistant 实例 │
└──────────────▲────────────────┘
               │ MQTT
               ▼
┌───────────────────────────────┐
│     Home Assistant 家庭层(控制中心)│
│  - 设备联动自动化 / 场景控制        │
│  - Button控制、状态可视化          │
└──────────────▲────────────────┘
               │ MQTT
               ▼
┌───────────────────────────────┐
│ Pegasus / 玄武 嵌入式设备层(终端)│
│  - 温湿度采集 / 电机控制 / 红外检测 │
│  - 执行前进、后退、左转、右转动作  │
└───────────────────────────────┘
        三者通过独立的 Mosquitto MQTT Broker 实现数据交换。
这样不仅保持模块解耦,还便于学生分组调试与扩展。
三、设备与功能设计
1️⃣ Pegasus 智能家居开发套件 → 模拟鸿蒙小车
| 功能模块 | 对应板卡 | 实现内容 | 
|---|---|---|
| 温湿度采集 | 环境监测板(DHT11) | 采集温湿度上报 Home Assistant | 
| 运动控制 | 通用底板 + 智能红绿灯板(LED) | 模拟小车前进/后退/转向(LED亮度表示角度) | 
| 显示输出 | OLED 显示板 | 显示当前方向与速度 | 
| 通信模块 | WiFi SoC Pegasus(H1386JVV100) | 通过 MQTT 与 Home Assistant 通信 | 
Home Assistant 中放置 4 个 Button:
- Forward(前进)
 - Backward(后退)
 - Left(左转)
 - Right(右转)
 
点击后通过 MQTT topic 发送控制指令给 Pegasus,实现动作模拟。
2️⃣ JetLinks 平台 → 社区与多家庭集控层
JetLinks 在本系统中承担"云管平台"的角色,具备三大核心功能:
✅ (1)物模型(Thing Model)
定义每类设备的数据结构,包括:
- 属性(Properties):温度、湿度、方向、角度;
 - 功能(Functions):前进、后退、左转、右转;
 - 事件(Events):如"超温报警"。
 
示例定义(JSON):
            
            
              json
              
              
            
          
          {
  "properties": [
    { "id": "temperature", "name": "温度", "valueType": {"type": "double"} },
    { "id": "humidity", "name": "湿度", "valueType": {"type": "double"} },
    { "id": "direction", "name": "方向", "valueType": {"type": "string"} }
  ],
  "functions": [
    { "id": "moveForward", "name": "前进" },
    { "id": "moveBackward", "name": "后退" },
    { "id": "turnLeft", "name": "左转" },
    { "id": "turnRight", "name": "右转" }
  ]
}
        JetLinks 会根据物模型自动生成交互 API,使设备、规则引擎、可视化面板保持统一语义。
✅ (2)规则引擎(Rule Engine)
相当于平台内的"自动逻辑控制中心"。
举例:
- 当温度 > 40℃ 时,自动下发"停止前进"指令;
 - 当湿度低于 20% 时,通过 MQTT 通知 HA 弹出警报。
 
规则流程图:
[设备属性上报]
       ↓
[条件判断:temperature > 40]
       ↓
[动作:执行函数 stopMove()]
        配置示例(JavaScript表达式):
            
            
              js
              
              
            
          
          return input.temperature > 40;
        ✅ (3)OTA(远程升级)
JetLinks 支持上传 .bin 固件,对 Pegasus 或 STM32 设备进行远程升级。
典型流程:
上传固件 → 创建OTA任务 → 推送设备 → 设备下载并更新 → 上报结果
        设备端订阅:
/device/tempCar001/firmware/update
        上报:
            
            
              json
              
              
            
          
          {"progress": 100, "status": "success"}
        四、通信协议设计
为简化教学,使用 JetLinks 官方 MQTT 协议 (jetlinks-official-protocol)。
Topic 示例:
| 类型 | Topic | 示例 | 
|---|---|---|
| 属性上报 | /report/property/{deviceId} | 
/report/property/tempCar001 | 
| 功能执行 | /invoke/function/{deviceId} | 
/invoke/function/tempCar001 | 
Payload 示例:
            
            
              json
              
              
            
          
          {
  "deviceId": "tempCar001",
  "messageType": "REPORT_PROPERTY",
  "body": { "temperature": 25.5, "humidity": 60 }
}
        JetLinks 自动解析 body 并映射到物模型属性。
若设备发的数据结构不同,也可通过"脚本协议"手动解析。
五、Home Assistant 控制界面配置
MQTT Button 定义
在 configuration.yaml 中添加:
            
            
              yaml
              
              
            
          
          mqtt:
  button:
    - name: "Forward"
      command_topic: "car001/move/forward"
    - name: "Backward"
      command_topic: "car001/move/backward"
    - name: "Left"
      command_topic: "car001/move/left"
    - name: "Right"
      command_topic: "car001/move/right"
        Pegasus 小车端订阅这些 Topic,接收到指令后执行对应动作。
如左转可附带角度值:
            
            
              json
              
              
            
          
          {"action":"left","angle":45}
        六、整合运行步骤
| 步骤 | 操作内容 | 工具/位置 | 
|---|---|---|
| 1 | 安装 Mosquitto MQTT Broker | Ubuntu/Windows | 
| 2 | 部署 Home Assistant(Core 安装) | Python 虚拟环境 | 
| 3 | 启动 JetLinks(使用 Docker) | http://localhost:9000 | 
| 4 | Pegasus 编写 MQTT 客户端 | OpenHarmony IDE | 
| 5 | 在 JetLinks 创建产品、定义物模型 | Web 控制台 | 
| 6 | 在 HA 创建 4 个按钮、配置 MQTT | configuration.yaml | 
| 7 | 启动设备上报数据、测试控制 | MQTTX 或 HA 面板查看 | 
| 8 | JetLinks 开启规则引擎、OTA 实验 | 平台操作 | 
七、方案对比:双层 vs 三层结构
| 方案 | 层次结构 | 优点 | 缺点 | 推荐场景 | 
|---|---|---|---|---|
| A:Home Assistant + 设备 | 二层 | 简单、快速实现 | 无集中管理、数据分散 | 小型实验或家庭应用 | 
| B:JetLinks + HA + 设备 | 三层 | 可管多户、可升级、可数据分析 | 架构复杂一点 | 校企实训、社区级项目 | 
👉 本实训采用 三层方案(推荐),可扩展性强、贴近工业应用。
八、结语:从"玩硬件"到"玩平台"
通过本实训,学生不只是点亮一盏灯、测个温度,而是完整经历:
- 设备侧嵌入式开发(Pegasus / STM32);
 - 家庭级智能控制(Home Assistant 自动化);
 - 平台级物联网运维(JetLinks 云端管理);
 - 协议对接与数据解析(MQTT、物模型、规则引擎)。
 
这正是当下智能物联网岗位所需的核心能力。
从家居实验走向工业级物联网应用,
从"物理连接"到"数据价值",
这,就是物联网教育最有生命力的方向。
📘 下一步扩展建议:
- 集成 JetLinks 时序数据库 InfluxDB 实现数据可视化;
 - 用 Node-RED 或 Vue.js 构建车控仪表盘;
 - 设计多车联动、路径规划、温湿度群控实验。