Rock 5b开发板 + BME280传感器 + InfluxDB/Grafana打造动态温湿度监控平台

2023-01-14 13:37:26 17点赞 21收藏 16评论

之前买了一块基于瑞芯RK3588的Rock 5b国产开发板,配置非常强大,我已经在上面跑了NAS->OpenMediaVault,软路由->OpenWRT,智能家居->Home Assistant等多个应用或者Docker容器,具体实现方法参看以下文章,主要步骤都罗列出来了。运行情况还是非常稳定的,一个月以来就死机了一次,看CPU利用率不到3%,内存(16GB)使用率不到20%,显然还大有潜力可挖。

于是我又翻出了尘封多年的树莓派各个传感器,基本上Rock 5b和树莓派的传感器还是兼容的,都是基于GPIO嘛,但是设置方法有一些差别。几年前我发过一篇文章,是讲树莓派和PowerBI集成温湿度监控平台的。

评论中有值友说除了用PowerBI的Streaming服务,也可以用InfluxDB+Grafana来实现,那么这次我就试验一下这一方案的可行性如何。

Rock 5b开发板 + BME280传感器 + InfluxDB/Grafana打造动态温湿度监控平台

什么是Grafana

首先介绍一下Grafana,Grafana是一个监控仪表系统,是由Grafana Labs公司开源的的一个系统监测工具。它可以大大帮助简化监控的复杂度,只需要提供需要监控的数据,就可以帮你生成各种可视化仪表。同时它还有报警功能,可以在系统出现问题时通知你。

开源意味着这一工具完全免费,你也可以自己优化它的功能。同时,它支持多个数据源,如Prometheus,Graphite,OpenTSDB,InfluxDB,MySQL/PostgreSQL,Microsoft SQL Server等等。

构建你的第一个Grafana仪表盘

这里用Docker在Rock 5b上安装Grafana,首先确保5b已经启用了Docker环境,具体方法在前面的文章里有介绍。安装Grafana使用了一个范例,大家可以在后面括号的链接中找到相关代码的下载地址(教程来自这里)。

Rock 5b开发板 + BME280传感器 + InfluxDB/Grafana打造动态温湿度监控平台

架构还是很清晰的,在这里我们启动了三个服务:

  • Prometheus普罗米修斯时序数据库,用来存储和查询你的监控数据

  • Promethues-exporter一个模拟数据源,用来监控你本机的状态,比如有几个 CPU,CPU 的负载之类

  • Grafana本尊


使用以下命令启动Docker。

docker-compose up

Rock 5b开发板 + BME280传感器 + InfluxDB/Grafana打造动态温湿度监控平台

如果一切正常,三个docker容器将被启动,包括prometheus, service和grafana;其中prometheus是普罗米修斯时序数据库,service是普罗米修斯自带的数据生成器(监控本机 CPU 内存等信息),grafana就是Grafana 服务本身。然后,浏览器访问本地的3000端口,即可打开grafana网站。

Rock 5b开发板 + BME280传感器 + InfluxDB/Grafana打造动态温湿度监控平台

初始的用户名是admin,密码也是 admin。输入之后,会要求改密码。

和PowerBI一样,第一步是配置数据源Add Data Source。Grafana 本身并不负责数据层,它只提供了通用的接口,让底层的数据库可以把数据给它。而我们起的另一个服务,叫 Prometheus则是负责存储和查询数据的。也就是说,Grafana 每次要展现一个仪表盘的时候,会向 Prometheus 发送一个查询请求。Prometheus-exporter 这个服务,会查询你的本地电脑的信息,比如内存还有多少、CPU 负载之类,然后将数据导出至普罗米修斯数据库。

Rock 5b开发板 + BME280传感器 + InfluxDB/Grafana打造动态温湿度监控平台

可以看到Prometheus已经有了。

Rock 5b开发板 + BME280传感器 + InfluxDB/Grafana打造动态温湿度监控平台

这里使用prometheus的域名9090端口来访问,这是之前的docker配置文件设置好的。

Rock 5b开发板 + BME280传感器 + InfluxDB/Grafana打造动态温湿度监控平台

保存之后如果看到Data source is working的提示,就说明Grafana已经跟普罗米修斯成功建立了连接。

Rock 5b开发板 + BME280传感器 + InfluxDB/Grafana打造动态温湿度监控平台

数据搞定了,下一步就是配置仪表盘了,选择Dashboards -> Import。

Rock 5b开发板 + BME280传感器 + InfluxDB/Grafana打造动态温湿度监控平台

这个网站下载仪表盘模板Json文件,在Grafana中上传。

Rock 5b开发板 + BME280传感器 + InfluxDB/Grafana打造动态温湿度监控平台

选择刚才配置好的Prometheus数据源。

Rock 5b开发板 + BME280传感器 + InfluxDB/Grafana打造动态温湿度监控平台

就可以生成非常酷炫的人生第一个Grafana仪表盘了,实时监控开发板的资源使用情况。因为我没有配置SWAP,所以有些数据是没有的。

Rock 5b开发板 + BME280传感器 + InfluxDB/Grafana打造动态温湿度监控平台

安装InfluxDB 2.0

和prometheus一样,InfluxDB是一个专为时序数据设计的数据库,功能更加强大。docker安装方法如下(教程来自这里):注意InfluxDB已经升级到2.0版本,和之前的版本相比区别比较大,网上的不少教程都已经过期了。

首先启动docker

systemctl start docker

抓取influxdb的docker镜像

docker pull influxdb:2.0.7

写入influxDB配置文件并运行。

docker run --name influxdb -d
-p 8086:8086
--volume `pwd`/influxdb2:/var/lib/influxdb2
--volume `pwd`/config.yml:/etc/influxdb2/config.yml
influxdb:2.0.7

定义相关的账号密码。

docker exec influxdb influx setup
--bucket BUCKET_NAME
--org ORG_NAME
--password PASSWORD
--username USERNAME
--force

这里BUCKET_NAME可以认为是数据库的名字,而ORG_NAME是组织的名字,根据自己情况定义。

如果一切正常,就可以浏览器访问本地的8086端口打开InfluxDB。

Rock 5b开发板 + BME280传感器 + InfluxDB/Grafana打造动态温湿度监控平台

如果打算使用InfluxDB 2.0的基本功能而不编写任何软件来写入或查询数据库中的数据,那么到这里就已经完成了。 但是,我这里要将传感器获取的数值传递到InfluxDB中的应用程序,并且要以编程方式获取访问令牌(Token)。

可以使用 influx CLI 使用以下命令检索令牌:

docker exec influxdb influx auth list

返回结果是如下格式:

Rock 5b开发板 + BME280传感器 + InfluxDB/Grafana打造动态温湿度监控平台

但我关心的只有Token,用这个命令获取数组中的Token,并把它记录下来:

docker exec influxdb influx auth list | awk '/admin/ {print $4 " "}'

把这些内容整合起来就可以写一个完整的InfluxDB的安装脚本文件,执行后就可以生成完整的InfluxDB环境。

Rock 5b开发板 + BME280传感器 + InfluxDB/Grafana打造动态温湿度监控平台

将BME280温湿度传感器连接至Rock 5b

Rock 5b开发板 + BME280传感器 + InfluxDB/Grafana打造动态温湿度监控平台

可使用的温湿度传感器其实有不少,比如DT11,DT22,DS18B20等等,淘宝上的价格从几元到几十元不等。我这里是精度较高的BME280,这是一款集成温度、湿度、气压,三位一体的环境传感器。具有高精度,多功能,小尺寸等特点。DFRobot Gravity I2C BME280环境传感器采用Gravity-I2C接口设计,同时预留预留SPI接口,可以方便快捷的搭建产品原型,应用于环境监测,楼层高度检测,物联网控制等各种应用场景。Gravity I2C BME280环境传感器使用BOSCH最新MEMS微机电传感器,具备良好的稳定性。气压测量在整个温区非常稳定的,偏置温度系数±1.5 pa/k,当温度变化时,1摄氏度的温度变化导致的误差仅在12.6厘米。这种稳定性,连同其多功能的特点,使得BME280可以适用于各种应用场景。

5b的连线和树莓派一样,因为引脚定义是一致的。

Rock 5b开发板 + BME280传感器 + InfluxDB/Grafana打造动态温湿度监控平台

Rock 5b开发板 + BME280传感器 + InfluxDB/Grafana打造动态温湿度监控平台

连好引脚是这个样子的。

Rock 5b开发板 + BME280传感器 + InfluxDB/Grafana打造动态温湿度监控平台

传感器裸露在外面有点难看,于是我用微积木给它做了个塑料壳。

Rock 5b开发板 + BME280传感器 + InfluxDB/Grafana打造动态温湿度监控平台

晚上不开灯甚至能用来做小夜灯。

Rock 5b开发板 + BME280传感器 + InfluxDB/Grafana打造动态温湿度监控平台

这里要用到GPIO口的I2C,这里简单介绍一下I2C。

I2C总线是由Philips公司开发的一种简单、双向二线制同步串行总线。它只需要两根线即可在连接于总线上的器件之间传送信息。主器件用于启动总线传送数据,并产生时钟以开放传送的器件,此时任何被寻址的器件均被认为是从器件.在总线上主和从、发和收的关系不是恒定的,而取决于此时数据传送方向:如果主机要发送数据给从器件,则主机首先寻址从器件,然后主动发送数据至从器件,最后由主机终止数据传送;如果主机要接收从器件的数据,则主机器件寻址从器件.然后主机接收从器件发送的数据,最后由主机终止接收过程。在这种情况下,主机主要是负责产生定时时钟和终止数据传送。

开启5b的I2C的方法是修改config.txt启动文件,这和树莓派不同。

Rock 5b开发板 + BME280传感器 + InfluxDB/Grafana打造动态温湿度监控平台

dtoverlay=rk3588-i2c0-m1
dtoverlay=rk3588-i2c1-m0
dtoverlay=rk3588-i2c3-m1
dtoverlay=rk3588-i2c7-m3
dtoverlay=rk3588-i2c8-m4

修改后续执行update_extlinux.sh命令生效。

Rock 5b开发板 + BME280传感器 + InfluxDB/Grafana打造动态温湿度监控平台

一开始还是按照老方法查看

sudo apt-get install i2c-tools

sudo i2cdetect -y 1

奇怪的是返回结果是UU不是77。

Rock 5b开发板 + BME280传感器 + InfluxDB/Grafana打造动态温湿度监控平台

网上查了很多资料才得知,代码里查询的是1通道的设备,但是同样的接线方式5b接线的是7通道,所以无论如何都无法运行。(来自文章)改成7果然就可以了。

sudo i2cdetect -y 7

Rock 5b开发板 + BME280传感器 + InfluxDB/Grafana打造动态温湿度监控平台

使用的还是之前树莓派链接BME280的示例文件。

Rock 5b开发板 + BME280传感器 + InfluxDB/Grafana打造动态温湿度监控平台

用文本编辑器打开,将默认地址改成0x77(原来是0x76)

Rock 5b开发板 + BME280传感器 + InfluxDB/Grafana打造动态温湿度监控平台

尝试运行发现报错。

Rock 5b开发板 + BME280传感器 + InfluxDB/Grafana打造动态温湿度监控平台

这里注意后面也要改成7通道,如smbus.SMBus(7),并用Python3来运行。

Rock 5b开发板 + BME280传感器 + InfluxDB/Grafana打造动态温湿度监控平台

这下运行就成功了。

Rock 5b开发板 + BME280传感器 + InfluxDB/Grafana打造动态温湿度监控平台

但是目前我只实现了在本地展示传感器实时数据,下面要做的是将数据上传至InfluxDB数据库。(参考了这篇文章

访问InfluxDB的网站,可以查看到符合自己环境的influxdb客户端的安装配置脚本。通过pip install influxdb-client安装客户端。

Rock 5b开发板 + BME280传感器 + InfluxDB/Grafana打造动态温湿度监控平台

张大妈这里输入过多代码会导致文章无法保存,所以这里只展示同步至InfluxDB的关键脚本截图。

在代码开头添加上图中导入InfluxDBClient等模块。

Rock 5b开发板 + BME280传感器 + InfluxDB/Grafana打造动态温湿度监控平台

下面是客户端连接脚本。注意要修改用户名,密码和Token以符合你们的环境。

Rock 5b开发板 + BME280传感器 + InfluxDB/Grafana打造动态温湿度监控平台

我希望客户端可以每隔五分钟将传感器的数值上传到InfluxDB上,可以通过修改crontab文件实现,命令如下:

Rock 5b开发板 + BME280传感器 + InfluxDB/Grafana打造动态温湿度监控平台

自定义Grafana仪表盘

至此如果一切正常,传感器已经再源源不断地将数据传至数据库了。此时我们要做的是在Grafana服务器上连接InfluxDB数据库。

Rock 5b开发板 + BME280传感器 + InfluxDB/Grafana打造动态温湿度监控平台

Add data source里选择InfluxDB的数据源。

Rock 5b开发板 + BME280传感器 + InfluxDB/Grafana打造动态温湿度监控平台

配置时输入本地对应的Bucket,Organization,Token,和之前的脚本一样。

Rock 5b开发板 + BME280传感器 + InfluxDB/Grafana打造动态温湿度监控平台

然后在下方写入Query脚本,使用的是FLUX语言,可以查看官方的介绍文档

Rock 5b开发板 + BME280传感器 + InfluxDB/Grafana打造动态温湿度监控平台

传感器总共检测三个值,温度、湿度和大气压,脚本里定义为temperature, humidity,pressure,可以编写简单的Query脚本如下:

Rock 5b开发板 + BME280传感器 + InfluxDB/Grafana打造动态温湿度监控平台

语言很容易理解,读取的Bucket是“home”,时间范围是最近6小时,读取的参数为pressure。

执行后即可看到对应的的点状图,你也可以在右侧面板里对于展示效果做进一步调整。

同理,可以添加针对temperature, humidity的图表,放在同一个仪表盘上。默认视图下,右上角可以设置不同的时间筛选条件,设为自动刷新等等。

Rock 5b开发板 + BME280传感器 + InfluxDB/Grafana打造动态温湿度监控平台

通过Garfana仪表盘我就能分析办公场所的环境特点了,办公室里湿度较低较干燥,而下午的温度呈升高趋势,难怪这么多同事喜欢用加湿器,看来我也得多用些保湿化妆品滋养我娇嫩的肌肤。

总结

这次总结了一下如何用Rock 5b开发板 + BME280传感器 + InfluxDB/Grafana打造动态温湿度监控平台的实现方法,不得不说作为一款开源产品Grafana的功能还是相当强大的,还有更多玩法有待我的发掘。

喜欢我的文章请点赞、收藏、评论,谢谢大家的支持!

Rock 5b开发板 + BME280传感器 + InfluxDB/Grafana打造动态温湿度监控平台


展开 收起

ihuman 洪恩 识字子集拼音思维ABC会员永久包3-6岁儿童早教启蒙礼物玩具 识字会员终身包

ihuman 洪恩 识字子集拼音思维ABC会员永久包3-6岁儿童早教启蒙礼物玩具 识字会员终身包

268元起

任天堂 Nintendo Switch《舞力全开 Just Dance》 游戏兑换卡

任天堂 Nintendo Switch《舞力全开 Just Dance》 游戏兑换卡

159元起

Microsoft 微软 OFFICE 365 家庭版 会员

Microsoft 微软 OFFICE 365 家庭版 会员

106元起

WPS 金山软件 WPS 超级会员 3年卡

WPS 金山软件 WPS 超级会员 3年卡

308元起

Microsoft 微软 Office 365 个人版

Microsoft 微软 Office 365 个人版

106元起

Microsoft 微软 365 家庭版 电子秘钥 正版高级Office应用 1T云存储

Microsoft 微软 365 家庭版 电子秘钥 正版高级Office应用 1T云存储

299元起

Microsoft 微软 到手18.2元/月 微软office365家庭版microsoft365增强版15个月

Microsoft 微软 到手18.2元/月 微软office365家庭版microsoft365增强版15个月

279元起

Microsoft 微软 OFFICE 365 个人版 办公软件

Microsoft 微软 OFFICE 365 个人版 办公软件

189元起

Microsoft 微软 office专业版永久激活码office2019增强版终身版outlook密钥

Microsoft 微软 office专业版永久激活码office2019增强版终身版outlook密钥

249元起

WPS超级会员Pro套餐4年卡1488天官方正版pdf转word排版

WPS超级会员Pro套餐4年卡1488天官方正版pdf转word排版

676.4元起

WPS超级会员4年套餐pdf转word排版PPT润色模板素材店铺

WPS超级会员4年套餐pdf转word排版PPT润色模板素材店铺

暂无报价

国行版 Switch体感游戏套装 《健身环大冒险》

国行版 Switch体感游戏套装 《健身环大冒险》

439元起

WPS 金山软件 会员季卡

WPS 金山软件 会员季卡

59.85元起

Microsoft 微软 office365家庭版15个月 203元

Microsoft 微软 office365家庭版15个月 203元

198元起

微软(Microsoft))win10win11专业版批量式授权企业版嵌入式正版化解决方案win11家庭版

微软(Microsoft))win10win11专业版批量式授权企业版嵌入式正版化解决方案win11家庭版

1288元起

Microsoft 微软 活动6天 office365家庭版microsoft365订阅密钥

Microsoft 微软 活动6天 office365家庭版microsoft365订阅密钥

234元起
16评论

  • 精彩
  • 最新
提示信息

取消
确认
评论举报

相关好价推荐
查看更多好价

相关文章推荐

更多精彩文章
更多精彩文章
最新文章 热门文章
21
扫一下,分享更方便,购买更轻松