Person holding a Raspberry Pi

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

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

您可能还喜欢:
玩 Docker、MQTT、格拉法纳、InfluxDB、Python 和 Arduino

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


此树莓物联网项目使用:

  • 树莓派 3
  • ESP8266(一个或多个)
  • 传感器(如 BMP280、DHT11 等)

树莓派充当运行以下组件的中央服务器:

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

树莓派物联网项目概述:INFLUXDB、格拉法纳、莫斯基托和特莱格拉夫

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


让我们开始描述此 IoT 系统将如何运作:

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

现在,我们知道所有组件及其作用,我们可以构建系统。首先,我们开始构建和配置所有这些组件。

在本教程中,我们将假设 Docker 已安装在您的树莓派上。

使用 Docker 在树莓派上安装和配置摩斯基托

第一步是在树莓派上安装莫斯基托。请记住:莫斯基托是MQTT经纪人。为此,我们将使用 Docker,以便可以轻松安装所有我们需要的:

sudo docker pull eclipse-mosquitto

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

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

就这样。MQTT 服务器已启动并运行:


安装和配置 INFLUXDB

一旦 Mosquitto 启动并运行,我们可以安装和配置 InfluxDB

sudo docker pull influxdb

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

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

只是有几件事需要注意。在这种情况下,我们将数据库启动为 deamon,并创建一个卷来将数据存储在 /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

通过这几行,我们创建了一个名为的数据库 sensors 和一个用户名和密码 telegraf telegraf 的用户。

安装和配置 Telegraf

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

sudo docker pull telegraf

在使用电报之前,必须对其进行配置。第一件事是创建一个默认配置,我们将对其进行修改以适应我们的方案:

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

安装和配置格拉法纳

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

sudo docker pull grafana/grafana

使用 Docker 运行 Grafana 时,可能会出错。如果是这种情况,您可以关注以下帖子:

https://github.com/grafana/grafana/issues/19585#issuecomment-545016209

测试 InfluxDB、莫斯基托和特莱格拉夫之间的连接

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

  • 运行 MQTT.fx
  • 将其连接到在树莓派上运行的 MQTT 经纪商
  • 订阅传感器通道

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

temp,site=room1 value=28

使用此消息,我们添加称为温度的测量值,标签名称站点等于 room1,值为 28cheeli.com.cn/wp-内容/上传/2019/11/send_message_mqtt.png”/*

移动到树莓派并检查消息是否到达,以及数据是否存储在 InfluxDB 传感器数据库中:


一切都在工作!!!!让我们使用 ESP8266 构建客户端。

使用格拉法纳创建仪表板

最后一步是使用 Grafana 创建仪表板。第一件事是使用以下链接连接到格拉法纳的 Web 界面:

http://<your_raspberry_ip>:3000

您将获得此页面:


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

  • 使用(管理员/管理员)登录到格拉法纳
  • 配置数据源,选择 InfluxDB
  • 根据需要使用图形创建仪表板

使用温度和压力的格拉法纳仪表板示例如下所示:


将 ESP8266 连接到 MQTT

如果您想了解有关将ESP8266 连接到 MQTT 发布温度和压力的更多信息,请使用此博客的一篇帖子。

结论

在这篇文章的结尾,你希望知道如何自己构建一个树莓派物联网系统。您可以通过监视其他物理量(湿度、光线等)来进一步扩展此项目。您甚至可以使用此项目监视其他方面并构建仪表板。

进一步阅读

监测天气与INFLUXDB和格拉法纳(和一堆阿杜伊诺斯)

玩 Docker、MQTT、格拉法纳、InfluxDB、Python 和 Arduino

Comments are closed.