使用微創聯合M5S空氣檢測儀、樹莓派3b+、prometheus、grafana實現空氣質量持續監控告警WEB可視化

1.簡介

使用微創聯合M5S空氣檢測儀、樹莓派3b+、prometheus、grafana實現空氣質量持續監控告警WEB可視化linux

grafana dashboard效果:git

image-20201031171328947

2.背景

2.1 需求:

1.過段時間公司要搬新辦公室,較多同事擔憂甲醛(HCHO)、異味(TVOC)這些重要的空氣指標,因此須要可以對其檢測github

2.可以把這些空氣指標進行WEB展現json

3.監控告警關心的空氣指,告警發送到釘釘羣bash

2.2 已有硬件:

樹莓派3b+ (長期吃灰中)如下簡稱樹莓派curl

微創聯合M5S空氣檢測儀(版本:M5S溫溼+鋰電+TVOC+數據導出 17年485元價格購買 )如下簡稱空氣檢測儀ui

M5S 家用 激光PM2.5檢測儀 甲醛 CO2 空氣質量 霧霾甲醛 檢測儀url

【在售價】380.00 元(基礎版)設計

【當即下單】點擊連接當即下單:https://s.click.taobao.com/zREU4vucode

img

3.設計

把空氣檢測儀的usb插到樹莓派上(樹莓派上經過串口讀取數據),供電也是經過樹莓派供電

相關軟件運行在樹莓派上

3.1 硬件:

空氣檢測儀如何導出數據?

空氣檢測儀是有數據導出版本,自帶串口轉USB(ch340芯片)

打開空氣檢測儀並經過檢測儀左側 FUN 按鈕,把屏幕切換到第 3 屏,這個時候串口中就會持續輸出監控數據

在linux上設備文件符爲「/dev/ttyUSB0」

cat /dev/ttyUSB0
#能夠看到
24.9 45.2 23 32 35 26 33 35 4419 1301 159 8 3 0 0.006 0.21

讀取過程當中,按一下檢測儀上的 RST 鍵,能夠顯示每列數據對應的字段定義,(按完後須要再按 FUN 鍵切換到第 3 屏

*--------------------------------------- Data Output Format Definition ----------------------------------------*
TEMP HUMI CH_PM1.0 CH_PM2.5 CH_PM10 US_PM1.0 US_PM2.5 US_PM10 >0.3um >0.5um >1.0um >2.5um >5.0um >10um HCHO TVOC
TEMP HUMI CH_PM1.0 CH_PM2.5 CH_PM10 US_PM1.0 US_PM2.5 US_PM10 >0.3um >0.5um >1.0um >2.5um >5.0um >10um HCHO TVOC
25.1 43.3 21 29 31 22 29 31 3843 1136 170 6 2 0 0.003 0.2
25.1 43.2 22 30 31 23 30 31 3876 1156 170 5 2 0 0.005 0.16
25.1 43.3 22 30 31 23 30 31 3963 1174 164 6 2 0 0.003 0.21
25.2 43.3 22 30 31 23 30 31 3942 1163 167 6 2 0 0.007 0.21

帶二氧化碳檢測的版本在HCHO字段前多一個CO2字段

更多資料看空氣檢測儀配套的資料

3.2 軟件:

軟件監控採用prometheus + grafana的方案

本文爲流水理魚wwek原創 www.iamle.com

如今只須要實現一個串口(/dev/ttyUSB0) exporter便可把空氣監測儀的數據打通給prometheus使用

最後配置prometheus取空氣檢測儀的exporter數據,並配置grafana面板

監控告警直接使用grafana帶的監控告警

4.實現

*安裝配置wclh_air_detector_exporter 得到空氣檢測儀數據

wclh_air_detector_exporter讀取串口數據並把數據進行結構化,而後輸出metrics

M5S Temperature and Humidity+lithium battery+CO2+TVOC PM2.5 CO2(S8)TEMP&HUMI Detector Haze PM2.5 sensors Laser PM2.5 detector

M5S 家用 激光PM2.5檢測儀 甲醛 CO2 空氣質量 霧霾甲醛 檢測儀

WCLH_AIR_DETECTOR_EXPORTER_VERSION=0.1.3
wget https://github.com/wwek/wclh_air_detector_exporter/releases/download/v${WCLH_AIR_DETECTOR_EXPORTER_VERSION}/wclh_air_detector_exporter_${WCLH_AIR_DETECTOR_EXPORTER_VERSION}_linux_armv7.tar.gz
tar zxvf wclh_air_detector_exporter_${WCLH_AIR_DETECTOR_EXPORTER_VERSION}_linux_armv7.tar.gz
mkdir -p /data/soft/wclh_air_detector_exporter
mv wclh_air_detector_exporter /data/soft/wclh_air_detector_exporter
cd /data/soft/wclh_air_detector_exporter

#./wclh_air_detector_exporter -serial_port /dev/ttyUSB0

#自動啓動&進程守護
sudo bash -c 'cat > /etc/systemd/system/wclh_air_detector_exporter.service << EOF
[Unit]
Description=https://github.com/wwek/wclh_air_detector_exporter
Wants=network-online.target
After=network-online.target

[Service]
Restart=on-failure
#User=root
ExecStart=/data/soft/wclh_air_detector_exporter/wclh_air_detector_exporter

[Install]
WantedBy=default.target
EOF'

sudo systemctl daemon-reload
sudo systemctl status wclh_air_detector_exporter
sudo systemctl start wclh_air_detector_exporter
sudo systemctl enable wclh_air_detector_exporter
sudo systemctl status wclh_air_detector_exporter

curl http://localhost:9166/metrics

安裝配置prometheus

PROMETHEUS_VERSION=2.22.0
wget https://github.com/prometheus/prometheus/releases/download/v${PROMETHEUS_VERSION}/prometheus-${PROMETHEUS_VERSION}.linux-armv7.tar.gz
tar zxvf prometheus-${PROMETHEUS_VERSION}.linux-armv7.tar.gz
mkdir -p /data/soft/
mv prometheus-${PROMETHEUS_VERSION}.linux-armv7 prometheus && mv prometheus /data/soft/

#自動啓動&進程守護
sudo bash -c 'cat > /etc/systemd/system/prometheus.service << EOF
[Unit]
Description=https://prometheus.io
Wants=network-online.target
After=network-online.target

[Service]
Restart=on-failure
#User=root
ExecStart=/data/soft/prometheus/prometheus --config.file="/data/soft/prometheus/prometheus.yml"

[Install]
WantedBy=default.target
EOF'

sudo systemctl daemon-reload
sudo systemctl status prometheus
sudo systemctl start prometheus
sudo systemctl enable prometheus
sudo systemctl status prometheus

curl http://localhost:9090
#<a href="/graph">Found</a>.

安裝配置grafana

sudo apt-get install -y apt-transport-https
sudo apt-get install -y software-properties-common wget
wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add -
echo "deb https://packages.grafana.com/oss/deb stable main" | sudo tee -a /etc/apt/sources.list.d/grafana.list 
sudo apt-get update
sudo apt-get install grafana
sudo systemctl daemon-reload
sudo systemctl start grafana-server
sudo systemctl enable grafana-server
sudo systemctl status grafana-server

curl http://localhost:3000
#<a href="/login">Found</a>.

grafana 中先配置 prometheus(http://localhost:9090)數據源,而後導入 「grafana-dashboard.json」空氣檢測儀的dashboard

監控告警

直接使用grafana自帶的告警功能,將關心的指標進行監控並告警
本文首發於流水理魚博客,如要轉載請註明出處。
歡迎關注個人公衆號:流水理魚(liushuiliyu),全棧、雲原生、Homelab交流。
若是您對相關文章感興趣,也能夠關注個人博客:www.iamle.com 上面有更多內容

相關文章
相關標籤/搜索