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との連携の下地ができたか。


 

コメント

このブログの人気の投稿

ImDisk Toolkitが開発終了していた。AIM Toolkitに乗り換え

Windows 10 デフォルトゲートウェイに0.0.0.0が追加される

iOS VLC でSMB共有できなかった点について