現(xiàn)在有越來越多非專業(yè)背景但有創(chuàng)造熱誠的Maker,想要進入物聯(lián)網(wǎng)領(lǐng)域大展身手,但常常苦于無法撰寫艱深難懂的程序代碼,以及想要連接各種硬件與時下最流行的社群軟件,卻不知道如何使用開放給開發(fā)者應(yīng)用的API的窘境。
沒關(guān)系!IBM發(fā)行了一套開源可視化界面開發(fā)工具- Node-RED,嗯?是不是有點眼熟?怎么跟著名的程序語言Node.js有些相似?不用擔(dān)心,即使完全不懂怎么撰寫Node.js,也能學(xué)會使用Node-RED。接下來就讓我們一起看看如何運用Node-RED吧!
大家可能會好奇,Node-RED跟Node.js怎么名字會這么像?是不是有某種關(guān)聯(lián)存在?這邊就要先從Node.js開始介紹了。Node.js是一個讀取Javascript的運行環(huán)境,可用于開發(fā)網(wǎng)頁后端程序,但是Node.js的指令是一行一行寫出來的,為了免去呼叫程序代碼麻煩,IBM的工程師開發(fā)了Node-RED來更容易地完成工作。
具體來說,每當(dāng)啟動Node-RED時,背景程序便會創(chuàng)造一個服務(wù)器來處理我們輸入的指令,這時只要使用瀏覽器登入指定的IP即可進入Node-RED的編輯畫面,設(shè)定好想要的流程后,背景程序會將流程轉(zhuǎn)換成程序代碼交給Node.js環(huán)境運行。
其實在Maker圈,可視化界面開發(fā)工具已經(jīng)相當(dāng)流行,特別是MIT開發(fā)的Scratch,以及Google開發(fā)的Blockly。那么,Node-RED跟這兩大視覺開發(fā)工具相比,又有什么樣的優(yōu)勢呢?
Node-RED特色
Node-RED起源于2013年IBM’s EmergingTechnology Services group的一個計劃的副產(chǎn)物,工程師Nick O’Leary和Dave Conway-Jones想用可視化界面來概念性驗證一套MQTT應(yīng)用,讓Node-RED因此孕育而生。
Node-RED很快成為更加全面性的開發(fā)工具,并于2013年9月成為OpenSource,于2016年10月加入JS Foundation。(以上說明節(jié)錄自Node-RED官網(wǎng))
Node-RED提供各式的API,包括因特網(wǎng)服務(wù),例如推特與查詢天氣、呼叫使用各式的通訊協(xié)議,例如MQTT、TCP、UDP等;在嵌入式系統(tǒng)上,Node-RED提供控制GPIO的功能,并使用MQTT或是HTTP等協(xié)議與云端做溝通,架構(gòu)IOT產(chǎn)品。
讓Node-RED流行于各大網(wǎng)絡(luò)社群的理由,在于它擁有以下諸多的優(yōu)點:
1.相較于撰寫程序代碼,使用圖形化界面可更快速開發(fā)。
2.適合作為概念性應(yīng)用驗證的開發(fā)工具。
3.淺顯易懂,每個API都有文字說明可供查詢。
4.具有高度擴充性,已有大量的Library、Flow、Node供人下載。
如何啟用Node-RED
想在Raspberry Pi上使用Node-RED,需先安裝Node.js運行環(huán)境,如果是使用FRED,或是IBM Bluemix使用Node-RED,則不須安裝。
安裝Node-RED:在Raspberry pi的Bash輸入「sudo npm install -g node-red」
2. 啟動Node-RED:
(1) 在Bash輸入「node-red」
(2) 在計算機上使用遠程桌面聯(lián)機(Pi須安裝xrdp),打開Linux的瀏覽器進入http://localhost:1880,即可進入Node-RED編輯頁面,這里跟Bash登入畫面一樣,輸入Pi的帳號密碼
進入編輯頁面了
實作范例
Hello Node-RED
http://noderedguide.com/node-red-lecture-2-building-your-first-flows-15/
接下來,讓我們來學(xué)習(xí)如何使用Node-RED的基本單位:Node,并使用Nodes來傳送字符串「Hello Node-Red!」來跟Node-RED打聲招呼吧!
使用左側(cè)的inject與debug接成以下的流程:
Inject node:我們使用這個Node來輸入各式的數(shù)值,舉凡變量、數(shù)字、字符串、時間常數(shù)都可以,Inject通常都是一個Flow的開頭。
Debug node:這個Node就像是示波器的探棒,會將流入此點的對象信息于右邊的Debug字段顯示出來,我們使用這個Node檢視結(jié)果是否符合預(yù)期的結(jié)果。
實作結(jié)果:左側(cè)node按下藍色的按鈕后,右側(cè)的debug欄接收到input的訊息。
2. LED燈開關(guān)
Node-RED有個很大的特色,就是可以方便地控制RaspberryPi,在這之前,呼叫GPIO都是使用Python、C語言、Java等等;而現(xiàn)在只要設(shè)定Node-RED就可以達到相同的效果,在這個流程輸入開或關(guān)的訊息,判斷式處理完后,會將1或0傳入Rpi Pin node。
(RPi node預(yù)設(shè)只有RPi的Node-RED才有)
Inject Node:我們這邊設(shè)定將”O(jiān)n"字符串輸入給Switch function。
Function Node:我們使用這個Node作為撰寫自定義函式的地方,使用的語法為Javascript,這?邊先寫一個簡單的判斷函式確認是ON或是OFF,最后將msg對象往下傳。
RPi Pin node:我們使用這個Node來設(shè)定RPi的腳位輸出,可分為數(shù)字輸出與PWM;本次做數(shù)字輸出,選擇GPIO17腳位。
Raspberry Pi3腳位圖:
實作結(jié)果:
可能遇到的錯誤
1.無法使用npm指令
Raspberry Pi尚未安裝Node.js,需先安裝Node.js才能使用npm。
2.進入0.01:1880無法顯示網(wǎng)頁?
需先在Raspberry Pi的terminal輸入node-red,啟動服務(wù)器才能登入頁面。
3.Function Node無法輸入程序代碼?
GNU/Linux內(nèi)建瀏覽器的Bug,建議使用FireFox的瀏覽器。
作者:何信昱
-
IBM
+關(guān)注
關(guān)注
3文章
1763瀏覽量
74822 -
應(yīng)用軟件
+關(guān)注
關(guān)注
0文章
52瀏覽量
9119
發(fā)布評論請先 登錄
相關(guān)推薦
評論