自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

詳解JavaScript在物聯(lián)網(wǎng)中的應(yīng)用

開(kāi)發(fā) 開(kāi)發(fā)工具
今天讓我們來(lái)詳解一下JavaScript在物聯(lián)網(wǎng)中的應(yīng)用。對(duì)于物聯(lián)網(wǎng)應(yīng)用來(lái)說(shuō),我們需要考慮設(shè)備上的MCU的處理能力,根據(jù)其處理能力和使用環(huán)境使用不同的通信協(xié)議。在一些設(shè)備上不具備網(wǎng)絡(luò)功能,需要考慮借助于可以聯(lián)網(wǎng)的協(xié)助層,并且還需要使用一些短距離的無(wú)線傳輸協(xié)議。

凡是能用JavaScript寫(xiě)出來(lái)的,最終都會(huì)用JavaScript寫(xiě)出來(lái)。

—— Atwood定律

在那篇《***的編程語(yǔ)言JavaScript能做什么?》里,我們列舉了JavaScript在不同領(lǐng)域的使用情況,今天讓我們來(lái)詳解一下JavaScript在物聯(lián)網(wǎng)中的應(yīng)用。

基礎(chǔ):物聯(lián)網(wǎng)的三個(gè)層級(jí)

開(kāi)始之前, 先讓我們簡(jiǎn)單地介紹點(diǎn)物聯(lián)網(wǎng)的基礎(chǔ)知識(shí)。如果你有點(diǎn)Web開(kāi)發(fā)經(jīng)驗(yàn)的話,都知道下圖是CS架構(gòu):

 

相比于一個(gè)物聯(lián)網(wǎng)系統(tǒng),無(wú)非就是多了一層硬件層以及可選的協(xié)調(diào)層。

 

 

這個(gè)硬件層決定了物聯(lián)網(wǎng)應(yīng)用比Web應(yīng)用更加復(fù)雜。對(duì)于大部分的Web應(yīng)用來(lái)說(shuō) ,客戶(hù)端都是手機(jī)、電腦、平板這些設(shè)備,都有著強(qiáng)大的處理能力,不需要考慮一些額外的因素。

對(duì)于物聯(lián)網(wǎng)應(yīng)用來(lái)說(shuō),我們需要考慮設(shè)備上的MCU的處理能力,根據(jù)其處理能力和使用環(huán)境使用不同的通信協(xié)議,如我們?cè)谝恍┰O(shè)備上需要使用CoAP協(xié)議。在一些設(shè)備上不具備網(wǎng)絡(luò)功能,需要考慮借助于可以聯(lián)網(wǎng)的協(xié)助層,并且還需要使用一些短距離的無(wú)線傳輸協(xié)議,如低功耗藍(lán)牙、紅外、Zigbee等等。

一個(gè)物聯(lián)網(wǎng)系統(tǒng):六種語(yǔ)言

兩年半以前,大四,電子信息工程,我選定的畢業(yè)論文是一篇關(guān)于物聯(lián)網(wǎng)的論文——《基于REST服務(wù)的最小物聯(lián)網(wǎng)系統(tǒng)設(shè)計(jì)》。這是一篇入門(mén)級(jí)的物聯(lián)網(wǎng)論文,如果大部分學(xué)習(xí)CS的人有一點(diǎn)硬件基礎(chǔ),都能寫(xiě)出這樣的論文。

這篇論文是之前參加比賽的作品論文的“最小化”,里面使用到的主要就是創(chuàng)建RESTful服務(wù),而它甚至稱(chēng)不上是一種技術(shù)。在這個(gè)作品里:

我們使用Python語(yǔ)言里的Django框架作為Web服務(wù)框架,使用Django REST Framework來(lái)創(chuàng)建RESTful服務(wù)。

為了使用手機(jī)當(dāng)控制器,我們還要用Java寫(xiě)一個(gè)Android應(yīng)用。

我們使用Raspberry Pi作為硬件端的協(xié)調(diào)層,用于連接網(wǎng)絡(luò),并傳輸控制信號(hào)給硬件。

我們?cè)谟布耸褂肁rduino作為控制器,寫(xiě)起代碼特別簡(jiǎn)單,可以讓我們關(guān)注于業(yè)務(wù)。

***,我們還需要在網(wǎng)頁(yè)上做一個(gè)圖表來(lái)顯示實(shí)時(shí)數(shù)據(jù)。

所有的這些,我們需要使用Python、Java、JavaScript、C、Arduino五種語(yǔ)言。而如果我們要寫(xiě)相應(yīng)的iOS應(yīng)用,我們還需要Objective-C。

[[169837]]

 

JavaScript在物聯(lián)網(wǎng)領(lǐng)域的發(fā)展

同樣的,兩年多以前,剛實(shí)習(xí),在我們的項(xiàng)目里,我們的新項(xiàng)目里我們使用Backbone作為單頁(yè)面應(yīng)用框架的核心來(lái)打造Web應(yīng)用。這時(shí),我開(kāi)始關(guān)注Node.js實(shí)現(xiàn)物聯(lián)網(wǎng)應(yīng)用的可能性。

[[169838]]

 

當(dāng)時(shí),已經(jīng)有了物聯(lián)網(wǎng)協(xié)議MQTT和CoAP協(xié)議的庫(kù),于是我照貓畫(huà)虎地寫(xiě)了一個(gè)支持HTTP、CoAP、WebSocket和MQTT的物聯(lián)網(wǎng)。由于,當(dāng)時(shí)缺乏一些大型應(yīng)用的開(kāi)發(fā)經(jīng)典,所以做得并不是很好,但是已經(jīng)可以看到JavaScript在這方面的遠(yuǎn)景。


 

[[169839]]

 

一年多以前,Ionic還沒(méi)推出正式版的時(shí)候,我發(fā)現(xiàn)到了這個(gè)框架真的很棒——它自帶了一系列的UI,還用NgCordova集成了Cordova的一系列插件。我便開(kāi)始使用Ionic寫(xiě)了一些移動(dòng)應(yīng)用,發(fā)現(xiàn)還挺順手的。接著,我就開(kāi)始拿這個(gè)框架?chē)L試寫(xiě)物聯(lián)網(wǎng)應(yīng)用,這需要一些原生的插件,如BLE、MQTT。后來(lái),我也寫(xiě)了一個(gè)簡(jiǎn)單的CoAP插件。

 

后來(lái)我們不再需要編譯Node.js,就可以在ARM處理器上運(yùn)行Node.js。并且我們已經(jīng)有Tessel、Espruino、Kinoma Create、Ruff這些可以直接運(yùn)行JavaScript的開(kāi)發(fā)板。三星還推出iot.js,可以讓更多的嵌入式設(shè)備可以使用JavaScript語(yǔ)言作為開(kāi)發(fā)語(yǔ)言。

 

人們開(kāi)始在硬件上使用JavaScript的原因有很多,如Web的開(kāi)發(fā)人員是最多的、JavaScript很容易上手。

現(xiàn)在,這次我們?cè)谶@三個(gè)層級(jí)上都可以使用JavaScript,只需要一種語(yǔ)言。

使用一種語(yǔ)言開(kāi)發(fā)物聯(lián)網(wǎng)應(yīng)用:JavaScript

在我寫(xiě)的那本《自己動(dòng)手設(shè)計(jì)物聯(lián)網(wǎng)》中,我就試圖去展示JavaScript在這方面的威力。使用Node.js + Node-CoAP + MQTT.js + MongoDB + Express搭建了一個(gè)支持多協(xié)議的物聯(lián)網(wǎng):

 

不過(guò),上圖是完善版的物聯(lián)網(wǎng),代碼自然是在GitHub上啦:Lan。作為服務(wù)端來(lái)說(shuō),Node.js的能力已經(jīng)是經(jīng)過(guò)驗(yàn)證的。而在混合應(yīng)用上,仍然也可以經(jīng)受住考驗(yàn),混合應(yīng)用在手機(jī)上做個(gè)圖表是輕輕松松的事(只需要獲取數(shù)據(jù),然后顯示):

 

作一個(gè)控制端也是輕輕松松的事(我們只需要發(fā)個(gè)POST請(qǐng)求,更具邏輯一點(diǎn)的就是先獲取狀態(tài)):

 

而在硬件端,我并沒(méi)有在書(shū)中以JavaScript作為例子來(lái)展示JavaScript的用法,因?yàn)檫@會(huì)局限了用戶(hù)的硬件設(shè)備。

不過(guò),我們?nèi)匀豢梢允褂妙?lèi)似于Johnny-Five這樣的庫(kù)來(lái)做硬件方面的編程,只是它沒(méi)有那么好玩~~。

既然我們可以JavaScript來(lái)實(shí)現(xiàn),為什么我們還要喝杯咖啡等它用C編譯完呢?

你想知道的答案都在這本書(shū)里,已在亞馬遜、京東、當(dāng)當(dāng)上架:

 

亞馬遜:https://www.amazon.cn/dp/B01I...

京東:http://item.jd.com/11946585.html

畢竟:

凡是能用JavaScript寫(xiě)出來(lái)的,最終都會(huì)用JavaScript寫(xiě)出來(lái)。

責(zé)任編輯:龐桂玉 來(lái)源: segmentfault
相關(guān)推薦

2019-05-21 06:00:29

物聯(lián)網(wǎng)體育IOT

2021-12-07 18:35:08

物聯(lián)網(wǎng)執(zhí)法應(yīng)用IOT

2020-05-06 07:53:09

物聯(lián)網(wǎng)物流IOT

2019-06-03 05:30:44

物聯(lián)網(wǎng)音樂(lè)產(chǎn)業(yè)IOT

2024-02-27 16:27:42

物聯(lián)網(wǎng)IOT智能連接

2024-01-25 12:02:56

物聯(lián)網(wǎng)人工智能

2022-04-26 16:09:27

物聯(lián)網(wǎng)智慧農(nóng)業(yè)

2020-03-19 09:35:31

物聯(lián)網(wǎng)數(shù)據(jù)環(huán)衛(wèi)

2014-09-10 15:09:30

NodeBotsJavaScript物聯(lián)網(wǎng)

2019-06-11 09:45:56

物聯(lián)網(wǎng)應(yīng)用酒店IOT

2019-05-23 08:39:24

物聯(lián)網(wǎng)制造業(yè)IOT

2014-12-12 10:59:45

IaaSSaaSPaaS

2022-08-24 17:13:47

物聯(lián)網(wǎng)智慧醫(yī)療數(shù)據(jù)中心

2021-05-02 23:42:25

物聯(lián)網(wǎng)農(nóng)業(yè)技術(shù)

2022-01-06 13:37:21

安全水印物聯(lián)網(wǎng)

2020-07-27 10:05:38

電梯遠(yuǎn)程監(jiān)控物聯(lián)網(wǎng)

2011-09-05 09:53:44

IPv6IPv4物聯(lián)網(wǎng)

2022-03-18 17:53:14

機(jī)器學(xué)習(xí)物聯(lián)網(wǎng)工業(yè)物聯(lián)網(wǎng)

2022-03-24 15:02:59

物聯(lián)網(wǎng)智慧城市

2023-03-24 15:14:36

物聯(lián)網(wǎng)汽車(chē)行業(yè)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)