对创客而言可能不太清楚何谓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授权转载;连结原文网址)