如何使用BleuIO在Grafana仪表板上可视化BLE空气质量数据
扫描二维码
随时随地手机看文章
室内空气质量是工作场所健康、家庭舒适和工业安全的重要因素。监测二氧化碳、颗粒物、温度、湿度和其他环境指标可以帮助预防健康问题,优化暖通空调的使用,并保持符合建筑标准。在本教程中,我们将使用BleuIO USB加密狗和HibouAir BLE传感器构建一个完整的空气质量监测解决方案。我们将使用Python收集数据,使用InfluxDB存储数据,并使用Grafanato实时可视化数据。
这个项目完全离线工作,在macOS和Windows上运行,适合个人、教育或专业使用。无论您是想监控家庭办公室还是管理工业设置中的传感器,该系统都易于部署且易于扩展。
你需要什么
您将需要一个BleuIO USB加密带和一个HibouAir BLE传感器。这两个设备构成了设置的核心。BleuIO加密狗将通过串行端口连接,并充当BLE Central,连续扫描HibouAir传感器发送的BLE广告数据包。
在软件方面,你需要Python 3、InfluxDB和Grafana,它们都可以在macOS和Windows上使用。您还将安装几个Python包(pyserial和influxdb),以允许脚本通过串行端口读取数据并将其写入数据库。
关于Grafana
grafan是一个开源分析和可视化平台,旨在显示时间序列数据。它与InfluxDB等数据库无缝集成,允许用户创建交互式和可定制的仪表板。在这个项目中,Grafana作为可视化来自HibouAir传感器的实时空气质量数据的前端。其直观的界面和对强大查询的支持使其成为长期监测环境条件,设置警报以及从BLE传感器数据中获得可操作见解的理想选择。
macOS安装
在macOS上,使用Homebrew安装工具是最简单的。您可以使用以下命令安装所有内容:
启动服务:
Windows安装
对于Windows,请从官方网站下载安装程序:
•InfluxDB 1.倍
•Grafana
•Python
确保Python和pip被添加到您的系统路径中。然后你可以通过以下方式安装Python包:
另外,通过打开设备管理器并检查端口(COM和LPT)来确定您的BleuIO COM端口。您将看到类似COM3的东西,您将在Python脚本中使用它。
设置InfluxDB
在安装InfluxDB之后,您需要创建一个数据库来存储传感器读数。在macOS上,打开终端。在Windows上,使用命令提示符或PowerShell。
要进入InfluxDB命令行:
在CLI中输入:
这将创建一个名为hibouair的数据库,Python脚本将使用该数据库记录环境数据。
您不需要为本地测试设置身份验证。如果稍后要保护实例,请记得使用您的用户名和密码更新Grafana和Python脚本。
配置Grafana
安装并运行Grafana后,打开浏览器,进入:
默认用户名和密码为:
登录后,系统会要求您设置新密码。进入Grafana仪表板后:
•转到设置→数据源
•单击添加数据源
•选择InfluxDB
设置如下内容:
•数据库:hibouair
•用户和密码:留空,除非您启用了身份验证
•HTTP方法:GET或POST(默认是好的)
•点击Save & Test
您应该看到一条成功消息,确认Grafana可以从InfluxDB读取。
通过串口连接BleuIO
插入BleuIO USB加密狗。
•在macOS上,使用ls /dev/cu找到端口。usbmodem*示例:/dev/cu.usbmodem4048FDEBA6D01
•在Windows上,检查设备管理器→端口(COM & LPT)并找到类似COM3或COM4的内容。
该端口将在Python脚本中用于打开到加密狗的串行连接。
Python脚本
Python脚本以Central模式初始化BleuIO加密狗,发送扫描命令(AT+ findscanata),并从HibouAir传感器读取BLE广告数据包。数据以十六进制格式到达,解码后提取温度、湿度、CO2、VOC、PM1、PM2.5、PM10、光、噪声和压力等值。然后,脚本将这些数据用时间戳写入InfluxDB。
为了避免存储重复的值,脚本只记录每个扫描周期的第一个有效读取。在再次扫描之前,它等待一个可配置的时间段(例如,20秒)。
您可以从下面链接的GitHub存储库查看并复制完整的Python脚本。
GitHub: bleuio-hibouair-influx-grafana
运行脚本:
确保将脚本中的串口路径和板ID替换为您的实际值。
在Grafana中创建仪表板
随着数据流入InfluxDB,是时候在Grafana中可视化它了。首先创建一个新的仪表板:
•从左侧菜单,转到仪表板→新建→添加新面板
•在查询编辑器中,选择InfluxDB数据源
•输入下面的查询来显示二氧化碳浓度:SELECT last(" CO2 ") FROM "air_quality" WHERE $timeFilter GROUP BY time($__interval)
这个查询从air_quality测量中获取最新的CO2读数。您可以将“co2”更改为“temp”,“hum”,“voc”,“pm25”或任何其他字段,这取决于您想要显示的内容。
Grafana将自动在折线图上绘制数据。您可以从面板设置切换到量规、条或其他可视化。您还可以设置阈值、值范围和颜色以提高可读性。
重复此过程以添加更多显示温度、湿度、voc、PM2.5、PM10和其他值的面板。
完成指示板后,单击Apply,然后单击Save该指示板以便以后重用它。
输出
它是如何工作的
该系统利用来自HibouAir的BLE广告广播和基于AT命令的串行通信与BleuIO加密狗。加密狗使用AT+ findscanata ==3扫描特定的板ID, Python脚本读取并解码接收到的每个广告。解码后的数据使用官方客户端库立即发送到InfluxDB。
Grafana查询这些时间序列数据并实时显示。由于所有组件都是本地的,因此不依赖于外部服务器或云api。该系统也是模块化的,因此您可以轻松扩展它以支持多个传感器,扩展其他BLE格式的解码器,或者在未来将数据转发到基于云的平台。
用例
这种设置对于一系列应用程序来说是理想的。在办公环境中,监测二氧化碳和湿度有助于优化通风,提高工作效率。在工厂或车间,跟踪颗粒物和挥发性有机化合物可确保空气质量合规和安全。对于研究人员和学生来说,这个项目提供了一种亲身实践的、本地的、开源的方法来研究环境变化。即使在住宅环境中,它也可以帮助检测空气循环不良或污染物峰值。该解决方案的简单性使得开发人员和非开发人员都可以使用它。
扩展项目
有几种方法可以扩展这个项目:
•增加对其他BLE数据类型的支持,例如HibouAir的NO₂类型08广告
•设置Grafana警报,当二氧化碳超过800ppm或湿度降至30%以下时通知你
•将历史数据从InfluxDB导出到CSV以进行离线分析
•在系统启动时将Python脚本作为后台服务运行
•连接多个传感器,覆盖多个房间或区域
只要稍加修改,您也可以在Raspberry Pi或Linux服务器上运行此设置。
只需一个BleuIO加密狗、一个HibouAir传感器和一些开源工具,您就构建了一个功能齐全的空气质量监测解决方案。该系统灵活、轻量级,并且完全离线运行。它提供了对室内环境条件的实时洞察,可以适应各种应用。
本文编译自hackster.io