使用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即可。

スクリーンショット 2016-09-24 18.15.08.png

将Y轴设置为平均值,将X轴设置为日期直方图。
虽然更新间隔和显示时间的设置不太直观,但可以从右上角进行设置。

スクリーンショット_2016-09-24_18_16_25.png

在上述过程中,我们成功实现了实时图表绘制。

スクリーンショット 2016-09-24 18.19.54.png

这个图表可以作为iframe输出,所以你可以轻松地将其嵌入到你自己的网站中。
此外,在仪表板上显示多个传感器信息也是一个不错的选择。

最后, or 结尾是

通过使用Elasticsearch和Kibana,我们能够轻松地将传感器数据可视化。不仅可以显示单个传感器的信息,还可以轻松地显示各种时序数据。此外,如果与AWS IoT等进行协同,还可以轻松地在云端进行管理。

广告
将在 10 秒后关闭
bannerAds