Zabbixとラズパイで室温監視してみた

 こんにちは
先日、エアコンが突然停止していたことに気づかず、サーバをおいている部屋の温度が45度になり、ONUが停止。リモート操作を受け付けなくなるという事件がおきました。

この再発防止策として、Raspberry Pi(今回は3B) + DHT11で制作した温度センサとZabbixを活用して室温監視基盤を制作したので、ご紹介します。Raspberry Pi はZeroや4でも大丈夫です。

Raspberry Pi と DHT11センサ

監視画面のグラフ

作り方

センサーをRaspberry Piに接続する

DHT11センサーをRaspberry Piに接続します。このとき、
+は5Vか3.3V
-(GND)はGND
DATAはGPIOの使用するピン(今回は14を利用)
に接続しましょう。

※ここで接続をミスると発熱しパーツが溶けるというような悲劇が起こるので気をつけましょう。



プログラムを用意する

今回はPythonでDHT11センサの温湿度を読み取り、Webサーバでjson形式でWebAPI的なものを公開する手法を取ります。

ソースコード(GitHub)はこんな感じ。
from flask import Flask, jsonify
from dotenv import load_dotenv
import RPi.GPIO as GPIO
import dht11
import os
import time
load_dotenv()
# initialize GPIO
GPIO.setwarnings(True)
GPIO.setmode(GPIO.BCM)
PIN = int(os.getenv('PIN'))
print("Using PIN is", PIN)
sensor = dht11.DHT11(pin=PIN)
app = Flask("dht11-server")
@app.route("/")
def responce_temp():
#初期化
temp = 0.0
hum = 0.0
s_data = sensor.read()
loop_count = 0
# 値の取得
while True:
if s_data.is_valid():
temp = round(s_data.temperature, 2)
hum = round(s_data.humidity, 2)
return jsonify({'temp': str(temp), 'hum': str(hum)}), 200
else:
loop_count += 1
time.sleep(0.05)
s_data = sensor.read()
if loop_count > 100:
return jsonify({'error': 'Could not retrieve sensor data.'}), 500
continue
def main():
app.run(host='0.0.0.0', port=32121, threaded=False)
if __name__ == '__main__':
main()
view raw dht11_server.py hosted with ❤ by GitHub

取得したセンサ情報をFlaskで公開するものになっています。
直接ブラウザでアクセスし、

このようなデータが返ってくれば成功です。

GitHubに公開しているソースでは、Dockerでも動作するようになっているので気軽に動かしてみてください(手元でBuildする場合はCPUアーキテクチャにご注意を)。

また、余談ですが温湿度情報をPostするコードもあるので良ければ覗いてみてください(Post版GitHub)。

Zabbixで監視する

最後に、Raspberry Piで構築した温度返却サーバの情報をZabbixで取得します。

まずZabbixで情報を取得するために、ホストを作成し、Web取得画面に次のように取得先の登録を行います。


次にjsonのデータをパースし、温度情報のみを取り出します。(実はこの設定に少し手こずりました苦笑)



同様の処理を湿度の項目にも行います。
以上で監視に関する設定は終わりです。

また、お好みでトリガー(温度が27度以上になったらDiscordに通知するなど)を設定しましょう。



トリガーを設定しておけば、万が一の際にすぐに気づくことができます。

まとめ

如何でしたでしょうか?
Zabbix自体の設定やプログラムの詳細な説明などは省いてしまいましたが、どういったことができるのかと言った手がかりをつかめていれば良いなぁとおもいます。
Zabbixはサーバの監視だけでなく、温湿度等の環境の監視にも利用でき、とても便利だと思いますので、みなさんも是非お試しください。改造が容易なのも魅力ですよ!


それでは、ばいち。

コメント