基于Grafana构建仪表盘可视化传感器获取的数据

本文带您了解如何基于Grafana构建仪表板,以可视化传感器获取的数据。

此Raspberry Pi IoT教程将构建一个IoT系统,该系统使用InfluxDB,MQTT和Grafana监视传感器。 换句话说,我们将基于Grafana构建仪表板,以可视化传感器获取的数据。

基于Grafana构建仪表盘可视化传感器获取的数据
基于Grafana构建仪表盘可视化传感器获取的数据

这样,InfluxDB存储传感器读取的值。 所有系统都使用MQTT交换数据。 下图更好地描述了整个Raspberry Pi IoT项目。

IoT系统
IoT系统

此Raspberry IoT项目使用:

  • Raspberry Pi 3
  • ESP8266(一个或多个)
  • 传感器(例如BMP280,DHT11等)

Raspberry Pi充当运行以下组件的中央服务器:

  • InfluxDB(时间序列数据库)
  • Mosquitto(MQTT)
  • Grafana(用于创建仪表板的平台)

ESP8266管理使用MQTT协议发送数据的传感器。 这些组件使用Docker容器运行。

Raspberry Pi IoT项目概述:InfluxDB,Grafana,Mosquitto和Telegraf

上图显示了将构建此IoT项目的组件,例如InfluxDB,Grafana和Mosquitto。 那么,这些组件如何交换数据,以及它们如何连接? 下图显示了如何执行此操作:

IoT-influxdb-grafana-mosquitto
IoT-influxdb-grafana-mosquitto

让我们开始描述该物联网系统如何工作:

  • Mosquitto充当MQTT代理,接受来自传感器的数据(充当发布者的ESP8266)
  • Telegraf订阅了MQTT主题,传感器在该主题中发布数据并将此信息存储到InfluxDB中
  • Grafana读取InfluxDB中的数据并管理仪表板以可视化此类信息

现在,我们知道了所有组件以及它们所扮演的角色,我们可以构建系统。 首先,我们开始构建和配置所有这些组件。

在本教程中,我们将假设您的Raspberry Pi已安装Docker。

1.使用Docker在Raspberry Pi上安装和配置Mosquitto

第一步是在Raspberry Pi上安装Mosquitto。 只需记住:Mosquitto是MQTT经纪人。 为此,我们将使用Docker,以便我们可以轻松安装所需的所有工具:

sudo docker pull eclipse-mosquitto

等待下载完成,然后可以启动MQTT代理:

sudo docker run -it -p 1883:1883 -p 9001:9001 eclipse-mosquitto

然后,MQTT服务器已启动并正在运行:

MQTT服务器运行状态
MQTT服务器运行状态

2.安装和配置InfluxDB

一旦Mosquitto启动并运行,我们就可以安装和配置InfluxDB。 您可能已经知道,InfluxDB是一个时间序列数据库,我们可以在其中存储时间相关的数据。

sudo docker pull influxdb

安装完成后,就可以启动InfluxDB了:

sudo docker run -d -p 8086:8086 -v influxdb:/var/lib/influxdb --name influxdb influxdb

只需注意几件事。 在这种情况下,我们将数据库作为守护程序启动,并创建一个卷来将数据存储在/ var / lib / influxdb中:

如何创建一个InfluxDB数据库和用户

下一步是创建数据库和将访问该数据库的用户。 Telegraf在访问数据库以存储来自MQTT通道的数据时将使用该用户。

首先,启动InfluxDB CLI:

docker exec -it influxdb influx

接下来,让我们创建数据库和用户:

create database sensors

create user "telegraf" with password "telegraf"

grant all on sensors to telegraf

在这几行代码中,我们创建了一个名为sensor的数据库,以及一个使用用户名telegraf和密码telegraf的用户。

3.安装和配置Telegraf

现在是时候安装和配置Telegraf,该组件连接到MQTT代理,该代理订阅发布传感器数据的通道并将此信息存储到InfluxDB中。

sudo docker pull telegraf

在使用Telegram之前,有必要对其进行配置。 首先是创建一个默认配置,我们将对其进行修改以使其适应我们的方案:

sudo docker run --rm telegraf telegraf config > telegraf.conf

现在,可以配置Telegraf。 打开telegraf.conf并查找mqtt_consumer并添加/修改以下行:

servers = ["tcp://raspberry_pi_ip:1883"]
topics = [
  "sensors"
]
data_format = "influx"

然后,我们需要修改输出部分。 查找outputs.influxdb并添加/修改以下行:

urls = ["http://raspberry_pi_ip:8086"]
database = "sensors"
skip_database_creation = true
username = "telegraf"
password = "telegraf"

现在,我们可以运行Telegraf:

 sudo docker run  -v /home/pi/:/etc/telegraf:ro telegraf

4.安装和配置Grafana

我们将安装和配置的最后一个组件是Grafana,它是创建仪表板的工具。

sudo docker pull grafana/grafana

5.测试InfluxDB,Mosquitto和Telegraf之间的连接

现在我们已经配置了所有组件,现在该测试连接是否正常了。 为此,让我们启动所有尚未运行的组件。 现在,下载并安装MQTT.fx。 我们将使用MQTT.fx作为将数据发布到传感器通道的客户端:

  • 运行MQTT.fx
  • 将其连接到在Raspberry Pi上运行的MQTT Broker
  • 订阅传感器频道

在消息部分中写入以下消息:

temp,site=room1 value=28

使用此消息,我们添加了一个名为temp的温度测量值,其标签名称站点等于room1,且值为28。这样,我们正在模拟一个ESP8266客户端,该客户端会将数据发送到MQTT代理:

MQTT发布消息
MQTT发布消息

移至Raspberry Pi,检查消息是否到达,以及数据是否存储在InfluxDB传感器数据库中:

查看消息是否送达
查看消息是否送达

一切正常!!! 让我们使用ESP8266来构建客户端。

使用Grafana创建仪表板

最后一步是使用Grafana创建仪表板。 首先,使用此链接连接到Grafana的Web界面:

http://<your_raspberry_ip>:3000

你会看到下面的页面:

Grafana网页
Grafana网页

现在,请按照下列步骤操作:

  • 使用(admin / admin)登录到Grafana
  • 配置数据源,选择InfluxDB
  • 根据需要创建带有图形的仪表板

下面显示了使用温度和压力的Grafana仪表板示例:

Grafana数据看板实例
Grafana数据看板实例

将ESP8266连接到MQTT

如果您想了解更多有关将ESP8266连接到MQTT发布温度和压力的信息,请参照本站中另外一篇文章《如何将Cayenne IoT与ESP8266和MQTT结合使用》

总结

在本文的结尾,您希望知道如何自己构建Raspberry Pi IoT系统。 您可以通过监视其他物理量(湿度,光照等)来进一步扩展该项目。 您甚至可以使用该项目来监视其他方面并构建仪表板。

SO资源郑重声明:
1. 本站所有资源来源于用户上传和网络,因此不包含技术服务请大家谅解!如有侵权请邮件联系客服!3187589@qq.com
2. 本站不保证所提供下载的资源的准确性、安全性和完整性,资源仅供下载学习之用!如有链接无法下载、失效或广告,请联系客服处理,有奖励!
3. 您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容资源!如用于商业或者非法用途,与本站无关,一切后果请用户自负!

SO资源 » 基于Grafana构建仪表盘可视化传感器获取的数据