nodejs 和 homebridge

我前幾天說寫了一個插件,可以讓小米的ZigBee網關與蘋果的HomeKit對接,這個插件寫的差不多了,也已經上傳到了npm社區上面,有興趣的可以去看看:homebridge-aqara。到現在居然有了好幾十個下載,真不知道這些人用來幹什麼,因為網關相應的固件還沒有放出來,估計下周才行。

今天說一下寫這個插件的感受。

先把關係整理一下:

  1. nodejs是一個命令行下的javascript運行環境。

  2. npm是nodejs的插件社區,裡面有無數的好東西和不好的東西,因為是不需要審核的。

  3. homebridge是npm社區上的插件之一,可以虛擬出一個HomeKit網關出來,但並不負責任何設備的適配。

  4. 其它設備要想使用homebridge和HomeKit互通,就要寫一個homebridge的插件,現在這種插件也有上百個了,不信可以自己搜索。
  5. 我自己寫的插件叫做homebridge-aqara,Aqara是做小米多功能網關的深圳綠米聯創的自有品牌,最近出的牆壁開關和空調伴侶都是這個品牌的。

一層層下來,這個插件套插件的關係還是很複雜的。其實背後還有一個要說的,那就是HAP-NodeJS,這個是通過nodejs來模擬一個HomeKit設備用的,homebridge和所有的插件都是基於這個代碼來寫的。而這個代碼是基於黑客對於蘋果HomeKit的反向工程結果來寫的,那個反向工程的文章已經被蘋果法務部要求刪除了。

說了這麼多,大概知道這些是幹啥的了吧,就是把一個設備模擬成蘋果的HomeKit設備,然後就可以在iOS設備裡面使用了。那為什麼需要這麼複雜呢?因為HomeKit是封閉的,不經過蘋果授權是不能使用的,所以開源社區才有了這麼多人才做這些工作。

現在可以說感受了,簡單幾條:

  1. 命令行的開發工具最近十年沒啥大變化。我是在Windows上面寫代碼,在樹莓派的Linux上運行,中間通過ssh傳文件,額外用到的工具是Atom和putty。十年前除了我用的是Editplus之外,並沒有任何區別。
  2. 大家喜歡的開發語言經常有流行趨勢的變化。比如當年用的是perl和python,後來有了ruby,但我沒有用過,曾經一個做網站的哥們和我說ruby非常好用,nodejs我是因為寫這個插件才用上。
  3. 除了log輸出之外,沒有任何好用的debug介面。這個可能是我沒有找到,反正我至今懷念VC6時代寫Win32程序的調試界面,是我看到的頂峰,之後再難超越,尤其是後來寫Android程序之後,才知道微軟領先業界這麼多年。
  4. 開源社區全靠自覺。有的代碼如沐春風,有的代碼不堪入目,但是並沒有歧視,能用就行。我今天發現前幾天上傳上去的代碼是不能在初始狀態下運行的,但是在我的環境下是沒有問題的,這樣的bug其實很多,寫代碼的人一般只管自己爽,別人不爽要別人說出來才知道。
  5. 開源社區已經成為主流社區了。十年前並不是這樣,那時候還是微軟的天下。現在全球最大的男性交友網站github的流量證明了開源社區的主流。
  6. 社區之間的互動也很成熟了。比如npm上面可以把github的地址貼上,這樣反饋問題都去github上面。不過sourceforge好像已經沒落了。

先寫這麼多,就醬。


推薦閱讀:

2 列縮進相比 4 列縮進有什麼壞處?
2018 最好的自動化測試工具(Top 10 回顧)

TAG:编程 | Nodejs | HomeKit |