阿里雲:如何基於Node.js構建物聯網系統


內容來源:2017年7月15日,阿里雲技術專家張子發在「2017 JavaScript中國開發者大會」進行《基於Node.js構建物聯網系統》演講分享。IT大咖說做爲獨家視頻合做方,經主辦方和講者審閱受權發佈。
html

閱讀字數:1719 | 3分鐘閱讀前端

嘉賓演講視頻及PPT: t.cn/RTMYNwv

摘要

物聯網經過智能感知、識別技術與普適計算等通訊感知技術,普遍應用於網絡的融合中,也所以被稱爲繼計算機、互聯網以後世界信息產業發展的第三次浪潮。阿里雲技術專家張子發爲咱們分享阿里雲基於Node.js構建物聯網系統。mysql

物聯網

大概在2007-2008年的時候,物聯網的概念纔開始逐漸普及,但實際上物聯網的開發在不少年前就已經在進行了。近幾年流行的移動支付,就是由於物聯網促進了智能手機的技術發展纔出現。與咱們平常生活離得比較遠的例如電網、工業製造,也早在不少年前已經有物聯網的概念。redis

物聯網行業主要是由幾個部分組成。數據產生由傳感器完成,數據收集是把數據經過網絡進行傳輸,數據分析是用本身搭建的服務器,數據分析完成以後把數據的結果推送給一些可執行的機構。sql

物聯網開發


如上圖,接入傳感器以後,會更多地重視安全、認證、數據傳輸加密等問題,在之前的概念裏基本不會考慮這些。數據庫


如今在設備端有一種是獨立的設備,能夠直接連到網上。好比網絡攝像頭或者是一些用複雜芯片作的東西,能夠直接鏈接雲服務。express

還有一些低功耗的設備,例如家用的無線傳感器,會鏈接智能網關,再經過各類協議。如今的標準就是用MQTT直接傳到雲上。和之前相比MQTT最方便的是提供QS機制,保證消息必定可達。像傳感器的週期性數據只須要傳輸一次,中間丟了也不要緊;像報警信息那種不能丟的數據能保證它可;或者有些計費的消息則保證只需傳輸一次並要可達。還提供了消息發佈和訂閱機制。後端

爲何是Node.js

Node.js的生態很好。如今Node.js官方給出的數據是用戶有四百萬人,每一年的增加率爲100%。安全

Node.js天生就是高併發場景。物聯網應用不一樣於普通互聯網應用之處就在於,它的數據是週期性的,要保持一個長鏈接。若是下面接的設備或用戶不少,就須要是一個高併發的場景。服務器

要是生意作得好,Node.js擴展起來也很是方便,只須要多開幾臺機器和進程。

如今大部分作物聯網開發的工程師,和設備相關的仍是主要以使用C語言爲主。要是CPU的內存和能力夠的話,用Node.js來寫會比較方便。

藉助於生態,基本須要用到的芯片底層的庫,以及芯片的外部設備均可以直接引用,因此開發效率是很高的。

先後端的溝通也會暢通不少。物聯網應用若是要被大衆所接受,最重要的是前端的用戶體驗。

DEMO

Demo演示視頻地址:v.qq.com/x/page/o055…

樹莓派上是經過串口接收pm2.5傳感器數據,經過IO來控制蜂鳴器和電機,經過MQTT與雲服務器交互依賴。依賴wiring-pi、serialpor和MQTT這幾個庫。


這個代碼很是簡單,只要把串口的庫拿進來和串口綁定,波特率兩邊匹配一致就行。而後port會有一個事件,有數據進來的時候進行數據處理。而且要考慮數據丟失的問題,現實中這個問題時有發生,可能作硬件的人深有體會。


上圖中的代碼一般是硬件開發者寫代碼的方式。先設置工做模式,而後進行數字的寫入和讀取。用js來寫設備端的代碼仍是須要懂一些硬件,不然效率不會高。


MQTT的部分只要把包引進來,把MQTT的代理地址和ip port以後,要知道小車的控制指令,只需註冊一下全部和小車相關的事件,若是有人發了指令給代理,代理就會自動轉發給你。

雲服務器用的是ECS,多了一個公網IP更加方便。數據傳輸有MQTT。數據存儲能夠根據數據的類型選擇不一樣的數據庫,好比mysql、mongoDB和redis。前端展示是express。主要依賴mosca、mysql、mongo、redis和express,根據不一樣類型選擇不一樣的數據庫進行存儲。


Mosca配置的時候除了port要本身指定以外,其它的能夠用默認參數。

Tip

要作一個硬件產品,若是這是一個合格的產品,須要的週期很長。首先要去市場上選型,以後的採購週期要根據定貨量大小決定。傳感器的供應商並很少,要作比較的話須要採購過來並花費不少時間進行驗證測試,這個過程會很長。產品完成後還要評測認證檢測,反反覆覆又須要好久。整個過程就致使硬件的開發週期很長。

MagicLight是一個在亞馬遜上銷量很好的,用wifi控制的燈。可是我以爲這個燈有一個缺點,就是隻能經過手機控制,沒法使用牆面開關控制,這是用戶體驗的一個很大問題。若是要作到開關和手機都能控制,就要作一個聯動。

因而有人作了一個開關,能夠用手機控制同時也能保持物理結構。但還要保持wifi部分工做的話,就須要有電流經過,要有一個迴路。就是在燈即便關閉的時候仍然有電流可經過,wifi的控制電路才能經過,這就是單火線開關的問題,目前還沒法解決。

作物聯網應用還有很重要的一點就是要知足用戶的需求,不管是解決體驗問題仍是帶來一些收益,解決行業內的痛點纔是有意義的。若是是純粹是技術看起來很好或是頗有噱頭,我以爲很難存活下去。

今天的分享到此結束,謝謝你們!

編者:IT大咖說,轉載請標明版權和出處

相關文章
相關標籤/搜索