新一代镭豆产品上市之后,我发现新款“呼吸之间”应用为了支持 HomeKit 大变样,导致我的一代镭豆永远无法在 App 里正常工作。跟厂商投诉过两次,每一次都得到热情似火的反馈,但每一次都没有解决问题。一怒之下,决定放弃原厂应用。不就是查一下全家各个房间的 PM 2.5 污染水平吗?我的山寨 Web 界面也挺好用的。
只是这个 Web 界面跑在我家内网的一台服务器上,我还没来得及给它做端口转发,导致我不在家的时候没办法查看数据。虽然可以去 InitialState 吧,但总觉得要点好多次屏幕不方便……于是我开始想,要是能把初代镭豆通过 Homebridge 增加 HomeKit 支持就好了。
需求很简单,就是从网上抓数据,然后模拟成一个空气质量设备。但实现很麻烦,毕竟 Homebridge 插件需要用 nodejs 来写。我虽然会用 Javascript 写浏览器跑马灯特效,但我完全不懂 nodejs 怎么写。还好我认识一位热心肠的高手,正好又发现了一个功能类似(从网上抓数据并模拟空气质量设备)的插件,于是就把需求、参考例子和数据源提供过去。高手不愧是高手,只用了半天就把插件写出来。手工安装之后,工作起来简直就是完美。
腆着脸去问高手能不能发布出来,高手很大方地给了授权,于是就有了这个 Github 项目,以及这个 npm 组件。以下基本上就是此项目的 readme,TL:DR;
用法
- 首先你需要安装 Homebridge,需要帮助的话请访问 Homebridge 的页面;
- 然后通过这个指令安装本插件:
npm install -g homebridge-laser-egg
; - 最后修改
config.json
配置文件增加镭豆设备。
配置
首先需要取得正确的 ID,在我之前那篇文章里提到的方法似乎已经过时,毕竟虽然简单粗糙但可用的“呼吸之间”应用已经升级为漂亮但无法正常工作的 Kaiterra 了……
每一款镭豆都有一个独立的 UDID,但他们的 API 却在使用另一个称为 Laser Egg ID 的 ID。因此,你需要调用一次厂商的 API 来获取 laser_egg_id
才可以,详细步骤如下:
- 打开“呼吸之间”应用(又名 Kaiterra),点击 详情 图标,看上去是一个带有 > 的圆形。
- 点击 配置 图标,看上去是一个带有齿轮的圆形。
- 在 设备信息 部分,你能看到蓝色的 复制 字样,点击它就可以将 UDID 字符串复制到剪贴板。
- 通过 Safari 访问以下链接: http://api-ios.origins-china.cn:8080/topdata/getTopByTimeId?timeId=YOUR_UDID_HERE请将链接中的
YOUR_UDID_HERE
换成上一步复制到的 UDID 字符串。 - 此时你应该能看到一组 JSON 数据,跟在
"id":
之后的那串数字就是 laser_egg_id。请将它复制下来,接下来的配置过程中会用到。
如果有困难,可以参考 Github 项目里的 readme files
文件夹里的截屏,那里有详细的指导。
配置示例
以下是一个配置文件的部分,假设你家有两台镭豆。
{ "accessories":[ { "accessory":"laser-egg", "name":"Laser Egg 1", "laser_egg_id":"12345", "polling":"5" }, { "accessory":"laser-egg", "name":"Laser Egg 2", "laser_egg_id":"12346", "polling":"5" } ] }
如果跟我一样有四台镭豆,就直接复制数组吧。记得遵循 JSON 的数据格式,不要忘记数组后面的半角逗号。
以下是各个字段的含义,所有字段都是必须填写的。
accessory
HomeKit 配件的名称,这里必须使用 “laser-egg
” (全部为小写字母)。name
设备的名字(或昵称),这将显示在 Home 应用里。请不要设置得过长,以免被截断之后难以确认设备的位置。laser_egg_id
这将告诉插件应该去获取哪一个镭豆的数据。polling
数据抓取的间隔,以分钟为单位。我们认为五分钟已经足够,请不要滥用数据接口。
希望这个项目可以帮到大家,让各位早期用户的投资可以得到一定的保护。
此外,题图中的那个界面实际上是来自 Elgato 的 Eve 应用,因为苹果自己的 Home 应用不能读取具体的测量数值,我也不知道为什么这么残废……