Mi_Smart_Band_6(小米手环6)心跳PC屏幕显示

Mi_Smart_Band_6(小米手环6)心跳PC屏幕显示

INTRODUCE

​ 为了让用户能明显的看到自己打游戏时的心动值(×,或者写代码时的心动值(ps:我在写这个项目的时候心动值一度到过130),等等,可以让用户快速了解自身状态并作出判断,也可以检测身体健康程度(这样就可以一天写24小时的代码了),还可以在项目的末尾增加心率过高或者过低自动求救的功能(未完成),目前网上都是用obs的浏览器源来进行直播时的心跳显示,这里我们是直接采用pyqt将获取的心跳显示于一个透明窗体直接置顶,这样就可以实时观看了。

TOOL

python+Mi_Smart_Band_6(原则上支持广播的手环应该都行)+PULSOID(Android也可以)

Start

1.将手环所测心跳传至PC

​ 这里我们用了PULSOID,iOS用户可以直接在AppStore里面下载,Android用户可以前往Google下载。

​ PC端直接点击上方超链接过去注册登录就好了。

PC端登录完毕之后

然后我们再对手机操作(以IOS为例)

首先需要打开XiaoMiBand的蓝牙广播和运动心率广播

iOS端的小米运动界面

这里打开完毕之后来到PULSOID界面,登录完毕点击Scan for all BLE devices

PULSOID界面1

然后这里不出意外的话,应该可以看到我们的Mi_Smart_Band_6了,连接上去就好了

PULSOID界面2

连接成功手机就没啥事儿了。

PULSOID界面3

然后在PC端随便选一个Free的主题

PULSOID界面1

PULSOID界面2

然后这个URL一进去就是心跳了。

JMP,我写代码日常心跳100+,震惊

2.用python建立websorket连接

​ 先获取wss,F12,network

image-20220113153653893

然后就是python了。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
import websocket
import _thread
import time
import json

# from show_test import *
import threading
def on_message(ws, message):
print(message)
res=json.loads(message)
print(res['data'])
data=res['data']
heartRate=res['data']['heartRate']
print(heartRate)
#window.ui.Heart.setText("HR:"+str(heartRate))

def on_error(ws, error):
print(error)

def on_close(ws, close_status_code, close_msg):
print("### closed ###")

def on_open(ws):
def run(*args):
i=1
while i>0:
time.sleep(2)
ws.send("Hello %d" % i)
time.sleep(1)
ws.close()
print("thread terminating...")
_thread.start_new_thread(run, ())

def pro_main():

ws = websocket.WebSocketApp("wss链接填入这里",
on_open=on_open,
on_message=on_message,
on_error=on_error,
on_close=on_close)

ws.run_forever(ping_interval=60,ping_timeout=5)
if __name__ == "__main__":
websocket.enableTrace(True)


t = threading.Thread(target=pro_main)

# app=QtWidgets.QApplication(sys.argv)
# window=query_window()
# window.show()
t.start()
# window.ui.Heart.setText(heartRate)
# sys.exit(app.exec_())

然后就可以直接在命令行输出心跳了,剩下的就是QT编写,这个就留着给你们自己设计了,嘻嘻(

PS:对于窗体枚举,游戏是有检测的,所以可能会引起封号。