我前几天说写了一个插件,可以让小米的ZigBee网关与苹果的HomeKit对接,这个插件写的差不多了,也已经上传到了npm社区上面,有兴趣的可以去看看:
homebridge-aquara
。到现在居然有了好几十个下载,真不知道这些人用来干什么,因为网关相应的固件还没有放出来,估计下周才行。
今天说一下写这个插件的感受。
先把关系整理一下:
- nodejs是一个命令行下的javascript运行环境。
- npm是nodejs的插件社区,里面有无数的好东西和不好的东西,因为是不需要审核的。
- homebridge是npm社区上的插件之一,可以虚拟出一个HomeKit网关出来,但并不负责任何设备的适配。
-
其它设备要想使用homebridge和HomeKit互通,就要写一个homebridge的插件,现在这种插件也有上百个了,不信可以自己
搜索
。
- 我自己写的插件叫做homebridge-aquara,Aquara是做小米多功能网关的深圳绿米联创的自有品牌,最近出的墙壁开关和空调伴侣都是这个品牌的。
一层层下来,这个插件套插件的关系还是很复杂的。其实背后还有一个要说的,那就是
HAP-NodeJS
,这个是通过nodejs来模拟一个HomeKit设备用的,homebridge和所有的插件都是基于这个代码来写的。而这个代码是基于黑客对于苹果HomeKit的反向工程结果来写的,那个反向工程的文章已经被苹果法务部要求删除了。
说了这么多,大概知道这些是干啥的了吧,就是把一个设备模拟成苹果的HomeKit设备,然后就可以在iOS设备里面使用了。那为什么需要这么复杂呢?因为HomeKit是封闭的,不经过苹果授权是不能使用的,所以开源社区才有了这么多人才做这些工作。
现在可以说感受了,简单几条:
- 命令行的开发工具最近十年没啥大变化。我是在Windows上面写代码,在树莓派的Linux上运行,中间通过ssh传文件,额外用到的工具是Atom和putty。十年前除了我用的是Editplus之外,并没有任何区别。
- 大家喜欢的开发语言经常有流行趋势的变化。比如当年用的是perl和python,后来有了ruby,但我没有用过,曾经一个做网站的哥们和我说ruby非常好用,nodejs我是因为写这个插件才用上。
- 除了log输出之外,没有任何好用的debug接口。这个可能是我没有找到,反正我至今怀念VC6时代写Win32程序的调试界面,是我看到的顶峰,之后再难超越,尤其是后来写Android程序之后,才知道微软领先业界这么多年。
- 开源社区全靠自觉。有的代码如沐春风,有的代码不堪入目,但是并没有歧视,能用就行。我今天发现前几天上传上去的代码是不能在初始状态下运行的,但是在我的环境下是没有问题的,这样的bug其实很多,写代码的人一般只管自己爽,别人不爽要别人说出来才知道。
- 开源社区已经成为主流社区了。十年前并不是这样,那时候还是微软的天下。现在全球最大的男性交友网站github的流量证明了开源社区的主流。
- 社区之间的互动也很成熟了。比如npm上面可以把github的地址贴上,这样反馈问题都去github上面。不过sourceforge好像已经没落了。
先写这么多,就酱。
原文
https://zhuanlan.zhihu.com/p/22410207