ZabbixとRaspberry Piでお手軽につくる、お部屋の温度・気温ダッシュボード
ZabbixとRaspberry Piで、Ambientのようなお手軽ダッシュボードを簡単に構築してみます。
作るもの
センサーで測定した部屋の気温や湿度といったデータを、Zabbixサーバーに送信してグラフ表示する。
できること
- データのグラフ表示
- Zabbixサーバーからアラートメールを送信
などなど。Ambientでできることは大体できると思います。
構成
- Raspberry Pi 3 Model B : 1台
以上!
今回はZabbixにデータを送ってグラフ化することがメインなので、センサー関係は割愛します。
ちなみに、Zabbixって?
オープンソースのシステム監視ソフトウェアです。
サーバーなどから取得したデータを表示するのが本来の使い方ですが、今回はそれをセンサーから取得したデータの表示に応用しようというわけです。
大まかな仕組み
今回は、1台のRaspbery Pi にZabbixをインストールし、自分自身に対してデータを送信します。つまり、センサー端末とZabbixサーバーの1台2役です。
作り方
Raspberry Pi OS Liteをインストールします(手順は割愛)。
Zabbixサーバーの準備
Zabbixをインストールします。
sudo apt-get install zabbix
Zabbixの初期設定をします。公式サイトのドキュメントがわかりやすいでしょうか(手抜きですいません。この辺をやってると、記事が長くなるので。。。)。
アイテムの作成
Zabbixをインストールすると、自動で自分自身を「Zabbix server」として監視しているはずです。これに、データを受信するためのアイテムを作成します。
設定→ホスト→Zabbix server→アイテムを開きます。
◆温度用
・名前:温度
・タイプ:Zabbixトラッパー
・キー:temp
・データ型:数値 (浮動小数)
・単位:℃
・アプリケーション:Sensor (「アプリケーションの作成」で作成する)
◆湿度用
・名前:湿度
・タイプ:Zabbixトラッパー
・キー:humi
・データ型:数値 (浮動小数)
・単位:%
・アプリケーション:Sensor
グラフの作成
今度は、ホストの設定のグラフの設定を開きます。
・名前:環境測定
・アイテム 1: Template OS Raspbian: 温度 / Y軸:左
・アイテム 2: Template OS Raspbian: 湿度 / Y軸:右
データ送信の準備
今度は、Zabbixサーバーに対してデータを送信する環境を準備します。
今回は手順の説明なので、センサーのデータではなく手動で入力した数字を送信します。実際にセンターデータを送信するときは、適宜書き換えてください。
py-zabbixのインストール
今回は、Pythonでお手軽にZabbixを使えるライブラリpy-zabbixを使います。
sudo pip install py-zabbix
データ送信プログラムをつくる
適当な.py今回はとりあえず、定数で指定した数字を送信するコードを書きます。
#!/usr/bin/python
# coding:utf-8
from pyzabbix import ZabbixMetric, ZabbixSender
# ZABBIXサーバーのアドレス
zabbix_addr = '127.0.0.1'
# ZABBIXのキー
temp_key = 'temp'
humi_key = 'humi'
# データを指定
temperature = 適当な数字
humidity = 適当な数字
# Zabbixに送信
metrics = []
tempdata = ZabbixMetric('Zabbix server', temp_key, temperature)
humidata = ZabbixMetric('Zabbix server', humi_key, humidity)
metrics.append(tempdata)
metrics.append(humidata)
zbx = ZabbixSender(zabbix_addr)
zbx.send(metrics)
これを数値を変えて何度か実行すると、Zabbixでこんな感じのグラフを表示できるはずです。
Zabbixはもともとシステム管理ソフトですので、ダッシュボードを自由にカスタマイズしたり、トリガーを設定してアラートを飛ばしたりとかなりいろいろなことができます。ネット上に豊富に情報がありますので、皆さんぜひチャレンジしてみてください。