文章類型
開發平台
解決方案
關注主題
文章類型
開發平台
解決方案
關注主題

【IOT視覺化開發工具】快速上手Node-RED

作者:何信昱

適合IOT應用的視覺化開發工具Node-RED

現在有越來越多非專業背景但有創造熱誠的Maker,想要進入物聯網領域大展身手,但常常苦於無法撰寫艱深難懂的程式碼,以及想要連接各種硬體與時下最流行的社群軟體,卻不知道如何使用開放給開發者應用的API的窘境。

沒關係!IBM發行了一套開源視覺化界面開發工具 - Node-RED,嗯?是不是有點眼熟?怎麼跟著名的程式語言Node.js有些相似?不用擔心,即使完全不懂怎麼撰寫Node.js,也能學會使用Node-RED。接下來就讓我們一起看看如何運用Node-RED吧!

大家可能會好奇,Node-RED跟Node.js怎麼名字會這麼像? 是不是有某種關聯存在? 這邊就要先從Node.js開始介紹了。Node.js是一個讀取Javascript的運行環境,可用於開發網頁後端程式,但是Node.js的指令是一行一行寫出來的,為了免去呼叫程式碼麻煩,IBM的工程師開發了Node-RED來更容易地完成工作。

具體來說,每當啟動Node-RED時,背景程式便會創造一個伺服器來處理我們輸入的指令,這時只要使用瀏覽器登入指定的IP即可進入Node-RED的編輯畫面,設定好想要的流程後,背景程式會將流程轉換成程式碼交給Node.js環境運行。

其實在Maker圈,視覺化界面開發工具已經相當流行,特別是MIT開發的Scratch,以及Google開發的Blockly。那麼,Node-RED跟這兩大視覺開發工具相比,又有什麼樣的優勢呢?

Node-RED Scratch Blockly
優點 各式API、適合用於概念性驗證 淺顯易懂、逗趣的圖案 用網頁操作、淺顯易懂
特色 可用樹梅派開發IOT應用 程式邏輯教學、控制Arduino 控制Arduino
語言 英文 中文 中文

 

Node-RED特色

Node-RED起源於2013年IBM’s Emerging Technology Services group的一個計畫的副產物,工程師Nick O’Leary和Dave Conway-Jones想用視覺化界面來概念性驗證一套MQTT應用,讓Node-RED因此孕育而生。

Node-RED很快成為更加全面性的開發工具,並於2013年9月成為Open Source,於2016年10月加入JS Foundation。(以上說明節錄自Node-RED官網)

Node-RED提供各式的API,包括網際網路服務,例如推特與查詢天氣、呼叫使用各式的通訊協定,例如MQTT、TCP、UDP等;在嵌入式系統上,Node-RED提供控制GPIO的功能,並使用MQTT或是HTTP等協定與雲端做溝通,架構IOT產品。

讓Node-RED流行於各大網路社群的理由,在於它擁有以下諸多的優點:

  1. 相較於撰寫程式碼,使用圖形化界面可更快速開發。
  2. 適合作為概念性應用驗證的開發工具。
  3. 淺顯易懂,每個API都有文字說明可供查詢。
  4. 具有高度擴充性,已有大量的Library、Flow、Node供人下載。

如何啟用Node-RED

想在Raspberry Pi上使用Node-RED,需先安裝Node.js運行環境,如果是使用FRED,或是IBM Bluemix使用Node-RED,則不須安裝。

1. 安裝Node-RED:在Raspberry pi的Bash輸入「sudo npm install -g node-red」     

2. 啟動Node-RED:
(1) 在Bash輸入「node-red」

(2) 在電腦上使用遠端桌面連線(Pi須安裝xrdp),打開Linux的瀏覽器進入http://localhost:1880,即可進入Node-RED編輯頁面

這裡跟Bash登入畫面一樣,輸入Pi的帳密


IP:127.0.0.1:1880


進入編輯頁面了!

實作範例

1. Hello Node-RED
接下來,讓我們來學習如何使用Node-RED的基本單位:Node,並使用Nodes來傳送字串「Hello Node-Red!」來跟Node-RED打聲招呼吧!

  • 使用左側的inject與debug接成以下的流程:

  • Inject node:我們使用這個Node來輸入各式的數值,舉凡變數、數字、字串、時間常數都可以,Inject通常都是一個Flow的開頭。
  • Debug node:這個Node就像是示波器的探棒,會將流入此點的物件資訊於右邊的Debug欄位顯示出來,我們使用這個Node檢視結果是否符合預期的結果。
  • 實作結果:左側node按下藍色的按鈕後,右側的debug欄接收到input的訊息。

2. LED燈開關
Node-RED有個很大的特色,就是可以方便地控制Raspberry Pi,在這之前,呼叫GPIO都是使用Python、C語言、Java等等;而現在只要設定Node-RED就可以達到相同的效果,在這個流程輸入開或關的訊息,判斷式處理完後,會將1或0傳入Rpi Pin node。

(RPi node預設只有RPi的Node-RED才有)

  • Inject Node:我們這邊設定將”On"字串輸入給Switch function。

  • Function Node:我們使用這個Node作為撰寫自訂函式的地方,使用的語法為Javascript,這邊先寫一個簡單的判斷函式確認是ON或是OFF,最後將msg物件往下傳。

  • RPi Pin node:我們使用這個Node來設定RPi的腳位輸出,可分為數位輸出與PWM;本次做數位輸出,選擇GPIO17腳位。

  • Raspberry Pi3腳位圖:
  • 實作結果:

可能遇到的錯誤

1.無法使用npm指令?

Raspberry Pi尚未安裝Node.js,需先安裝Node.js才能使用npm。

2.進入0.01:1880無法顯示網頁?

需先在Raspberry Pi的terminal輸入node-red,啟動伺服器才能登入頁面。

3.Function Node無法輸入程式碼?

GNU/Linux內建瀏覽器的Bug,建議使用FireFox的瀏覽器。

結語

對於Node-Red的基本介紹至此就告一個段落了,希望能對大家有所幫助。現在Amazon的AWS、IBM的Bluemix、FRED都有提供Node-RED服務,期待如此方便的工具未來在台灣Maker社群能夠越來越普及,大家都能動手一起將環境變得更加智慧化! 

〈責任編輯:賴芳如〉

何信昱

何信昱

小小見習工程師,站在巨人的肩膀上,努力想要看到專屬於自己的景色。
何信昱

上一篇: | 下一篇:

468 ad

我想回應

你的電子郵件位址並不會被公開。 必要欄位標記為 *

成城共創股份有限公司版權所有、轉載必究.Copyright(c) 2017 MakerPRO