超越Web,Javascript在物联网的应用
引子
Patrick Catanzariti 是一名Web开发project师,近期他在 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显示屏,即便在阳光直射下也easy读取,耗电量也很低,每周须要冲一次。
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开发板,能够让project师开发出随意与网络连接的硬件设备。通过Spark OS云服务能够给Spark Core设备发送指令。
Javascript交互能力
- Official Spark JavaScript SDK:官方的Javascript SDK。
- spark-ii:用来与Spark设备交互的IO库。
- Sparky:一个很easy的 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开发者还有许多能够做的事情,那么就先从你的设备開始吧!
超越Web,Javascript在物联网的应用的更多相关文章
- Introduction to Object-Oriented JavaScript 转载自:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Introduction_to_Object-Oriented_JavaScript
Introduction to Object-Oriented JavaScript IN THIS ARTICLE JavaScript review Object-oriented program ...
- https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/ReferenceError
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/ReferenceError
- A re-introduction to JavaScript (JS Tutorial) 转载自:https://developer.mozilla.org/en-US/docs/Web/JavaScript/A_re-introduction_to_JavaScript
A re-introduction to JavaScript (JS Tutorial) Redirected from https://developer.mozilla.org/en-US/do ...
- Java web JavaScript DOM 编程
JavaScript DOM 编程 (1).DOM概述及分类 (2).DOM结构模型:XML DOM 和 HTML DOM 关系? (3).结点,结点树,结点属性与方法? 1.DOM是什么? d ...
- WEB javaScript
javaScript 1.常规方法document.write("内容") :书写内容到网页中window.alert("内容") :网页警告弹窗 2.使用方法 ...
- Web | JavaScript的引用数据类型强制转换类型
我在这里主要的想提下的是JavaScript中的引用类型进行强制转换类型.因为对于基本数据类型的变换大多都是雷同的,很容易熟知,但是引用数据类型有一点小插曲. JavaScript的引用类型主要为对象 ...
- 转:[web]javascript 增加表單的input
利用javascript增加form的input 這是js的部份 //用來區分不同input的name var element_count = 0; function add_element(obj) ...
- Object.keys() https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object/keys
Object.keys() 方法会返回一个由一个给定对象的自身可枚举属性组成的数组,数组中属性名的排列顺序和使用for...in 循环遍历该对象时返回的顺序一致 (两者的主要区别是 一个 for-in ...
- Object.create() __https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object/create
Object.create() 方法会使用指定的原型对象及其属性去创建一个新的对象. 语法 Object.create(proto[, propertiesObject]) 参数 proto 新创建对 ...
随机推荐
- 计算机中丢失MSVCP110.dll
1.安装Microsoft visual c++ 2.下载MSVCP110.dll复制到C:\system32 3.使用DirectX修复工具
- CSS基础3——使用CSS格式化元素内容的字体
1.CSS属性单位: (1)长度单位:包含绝对长度单位和相对长度单位 绝对长度单位包含:cm.mm.in.pt.pc等. 绝对长度单位最好用于打印输出设备.在仅作为频幕显示时.绝对长度值并没有什么意义 ...
- Java设计模式菜鸟系列(九)外观模式建模与实现
转载请注明出处:http://blog.csdn.net/lhy_ycu/article/details/39805735 外观模式(Facade):是为了解决类与类之间的依赖关系的,像spring一 ...
- DHCP的工作原理
什么是dhcp?它是如何实现的? DHCP称为动态主机配置协议.DHCP服务允许工作站连接到网络并且自动获取一个IP地址.配置DHCP服务的服务器可以为每一个网络客户提供一个IP地址.子网掩码.缺省网 ...
- 关于C++异常机制的笔记(SEH, try-catch)
昨天晚上加班解决了一个问题,是由于无法正确的捕获到异常导致的.刚开始用try-catch,但是没法捕获到异常:后面改成SEH异常才解决.因此今天将这个问题重新梳理了一遍,关于try-catch, SE ...
- Qt学习之路(58): 进程间交互(QProcess.readAllStandardOutput可以读取控制台的输出)
所谓 IO 其实不过是与其他设备之间的数据交互.在 Linux 上这个概念或许会更加清楚一些.Linux 把所有设备都看作是一种文件,因此所有的 IO 都归结到对文件的数据交互.同样,与其他进程之间也 ...
- 【iOS开发-72】设置状态栏的两种方式、程序生命周期以及更好地理解几大类(对象)之间的关系
(1)设置状态栏的2种方式 --第一种方式就是我们在控制器中设置,系统默认就是交给视图控制器去管理的,这样不同视图控制器能够自己定义不同的状态栏例如以下: -(BOOL)prefersStatusBa ...
- 【linux驱动笔记】linux模块机制浅析
1. 模块module 操作系统分微内核和宏内核,微内核优点,可以使操作系统仅作很少的事,其它事情如网络处理等都作为应用程序来实现,微内核精简的同时,必然带来性能的下降.而linux的宏内核设 ...
- js判断是否为pc端或移动端
function IsPC() { var userAgentInfo = navigator.userAgent; var Agents = new Array("Android" ...
- 经典系统windows xp sp3官方原版下载(附XP序列号)
经典系统windows xp sp3官方原版下载(附XP序列号) 在过几日,微软最新的操作系统windows 7就将像外发售了!虽然Vista操作系统已经问世多年,但XP系统仍然占据着王位,在市 ...