zoukankan      html  css  js  c++  java
  • 使用微创联合M5S空气检测仪、树莓派3b+、prometheus、grafana实现空气质量持续监控告警WEB可视化

    1.简介

    使用微创联合M5S空气检测仪、树莓派3b+、prometheus、grafana实现空气质量持续监控告警WEB可视化

    grafana dashboard效果:

    image-20201031171328947

    2.背景

    2.1 需求:

    1.过段时间公司要搬新办公室,较多同事担心甲醛(HCHO)、异味(TVOC)这些重要的空气指标,所以需要能够对其检测

    2.能够把这些空气指标进行WEB展示

    3.监控告警关心的空气指,告警发送到钉钉群

    2.2 已有硬件:

    树莓派3b+ (长期吃灰中)以下简称树莓派

    微创联合M5S空气检测仪(版本:M5S温湿+锂电+TVOC+数据导出 17年485元价格购买 )以下简称空气检测仪

    M5S 家用 激光PM2.5检测仪 甲醛 CO2 空气质量 雾霾甲醛 检测仪

    【在售价】380.00 元(基础版)

    【立即下单】点击链接立即下单:https://s.click.taobao.com/zREU4vu

    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 上面有更多内容

  • 相关阅读:
    我的Android app开发生涯
    极客学院
    区分H5和native页面
    H5之测试工具
    放最多水
    数组去重 快慢指针
    搜索插入位置 二分查找
    this指向
    JS 抖动和节流
    图片懒加载和预加载
  • 原文地址:https://www.cnblogs.com/wwek/p/13906871.html
Copyright © 2011-2022 走看看