對創客而言可能不太清楚何謂Elastic,Elastic NV是一間在荷蘭、美國都有總部的軟體公司,該公司的軟體主要是搜尋引擎Elasticsearch,類似Google的搜尋引擎,但可以讓用戶自行下載安裝該搜尋引擎,用來實現自己的搜尋應用,許多網站都有使用,例如eBay、Netflix、維基百科等,而其軟體是採開放原始碼的方式發展。
除了Elasticsearch外Elastic公司也延伸發展出許多與自家搜尋相互搭配的軟體,如Kibana資料視覺化儀表板、Logstash多來源資料攫取與轉換等,三者合稱ELK Stack,然嚴格而論ELK Stack一詞後續也包含三套之外的更多軟體,如Beats等。
圖1 : Elastic Cloud的視覺化呈現介面(圖片來源:Arduino) |
|
另外用戶可能因為技術或人力的不足,無法自行下載、整合、維護Elasticsearch搜尋引擎,該公司也提供付費使用的SaaS版服務,即Elastic Cloud,Elastic Cloud不僅提供搜尋功能也提供ELK Stack功能,即Kibana、Logstack等也包含在內。
讓Portenta H7與Elastic連線
正因為很多人愛用Elastic軟體或雲端服務,故Arduino、Elastic兩業者技術合作,開發出讓Arduino可以連線Elastic軟體/雲端服務的函式庫(library),稱為Elasticsearch Arduino Client,該函式庫以C++程式語言撰寫成。
也就是說,創客(或稱為開發者)可以在撰寫Portenta H7系統板的控制程式時,選擇呼用(呼叫使用)該函式庫,如此Portenta H7系統板在正式安裝運作後,後端就可以跟Elastic軟體/雲端服務互動,而不再只是跟Arduino Cloud雲端服務互動。
使用Elasticsearch自架伺服器或Elastic Cloud雲端服務的好處是,它的功能豐富度高於Arduino Cloud,單純收容資訊、檢視資訊Arduino Cloud當然沒問題,但更多好的分析功能、呈現功能,依然是Elastic的比較好。簡單說,想要更專業的應用得用Elastic,而基本學習、概念驗證或簡單應用則可用Arduino Cloud。
Portenta H7系統板是屬於Arduino Pro(產業取向的Arduino)的一員,並經常用於實現物聯網中的感測器節點(sensor node)裝置,很明顯是專業應用、實務應用,但其實其他的Arduino系統板也適用,例如MKR WiFi 1010、Nano RP2040等。
實例與相關語法
以物聯網領域中最典型的「上傳溫度數據」應用為例子,簡單說明一下如何建立Elasticsearch互動的設定,首先到Elastic Cloud申請一個登入帳號(不用信用卡號碼),然後建立一個執行個體(instance),取得上傳的URL跟API金鑰,進一步的操作設定可見此。
接著建立上傳所需要的資訊欄位,在此例中包含溫度、日期時間、裝置的地理位置(經緯度)、裝置本身的ID等,HTTP內的語法如下:
若要直接使用伺服器端的時間戳來記錄日期時間,即感測器一上傳資訊,伺服器自動填入上傳的日期時間,則語法如下:
至於溫度資訊如何上傳,語法如下:
在這裡頭,21.45是攝氏21.45度的意思,H7-001是我們的感測器電路板為Portenta H7的第一片,地理位置則是經緯度,格式為浮點數。
除了不斷上傳外,其餘也可以向伺服器端索求資訊,例如某個前端裝置希望知道方圓100公里內所有感測器節點上傳的溫度的平均值,則可用以下語法:
圖6 : 感測器節點上傳溫度外,也向伺服器取得方圓百里內的平均溫度值(圖片來源:Arduino) |
|
取得方圓100公里內的平均溫度後,可以做為設備調整內部參數的一些參考,而到了真正要撰寫Arduino控制程式時,記得要把函式庫含包括進來才行:
#include “ESClient.h”
#include “elasticsearch_config.h”
另外資料上傳下傳也會用及JSON格式,所以也要含括ArduinoJson.h等。
小結
歸結而言,雖然上傳到Elastic Cloud會比上傳到Arduino Cloud上複雜,但想到Elastic Cloud有更多專業的分析與呈現功能,或許也是值得的。
(本文由VMAKER授權轉載;連結原文網址)