使用Elasticsearch和Kibana,将Arduino传感器信息可视化
Elasticsearch和Kibana是什么?
以下是查找Elasticsearch的相关文章。
从零开始,学会实际运用Elasticsearch!- $shibayu36->博客
这次我们不是用于全文搜索,而是用于传感器数据的存储。
原因是因为可以通过HTTP请求轻松地注册数据,还可以非常简单地获取复杂条件的查询。
Kibana是一款用于可视化Elasticsearch搜索结果的工具,可以展示各种图表。如果想了解可以进行哪些可视化操作,可以在Kibana中进行Google图像搜索来参考。
kibana – 谷歌搜索
我计划使用Elasticsearch和Kibana来可视化传感器信息。
准备
针对macOS环境进行操作。
对于其他操作系统,请适当调整。
Elasticsearch和Kibana可以使用brew进行安装,但由于版本差异等问题可能会浪费很多时间,所以我会迅速使用docker来准备。
准备docker-compose.yml文件。
elasticsearch:
image: elasticsearch
ports:
- "9200:9200"
- "9300:9300"
hostname: elasticsearch
container_name: elasticsearch
kibana:
image: kibana
ports:
- "5601:5601"
links:
- elasticsearch
container_name: kibana
开始。
$ docker-compose up -d
這樣Elasticsearch和Kibana就準備好了。
很簡單吧。
這次沒有使用插件,但如果要作為全文搜索引擎,需要寫入安裝kuromoji等插件的處理。
映射
需要告诉Elasticsearch飞行的是什么样的数据。
由于这次是一个简单的传感器,所以只需要一个时间信息和一个值用于时间序列显示即可。
因此,我们准备了以下的json。
{
"mappings": {
"test": {
"properties": {
"date": {
"type": "date",
"format": "date_time"
},
"value": {
"type": "integer"
}
}
}
}
}
$ curl -XPOST localhost:9200/test -d @map.json
{"acknowledged":true}
Elasticsearch的准备工作已经完成。
从传感器输入
请参考以下文章,将Arduino连接至Mac并接收传感器信息。
使用Node.js来操作Arduino。
有关Arduino环境的设置和获取传感器信息的指南,请阅读以下文章。
【Jonny-Five】使用Node.js来操作Arduino。从LED闪烁到传感器输入——Qiita。
为了将数据发送到Elasticsearch,还可以使用客户端库。
$ npm install --save elasticsearch
执行以下代码。
const five = require('johnny-five');
const elasticsearch = require('elasticsearch');
const client = new elasticsearch.Client({
host: 'localhost:9200',
log: 'trace'
});
const board = new five.Board();
const esIndex = 'test';
const esType = 'test';
board.on('ready', () => {
const sensor = new five.Sensor('A0');
sensor.on('change', v => {
client.create({
index: esIndex,
type: esType,
body: {
value: Number(v),
date: new Date()
}
});
});
});
用这个,你可以将模拟输入接收到的值发送到 Elasticsearch。
在Kibana中进行数据可视化
只需要在Kibana上展示即可。
打开 localhost:5601,并配置一个索引模式。
由于之前已经设置了一个名为test的索引和一个名为test的类型,所以输入test即可。
将Y轴设置为平均值,将X轴设置为日期直方图。
虽然更新间隔和显示时间的设置不太直观,但可以从右上角进行设置。
在上述过程中,我们成功实现了实时图表绘制。
这个图表可以作为iframe输出,所以你可以轻松地将其嵌入到你自己的网站中。
此外,在仪表板上显示多个传感器信息也是一个不错的选择。
最后, or 结尾是
通过使用Elasticsearch和Kibana,我们能够轻松地将传感器数据可视化。不仅可以显示单个传感器的信息,还可以轻松地显示各种时序数据。此外,如果与AWS IoT等进行协同,还可以轻松地在云端进行管理。