B3S
menu close

電子工作

[電子工作] Raspberry Piでネットワーク負荷検知ランプを作った(後編)


はち

更新日:2021/08/11


今回は負荷検知ランプのプログラム編です。
前回も投稿した通り、今回はRaspberry PiのGPIO操作をPHP上から行います。

ランプ構築までの流れ

  • まずは、cactiが入っているサーバー上にCSVかXMLファイルを吐き出すシェルを作成します
  • 吐き出すシェルをcronで5分毎に実行します
  • Raspberry Pi側へ、その出力ファイルを解析するPHPを作成し設置します
  • そのPHPをcronで5分毎に実行します

やってることはカナリ地味ですね。
質を上げるなら、検知側はnode.jsなどを使いリアルタイムに拾えると良いかもしれません。

cacti設置サーバー側のシェルファイル

たった一行です。
rrdtool fetchは、rrdtoolでCSV等を出力するコマンドです。
XMLを出力する場合は、これがrrdtool dumpとなります。

Raspberry Pi側に設置するPHPファイル

クソ長いかつレベルの低いプログラムで大変恐縮ですが、簡単に説明すると、閾値10Mを超えたら緑LED、40Mを超えたら黄色LED、70Mを超えたら赤LEDを点灯させます。
稼働確認のため、データ読み込み時には全色のLEDをON/OFF点滅させています。

PHPで操作する、かつ、外部ライブラリを使用しない場合は、gpioのフォルダにfile_put_contentsを用いて、0か1、inかoutを出力することでGPIOを制御出来ます。
外部スイッチの入力などを検知させるには、inを、外部出力の場合はoutをなどなど。

LEDは、非常に簡単で、出力さえ流せば光ります。(途中で電圧をかませるかどうかは置いとくとして)
なので、gpioのピン番号を使用宣言したのち、valueに1を出力すれば勝手に光ります。簡単ですね:)

実際の完成品


雑で恐縮ですがこちらが原型です…。
ランプのような筐体を完成させるのを目的としていましたが、とりあえず動いているのでこのまま運用開始しました。

長くなりましたが見ていただいてありがとうございました。:)