Raspberry Piで水温、気温、湿度を記録してZabbixでグラフ化 (DS18B20, AHT10)

水槽の水温計ってデジタルだと意外と高いので自作しました。ついでに室温と湿度も計って、Zabbixでグラフにします。

水温センサー: DS18B20
室温湿度センサー: AHT10

環境
Raspberry Pi Zero
Raspberry Pi OS 5.10.17+
zabbix_server 5.0.16
zabbix_agentd 5.0.14 

AHT10の配線

まずI2Cを有効にします。
sudo raspi-config
で設定画面が開くので、Interface Options→I2Cをenableにします。

配線はVINにラズパイの3.3Vを、そしてGND、SCL、SDAをそれぞれに繋げます。

i2cdetect -y 1
を実行し、アドレス38が出てきたらOKです。

DS18B20の配線

1-Wireを有効にします。
先ほどと同じようにraspi-configからInterface Options→1-Wireをenableにします。

配線はVDDをラズパイの3.3V、DQ、GNDをそれぞれ繋ぐのですが、VDDとDQの間に4.7kΩの抵抗を挟む必要があります。

/sys/bus/w1/devices/
このディレクトリのなかに28で始まるディレクトリがあれば認識できてます。

Pythonでデータの読み取り

とりあえず、Pythonを利用してデータを読み取ってみます。

AHT10はこちらを参考に、温度の数値のみが出力されるよう少し変更を加えました。

https://github.com/gejanssen/aht10-python

AHT10の温度(temp.py)

AHT10の湿度(hum.py)

DS18B20の水温(water_temp.py)

実行すると、数値のみが出力されます。

これらのファイルを作成し、任意のディレクトリに入れておきます。
こちらでは、~/py/ディレクトリの中に入れておきました。

Zabbixエージェント側の設定

まずはRaspberry Pi側にzabbix-agentをインストールします。

zabbix-agentd.confを編集します。

Server=,ServerActive=をそれぞれサーバーのIP
Hostname=raspberrypi
そして末尾に
UserParameter=PI.ROOMTEMP,python3 /home/pi/py/temp.py
UserParameter=PI.ROOMHUM,python3 /home/pi/py/hum.py
UserParameter=PI.WATERTEMP,python3 /home/pi/py/water_temp.py
を追加します。

今回こちらでは、Zabbixサーバーは別のLinuxで立てているのでそちらを指定しましたが、Raspberry Piでサーバーを立てても構いません。Zeroでは重そうですが…

Zabbixサーバー側の設定

次に、ZabbixのWEBにアクセスし、このraspberrypiを追加します。

Configuration→Hosts→Create host

Host name raspberrypi
Groups Linux servers
Interfaces ラズパイのIP

TemplatesはTemplate OS Linux by Zabbix agentを選択しました。

ホストが認識されたらItemを作っていきます。

Configration→Hosts→raspberrypi→Items→Create item

温度

Name Room Temperature
Key PI.ROOMTEMP
Type of information Numeric (float)
Units

湿度

Name Room Humidity
Key PI.ROOMHUM
Type of information Numeric (float)
Units %

水温

Name Water Temperature
Key PI.WATERTEMP
Type of information Numeric (float)
Units

作成してしばらくすれば値が取得できると思います。

また、グラフはHosts→raspberrypi→Graphsから作ったItemを指定すると作れます。

終わり

ラズパイ、センサー代含めて1500円以下で作れました。
エアコンと連動させたりしてもよさそうです。

おすすめ

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です