HoloCubic_AIO心跳APP全攻略:MQTT两台小电视远程互动设置详解
【免费下载链接】HoloCubic_AIOHoloCubic超多功能AIO固件 基于esp32-arduino的天气时钟、相册、视频播放、桌面投屏、web服务、bilibili粉丝等项目地址: https://gitcode.com/GitHub_Trending/ho/HoloCubic_AIO
HoloCubic_AIO 是一款运行在 ESP32 平台上的 HoloCubic 小电视超多功能固件,其中内置的心跳 APP支持通过MQTT 消息协议让两台小电视实现远程互动:任意一台"发送心跳",另一台屏幕就会跳动一颗爱心并累计接收次数,非常适合情侣或好友之间跨房间、跨地点的实时互动。本文将带你快速完成心跳 APP 的 MQTT 配置,并手把手搞定两台小电视远程互动设置。
一、心跳APP是什么?
心跳 APP 是 HoloCubic_AIO 固件中的一款独立小程序,基于 MQTT 的发布/订阅机制实现设备间通信。它最大的特点是:
- 📡无线互动:两台小电视只要连上同一个 MQTT 服务器,就能互相"感应",无需蓝牙或同网段限制。
- 🎯三种动画状态:屏幕上会以不同动画区分"我发送 / 我接收 / 双方心跳",直观反馈互动结果。
- 🔢实时计数:界面实时显示"已发送 X 次,接收到 Y 次",让互动更有仪式感。
HoloCubic_AIO 采用低耦合模块化框架,所有 APP 都遵循统一的APP_OBJ接口,由中央 Controller 统一调度。心跳 APP 也是其中之一,你可以在 AIO_Firmware_PIO/src/app/ 目录下看到它的位置。
三种动画状态一览
心跳 APP 的三种状态在 AIO_Firmware_PIO/src/app/heartbeat/heartbeat_gui.h 中定义,对应不同的动画素材:
| 状态 | 含义 | 动画帧数 | 素材 |
|---|---|---|---|
SEND | 本机发送心跳 | 9 帧 | 射箭动画 archerS |
RECV | 本机接收对端心跳 | 10 帧 | 射箭动画 archerR |
HEART | 双方已互动(收发都有) | 20 帧 | 跳动爱心 heart |
💡 只有当发送计数 > 0 且 接收计数 > 0时,屏幕才会切换为最"甜"的**跳动爱心(HEART)**动画。
二、两台小电视是怎么"对话"的?
理解互动原理,才能更好地完成两台小电视远程互动设置。核心机制如下:
- 统一主题:每台小电视都订阅并发布到同一主题
/cubic/hb/{QQ号},主题由你填的 QQ 号拼接而成(见 heartbeat.cpp)。 - 发送身份:设备把本机 MAC 地址作为消息内容发布出去,相当于"这是我的心跳"。
- 判定对端:当收到一条消息时,设备会比对消息内容是否等于本机 MAC——
// 收到消息:不是我自己发的(来自对端)→ 触发爱心 if (strcmp(hb_cfg.mac_id, (char *)payload)) // 判定为对端心跳,APP_MESSAGE_MQTT_DATA → 播放 HEART else // 是自己发出去的消息,忽略对应源码逻辑见 heartbeat.cpp。
📌关键结论:只要两台小电视填相同的 QQ 号(即订阅同一主题),并且连上同一个 MQTT 服务器,它们就能互相收到对方心跳并触发爱心动画。
三、心跳APP的MQTT配置步骤
心跳 APP 的所有参数都可以通过小电视内置的Web 配置页面完成,无需刷代码。
进入 Web 配置页
- 小电视开机并连接2.4G WiFi后,进入"设置",查看设备 IP 地址。
- 手机/电脑浏览器访问
http://设备IP,进入 HoloCubic 配置主页。 - 点击顶部菜单中的"心跳"标签(路由
/heartbeat_setting),即可看到心跳 APP 的配置表单。
该页面由 AIO_Firmware_PIO/src/app/server/web_setting.cpp 渲染,点击"保存"后会通过/saveHeartbeatConf接口把参数写入 Flash。
配置项说明
| 配置项 | 说明 | 建议值 |
|---|---|---|
| Role | 角色(0:heart / 1:beat,目前无实际作用) | 0 |
| QQ num | 互动主题标识,两台必须一致 | 随意,如100001 |
| MQTT Server | MQTT 服务器地址(域名或 IP) | climbsnail.cn |
| MQTT 端口号 | 服务器端口 | 1883 |
| MQTT 用户名 | 服务端账号(可不填) | HoloCubic |
| MQTT 密码 | 服务端密码(可不填) | ClimbSnail.v0 |
✅默认服务器:固件预置了作者提供的公共 MQTT 服务器(
climbsnail.cn:1883,见 heartbeat.cpp),两台小电视直接用默认值即可快速上手,无需自己搭建服务器。若需私有化,可替换为你自己的 MQTT Broker。
⚠️ 两台小电视的QQ num与MQTT 服务器/端口必须完全一致,否则收不到对方心跳。
四、两台小电视远程互动完整操作流程
配置完成后,两台小电视即可开始互动,步骤如下:
- A、B 两台小电视分别进入 Web 配置页 → 心跳 → 填入相同的 QQ 号和相同的 MQTT 服务器→ 保存。
- 两台设备都通过摇杆/按键进入心跳 APP。
- 进入 APP 时会自动发送一条心跳(
send_cnt从 0 自动 +1),此时对端会立即收到。 - 向前推一下 MPU6050(GO_FORWARD 动作)可再主动发送一条心跳,屏幕播放射箭动画。
- 对端收到后,
recv_cnt增加并播放跳动爱心,同时界面显示"已发送 X 次,接收到 Y 次"。
整个发送/接收/状态判定流程见 heartbeat.cpp,其中heartbeat_process负责处理按键、自动发送与动画刷新。
🎉 小技巧:两台设备各自进入 APP 会自动互发,几乎瞬间就能看到对方屏幕出现爱心,无需反复按键。
五、常见问题排查
| 现象 | 可能原因 | 解决办法 |
|---|---|---|
| 收不到对方心跳 | QQ 号不一致 / 服务器不同 | 确认两台 QQ num 与 MQTT 服务器完全相同 |
| 一直连不上 MQTT | 非 2.4G WiFi / 网络不稳 | 使用 2.4G 网络,检查服务器是否可访问 |
| 只有发送没有爱心 | 只有一台在发送 | 两台都需进入 APP 触发自动发送 |
| 心跳 APP 不显示 | APP 未编译进固件 | 确认APP_HEARTBEAT_USE为 1(见 app_conf.h) |
固件配置开关、MQTT 客户端库分别位于 AIO_Firmware_PIO/src/app/app_conf.h 和 AIO_Firmware_PIO/lib/pubsubclient/。
六、相关源码与文件路径
想在源码层面深入了解心跳 APP 的 MQTT 实现,可参考以下文件:
- 心跳 APP 主逻辑:heartbeat.cpp
- 心跳界面与三种动画状态:heartbeat_gui.c
- APP 头文件:heartbeat.h
- Web 配置页面渲染:web_setting.cpp
- MQTT 通信库:AIO_Firmware_PIO/lib/pubsubclient/
- APP 编译开关:AIO_Firmware_PIO/src/app/app_conf.h
🎈 至此,你已经完全掌握 HoloCubic_AIO心跳 APP的MQTT 配置与两台小电视远程互动设置。只要保证两台设备使用相同的 QQ 号与同一个 MQTT 服务器,就能随时随地让两颗屏幕上的爱心为彼此跳动。
【免费下载链接】HoloCubic_AIOHoloCubic超多功能AIO固件 基于esp32-arduino的天气时钟、相册、视频播放、桌面投屏、web服务、bilibili粉丝等项目地址: https://gitcode.com/GitHub_Trending/ho/HoloCubic_AIO
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考