![]() |
![]() |
![]() |
![]() |

隨著物聯網(Internet of Things, IoT)技術的發展,各種物聯網設備與平台廠商也因應而生,物聯網設備被大量運用在我們的生活中,從個人的可穿戴裝置,智慧家電,工業上的智慧製造,商業上的智慧零售、智慧物流,智慧醫療與保健,乃至城市的交通管理、安全監控、智慧照明、智慧電網與水資源管理等,均可看到物聯網設備的實際應用案例。
物聯網在農業中最常見的應用就是收集環境資訊,例如氣象環境、土壤、水質、葉面溫度、葉面溼度、畜禽環境及控制系統等,而各家廠商開發的環境感測器或控制裝置之規格、串接方式、通訊技術以及傳輸資料欄位用語等皆不相同。一個農場可能同時採用不同廠商的物聯網感測設備,又或者一個農企業欲整併多家農戶,但各農戶所採用的感測設備廠牌不同,因各廠商的系統彼此獨立,導致物聯網資料的收集整合不易。此外,有些系統平台提供的資料存放空間有限,常需要自行下載備份資料,除了費時更影響數據分析以及資料的再利用性。如果能把分散於各平台的資訊進行整合,將收集到的訊息用圖表呈現,並判斷狀況對設備進行控制,就能使整個物聯網系統監控變得更加容易。本文將以Node-RED為例,介紹跨系統平台與IoT設備資訊整合,供農業物聯網與智慧農業相關產業人員參考應用。
Node-RED是IBM推出的一款基於流程(flow)編程的視覺化程式設計語言開發工具,通過這一工具,開發者可以將硬體設備與應用程式介面(Application Programming Interface,API)和在線服務相連,並組成一個小型物聯網[1]。Node-RED為開源碼,構建在Node.js上,是一種用於物聯網的低代碼程式設計環境,除了可安裝在Windows、Linux、Mac OS等本地端電腦運行外,也適合在雲端及網絡邊緣使用樹梅派(Raspberry Pi)等低成本的硬體運行[2]。Node-RED的官方網站除了介紹它的特色、歷史與治理方針外,也有詳細的入門教學、論壇、節點(nodes)與流程程式庫(Node-RED Library),社群資源相當豐富。
Node-RED提供了一個基於瀏覽器的流程編輯器(如圖2),左邊的節點欄位預設多種不同功能的節點,每個節點分別代表不同的API、功能函數、硬體設備或雲端服務等,這些節點大致可分為輸入節點(如inject、mqtt in、http request等)、處理節點(如function、switch、json、join等)和輸出節點(如debug、mqtt out、http response等),只要將面板中不同功能的節點拖曳到流程編輯器內,設定好參數或程式碼並連接組合在一起構成一個流程,點擊一下部署(deployed)後即可輕鬆完成程式開發並開始運行,使物聯網程式的開發及設計更加快速簡易。
此外Node-RED可使用多種網路通訊協定(包括HTTP、MQTT、TCP、UDP等)進行資料交換,也可存取檔案、MySQL資料庫,並整合相關應用建構出監控介面儀表板(dashboard),幫我們快速打造物聯網平台。
在存取跨系統平台資料時最常使用HTTP與MQTT節點。對於有提供HTTP(或HTTPS) API服務的系統平台,例如中央氣象局氣象資料開放平臺[3]、環保署環境資料開放平台[4]、中華電信IoT智慧聯網大平台[5]、ThingSpeak[6]等,可透過HTTP request進行資料串接;只要取得平台的授權碼(或API Key),並依照格式輸入HTTP request節點的URL設定,即可取得相對應的資料;取得的資料再經過json或function等處理節點轉換,擷取出所需要的資訊後,即可進行儲存或輸出(如圖3)。
另一種是透過MQTT方式來訂閱(subscribe)平台的感測資料,例如中華電信IoT智慧聯網大平台就有提供MQTT服務,只要設定好mqtt in節點的伺服器連線位址(iot.cht.com.tw)、連接埠(1883)以及帳號與密碼(專案金鑰),並輸入對應的主題(topic),即可接收所訂閱的感測資料變動通知。此外,IoT感測設備也可將資料直接發佈(publish)至MQTT中介器 (broker),常見免費的MQTT broker如HiveMQ(broker.hivemq.com)、EMQX(broker.emqx.io)及broker.mqttgo.io等;只要使用mqtt in節點,設定好mqtt-broker的伺服器連線位址、連接埠,並輸入對應的主題,即可接收所訂閱IoT感測設備發佈的資料。取得的資料同樣經過處理節點轉換,擷取出所需要的資訊後,即可進行儲存或輸出(如圖4)。
串接的資料可透過mysql節點儲存至MySQL資料庫進行整合,再使用dashboard節點(如text、gauge、chart等)功能,將資料訊息以儀表板方式呈現(如圖5),建立符合自己需求的物聯網監控戰情平台。對於未提供資料交換API的系統平台,在資料交換串接上相當不便,只能對網頁進行解析,看能否找到取得相對應資料的方法,或透過網路爬蟲來爬取所需要的資訊,因此在選用物聯網設備或系統平台時,是否有提供資料交換API應納入考量。
農業使用的環境感測器或控制裝置種類多元,而各家廠商開發之環境感測器或控制裝置之規格、串接方式、通訊技術以及傳輸之資料欄位用語等皆不相同,導致物聯網資料整合與再利用性困難度提高。若各系統平台或相關裝置能遵循統一標準進行資料流通,將能有效降低整合開發之成本,進而促進智慧農業快速發展。
為此,在行政院農業委員會的推動下,歷經社團法人台灣資通產業標準協會(Taiwan Association of Information and Communication Standards, TAICS)相關程序完成「智慧農業感測資料格式標準及測試規範」制定[7],目標使各個智慧農業系統之平台層能依此標準,完成數據分享或串接。(註:本規範適用範圍及簡介詳見本期電子報:「打造農業物聯網的溝通密碼─淺談農業物聯網資料格式標準化」一文)。
要達成資料交換,除了使用共通的標準化資料外,還必須使用一套雙方認可的API進行請求與回應,傳送和接收所需的資料,以利不同單位能夠進行資料串接、分享。透過標準化的API與資料格式,不同智慧農業雲端平台可進行資料交換而不需了解個別平台內部運作細節。本標準規範使用HTTP通訊協定之RESTful HTTP API為標準。資料格式主要以JSON(JavaScript Object Notation)為主,JSON是目前開放資料平台網站使用的主流格式之一,具有讀寫簡單、解析容易、資料容量小且支援多種程式語言等特性,提供瀏覽器的內建快速解析支援,因此適用於網路資料傳輸。
未來希望隨著本資料格式標準普及化後,促使更多平台快速導入數據分析應用,大幅縮短開發創新應用之時程。新開發的農業管理系統可直接參照標準,免去重新設計系統架構與資料名稱定義等工作;而既有之農業平台經一次程式轉譯或改寫開發後,有效減少與不同單位進行客製化開發之成本。
農業智慧化生產已是未來的趨勢,藉由Node-RED視覺化程式設計語言開發工具,可輕鬆整合不同的系統平台、物聯網設備與資料開放平台資訊,並將整合的資訊以儀表板方式呈現,建立個人化的物聯網監控平台,使整個物聯網系統監控變得更加容易。為了實現資料交換串接的便利性,應選擇有提供資料交換API的物聯網設備與系統平台廠商,並於開發農業管理系統時,直接參照「智慧農業感測資料格式標準及測試規範」,讓系統和系統、設備和設備之間有共同的語言進行數據交流,不同廠商平台的資料更易共享,以達成加速推動擴散農業物聯網應用的目標。
參考資料: