V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
amet
V2EX  ›  分享发现

花了半个下午看看有没有办法从我的划船机导出实时运动数据

  •  
  •   amet · 71 天前 · 1160 次点击
    这是一个创建于 71 天前的主题,其中的信息可能已经有所发展或是发生改变。

    多年前刷到电视剧《纸牌屋》里有一幕是某人边看新闻边用划船机健身,于是这个想法就深深烙在我脑海里了,以至于直至今日,我虽没完整看过一集纸牌屋,也忘了当初场景里出现的是哪个角色,还是在年初购入了某品牌的磁阻划船机(刚好夹在两次健身器材享受国补之间不是,哥们)。

    不过,除了边划船边看新闻和讲座,要是能更身临其境一点就好了,比如我已经关注 Kayak VR: MirageRoadmap: Rowing machine support 这个议题很久了。

    厂商倒是做了个手机 APP ,用户运动时会播放预先录制好的视频……还有一种就是 3D 游戏,一打开宣传视频就能回到塞班时代……

    那么有没有开放自己动手的选项呢?迪卡侬倒是有 SDK,不过他们家划船机的价格大概是我这款的 3 倍。

    鉴于厂商的网站根本打不开(明明他们 5 月又发布了一款跑步机新品),也不知道有没有支持 FTMS 协议。

    另外有个侵入式的方案 Open Rowing Monitor,通过磁性传感器捕获飞轮的转动情况,推算桨频、速度、功率等数据,我这还没过保修期,只能作罢。

    由于划船机是通过蓝牙与 iOS App 通信的,在 App 里删除配对,再试着用 bleak 扫描蓝牙设备,果然看到了个熟悉的名字。

    成功建立连接后监听所有 notify 消息,收到了来自某个主题持续不断的报文,长度固定为 20 个字节。摆弄下划船机,发现报文有变化,停止摆弄过一会后又不变了,但是与初始报文有所不同。

    那么,如果厂商只是把数据简单拼接起来传输,没有对报文进行二次加密或混淆的话,是不是可以解读出原始数据?试着将每个字节按小端字节序转换为无符号整型,再用 matplotlib 绘制跟踪曲线。20 个数据指标着实有点看花眼,于是设置当一个数据项 10 次报文都相同时,就不再绘制,直到数值发生变化。

    pVFCEOU.png

    果然世界上确实有这等好事,经过一段时间的运动观察,得出结论:

    • byte[4] 似乎和桨频一致
    • byte[9] 应该是某种计数器,每划一次就会加一
    • byte[11] 似乎和里程有着 10 m 为单位的换算关系

    还有一些曲线和做功有明显对应关系,但是机器没有对应的仪表盘,不好判断是什么含义(要不等周一问问客服好了)

    接下来就等哪位大佬做个支持输入数据的 3A 划船游戏了(不是)

    10 条回复    2025-06-10 14:12:08 +08:00
    siknet
        1
    siknet  
       71 天前
    往复式的好像都可以用自行车的里程表来计数,不知道你玩过没有,玩过应该知道我说什么
    abcde51111
        2
    abcde51111  
       71 天前 via iPhone
    @siknet 里程表没用,里程表是获取的 GPS 数据好像,可以试试踏频器,获取到频率就可以了
    hanguofu
        3
    hanguofu  
       70 天前
    有意思:) 我觉得 可以把 这些 原始数据 收集起来,在某个 github 上汇总,这样,大家就可以根据这些数据写一些 安卓、linux 的应用练起来~~~
    xyx0826
        4
    xyx0826  
       70 天前
    手机 App 能连接机器蓝牙并显示数据吗?有这个功能的话,可以考虑逆向 App 获得蓝牙数据解析的算法。
    siknet
        5
    siknet  
       70 天前
    @abcde51111 普通的码表就是电磁感应啊,很简单的原理,轮胎每走一圈都经过一轮感应器,然后根据周长计数
    amet
        6
    amet  
    OP
       70 天前
    @siknet Open Rowing Monitor 这个项目就是这么做的,不过我看得拆机器才能摸着里面的结构,所以就没弄。而且我还没研究过不同阻力下飞轮的转动和距离是否维持线形关系。
    amet
        7
    amet  
    OP
       70 天前
    @xyx0826 看了下 iOS App 逆向的资料,准备工作确实有一些。也许可以试试 Android App 。
    goodryb
        8
    goodryb  
       70 天前
    有点意思,如果是想玩玩技术可以,如果只是想用的话不如花钱买个成品
    amet
        9
    amet  
    OP
       69 天前
    看了下 Android App ,似乎接收完数据就送到 Flutter 去了,简单搜了下,反编译 libapp.so 好像还没有什么傻瓜式的工具
    korvin
        10
    korvin  
       69 天前
    我的划船机已经被立墙边两年了
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   980 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 42ms · UTC 20:03 · PVG 04:03 · LAX 13:03 · JFK 16:03
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.