详解JavaScript在物联网中的应用

简介:

凡是能用JavaScript写出来的,最终都会用JavaScript写出来。

—— Atwood定律

在那篇《最流行的编程语言JavaScript能做什么?》里,我们列举了JavaScript在不同领域的使用情况,今天让我们来详解一下JavaScript在物联网中的应用。

基础:物联网的三个层级

开始之前, 先让我们简单地介绍点物联网的基础知识。如果你有点Web开发经验的话,都知道下图是CS架构:

相比于一个物联网系统,无非就是多了一层硬件层以及可选的协调层。

这个硬件层决定了物联网应用比Web应用更加复杂。对于大部分的Web应用来说 ,客户端都是手机、电脑、平板这些设备,都有着强大的处理能力,不需要考虑一些额外的因素。

对于物联网应用来说,我们需要考虑设备上的MCU的处理能力,根据其处理能力和使用环境使用不同的通信协议,如我们在一些设备上需要使用CoAP协议。在一些设备上不具备网络功能,需要考虑借助于可以联网的协助层,并且还需要使用一些短距离的无线传输协议,如低功耗蓝牙、红外、Zigbee等等。

一个物联网系统:六种语言

两年半以前,大四,电子信息工程,我选定的毕业论文是一篇关于物联网的论文——《基于REST服务的最小物联网系统设计》。这是一篇入门级的物联网论文,如果大部分学习CS的人有一点硬件基础,都能写出这样的论文。

这篇论文是之前参加比赛的作品论文的“最小化”,里面使用到的主要就是创建RESTful服务,而它甚至称不上是一种技术。在这个作品里:

我们使用Python语言里的Django框架作为Web服务框架,使用Django REST Framework来创建RESTful服务。

为了使用手机当控制器,我们还要用Java写一个Android应用。

我们使用Raspberry Pi作为硬件端的协调层,用于连接网络,并传输控制信号给硬件。

我们在硬件端使用Arduino作为控制器,写起代码特别简单,可以让我们关注于业务。

最后,我们还需要在网页上做一个图表来显示实时数据。

所有的这些,我们需要使用Python、Java、JavaScript、C、Arduino五种语言。而如果我们要写相应的iOS应用,我们还需要Objective-C。

JavaScript在物联网领域的发展

同样的,两年多以前,刚实习,在我们的项目里,我们的新项目里我们使用Backbone作为单页面应用框架的核心来打造Web应用。这时,我开始关注Node.js实现物联网应用的可能性。

当时,已经有了物联网协议MQTT和CoAP协议的库,于是我照猫画虎地写了一个支持HTTP、CoAP、WebSocket和MQTT的物联网。由于,当时缺乏一些大型应用的开发经典,所以做得并不是很好,但是已经可以看到JavaScript在这方面的远景。


一年多以前,Ionic还没推出正式版的时候,我发现到了这个框架真的很棒——它自带了一系列的UI,还用NgCordova集成了Cordova的一系列插件。我便开始使用Ionic写了一些移动应用,发现还挺顺手的。接着,我就开始拿这个框架尝试写物联网应用,这需要一些原生的插件,如BLE、MQTT。后来,我也写了一个简单的CoAP插件。

后来我们不再需要编译Node.js,就可以在ARM处理器上运行Node.js。并且我们已经有Tessel、Espruino、Kinoma Create、Ruff这些可以直接运行JavaScript的开发板。三星还推出iot.js,可以让更多的嵌入式设备可以使用JavaScript语言作为开发语言。

人们开始在硬件上使用JavaScript的原因有很多,如Web的开发人员是最多的、JavaScript很容易上手。

现在,这次我们在这三个层级上都可以使用JavaScript,只需要一种语言。

使用一种语言开发物联网应用:JavaScript

在我写的那本《自己动手设计物联网》中,我就试图去展示JavaScript在这方面的威力。使用Node.js + Node-CoAP + MQTT.js + MongoDB + Express搭建了一个支持多协议的物联网:

不过,上图是完善版的物联网,代码自然是在GitHub上啦:Lan。作为服务端来说,Node.js的能力已经是经过验证的。而在混合应用上,仍然也可以经受住考验,混合应用在手机上做个图表是轻轻松松的事(只需要获取数据,然后显示):

作一个控制端也是轻轻松松的事(我们只需要发个POST请求,更具逻辑一点的就是先获取状态):

而在硬件端,我并没有在书中以JavaScript作为例子来展示JavaScript的用法,因为这会局限了用户的硬件设备。

不过,我们仍然可以使用类似于Johnny-Five这样的库来做硬件方面的编程,只是它没有那么好玩~~。


作者:phodal

来源:51CTO

相关实践学习
钉钉群中如何接收IoT温控器数据告警通知
本实验主要介绍如何将温控器设备以MQTT协议接入IoT物联网平台,通过云产品流转到函数计算FC,调用钉钉群机器人API,实时推送温湿度消息到钉钉群。
阿里云AIoT物联网开发实战
本课程将由物联网专家带你熟悉阿里云AIoT物联网领域全套云产品,7天轻松搭建基于Arduino的端到端物联网场景应用。 开始学习前,请先开通下方两个云产品,让学习更流畅: IoT物联网平台:https://iot.console.aliyun.com/ LinkWAN物联网络管理平台:https://linkwan.console.aliyun.com/service-open
相关文章
|
1天前
|
前端开发 JavaScript 网络协议
深入探讨其在JavaScript中的应用
【6月更文挑战第12天】WebSockets是为解决HTTP协议在实时通信中的局限而生的一种全双工通信协议,基于TCP,适合在线聊天、游戏等场景。JavaScript中的WebSocket API使浏览器与服务器能建立持久连接,方便数据实时传输。通过创建WebSocket对象、监听事件(open、message、error、close)来管理连接、发送/接收数据及处理错误。相较于AJAX轮询和长轮询,WebSockets更高效实时,是现代Web实时应用的理想选择。
13 3
|
1天前
|
传感器 供应链 物联网
新兴技术的未来蓝图:区块链、物联网与虚拟现实的前景和应用
在当今快速变化的科技世界中,区块链、物联网(IoT)和虚拟现实(VR)作为新兴技术,正逐步改变各行各业的运作模式和用户体验。本文将深入探讨这些技术的发展趋势和应用场景,展示它们如何在不同领域带来革命性的变革,并对未来的潜在影响进行预判。
12 2
|
2天前
|
前端开发 JavaScript 开发者
函数式编程在JavaScript中的应用
【6月更文挑战第10天】本文探讨了函数式编程在JavaScript中的应用,介绍了函数式编程的基本概念,如纯函数和不可变数据。文中通过示例展示了高阶函数、不可变数据的使用,以及如何编写纯函数。此外,还讨论了函数组合和柯里化技术,它们能提升代码的灵活性和可重用性。掌握这些函数式编程技术能帮助开发者编写更简洁、可预测的JavaScript代码。
|
5天前
|
人工智能 物联网 区块链
新兴科技趋势:区块链、物联网、虚拟现实的发展与应用探讨
随着科技的不断发展,新兴技术如区块链、物联网、虚拟现实等正日益成为各行各业的关注焦点。本文将探讨这些新技术的发展趋势和广泛应用场景,以期为读者提供对未来科技发展的深入理解。
10 0
|
6天前
|
传感器 供应链 物联网
新兴科技助力未来发展:区块链、物联网和虚拟现实的趋势与应用
在当今数字化时代,新兴技术如区块链、物联网和虚拟现实正在迅猛发展,为各行各业带来了巨大的变革。本文将探讨这些新技术的发展趋势,并深入剖析它们在不同领域的应用场景,揭示其对未来社会发展的重要影响。
12 0
|
7天前
|
机器学习/深度学习 人工智能 算法
机器学习与人工智能在物联网中的应用
【6月更文挑战第6天】在一个阳光明媚的早晨,我听到同事热议机器学习和人工智能在物联网的应用,如智能家居、工业生产和医疗诊断。通过分析物联网的海量数据,这些技术带来便利与效率的提升。示例代码展示了如何使用机器学习算法进行数据分析。尽管面临数据安全等挑战,但未来前景广阔,我决定投身这一领域,探索更多可能。
|
7天前
|
JavaScript Java 测试技术
基于ssm+vue.js+uniapp小程序的代驾应用系统附带文章和源代码部署视频讲解等
基于ssm+vue.js+uniapp小程序的代驾应用系统附带文章和源代码部署视频讲解等
156 21
|
8天前
|
机器学习/深度学习 人工智能 算法
机器学习与人工智能在物联网中的应用
【6月更文挑战第5天】在这个物联网时代,智能设备间的交互变得日益频繁。机器学习与人工智能赋予了这些设备学习和协作的能力,使它们能更好地理解和适应用户需求。例如,智能空调利用机器学习了解用户习惯,预调至适宜的温度;而人工智能在安防系统中通过视频分析识别异常行为,保障安全。此外,它们还应用于智能农业、交通、医疗等领域,如预测农作物生长、优化交通路线、提升医疗服务。一个简单的Python代码示例展示了如何用机器学习预测室内温度变化,揭示了其在物联网中的潜力。
44 1
|
9天前
|
传感器 人工智能 自动驾驶
物联网在农业中的应用:智慧农业的未来
【6月更文挑战第4天】物联网技术正深刻变革传统农业,实现智慧农业的高效、环保与可持续发展。通过智能传感器监控作物生长,精准管理资源,减少浪费,提升产量与品质,同时利用无人机和自动驾驶设备进行精准作业,降低环境影响。结合区块链技术,实现农产品全程追溯,保障食品安全。物联网的应用,如示例代码所示,使数据实时传输,提升农业生产智能化水平,预示着农业与新技术融合的广阔前景,开启农业新篇章。
26 0
|
9天前
|
JavaScript Java 测试技术
基于ssm+vue.js+uniapp小程序的服装品牌的推广及应用网站附带文章和源代码部署视频讲解等
基于ssm+vue.js+uniapp小程序的服装品牌的推广及应用网站附带文章和源代码部署视频讲解等
22 4

热门文章

最新文章

相关产品

  • 物联网平台