如何使用BleuIO在Grafana儀表板上可視化BLE空氣質(zhì)量數(shù)據(jù)
室內(nèi)空氣質(zhì)量是工作場所健康、家庭舒適和工業(yè)安全的重要因素。監(jiān)測二氧化碳、顆粒物、溫度、濕度和其他環(huán)境指標(biāo)可以幫助預(yù)防健康問題,優(yōu)化暖通空調(diào)的使用,并保持符合建筑標(biāo)準(zhǔn)。在本教程中,我們將使用BleuIO USB加密狗和HibouAir BLE傳感器構(gòu)建一個完整的空氣質(zhì)量監(jiān)測解決方案。我們將使用Python收集數(shù)據(jù),使用InfluxDB存儲數(shù)據(jù),并使用Grafanato實時可視化數(shù)據(jù)。
這個項目完全離線工作,在macOS和Windows上運行,適合個人、教育或?qū)I(yè)使用。無論您是想監(jiān)控家庭辦公室還是管理工業(yè)設(shè)置中的傳感器,該系統(tǒng)都易于部署且易于擴(kuò)展。
你需要什么
您將需要一個BleuIO USB加密帶和一個HibouAir BLE傳感器。這兩個設(shè)備構(gòu)成了設(shè)置的核心。BleuIO加密狗將通過串行端口連接,并充當(dāng)BLE Central,連續(xù)掃描HibouAir傳感器發(fā)送的BLE廣告數(shù)據(jù)包。
在軟件方面,你需要Python 3、InfluxDB和Grafana,它們都可以在macOS和Windows上使用。您還將安裝幾個Python包(pyserial和influxdb),以允許腳本通過串行端口讀取數(shù)據(jù)并將其寫入數(shù)據(jù)庫。
關(guān)于Grafana
grafan是一個開源分析和可視化平臺,旨在顯示時間序列數(shù)據(jù)。它與InfluxDB等數(shù)據(jù)庫無縫集成,允許用戶創(chuàng)建交互式和可定制的儀表板。在這個項目中,Grafana作為可視化來自HibouAir傳感器的實時空氣質(zhì)量數(shù)據(jù)的前端。其直觀的界面和對強大查詢的支持使其成為長期監(jiān)測環(huán)境條件,設(shè)置警報以及從BLE傳感器數(shù)據(jù)中獲得可操作見解的理想選擇。
macOS安裝
在macOS上,使用Homebrew安裝工具是最簡單的。您可以使用以下命令安裝所有內(nèi)容:
啟動服務(wù):
Windows安裝
對于Windows,請從官方網(wǎng)站下載安裝程序:
?InfluxDB 1.倍
?Grafana
?Python
確保Python和pip被添加到您的系統(tǒng)路徑中。然后你可以通過以下方式安裝Python包:
另外,通過打開設(shè)備管理器并檢查端口(COM和LPT)來確定您的BleuIO COM端口。您將看到類似COM3的東西,您將在Python腳本中使用它。
設(shè)置InfluxDB
在安裝InfluxDB之后,您需要創(chuàng)建一個數(shù)據(jù)庫來存儲傳感器讀數(shù)。在macOS上,打開終端。在Windows上,使用命令提示符或PowerShell。
要進(jìn)入InfluxDB命令行:
在CLI中輸入:
這將創(chuàng)建一個名為hibouair的數(shù)據(jù)庫,Python腳本將使用該數(shù)據(jù)庫記錄環(huán)境數(shù)據(jù)。
您不需要為本地測試設(shè)置身份驗證。如果稍后要保護(hù)實例,請記得使用您的用戶名和密碼更新Grafana和Python腳本。
配置Grafana
安裝并運行Grafana后,打開瀏覽器,進(jìn)入:
默認(rèn)用戶名和密碼為:
登錄后,系統(tǒng)會要求您設(shè)置新密碼。進(jìn)入Grafana儀表板后:
?轉(zhuǎn)到設(shè)置→數(shù)據(jù)源
?單擊添加數(shù)據(jù)源
?選擇InfluxDB
設(shè)置如下內(nèi)容:
?數(shù)據(jù)庫:hibouair
?用戶和密碼:留空,除非您啟用了身份驗證
?HTTP方法:GET或POST(默認(rèn)是好的)
?點擊Save & Test
您應(yīng)該看到一條成功消息,確認(rèn)Grafana可以從InfluxDB讀取。
通過串口連接BleuIO
插入BleuIO USB加密狗。
?在macOS上,使用ls /dev/cu找到端口。usbmodem*示例:/dev/cu.usbmodem4048FDEBA6D01
?在Windows上,檢查設(shè)備管理器→端口(COM & LPT)并找到類似COM3或COM4的內(nèi)容。
該端口將在Python腳本中用于打開到加密狗的串行連接。
Python腳本
Python腳本以Central模式初始化BleuIO加密狗,發(fā)送掃描命令(AT+ findscanata),并從HibouAir傳感器讀取BLE廣告數(shù)據(jù)包。數(shù)據(jù)以十六進(jìn)制格式到達(dá),解碼后提取溫度、濕度、CO2、VOC、PM1、PM2.5、PM10、光、噪聲和壓力等值。然后,腳本將這些數(shù)據(jù)用時間戳寫入InfluxDB。
為了避免存儲重復(fù)的值,腳本只記錄每個掃描周期的第一個有效讀取。在再次掃描之前,它等待一個可配置的時間段(例如,20秒)。
您可以從下面鏈接的GitHub存儲庫查看并復(fù)制完整的Python腳本。
GitHub: bleuio-hibouair-influx-grafana
運行腳本:
確保將腳本中的串口路徑和板ID替換為您的實際值。
在Grafana中創(chuàng)建儀表板
隨著數(shù)據(jù)流入InfluxDB,是時候在Grafana中可視化它了。首先創(chuàng)建一個新的儀表板:
?從左側(cè)菜單,轉(zhuǎn)到儀表板→新建→添加新面板
?在查詢編輯器中,選擇InfluxDB數(shù)據(jù)源
?輸入下面的查詢來顯示二氧化碳濃度:SELECT last(" CO2 ") FROM "air_quality" WHERE $timeFilter GROUP BY time($__interval)
這個查詢從air_quality測量中獲取最新的CO2讀數(shù)。您可以將“co2”更改為“temp”,“hum”,“voc”,“pm25”或任何其他字段,這取決于您想要顯示的內(nèi)容。
Grafana將自動在折線圖上繪制數(shù)據(jù)。您可以從面板設(shè)置切換到量規(guī)、條或其他可視化。您還可以設(shè)置閾值、值范圍和顏色以提高可讀性。
重復(fù)此過程以添加更多顯示溫度、濕度、voc、PM2.5、PM10和其他值的面板。
完成指示板后,單擊Apply,然后單擊Save該指示板以便以后重用它。
輸出
它是如何工作的
該系統(tǒng)利用來自HibouAir的BLE廣告廣播和基于AT命令的串行通信與BleuIO加密狗。加密狗使用AT+ findscanata ==3掃描特定的板ID, Python腳本讀取并解碼接收到的每個廣告。解碼后的數(shù)據(jù)使用官方客戶端庫立即發(fā)送到InfluxDB。
Grafana查詢這些時間序列數(shù)據(jù)并實時顯示。由于所有組件都是本地的,因此不依賴于外部服務(wù)器或云api。該系統(tǒng)也是模塊化的,因此您可以輕松擴(kuò)展它以支持多個傳感器,擴(kuò)展其他BLE格式的解碼器,或者在未來將數(shù)據(jù)轉(zhuǎn)發(fā)到基于云的平臺。
用例
這種設(shè)置對于一系列應(yīng)用程序來說是理想的。在辦公環(huán)境中,監(jiān)測二氧化碳和濕度有助于優(yōu)化通風(fēng),提高工作效率。在工廠或車間,跟蹤顆粒物和揮發(fā)性有機(jī)化合物可確??諝赓|(zhì)量合規(guī)和安全。對于研究人員和學(xué)生來說,這個項目提供了一種親身實踐的、本地的、開源的方法來研究環(huán)境變化。即使在住宅環(huán)境中,它也可以幫助檢測空氣循環(huán)不良或污染物峰值。該解決方案的簡單性使得開發(fā)人員和非開發(fā)人員都可以使用它。
擴(kuò)展項目
有幾種方法可以擴(kuò)展這個項目:
?增加對其他BLE數(shù)據(jù)類型的支持,例如HibouAir的NO?類型08廣告
?設(shè)置Grafana警報,當(dāng)二氧化碳超過800ppm或濕度降至30%以下時通知你
?將歷史數(shù)據(jù)從InfluxDB導(dǎo)出到CSV以進(jìn)行離線分析
?在系統(tǒng)啟動時將Python腳本作為后臺服務(wù)運行
?連接多個傳感器,覆蓋多個房間或區(qū)域
只要稍加修改,您也可以在Raspberry Pi或Linux服務(wù)器上運行此設(shè)置。
只需一個BleuIO加密狗、一個HibouAir傳感器和一些開源工具,您就構(gòu)建了一個功能齊全的空氣質(zhì)量監(jiān)測解決方案。該系統(tǒng)靈活、輕量級,并且完全離線運行。它提供了對室內(nèi)環(huán)境條件的實時洞察,可以適應(yīng)各種應(yīng)用。
本文編譯自hackster.io