引子
Patrick Catanzariti 是一名Web開發工程師,最近他在 sitepoint 發表了《JavaScript Beyond the Web in 2014》,介紹了JavaScript在物聯網中的應用,非常有意思。做為JavaScript的愛好者和從業者,我在這里把它翻譯了,以饗讀者。 順便說一下,就在上周,我們團隊的最新力作“真正的JavaScript控件集”----《新一代JavaScript控件Wijmo 5正式發布》啦。
前言
近十年來Javascript的發展速度非常快,伴隨着Ajax,Node.js等技術的出現,Javascript已經成為編程語言中的一等公民,在Web應用、移動應用以及Web Server端,都可以看見Javascript。在另外一個領域:物聯網(Internet of Things)、智能家居領域,Javascript也有很廣泛的應用。最激動人心的是通過Javascript你可以用來控制移動電話、開關燈具、機器人等等。
去年我寫了一篇文章《JavaScript Beyond the Web》介紹了Javascript在物聯網內的應用。一年過去了,很多新的技術以及智能設備涌現,接下來我們會回顧一下Javascript在這些智能設備上的應用,透過這些這能設備,也許你會有更多的發現。
過去的幾個月內,具有Javascript交互能力的智能設備在逐漸增多。通過智能設備廠商公布的Javascript API文檔,以及社區技術的推進力量,我們確實可以發現越來越多的設備正在具有Javascript交互能力。
智能家居產品
Ninja Sphere
Ninja Sphere 是由來自澳大利亞的Ninja Blocks團隊推出的下一代的智能家居控制器,這個智能設備可以把各種各樣的電子設備加入物聯網,並且通過它可以一一控制這些設備。Ninja Sphere能夠遠程操控已連接的設備,可以通過手勢控制以及查看設備所在位置等等。目前Ninja Sphere可以支持包括具有Bluetooth,BLE,Wi-Fi,Zigbee連接的設備。
JavaScript交互能力
Javascript開發人員可以通過 Ninja Sphere Node.js library 來進行Ninja Sphere應用程序的開發,甚至通過Javascript可以在Ninja Sphere中編寫設備驅動以及設備定義,這無疑是Javascript開發人員的夢想。
Leap Motion
Leap Motion 是一個非常好玩的小裝置,可以通過手勢來控制設備以及應用程序。它可以感知雙手在空氣中的自然移動,精確跟蹤手和手指的運動。以及手指的動作。
在V2版本他們提高了手指追蹤的穩定性,現在甚至可以單獨追蹤手指上的每一個手骨。另外V2版本還提供了另外一個激動人心的特性:虛擬現實,把你的雙手帶進虛擬的3D世界。更多參見:Leap Motion + 虛擬現實。
Leap Motion為Javascript開發人員提供了一個Javascript SDK,並且提供了詳盡的文檔以及大量的例子,更多參見Leap Motion JavaScript framework 。
Pebble Watch
我個人是一個非常狂熱的Pebble watch愛好者,在Apple Watch和Google Wear出現之前,Prebble watch就是一款真正的智能手表,易於使用,但是有着難以置信的功能,同時支持iOS和Android平台。采用了E-Paper顯示屏,即便在陽光直射下也容易讀取,耗電量也很低,每周需要沖一次。
JavaScript交互能力
PebbleKit JavaScript framework :這個框架允許開發人員從雲上獲取數據,獲取設備的物理位置信息等等,為Pebble Watch來構建用戶體驗非常好的應用程序。手表端的App開發需要一些C代碼,但是無需太多的C代碼程序編寫經驗,你可以從官方的例子出發,通過Javascript來構建功能非常強大的手表應用。下面的幾篇文章介紹了如何通過Javascript來編寫Pebble Watch應用:
- Pebble Watch Development with JavaScript – Pebble手表Javascript編程入門。
- Advanced Pebble Watch Configuration – 如何配置Pebble Javascript手表應用。
- Pebble.js – Pebble官方發布的Javascript框架,目前還是beta版本,未來幾個月會發布正式版本。
Oculus Rift
虛擬現實頭盔Oculus Rift讓我們比以往任何時候都更加接近虛擬現實,今年他們發布新版機器:“Crescent Bay”,以及最新的開發工具包:The Developer Kit 2。與此同時Oculus 與三星聯合發布了移動式虛擬現實頭戴設備Gear VR,該設備可與三星手機配套使用,實現虛擬現實互動效果。
JavaScript交互能力
OculusBridge :一個桌面應用程序,包含了一個Javascript庫,開發人員可以基於 Three.js 來構建Oculus Rift Web體驗,支持Windows和Max OSX,可以在Chrome 28,Safari 6以及Firefox 22以上的版本工作。它並沒有提到IE瀏覽器,我不能缺失它是否支持IE。
vr.js :一個Chrome和Firefox插件,可以操作Oculus Rift虛擬現實頭盔,但是它需要NPAPI接口,而Google Chrome已經放棄對該標准的支持,建議使用OculusBridge代替。
Babylon.js and IE11 :如果你正在使用Windows以及IE 11,你可以通過Babylon.js創建一個3D環境,可以構建Oculus Rift虛擬現實體驗。
Cylon
Cylon.js 是一個 JavaScript 框架,用來進行機器人以及物聯網開發。Cylon.js 使得開發人員可以使用同樣的API來操縱不同的設備,這些設備的名單正在逐漸擴大,包括Leap Motion,Pebble手表,Arduinos和Raspberry Pis等等。
Arduino YUN
Arduino YUN 是Arduino發布的最新新列的無線產品,合並了 Arduino 架構和 Linux 系統,Arduino 希望借此產品整合 Linux 強大的功能和 Arduino 的易用性。
Javascript交互能力
- Installing Node.js on the Arduino YUN : 對於Javascript開發人員來講,Linux意味着可以安裝 Node.js 到Arduino上,然后執行Javascript代碼。
- Cylon.js module:支持Arduino YUN的Cylon模塊。
Spark OS
Spark OS 是一個基於雲的,物聯網操作系統。該團隊還擁有Spark Core,Spark Core 是一款完全兼容 Arduino的WiFi開發板,可以讓工程師開發出任意與網絡連接的硬件設備。通過Spark OS雲服務可以給Spark Core設備發送指令。
Javascript交互能力
- Official Spark JavaScript SDK:官方的Javascript SDK。
- spark-ii:用來與Spark設備交互的IO庫。
- Sparky:一個非常簡單的 Node.js 庫。
- Cylon.js module:支持Spark OS的Cylon模塊。
Tessel
Tessel 是一款與 Arduino 和 Spark Core 很類似的板子,但是 Tessel可以直接運行Javascript代碼,幾乎專門為Javascript開發人員設計。它完全兼容基於 Node.js 的各種 package包,可以很好的利用現有的很多資源。
Javascript交互能力
- Official Tessel docs :官方文檔,非常多的例子。
- Cylon.js module:支持Tessel的Cylon模塊。
Espruino
Espruino是一個微處理器的JavaScript解釋器,號稱是全球第一款面向初學者或專家級玩家的Javascript單片機,可以實時的執行你的Javascript。
Javascript交互能力
- Official Espruino docs :官方文檔。
- node-espruino :一個第三方的Node庫,借助於它可以通過Node.js與Espruino進行交互。
Intel Galileo
Intel Galileo是Intel推出的采用x86 構架的 Arduino 開發板,與Arduino YUN一樣,Galileo在板子上也運行着Linux。
Javascript交互能力
- The “bigger” Linux image with Node.js:來自SparkFun的文章,介紹了Intel Galileo如何使用SD卡啟動Linux。
- Intel Galileo Programming with JavaScript and Node.js :非常好的參考文章關於Intel Galileo,Javascript以及Node.js。
- Cylon:支持Intel Galileo的Cylon模塊。
- Galileo-IO module for Johnny-Five:Javascript IO交互模塊。
Google Cardboard
今年的Google I/O大會上最有趣的話題就是:Google Cardboard。一款虛擬現實的紙盒,它的外形雖不起眼,但在完全組裝完成后,Cardboard可以利用用戶的智能手機和內置的一副鏡片,為用戶提供虛擬現實體驗。官方的文章主要在講述如何進行原生的Andriod開發,但是通過Javascript也可以在Chrome進行虛擬現實的體驗。
JavaScript交互能力
- Cardboard Chrome Experiments :包含了大量的演示程序,以及代碼示例。
Myo Armband
炫酷手勢臂環 Myo Armband 允許用戶戴在胳膊前臂上,可以通過動作命令來控制電腦,通過對動作和腦電活動的檢測,Myo Armband可以識別出用戶的手勢活動。
JavaScript交互能力
- MyoJS:一個非官方的Myo Armband Javascript 框架。
Nest
Nest 團隊現在有兩種智能設備,智能溫控器(Nest thermostat)和煙霧報警器(Nest Protect)。今年他們推出了Nest開發者計划,並且公布了Nest API。盡管並沒有Javascript API的說明文檔,但是提供了Javascript操作Nest API的兩個示例程序。
Javascript交互能力
- Official sample JS for the Nest Thermostat:智能溫控器官方示例。
- Official sample JS for the Nest Protect:煙霧報警器官方示例。
- Cylon.js 模塊:支持Nest的Cylon模塊。
結論
如同你看到的,大量的具有Javascript交互能力的智能設備正在快速增長,限於篇幅本文只列舉了上面的設備。在物聯網領域Javascript開發人員還有很多可以做的事情,那么就先從你的設備開始吧!
相關閱讀:
Wijmo已率先支持Angular4 & TypeScript 2.2