Raspberry Pi 搭配Cacti监控温湿度

发布于 2019-07-28  353 次阅读


如何将DHT22/AM2302温湿度感测器接到Raspberry Pi、并取得温度、湿度。不过,如果仅是单纯的取得这两个天气环境数据,意义似乎不大~如能长期观测,才有参考价值。

所以,想藉由平常习惯用的网管软体- Cacti来搭配,做长期的气象资料记录。
先说明我的环境,我只有一片Raspberry Pi,所以Cacti和DHT22都是在同一片Raspberry Pi上。

先说明要完成使用Cacti搭配DHT22纪录温度、湿度的步骤

  1. 安装Cacti
  2. 撰写产生温度、湿度资料的python程式
  3. 设定排程定期取得温度、湿度
  4. 让Cacti取得上述资料的shell script
  5. 设定Cacti以下template
    1. Data Input Methods
    2. Data Templates
    3. Graph Templates

步骤一:安装Cacti

安装过程中,会询问用于cacti登入的密码

sudo apt-get update
sudo apt-get install cacti

步骤二:撰写产生温度、湿度资料的python程式

假设程式放于/pi/DHT22.py,以下为程式内容。程式中直接设定sensor为DHT22、并读取GPIO#4。为何这样设定?请参考上一篇文章

这里产生的资料,后续是藉由Cacti Data Input Methods方式取得。因此输出格式,必须符合Cacti Data Input Methods的规范。格式如下… 
KEY1:VAL1 KEY2:VAL2、

#!/usr/bin/python
import Adafruit_DHT
sensor = Adafruit_DHT.DHT22
pin = 4
humidity, temperature = Adafruit_DHT.read_retry(sensor, pin)

if humidity is not None and temperature is not None:
    print('temp:{0:0.1f} humidity:{1:0.1f}'.format(temperature, humidity))

步骤三:设定排程定期取得温度、湿度

一般来说,Cati是可以直接呼叫shell script取得所需数值。一开始,我也是采用此方式直接呼叫/pi/DHT22.py。但……却一直出现『CMDPHP: Poller[0] Host[1] DS[1] WARNING: Result from CMD not valid. Partial Result: U』的错误。让我花了不少时间寻找问题…却找不出原因… 

直到,看到官方AM2302 (wired DHT22) temperature-humidity sensor ID: 393 - $15.00 : Adafruit Industries, Unique & fun DIY electronics and kits产品介绍中提到,读取数据时间约2秒…才让我恍然大悟。可能是等待执行结果的时间超过Cacti的允许时间,让Cacti觉得无法正常取得资料。

因此,我只好改成设定排程先取得温度、湿度的数据并写入temp档案,之后再读取的方案。如此,终于让Cacti正常取得资料。

对了,因为Cacti是每五分钟来抓资料,因此我的排程就故意往前一分钟,设定为每小时的4分、9分取温度、湿度.....

#設定排程
sudo crontab -e
#增加以下設定
4,9,14,19,24,29,34,39,44,49,54,59 * * * * /pi/DHT22.sh

shell script(/pi/DHT22.sh)的内容如下…

/pi/DHT22.py > /tmp/DHT22.dat

步骤四:让Cacti取得上述资料的shell script

在上一步骤已经可以产生数据写入temp档案,在这步骤就是将temp档案的内容丢给Cacti。因此,我做了一个shell script,档案放在/usr/share/cacti/site/scripts/DHT22.sh 
注:我是使用Raspbian Stretch Lite,Cacti被安装于/usr/share/cacti/ 

cat /tmp/DHT22.dat

步骤五:设定Cacti,让Cacti看懂资料格式

我采用shell script方式让Cacti读取资料,因此要设定Data Input Methods。为了简化设定,以下提供Data Templates、Graph Templates。将Templates汇入Cacti后即可设定、使用~

  1. cacti_data_template_dht22.xml

如此,就可以在Cacti产生,来长期监控气象趋势了~虽然我的Raspberry Pi放在室内阴暗处,但在这五月就已经30度了…看来,今年的用电量应该只会增加不会减少吧~以后出门,还是仅量戴口罩吧~

0 0 投票数
文章评分