花了半个下午看看有没有办法从我的划船机导出实时运动数据 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
amet
V2EX    分享发现

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

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

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

    不过,除了边划船边看新闻和讲座,要是能更身临其境一点就好了,比如我已经关注 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
    Hansah
        1
    Hansah  
       176 天前
    往复式的好像都可以用自行车的里程表来计数,不知道你玩过没有,玩过应该知道我说什么
    abcde51111
        2
    abcde51111  
       176 天前 via iPhone
    @siknet 里程表没用,里程表是获取的 GPS 数据好像,可以试试踏频器,获取到频率就可以了
    hanguofu
        3
    hanguofu  
       176 天前
    有意思:) 我觉得 可以把 这些 原始数据 收集起来,在某个 github 上汇总,这样,大家就可以根据这些数据写一些 安卓、linux 的应用练起来~~~
    xyx0826
        4
    xyx0826  
       176 天前
    手机 App 能连接机器蓝牙并显示数据吗?有这个功能的话,可以考虑逆向 App 获得蓝牙数据解析的算法。
    Hansah
        5
    Hansah  
       176 天前
    @abcde51111 普通的码表就是电磁感应啊,很简单的原理,轮胎每走一圈都经过一轮感应器,然后根据周长计数
    amet
      nbsp; 6
    amet  
    OP
       176 天前
    @siknet Open Rowing Monitor 这个项目就是这么做的,不过我看得拆机器才能摸着里面的结构,所以就没弄。而且我还没研究过不同阻力下飞轮的转动和距离是否维持线形关系。
    amet
        7
    amet  
    OP
       176 天前
    @xyx0826 看了下 iOS App 逆向的资料,准备工作确实有一些。也许可以试试 Android App 。
    goodryb
        8
    goodryb  
       175 天前
    有点意思,如果是想玩玩技术可以,如果只是想用的话不如花钱买个成品
    amet
        9
    amet  
    OP
       175 天前
    看了下 Android App ,似乎接收完数据就送到 Flutter 去了,简单搜了下,反编译 libapp.so 好像还没有什么傻瓜式的工具
    korvin
        10
    korvin  
       175 天前
    我的划船机已经被立墙边两年了
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5338 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 24ms UTC 08:16 PVG 16:16 LAX 00:16 JFK 03:16
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86