为此,我上班摸鱼写了一个 加密中转服务( Go 自托管 / Cloudflare Worker 两种版本)来代替米家 App 完成签名、Cookie 注入。快捷指令只需向中转服务发送一段 JSON ,就能在后台控制米家,包括设备控制和场景触发。
/login/qrcode
,用米家 App 扫码,获得userId / ssecurity (securityToken) / deviceId / serviceToken
四个关键参数。 https://api.io.mi.com
。 示例请求体:
{ "userId": "123456789", "serviceToken": "xxx", "deviceId": "abc123", "securityToken": "Q0eQ7tKq...", // 即 ssecurity "data": { "did": "xxx", "method": "set_props", "params": [ ["power", 1] ] } }
因此直接填写 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 拥有完整设备控制权限,请加密存储 |
隐私泄露 | 服务器可访问全部家庭与设备信息,建议专号 + 内网部署 |
操作 | 请求方式 |
---|---|
读取设备属性 | 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
免责声明:自己玩可以,别滥用,风险自负
![]() | 1 Lentin 65 天前 大部分操作都可以加到 siri 里面再搭配捷径使用的吧……用得到这么折腾吗 |
![]() | 2 19888888888x OP @Lentin 但是没办法做到后台,比如说锁屏情况下的自动运行而且米家那个快捷指令还会有个弹窗很烦 |
3 georgex 65 天前 ha 实现不了吗 |
![]() | 4 OP @georgex 应该也可以,没深入用过 |
![]() | 5 wyd011011daniel 65 天前 感觉可以作为给米家用户轻量化替代,也可以接入其他设备来远程控制。 不过如果有 appletv 或者 homepod 的话我更倾向于 HA 接入苹果家庭。 再者 HA 部署之后内网穿透也一下也能类似效果。 |
6 MacsedProtoss 65 天前 via iPhone 你是否在找:home assistant 这才是正确的打开方式 |
![]() | 7 Kaiyuan 65 天前 本地网关有类似的操作吗? |
8 Lin0000 65 天前 我直接就是 home assistant 里面用 xiaomi home (小米官方开源插件),再接个 home bridge ,直连家庭 |
![]() | 9 icestraw 65 天前 太麻烦了,还搞这些。你只需要笔记本连公网,然后随便写个 API ,用 TTS 说出指令,然后电脑旁边放一个小爱同学就可以了,用不着注入啥的,而且批量执行啥的都能搞定。 |
![]() | 10 CivAx 64 天前 干得不错,但大家都在用 HA |
![]() | 11 19888888888x OP 我注意到大家都在提 HomeAssistant ,我之所以没用这个因为这个需要一台内网服务器/软路由还要配合一个 homekit 音响,娃刚从学校出来实习实在没啥钱盘这些东西,只能出一个简化版本的方案 |
![]() | 12 internelp 64 天前 @19888888888x 玩客云 30 元包邮,podman 启动一个 hass 即可,待机 5W 内。比你用自动化方便多了。 |
![]() | 13 unneeded 64 天前 几十块买个 n1 ,跑 ha 吧,一劳永逸 |
![]() | 14 gigishy 64 天前 via iPhone 我也觉奇怪,用 ha 不好吗? 另,那个坐标转换快捷指令,满网都是一模一样的,是你的原创? |