找回密码
 立即注册

微信扫码登录

搜索
查看: 308|回复: 15

[技术讨论] 通过ESP32 接入 各种手环 心率广播进homeassistant V3.1.1

[复制链接]

3

主题

57

回帖

358

积分

中级会员

积分
358
金钱
298
HASS币
0
发表于 昨天 15:12 | 显示全部楼层 |阅读模式
本帖最后由 191442029 于 2025-11-5 13:02 编辑


更新2025年11月5日(beta) ESP32_HRMLink_Fixed修复6 可用.rar (18.73 KB, 下载次数: 4) 安装更新食用说明.rar (3.11 KB, 下载次数: 4)
经本地测试 MQTT 没问题,手环连接因为ESP32本身BLE机制,会强制阻塞30秒,这个版本已经是双核架构了,BLE走core0,WEB MQTT走core1。经测试偶发还有阻塞情况,无法避免。。。
抄作业的一定注意ESP硬件型号!!!!ESP32型号: ESP32 DEV MODULE 。
软件安装 设置等放在食用说明里面了。本人也是小白一个,感谢AI 感谢CURSOR 感谢CLAUDE4.5。照顾病人精力有限,如有BUG。。请将就用用。。。等有精力再更新


wechat_2025-11-05_125501_731.png

MQTT测试正常接收

MQTT测试正常接收




ESP32 Heart Rate Monitor - Fixed WiFi Version
*
* v3.1.1 Web响应和诊断增强(关键BUG修复):
* - 🔧 修复:断开按钮Web页面卡住问题
* - ✅ 所有API响应添加 server.client().flush() 立即发送
* - ✅ 断开按钮添加5秒超时和错误处理
* - ✅ 添加详细的连接诊断日志
* - 📊 显示设备地址、名称、地址长度
* - 📊 显示收藏设备时的完整信息
* - 📊 显示加载收藏时的完整信息
* - 🔍 帮助定位"直接连接成功,自动连接失败"的问题
*
* v3.1.0 命令队列机制(重大优化):
* - 🎯 实现命令队列,Web请求立即响应,不再阻塞
* - ✅ 按钮点击加入队列,BLE任务异步执行
* - ✅ 队列大小:10个命令
* - ✅ 支持命令:启动自动连接、断开连接
* - ⚡ Web界面响应速度大幅提升(从30秒阻塞降至<100ms)
* - 🔄 BLE任务每200ms检查队列,快速响应用户操作
* - 📊 详细的命令入队/出队日志
*
* v3.0.6 连接诊断增强(调试优化):
* - 📊 添加详细的连接过程日志
* - ✅ 显示 "This may take up to 30 seconds, please wait..."
* - ✅ 显示内存状态和BLE地址信息
* - 🔍 帮助用户理解连接过程需要时间
* - 📝 改进日志格式,更清晰的状态提示
*
* v3.0.5 连接中断响应优化(关键修复):
* - 🔧 修复:点击"断开设备"后重试循环仍在继续的问题
* - ✅ connectToDevice() 每次重试前检查 manualDisconnect
* - ✅ 2秒等待改为20次x100ms,每100ms检查一次断开标志
* - ⚡ 断开响应时间从最多96秒缩短到最多100ms
* - 📊 添加 "Connection aborted" 日志提示
* - 🎯 用户点击断开后立即中止连接尝试
*
* v3.0.4 多核竞争条件修复(关键BUG修复):
* - 🔧 修复:点击"启动自动连接"后连接不上的问题
* - 🔧 修复:点击"断开设备"后仍在尝试连接的问题
* - 🔒 完善:所有共享变量访问都使用互斥锁保护
* - ✅ handleApiAutoConnect() 使用互斥锁
* - ✅ handleApiDisconnect() 使用互斥锁
* - ✅ connectNextFavoriteDevice() 完善互斥锁
* - ✅ connectToDevice() 使用互斥锁更新状态
* - ✅ notifyCallback() 使用互斥锁更新心率
* - ✅ readBattery() 使用互斥锁更新电量
* - 🎯 彻底解决双核竞争条件问题
*
* v3.0.3 连接稳定性增强(多次重试):
* - 🔧 修复:华为手环连接失败的问题
* - 🎯 新增:3次重试机制,每次间隔2秒
* - ✅ 每次尝试独立的BLE客户端创建和连接
* - ✅ 详细的连接日志(显示每次尝试的耗时)
* - 💪 提升连接成功率,适应华为/小米设备特性
* - 📊 连接失败时提供详细的排查建议
* - ⚡ 去除不兼容的地址类型API(ESP32库不支持)
*
* v3.0.2 自动连接控制优化(关键逻辑修复):
* - 🔧 修复:收藏设备后立即自动连接的问题
* - 🎛️ 新增:autoConnectEnabled 标志控制自动连接
* - ✅ 用户收藏设备后不会立即连接(可以继续收藏其他设备)
* - ✅ 只有点击"启动自动连接"按钮才开始连接
* - ✅ 断开/超时后自动切换(如果之前已启用自动连接)
* - 🎯 完全的用户控制,不会意外触发连接
*
* v3.0.1 双核版本线程安全修复(关键BUG修复):
* - 🔧 修复:收藏设备时Web页面卡死的严重BUG
* - 🔒 完善互斥锁保护:addFavorite(), removeFavorite(), isFavorite()
* - 🔒 完善互斥锁保护:saveFavorites(), connectNextFavoriteDevice()
* - 📋 使用数据副本避免长时间持锁
* - ✅ 彻底解决双核竞争条件问题
* - 🎯 真正的线程安全实现
*
* v3.0.0 双核优化版本(重大更新):
* - 🚀 启用 ESP32 双核处理器架构
* - 💪 Core 0: BLE 连接任务(后台运行,不阻塞)
* - 💪 Core 1: Web 服务器 + MQTT(主循环,高响应)
* - 🔒 互斥锁保护共享变量(线程安全)
* - ⚡ Web 页面响应速度显著提升(不再被 BLE 阻塞)
* - 🎯 BLE 连接在后台并行进行,不影响 Web 访问
* - 📡 MQTT 发送更稳定,不受连接过程影响

* - ✨ 真正的多任务并行处理
---------------------------------------------------------------------------------------------------------------------------

微信截图_20251104151123.png 微信截图_202511041511139.png

测试稳定后放出固件。。。arduino IDE写入,涉及到的变量改自己的。。。尤其是WIFI,先测试了 还不是很稳定。MQTT win平台上测试正常,ESP32暂时还未测试,不过问题应该不大。。。



ESP32_HRMLink_Fixed2.82.rar (13.37 KB, 下载次数: 7)    yaml相关设置.rar (3.22 KB, 下载次数: 6)

配合串口 监视器获取ESP32 IP地址,浏览器打开,每次操作一定要慢。。要等浏览器转圈转完。单个手环的直接扫描设备,点击连接即可。2个手环及以上的建议先收藏,每次收藏点击完了最好等转圈转完,再点击收藏另一个手环,然后1分钟后会自动连接收藏的手环,或者手动点击连接就OK了。。自动切换手环的时间是20秒,判断依据是蓝牙设备离开范围,或者取下后获取到的心率为0,才会触发!  MQTT就不用说了吧。。


切记 一定要慢操作,因为ESP32这个可怜的处理能力。。BLE扫描时会阻塞WEB。。。。没反应的时候直接断电。。或者去喝杯咖啡。。








回复

使用道具 举报

7

主题

76

回帖

1145

积分

金牌会员

积分
1145
金钱
1062
HASS币
0
发表于 昨天 15:24 | 显示全部楼层
赞赞赞 大佬牛
回复

使用道具 举报

3

主题

57

回帖

358

积分

中级会员

积分
358
金钱
298
HASS币
0
 楼主| 发表于 昨天 15:29 | 显示全部楼层

我也是小卡拉米,现在只能说能用,还会报错。。。慢慢改
回复

使用道具 举报

7

主题

76

回帖

1145

积分

金牌会员

积分
1145
金钱
1062
HASS币
0
发表于 昨天 15:32 | 显示全部楼层
191442029 发表于 2025-11-4 15:29
我也是小卡拉米,现在只能说能用,还会报错。。。慢慢改

不要低调,能搞出来你就是最牛的
回复

使用道具 举报

3

主题

57

回帖

358

积分

中级会员

积分
358
金钱
298
HASS币
0
 楼主| 发表于 昨天 15:41 | 显示全部楼层
cokeii 发表于 2025-11-4 15:32
不要低调,能搞出来你就是最牛的

有ESP32的先测试吧。。。不是很稳定 还在改
回复

使用道具 举报

194

主题

2930

回帖

9532

积分

元老级技术达人

积分
9532
金钱
6393
HASS币
80
发表于 昨天 16:19 | 显示全部楼层
通过mqtt接入ha的是把
回复

使用道具 举报

3

主题

57

回帖

358

积分

中级会员

积分
358
金钱
298
HASS币
0
 楼主| 发表于 昨天 16:25 | 显示全部楼层
bugensui 发表于 2025-11-4 16:19
通过mqtt接入ha的是把

对MQTT 就不用说太多了吧。。。
回复

使用道具 举报

4

主题

124

回帖

1447

积分

金牌会员

积分
1447
金钱
1319
HASS币
10
发表于 昨天 17:14 | 显示全部楼层
赞赞赞 大佬牛
回复

使用道具 举报

1

主题

62

回帖

275

积分

中级会员

积分
275
金钱
212
HASS币
0
发表于 昨天 17:19 | 显示全部楼层
赞赞赞 大佬牛
回复

使用道具 举报

3

主题

57

回帖

358

积分

中级会员

积分
358
金钱
298
HASS币
0
 楼主| 发表于 昨天 17:28 | 显示全部楼层
小更新一下,欢迎测试 有问题回复。。。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Hassbian ( 晋ICP备17001384号-1 )

GMT+8, 2025-11-5 20:22 , Processed in 0.128411 second(s), 8 queries , MemCached On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表