今天我们就来介绍一个Raspberry Pi IoT项目,这次教程将建立一个物联网系统,该系统会使用InfluxDB,MQTT和Grafana监视传感器。换句话说,我们将基于Grafana构建仪表板,从而可视化传感器获取的数据。这样,InfluxDB存储传感器所读取的值。所有系统都将使用MQTT交换数据。下图更好地描述了整个Raspberry Pi IoT项目。
我们将会用到以下配件:
Raspberry Pi 3
ESP8266
传感器(比如BMP280, DHT11)
树莓派作为一个中央服务器,运行以下组件:
InfluxDB
Mosquitto (the MQTT broker)
Grafana
ESP8266管理使用MQTT协议发送数据的传感器,这些组件使用Docker容器运行。
IoT项目概述
上图显示了构建此物联网项目的组件,例如InfluxDB,Grafana和Mosquitto。那么,这些组件如何交换数据,以及它们如何连接?下图显示了操作方法:
让我们开始描述该物联网系统如何工作:
Mosquitto充当MQTT代理,接受来自传感器的数据(充当发布者的ESP8266)
Telegraf订阅了MQTT主题,传感器在该主题中发布数据并将此信息存储到InfluxDB中
Grafana读取InfluxDB中的数据并管理仪表板以可视化此类信息
现在,我们知道了所有组件及其所扮演的角色,接下里可以开始构建系统了。首先,我们开始构建和配置所有这些组件。
使用Docker在Raspberry Pi上安装和配置Mosquitto
第一步是在Raspberry Pi上安装Mosquitto。只需记住:Mosquitto是MQTT代理。为此,我们将使用Docker,以便我们可以轻松安装所需的所有东西:
等待下载完成,然后即可启动MQTT代理:
这样,如下图显示,MQTT服务器已启动并正在运行:
安装和配置InfluxDB
一旦Mosquitto启动并运行,我们就可以安装和配置InfluxDB。InfluxDB是一个时间序列数据库,我们可以在其中存储时间相关的数据。
安装完成后,就可以启动InfluxDB了:
只需注意几件事。在这种情况下,我们以虚拟光驱启动数据库,并创建一个来存储数据/var/lib/influxdb:
如何创建一个InfluxDB数据库和用户
下一步是创建数据库和将访问该数据库的用户。Telegraf访问数据库以存储来自MQTT通道的数据时,将使用该用户。
首先,启动InfluxDB CLI:
接下来,让我们创建数据库和用户:
在这几行代码中,我们创建了一个名为的数据库sensors以及一个具有username telegraf和password的用户“telegraf”
安装和配置Telegraf
现在是时候安装和配置Telegraf了,该组件是连接到MQTT代理的组件,该代理订阅了发布传感器数据的通道并将此信息存储到InfluxDB中。
使用Telegram之前,有必要对其进行配置。首先是创建一个默认配置,我们将对其进行修改以使其适应我们的方案:
现在,可以配置Telegraf。打开telegraf.conf并查找mqtt_consumer进行添加/修改:
然后,我们需要修改输出部分。查找outputs.influxdb并添加/修改:
现在,我们可以运行Telegraf了:
安装和配置Grafana
我们将安装和配置的最后一个组件是Grafana,它是创建仪表板的工具。
测试InfluxDB,Mosquitto和Telegraf之间的连接
现在我们已经配置了所有组件,现在该测试连接是否正常了。为此,让我们启动所有尚未运行的组件。现在,下载并安装MQTT.fx。我们将使用MQTT.fx作为将数据发布到传感器通道的客户端:
运行MQTT.fx
将其连接到在Raspberry Pi上运行的MQTT Broker
订阅传感器频道
在消息部分中写入以下信息:
temp,site=room1value=28
利用此信息,我们添加了一个名为temp的温度测量值,其标签名称站点等于room1,且值为28。这样,我们正在模拟一个ESP8266客户端,该客户端会将数据发送到MQTT代理:
移至Raspberry Pi,检查消息是否到达,以及数据是否存储在InfluxDB传感器数据库中:
一切正常!接下来让我们使用ESP8266构建客户端。
使用Grafana创建仪表板
最后一步是使用Grafana创建仪表板。首先,使用此链接连接到Grafana的Web界面:
http://:3000
接着你会看到下图界面:
现在,请按照下列步骤操作:
使用(admin / admin)登录到Grafana
配置数据源,选择InfluxDB
根据需要创建带有图形的仪表板
下面显示了使用温度和压力的Grafana仪表板示例:
最后,您也可以通过监视其他物理量(湿度、光线等)来进一步扩展此项目
关注风火轮,技术之路常相伴,我们下期见!
领取专属 10元无门槛券
私享最新 技术干货