MQTTでIoT通信(4)受け取ったのデータでmunin プラグイン
さてMQTTで受け取ったデータをmuninでグラフ化するためのプラグイン
これでつまずいて1日パーにした。「MQTTでIoT通信(3)受け取ったのデータのファイル保存 プログラムをサービスとして起動する」2026/1/03です。muni-nodeから/tmpのファイルが読み込めなかった。munin-nodeがnobody権限なのを解決するための苦悩でした。
完全版では無いが取りあえず動くものをアップしておく
/usr/share/munin/plugins/munin-mqtt-logger_ の作成 プラグインの作成
#!/bin/bash
# シンボリックリンクから識別子を取得
# 例: munin-mqtt-logger_m1-tmp -> m1-tmp
# mqtt-data-m1-tmp.txt
ITEM=${0##*_}
# キーワード判定による縦軸の設定
if [[ "$ITEM" == *"tmp"* ]]; then
VLABEL="Temperature (degree)"
ARGS = " –base 1024"
elif [[ "$ITEM" == *"hum"* ]]; then
VLABEL="Humidity (%)"
ARGS = " --lower-limit 40 --upper-limit 70"
elif [[ "$ITEM" == *"pres"* ]]; then
VLABEL="Barometric pressure (hPa - 900)"
ARGS = " --lower-limit 8 --upper-limit 12"
elif [[ "$ITEM" == *"co2"* ]]; then
VLABEL="CO2 (ppm)"
ARGS = " --base 1024 -l 0"
else
VLABEL="units"
fi
if [ "$1" = "autoconf" ]; then
echo "yes"
exit 0
fi
if [ "$1" = "config" ]; then
# グラフタイトル
echo "graph_title MQTT Data for $ITEM"
# グラフ縦軸
echo "graph_vlabel $VLABEL"
# グラフのスケール設定
echo "graph_args $ARGS"
#カテゴリ
echo "graph_category Environment"
#グラフの縦軸の制限
echo graph_args --lower-limit 0 --upper-limit 50# 凡例の設定
# each line name
echo "${ITEM}.label $ITEM"
exit 0
fi
FILE="/dev/shm/mqtt/mqtt-data-${ITEM}.txt"
# collect
#CMD=`/usr/local/bin/chk_tmp.py`
com_ret=$(cat "/dev/shm/mqtt/mqtt-data-${ITEM}.txt")
echo $ITEM.value "${com_ret}"
実行権限を付与する。
chmod +x /usr/share/munin/plugins/munin-mqtt-logger_
使いたいときは以下のようにシンボリックリンクを作成する。
# 監視したい対象ごとにシンボリックリンクを作成
sudo ln -s /usr/share/munin/plugins/munin-mqtt-logger_ /etc/munin/plugins/munin-mqtt-logger_m1-tmp
sudo ln -s /usr/share/munin/plugins/munin-mqtt-logger_ /etc/munin/plugins/munin-mqtt-logger_m1-hum
でOKのはず。シンボリックリンクの最後の「 _ 」アンダバー以下で読み込むファイルを確認している。
これで取りあえずESP32との連携の下地ができたか。
コメント
コメントを投稿