凡是能用JavaScript写的,最终都会用JavaScript来写。——阿特伍德定律在那篇文章《***的编程语言JavaScript能做什么?》中,我们列举了JavaScript在不同领域的使用。今天,就让我们来详细讲解一下JavaScript在物联网中的应用。基础知识:物联网的三层结构在我们开始之前,让我们简要介绍一下物联网的基础知识。如果你有一定的web开发经验,你就知道下图是CS架构:相对于物联网系统,无非是多了一个硬件层和一个可选的协调层。这个硬件层决定了物联网应用比Web应用更复杂。对于大多数Web应用来说,客户端都是手机、电脑、平板等设备,它们都具有强大的处理能力,不需要考虑一些额外的因素。对于物联网应用,我们需要考虑设备上MCU的处理能力,根据其处理能力和使用环境使用不同的通信协议。比如我们需要在一些设备上使用CoAP协议。有些设备不具备网络功能,需要考虑可以联网的辅助层,还需要使用一些短距离的无线传输协议,如低功耗蓝牙、红外、Zigbee等.一个物联网系统:六种语言两年半前,大四,电子信息工程,我选的毕业论文是关于物联网的论文——《基于REST服务的最小物联网系统设计》。这是一篇入门级的物联网论文。如果大部分学CS的人有一点硬件基础,都可以写出这样一篇论文。这篇论文是之前参加比赛的论文的“最小化”。它里面主要用的是创建RESTful服务,甚至算不上什么技术。在本作品中:我们使用Python语言中的Django框架作为web服务框架,使用DjangoRESTFramework创建RESTful服务。为了将手机用作控制器,我们还需要用Java编写一个Android应用程序。我们使用树莓派作为硬件端的协调层,连接网络,向硬件传输控制信号。我们在硬件端使用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、KinomaCreate、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之类的库来进行硬件编程,只是没那么好玩了~~。既然可以用JavaScript实现,为什么还要喝杯咖啡等着用C编译呢?你想知道的答案都在这本书里,已在亚马逊、京东、当当上架:亚马逊:https://www.amazon.cn/dp/B01I...京东:http://item.jd.com/11946585.html毕竟:凡是能用JavaScript写的,最终都会用JavaScript写。
