从 Home Assistant 到 JetLinks:构建双层智能家居与社区管理平台实训全景
在mqtt:button:Pegasus 小车端订阅这些 Topic,接收到指令后执行对应动作。设备侧嵌入式开发家庭级智能控制(Home Assistant 自动化);平台级物联网运维(JetLinks 云端管理);协议对接与数据解析(MQTT、物模型、规则引擎)。这正是当下智能物联网岗位所需的核心能力。从家居实验走向工业级物联网应用,从“物理连接”到“数据价值”,这,就是物联网教育最有生命力的方
时间: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 + 设备 | 三层 | 可管多户、可升级、可数据分析 | 架构复杂一点 | 校企实训、社区级项目 |
👉 本实训采用 三层方案(推荐),可扩展性强、贴近工业应用。
八、结语:从“玩硬件”到“玩平台”
通过本实训,学生不只是点亮一盏灯、测个温度,而是完整经历:
- 设备侧嵌入式开发(Pegasus / STM32);
- 家庭级智能控制(Home Assistant 自动化);
- 平台级物联网运维(JetLinks 云端管理);
- 协议对接与数据解析(MQTT、物模型、规则引擎)。
这正是当下智能物联网岗位所需的核心能力。
从家居实验走向工业级物联网应用,
从“物理连接”到“数据价值”,
这,就是物联网教育最有生命力的方向。
📘 下一步扩展建议:
- 集成 JetLinks 时序数据库 InfluxDB 实现数据可视化;
- 用 Node-RED 或 Vue.js 构建车控仪表盘;
- 设计多车联动、路径规划、温湿度群控实验。
更多推荐
所有评论(0)