『瀚思彼岸』» 智能家居技术论坛

 找回密码
 立即注册
查看: 4629|回复: 8

[基础教程] 斐讯蓝牙血压计

[复制链接]

12

主题

63

帖子

895

积分

高级会员

Rank: 4

积分
895
金钱
832
HASS币
0
发表于 2021-12-7 19:03:58 | 显示全部楼层 |阅读模式
本帖最后由 heqicheng 于 2021-12-7 19:28 编辑

直接上结论吧:蓝牙血压计的SERVICE_UUID为01000000-0000-0000-0000-000000000080
订阅通知的CHARACTERISTIC_UUID为02000000-0000-0000-0000-000000000080订阅通知的Descriptor uuid为00002902-0000-1000-8000-00805f9b34fb
发送指令的CHARACTERISTIC_UUID为05000000-0000-0000-0000-000000000080
开始测量的指令为ffff0501fa
停止测量的指令为ffff0504f7


测量过程中,接收到的通知byte数组较长,测量完成后,接收到的byte数组为4位,其中第二位为心率,第三位为上压,第四位为下压,心率数据直接可用,实际上压为第三位+30,实际下压为第四位+30,例如:
byte[] bytes = characteristic.getValue();
                                if (bytes.length != 4) {
                                        showData("正在测量");
                                        return;
                                }
                                String msg = "上压:";
                                int up = Integer.valueOf(bytes[2]) + 30;
                                msg += String.valueOf(up);
                                msg += " 下压:";
                                int down = Integer.valueOf(bytes[3]) + 30;
                                msg += String.valueOf(down);
                                msg += " 心率:";
                                int rate = Integer.valueOf(bytes[1]);
                                msg += String.valueOf(rate);


有了以上信息,就可以自己写代码实现了,无论是app还是esphome都可以。


顺便吐槽一下,拿这个数据真不容易啊,先用国产手机获取hci log,由于获取不了root权限,修改不了/etc/bluetooth/bt_stack.conf文件,里面默认的日志级别是warning,这样拿到的hci log是不完整的,看不到SERVICE_UUID、CHARACTERISTIC_UUID,指令内容也全是0,后来还是翻箱倒柜找到一台上古神器google nexus 6p才搞定
用nexus 6p获取蓝牙指令的过程:
1、root,用面具就可以
2、装re管理器
3、re管理器打开/etc/bluetooth目录,挂载为可读写
4、修改bt_stack.conf,将TRC_XXX=2全部改为TRC_XXX=5
5、进入开发者模式,打开“启用蓝牙HCI信息收集日志”选项
6、重启一下蓝牙
7、微信小程序“指数康康”操作一下血压计
8、此时hci log就已经有记录了,该日志文件存放目录,不同的android版本不一样,例如我的是android 8.1版本,就在data/misc/bluetooth/logs,而android 10则在/data/log/bt 9、安装wireshark,打开下载的hci log,就能看到指令了,protocol选att,info看send write request的就可以,如下图









截图_选择区域_20211207190152.png

评分

参与人数 4金钱 +40 收起 理由
neroxps + 20 墙都不扶,就服楼主!
cpuahqvd + 5
Tao173 + 5 感谢楼主分享!
dscao + 10 感谢楼主分享!

查看全部评分

回复

使用道具 举报

77

主题

1391

帖子

2万

积分

元老级技术达人

积分
24381
金钱
22950
HASS币
290
发表于 2021-12-7 20:29:00 | 显示全部楼层
本帖最后由 dscao 于 2021-12-12 10:31 编辑

这个真搞定了,辛苦了!
有空我看看怎么接入Esphome,不过升级了esphome,之前的meizu组件不兼容,搞得现在不敢刷那个了。看来要再弄一个esp32才行了。
另外其它的蓝牙设备不知能否用相似思路来解决,比如有一款蓝牙抽屉锁的开锁,还有空气果蓝牙款的不知能否读出相关信息。
------
esphome试了不少时间,还是搞不定这个代码怎么写。
回复

使用道具 举报

12

主题

63

帖子

895

积分

高级会员

Rank: 4

积分
895
金钱
832
HASS币
0
 楼主| 发表于 2021-12-7 21:59:48 来自手机 | 显示全部楼层
dscao 发表于 2021-12-7 20:29
这个真搞定了,辛苦了!
有空我看看怎么接入Esphome,不过升级了esphome,之前的meizu组件不兼容,搞得现在 ...

蓝牙锁应该是可以的,空气果应该不用连接,用广播的方式吧,hci log应该也能抓到的。家里温湿度传感器好多了,想有个硬件测量二氧化碳的,貌似都比较贵
回复

使用道具 举报

17

主题

800

帖子

5742

积分

论坛元老

Rank: 8Rank: 8

积分
5742
金钱
4937
HASS币
0
发表于 2021-12-7 22:33:38 | 显示全部楼层
二氧化碳接个MH-Z19就可以了把?
回复

使用道具 举报

40

主题

2176

帖子

8294

积分

元老级技术达人

积分
8294
金钱
6103
HASS币
110
发表于 2021-12-13 13:54:59 | 显示全部楼层
mark 今早还想到家里有个这个东西可能用不了  就看到大佬的帖子了
回复

使用道具 举报

2

主题

367

帖子

2510

积分

金牌会员

Rank: 6Rank: 6

积分
2510
金钱
2138
HASS币
30
发表于 2021-12-14 11:32:02 | 显示全部楼层
楼主厉害,不知道小米的血压计有没有方法接入ha,它走的是wifi。
回复

使用道具 举报

4

主题

166

帖子

1280

积分

金牌会员

Rank: 6Rank: 6

积分
1280
金钱
1114
HASS币
0
发表于 2021-12-14 13:51:56 | 显示全部楼层
厉害,希望早日看到便于使用的成品
回复

使用道具 举报

12

主题

63

帖子

895

积分

高级会员

Rank: 4

积分
895
金钱
832
HASS币
0
 楼主| 发表于 2021-12-14 17:08:47 | 显示全部楼层
fung1006 发表于 2021-12-14 11:32
楼主厉害,不知道小米的血压计有没有方法接入ha,它走的是wifi。

wifi可以试试抓包……不过可能数据会加密的,安卓抓包可以用抓包精灵
回复

使用道具 举报

3

主题

107

帖子

1839

积分

金牌会员

Rank: 6Rank: 6

积分
1839
金钱
1732
HASS币
0
发表于 2022-5-8 22:10:43 | 显示全部楼层
用esphome控制血压计搞定了,就是读数试了几种都不成功,楼主有没有思路
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-11-28 16:05 , Processed in 0.216596 second(s), 35 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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