JavaScript
Node.js
RaspberryPi
WiFi
Mackerel

RaspberryPiでWiFiのRSSIを取得してMackerelに送信する

More than 1 year has passed since last update.

はじめに

RaspberryPiを自宅サーバとして運用していますが、構造上の都合で無線LANでインターネットに接続しています。
そのため、WiFiの電波強度をMackerelに送信するプラグインを作りました。

コード

私はNode.jsが好きなので、Nodeで作りました。
ソースはgithubにあります。
mackerel-rssi-notifier github

main.js
const fs = require('fs');
const readline = require('readline');
const rs = fs.createReadStream('/proc/net/wireless');
const rl = readline.createInterface(rs, {});

let lineNo = 0;
rl.on('line', (line) => {
    lineNo++;
    if (lineNo === 3) {
        let data = line.split('.');
        let rssi = data[1].trim();

        const epoch = new Date();

        console.log('wifi.rssi\t' + rssi + '\t' + epoch.getTime());
    }
});

/proc/net/wireless にWiFi関係の情報が含まれているので、これを読み込んで、文字列解析しています。
あとは、Mackerelの設定ファイルにプラグインの情報を記述します。

mackerel-agent.conf
# 略
[plugin.metrics.wifi]
command = ["node","/hoge/mackerel-rssi-notifier/main.js"]

最後に、Mackerelを再起動すれば完了です。
Mackerelでは以下のように表示されます。
image.png

参考サイト

以下のサイトを参考にしました。ありがとうございました。
信号強度の取得 - 汁ごはん
ストリームを行ごとに処理~readline編~ - Qiita