使用微创联合M5S空气检测仪、树莓派3b+、prometheus、grafana实现空气质量持续监控告警WEB可视化linux
grafana dashboard效果:git
1.过段时间公司要搬新办公室,较多同事担忧甲醛(HCHO)、异味(TVOC)这些重要的空气指标,因此须要可以对其检测github
2.可以把这些空气指标进行WEB展现json
3.监控告警关心的空气指,告警发送到钉钉群bash
树莓派3b+ (长期吃灰中)如下简称树莓派curl
微创联合M5S空气检测仪(版本:M5S温湿+锂电+TVOC+数据导出 17年485元价格购买 )如下简称空气检测仪ui
M5S 家用 激光PM2.5检测仪 甲醛 CO2 空气质量 雾霾甲醛 检测仪url
【在售价】380.00 元(基础版)设计
【当即下单】点击连接当即下单:https://s.click.taobao.com/zREU4vucode
把空气检测仪的usb插到树莓派上(树莓派上经过串口读取数据),供电也是经过树莓派供电
相关软件运行在树莓派上
空气检测仪如何导出数据?
空气检测仪是有数据导出版本,自带串口转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字段
更多资料看空气检测仪配套的资料
软件监控采用prometheus + grafana的方案
本文为流水理鱼wwek原创 www.iamle.com
如今只须要实现一个串口(/dev/ttyUSB0) exporter便可把空气监测仪的数据打通给prometheus使用
最后配置prometheus取空气检测仪的exporter数据,并配置grafana面板
监控告警直接使用grafana带的监控告警
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_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>.
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 上面有更多内容