

http://www.makercollider.com/kit/detail?id=23
一、Node-Red是什么?
(一) Node-Red是IBM公司開發(fā)的一個(gè)可視化的編程工具。它允許程序員通過組合各部件來編寫應(yīng)用程序。這些部件可以是硬件設(shè)備(如:Arduino板子)、Web API(如:WebSocket in和WebSocket out)、功能函數(shù)(如:range)或者在線服務(wù)(如:twitter)。
(二)Node-Red提供基于網(wǎng)頁的編程環(huán)境。通過拖拽已定義node到工作區(qū)并用線連接node創(chuàng)建數(shù)據(jù)流來實(shí)現(xiàn)編程。程序員通過點(diǎn)擊‘Deploy’按鈕實(shí)現(xiàn)一鍵保存并執(zhí)行。程序以JSON字符串的格式保存,方便用戶分享、修改。
(三)Node-Red基于Node.js,它的執(zhí)行模型和Node.js一樣,也是事件驅(qū)動非阻塞的。理論上,Node.js的所有模塊都可以被封裝成Node-Red的一個(gè)或幾個(gè)node。
二、Node-Red的結(jié)構(gòu)框架
(一)Node-Red由兩部分組成。一部分是用戶可見的數(shù)據(jù)流的編輯界面,另一部分是數(shù)據(jù)流的執(zhí)行。
(二)數(shù)據(jù)流的編輯界面由四部分組成。最左邊是已定義的各種node的列表;中間是一個(gè)工作區(qū),用戶可以拖放node到工作區(qū)來創(chuàng)建node的實(shí)例,Node-Red為每個(gè)node實(shí)例賦予了唯一的ID,通過雙擊node實(shí)例來編輯單個(gè)實(shí)例,通過連接node的in和out口創(chuàng)建數(shù)據(jù)流,node實(shí)例會記錄out口連線的信息,每條線會記錄目標(biāo)node實(shí)例的信息;最右邊是debug node的輸出區(qū)及node的幫助信息顯示區(qū)。右上角有‘Deploy’按鈕,用來把編寫的程序保存到本地并執(zhí)行。
(三)數(shù)據(jù)流的執(zhí)行。通過讀取用戶編輯的數(shù)據(jù)流信息,可以知道node的類型及可編輯部分的值,據(jù)此來創(chuàng)建node的可執(zhí)行實(shí)例;通過讀取編輯時(shí)連線的信息,可以得到可執(zhí)行實(shí)例間的數(shù)據(jù)關(guān)系,實(shí)例間的數(shù)據(jù)發(fā)送和接受是利用Node.js的event模塊實(shí)現(xiàn)的。
三、如何執(zhí)行Node-Red?
(一)在Node-Red的根目錄下,執(zhí)行‘node red.js’。
(二)打開瀏覽器訪問http://localhost:1880,就可以看到Node-Red的編輯界面。
(三)Node-Red編輯完成的數(shù)據(jù)流默認(rèn)保存在flows_.json,可以通過執(zhí)行‘node red.js flows_.json’,在不啟動瀏覽器的情況下執(zhí)行已經(jīng)編輯完成的程序,這個(gè)在實(shí)際部署的時(shí)候非常有用。