引子

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应用:

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交互能力

Spark OS

Spark OS 是一个基于云的,物联网操作系统。该团队还拥有Spark Core,Spark Core 是一款全然兼容 Arduino的WiFi开发板,能够让project师开发出随意与网络连接的硬件设备。通过Spark OS云服务能够给Spark Core设备发送指令。

Javascript交互能力

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交互能力

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在物联网的应用的更多相关文章

  1. 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 ...

  2. 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

  3. 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 ...

  4. Java web JavaScript DOM 编程

     JavaScript DOM 编程 (1).DOM概述及分类 (2).DOM结构模型:XML DOM 和 HTML DOM 关系? (3).结点,结点树,结点属性与方法? 1.DOM是什么? d ...

  5. WEB javaScript

    javaScript 1.常规方法document.write("内容") :书写内容到网页中window.alert("内容") :网页警告弹窗 2.使用方法 ...

  6. Web | JavaScript的引用数据类型强制转换类型

    我在这里主要的想提下的是JavaScript中的引用类型进行强制转换类型.因为对于基本数据类型的变换大多都是雷同的,很容易熟知,但是引用数据类型有一点小插曲. JavaScript的引用类型主要为对象 ...

  7. 转:[web]javascript 增加表單的input

    利用javascript增加form的input 這是js的部份 //用來區分不同input的name var element_count = 0; function add_element(obj) ...

  8. Object.keys() https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object/keys

    Object.keys() 方法会返回一个由一个给定对象的自身可枚举属性组成的数组,数组中属性名的排列顺序和使用for...in 循环遍历该对象时返回的顺序一致 (两者的主要区别是 一个 for-in ...

  9. Object.create() __https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object/create

    Object.create() 方法会使用指定的原型对象及其属性去创建一个新的对象. 语法 Object.create(proto[, propertiesObject]) 参数 proto 新创建对 ...

随机推荐

  1. make报错:"/usr/bin/ld: cannot find -lXXX"

    在编译php时报错如下: # make ... /usr/bin/ld: cannot find -lltdlcollect2: ld returned 1 exit statusmake: *** ...

  2. 使用线程新建WPF窗体(公用进度条窗体)

    使用线程新建窗体 项目中需要一个公用的进度条窗体.大家知道在wpf中,有两个线程,一个是UI线程,另一个是监听线程(一直监听用户的输入).如果我们后台有阻塞UI线程的计算存在,那么界面上的比如进度条什 ...

  3. QTP实践总结

    QTP实践总结 查询数据库修改freq 1.Testcasetable创建查询select * from testcasetable order by fseq desc 2.设计表-选项-修改自动递 ...

  4. Javascript DOM 01 基础篇

    DOM基础   DOM是什么        答:文件对象模型(Document Object Model,简称DOM),DOM可以以一种独立于平台和语言的方式访问和修改一个文档的内容和结构!来自网络 ...

  5. haproxy /admin跳转 不会在接口上再次加上admin

    http://www.xx.com/admin/api/menu [root@wx03 mojo]# cat test.pl use Mojolicious::Lite; use JSON qw/en ...

  6. net core 中间件详解及项目实战

    net core 中间件详解及项目实战 前言 在上篇文章主要介绍了DotNetCore项目状况,本篇文章是我们在开发自己的项目中实际使用的,比较贴合实际应用,算是对中间件的一个深入使用了,不是简单的H ...

  7. c#实现Javascript的encodeURIComponent()函数

    原文  c#实现Javascript的encodeURIComponent()函数 国内外各搜索引擎,均用JavaScript的encodeURIComponent()函数对搜索关键字进行编码,终于找 ...

  8. input标签的hidden属性的应用及作用

    定义:传输关于客户端/服务器交互的状态信息. Transmits state information about client/server interaction. 解释: 此元素在页面中不显示,在 ...

  9. 减少可执行程序size的三个常用软件

    减少可执行程序size的三个常用软件 linux下面,直接用strip 这个命令 #:strip xxx 可以去掉编译调试信息和各种符号表,能够大大减小可执行程序size windows下面这种exe ...

  10. 基于Tire树和最大概率法的中文分词功能的Java实现

    对于分词系统的实现来说,主要应集中在两方面的考虑上:一是对语料库的组织,二是分词策略的制订. 1.   Tire树 Tire树,即字典树,是通过字串的公共前缀来对字串进行统计.排序及存储的一种树形结构 ...