iOS 上的米家自动化替代方案:用快捷指令 + 中转服务实现设备控制

2025 年 8 月 7 日
 19888888888x

背景与痛点

为此,我上班摸鱼写了一个 加密中转服务( Go 自托管 / Cloudflare Worker 两种版本)来代替米家 App 完成签名、Cookie 注入。快捷指令只需向中转服务发送一段 JSON ,就能在后台控制米家,包括设备控制和场景触发。


整体方案

  1. 扫码登录
    访问 /login/qrcode,用米家 App 扫码,获得
    userId / ssecurity (securityToken) / deviceId / serviceToken 四个关键参数。
  2. 快捷指令 POST
    向中转服务 POST 一段 JSON ,由服务器补齐签名后转发至 https://api.io.mi.com
  3. iOS 自动化触发
    无需米家常驻后台,快捷指令在「到达某地点 / 连接某 Wi-Fi 」等场景触发后即刻发请求。

示例请求体:

{
  "userId": "123456789",
  "serviceToken": "xxx",
  "deviceId": "abc123",
  "securityToken": "Q0eQ7tKq...", // 即 ssecurity
  "data": {
    "did": "xxx",
    "method": "set_props",
    "params": [ ["power", 1] ]
  }
}

iOS 定位坐标系坑

因此直接填写 GCJ-02 坐标会出现数百米偏差,导致自动化难以触发。
解决办法:先用快捷指令读取 GCJ-02 → 在线或本地转换为 WGS-84 ,再把转换后的坐标写到自动化里。
我做了一个快捷指令转换示例:https://www.icloud.com/shortcuts/5161a59573f248399e58a8584eb93468


代码与部署

https://gist.github.com/Zayrick/62701850c833c4051356268fa9afc3ff 其中包含一个 sever.go ( Go 版本)和 worker.js ( Cloudflare Worker 版本)

部署详情参照 gist 中的 README.md


风险警告 ⚠️

风险 说明
账号安全 扫码登录使用真实米家账号,存在被封或 Cookie 泄露风险
网络安全 中转服务需走 HTTPS ,防止中间人窃听;同时禁止公网暴露调试接口
设备权限 serviceToken/ssecurity 拥有完整设备控制权限,请加密存储
隐私泄露 服务器可访问全部家庭与设备信息,建议专号 + 内网部署

参考资料

📚 常用米家 API

操作 请求方式
读取设备属性 POST https://api.io.mi.com/app/miotspec/prop/get
设置设备属性 POST https://api.io.mi.com/app/miotspec/prop/set
执行动作 POST https://api.io.mi.com/app/miotspec/action
获取设备列表 POST https://api.io.mi.com/app/home/home_device_list
获取家庭列表 POST https://api.io.mi.com/app/v2/homeroom/gethome_merged
获取场景列表 POST https://api.io.mi.com/app/appgateway/miot/appsceneservice/AppSceneService/GetSceneList

💡 设备控制 API 查这里:https://home.miot-spec.com

免责声明:自己玩可以,别滥用,风险自负 🫡

3081 次点击
所在节点    iOS
14 条回复
Lentin
2025 年 8 月 7 日
大部分操作都可以加到 siri 里面再搭配捷径使用的吧……用得到这么折腾吗
19888888888x
2025 年 8 月 7 日
@Lentin 但是没办法做到后台,比如说锁屏情况下的自动运行🫠而且米家那个快捷指令还会有个弹窗很烦
georgex
2025 年 8 月 7 日
ha 实现不了吗
19888888888x
2025 年 8 月 7 日
@georgex 应该也可以,没深入用过🤔
wyd011011daniel
2025 年 8 月 7 日
感觉可以作为给米家用户轻量化替代,也可以接入其他设备来远程控制。

不过如果有 appletv 或者 homepod 的话我更倾向于 HA 接入苹果家庭。

再者 HA 部署之后内网穿透也一下也能类似效果。
MacsedProtoss
2025 年 8 月 7 日
你是否在找:home assistant
这才是正确的打开方式
Kaiyuan
2025 年 8 月 7 日
本地网关有类似的操作吗?
Lin0000
2025 年 8 月 8 日
我直接就是 home assistant 里面用 xiaomi home (小米官方开源插件),再接个 home bridge ,直连家庭
icestraw
2025 年 8 月 8 日
太麻烦了,还搞这些。你只需要笔记本连公网,然后随便写个 API ,用 TTS 说出指令,然后电脑旁边放一个小爱同学就可以了,用不着注入啥的,而且批量执行啥的都能搞定。
CivAx
2025 年 8 月 8 日
干得不错,但大家都在用 HA
19888888888x
2025 年 8 月 8 日
我注意到大家都在提 HomeAssistant ,我之所以没用这个因为这个需要一台内网服务器/软路由还要配合一个 homekit 音响,娃刚从学校出来实习实在没啥钱盘这些东西,只能出一个简化版本的方案
internelp
2025 年 8 月 8 日
@19888888888x 玩客云 30 元包邮,podman 启动一个 hass 即可,待机 5W 内。比你用自动化方便多了。
unneeded
2025 年 8 月 8 日
几十块买个 n1 ,跑 ha 吧,一劳永逸
gigishy
2025 年 8 月 9 日
我也觉奇怪,用 ha 不好吗?
另,那个坐标转换快捷指令,满网都是一模一样的,是你的原创?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1150813

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX