时间: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):

{
  "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表达式):

return input.temperature > 40;

✅ (3)OTA(远程升级)

JetLinks 支持上传 .bin 固件,对 Pegasus 或 STM32 设备进行远程升级。

典型流程:

上传固件 → 创建OTA任务 → 推送设备 → 设备下载并更新 → 上报结果

设备端订阅:

/device/tempCar001/firmware/update

上报:

{"progress": 100, "status": "success"}

四、通信协议设计

为简化教学,使用 JetLinks 官方 MQTT 协议jetlinks-official-protocol)。

Topic 示例:

类型 Topic 示例
属性上报 /report/property/{deviceId} /report/property/tempCar001
功能执行 /invoke/function/{deviceId} /invoke/function/tempCar001

Payload 示例:

{
  "deviceId": "tempCar001",
  "messageType": "REPORT_PROPERTY",
  "body": { "temperature": 25.5, "humidity": 60 }
}

JetLinks 自动解析 body 并映射到物模型属性。
若设备发的数据结构不同,也可通过“脚本协议”手动解析。


五、Home Assistant 控制界面配置

MQTT Button 定义

configuration.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,接收到指令后执行对应动作。
如左转可附带角度值:

{"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 + 设备 三层 可管多户、可升级、可数据分析 架构复杂一点 校企实训、社区级项目

👉 本实训采用 三层方案(推荐),可扩展性强、贴近工业应用。


八、结语:从“玩硬件”到“玩平台”

通过本实训,学生不只是点亮一盏灯、测个温度,而是完整经历:

  1. 设备侧嵌入式开发(Pegasus / STM32);
  2. 家庭级智能控制(Home Assistant 自动化);
  3. 平台级物联网运维(JetLinks 云端管理);
  4. 协议对接与数据解析(MQTT、物模型、规则引擎)。

这正是当下智能物联网岗位所需的核心能力。
从家居实验走向工业级物联网应用,
从“物理连接”到“数据价值”,
这,就是物联网教育最有生命力的方向。


📘 下一步扩展建议:

  • 集成 JetLinks 时序数据库 InfluxDB 实现数据可视化;
  • 用 Node-RED 或 Vue.js 构建车控仪表盘;
  • 设计多车联动、路径规划、温湿度群控实验。

Logo

欢迎加入我们的广州开发者社区,与优秀的开发者共同成长!

更多推荐