使用 NODE-RED 開發物聯網讓你輕鬆 EASY 好上手

Node-Red是一個使用瀏覽器介面的強大物聯網 (IoT) 開發工具,其視覺開發環境以流程 (flows) 為基礎,使應用程式撰寫更加簡易。其程式語言涵蓋範圍相當廣,包含了多種的程式設計風格以及範例。其中以指令式以及物件導向程式設計主宰這個領域,但也有為生產軟體以及快速將點子原型化的替代選擇。Node-RED 採取另一種方式來開發軟體。
評論
評論

Node-Red 是一個使用瀏覽器介面的強大物聯網 (IoT) 開發工具,其視覺開發環境以流程 (flows) 為基礎,使應用程式撰寫更加簡易。本文將探索如何使用 Node-RED 以及 flows 開發 IoT 應用程式。

其程式語言涵蓋範圍相當廣,包含了多種的程式設計風格以及範例。其中以指令式以及物件導向程式設計主宰這個領域,但也有為生產軟體以及快速將點子原型化的替代選擇。

Node-RED 採取另一種方式來開發軟體。首先,它是一個視覺開發語言。 Node-RED 致力於流程化程式設計,替代以逐行的文字語句敘述撰寫程式。

這些流程由相連的節點構成,每一個節點代表特定的功能 (見圖一)。雖然 Node-RED 是用來設計物聯網的程式語言,但其應用範圍不限於此。

image05
圖一 Node-RED 開發之示範流程

Node-RED 相對來說是較年輕的環境,源於 IBM ,隨後於 2013 年被釋放為 open source 。這個工具當初被設計為物聯網程式設計工具,但由於他的簡便以及廣泛的可用性而使其成長。接下來讓我們探討 Node-RED 的精神,以及如何在物聯網設計上,迸濺出新的火花。

以 Node-RED 設計一個簡單流程

讓我們回到圖一,以了解 Noed-Red 的程式設計概念。

左邊是節點面板,列出了您的程式可用的節點選項。中央面板則是編寫您的流程的位置。在這個範例中兩個節點已被定義,第一個是一個輸入節點,他會在一個自定的時間間隔創造訊號(我把他配置成每 5 秒產生一個時間戳記訊號,如圖二)這個節點連接著一個 debug 節點,您可以由此擷取資料到 log 。這個節點名為 msg.payload ,標示著將被擷取的資料。最後,在最右側是 debug 輸出。圖中三個區塊都是自 debug 獨立輸出的結果,您可以發現時間戳記恰好是五秒為間隔。

image00
圖二 輸入節點的設定

這是一個簡易的流程,展示了 Node-RED 的開發精神。一個輸入節點產生時間戳記訊息,以及一個 debug 節點接收訊息並顯示於 debug log 。

節點與節點種類

Node-RED 包含了相當豐富的節點,會讓您馬上具備生產力。圖三是輸入以及輸出節點,其允許 MQTT 訂閱與接收主題 (topics) 、輸出 MQTT 主題至中介器 (broker) 、透過 HTTP requests(以及建構 HTTP response)設計網路服務,以及可以創建伺服器的低階 TCP 、 UDP 服務,接收輸入以及產生輸出。

image03
圖三:Node-RED 輸入和輸出節點

圖四為過程節點。透過這些節點,您可以(用 JavaScript)撰寫自己的節點功能,產生用作定時觸發的訊息,以及限制流量的延遲訊息。您也可以經由 switch 節點和其他豐富的條件表達節點,基於訊息的內容改變其途徑(或刪除訊息),並且端看使用者自行定義的動作重新佈建數字訊號的範圍。最後,解譯多種類的輸入資料格式,並轉換他們。

image01
圖四 Node-RED 功能節點

最後一組節點名為進階節點(圖五)。這些節點涵括多種的應用方案,包括收發電子郵件,和執行敏感推特文章掃描。您可以自存放區收發訊息並自檔案系統監看變化。最後,您可以監看 RSS / Atom feed,甚至在作業系統 spawn(執行多工副本)或執行指令。

image02
圖五 Node-RED 進階節點

要是您沒找到需要的節點(例如臉部辨識系統,或是其他物理裝置介面)您也可以下載新的節點。現在,讓我們看看較為複雜的流程設計。

於 Node-RED 建造一個較為複雜的流程

Node-RED 真正的力量在於其物聯網上的應用程式。在這個範例中,您將讀取嵌入式裝置感應器,並將其資料分散使用。在接下來的流程中,如圖六,您第一會注意到的是,針對兩個您要監控的感應器,會有兩條流程而非一個。第一個感應器會有週期性的搜集資料,並只在超越一定的範圍時啟動功能(用作警報)。當超過範圍時,同時將訊息結果繞至 MQTT 作為警報標題,以及 log 檔案。

第二個感應器也是週期性的搜集的資料。請總是 route 到 MQTT 為另外一個主題,以及一個 log 檔案。 Node-RED 為您提供這種平行方式作為其程式設計樣板。

image04
圖六 較為複雜的輪詢流程

Node-RED 允許以許多節點建構許多流程,因此您可以用做執行搜集本地資料,並於嵌入式裝置中操作,或於伺服器中接收資料,甚至更複雜的操作。

使用樣板

Node-RED 是基於 Node.js ,一個伺服器端執行時開源開發環境。

它支援事件驅動導向樣板(event-driven),適合於 Node-RED 非同步的流程導向環境。

您可在 Node-RED 上建造流程並執行於嵌入式裝置,例如 Intel® Edison 運算模組以及 Arduino- Intel® Galileo 認證的開發板。這些裝置走在物聯網生態的尖端,並與最新的硬體介面直接互動,如溫度感應器,以及 drive motors 。

您也可以在閘道裝置上執行 Node-RED ,例如 Intel® IoT Gateway 。在這個樣板中,您可使用 Node-RED 與許多本地 edge 運算裝置溝通,以搜集運算其資料,分發這些資料到 MQTT 中介器作為進一步用途。

在這兩種使用樣板中, Node-RED 執行於這些裝置上:只需將瀏覽器自網路連接到裝置上以建構測試流程。如此,開發與測試環境以及運行皆在裝置上。

結論

在視覺方面, Node-RED 是一個串接功能強大,流程搜集、處理並分發資料的程式撰寫工具。 Node-RED 提供豐富的節點組,引領您進入這邊寫樣板,同時您可以下載大量的節點和流程以套用於您的應用程式。最好的是,您可以帶著最喜歡的 Intel 開發板或物聯網閘道器,安裝 Node-RED 並以最少的時間和精力執行。這個使得 Node-RED 成為物聯網生態中必要的部分。

更多精選文章.....


精選熱門好工作

Campaign Manager 活動企劃經理

樂購蝦皮股份有限公司
臺北市.台灣

獎勵 NT$15,000

[TW] 客服專員

Deliveroo 戶戶送
臺北市.台灣

獎勵 NT$15,000

Backend 工程師

Omlet Arcade 美商歐姆雷特
臺北市.台灣

獎勵 NT$15,000

評論