るいすのブログ

オタクエンジニアの雑記

Raspberry Pi Zero で温度センサーと赤外線センサーを使ってサーバーとネットワーク機器を自動で冷やしてみた


Raspberry Pi Zero を買って放置したまま1年経ち、 夏を前にサーバーの冷却を考えていたのでタイトル通り、 Raspberry Pi と 温度センサー&赤外線センサーを使って夏を乗り切ろうっていう記事です。

ちなみに結局温度センサーは接続したものの 今回はCPUの温度やSSDの温度をトリガーとして赤外線センサーを使うので 使いませんでした?

 


ちなみに僕は電子工作に関して全く知識がありません。 抵抗値の計算すらできません。それでもできたのでネットは偉大ですね。

 

 

買ったもの


・1/2W 100Ω ・1/2W 1kΩ ・ADT7410 温度センサー ・OSRB38C9AA 赤外線リモコン受信モジュール ・OSI5LA5113A 赤外線LED ・OSI5FU5111C-40 赤外線LED 何となく2種類買った ・EIC-801 ブレッドボード ・ブレッドボード・ジャンパーコード

 

 

接続


基本的に赤外線LEDは1つが良い(波形が安定する?)らしいのですが 赤外線LED自体の有効照射範囲(?)が15°とかなので3つぐらい設置してみました。

ちなみに抵抗の接続の仕方などは計算ツールみたいのを使った結果を 何となく配置しただけです。

ジャンパーコードは オス - オス を買い忘れたので 抵抗の足を使いました?

 

 

WiringPiで制御する

ここがとても参考になりました。 http://www.feijoa.jp/laboratory/raspberrypi/infrared2/

LIRCがも何のか分かってないけど ネットで引っかかるLIRCを使った記事ではうまくいきませんでした。

 

 

シェルスクリプトでエアコンを操作する

#!/bin/bash

readonly SLACK_URL="https://hooks.slack.com/services/"
readonly SUBJECT=$1
readonly CHANNEL=$2

# Send IR
case ${SUBJECT%%:*} in
  "OK" )
    `sshpass -p '' ssh -o StrictHostKeyChecking=no raspi.local -l pi "/home/pi/sendir air_off.data 3 5"`

    payload="payload={
      \"icon_url\": \".png\",
      \"channel\": \"${CHANNEL}\",
      \"text\": \"Eacon is turned OFF !\",
    }"
    ;;
  "PROBLEM" )
    `sshpass -p '' ssh -o StrictHostKeyChecking=no raspi.local -l pi "/home/pi/sendir air_on.data 3 5"`

    payload="payload={
      \"icon_url\": \"http://.png\",
      \"channel\": \"${CHANNEL}\",
      \"text\": \"Eacon is turned ON !\",
    }"
    ;;
  *)
    payload="payload={
      \"icon_url\": \"http://.png\",
      \"channel\": \"${CHANNEL}\",
      \"text\": \"not compatible\",
    }"
    ;;
esac

# Posting message to slack
curl -m 5 --data-urlencode "${payload}" "${SLACK_URL}"

 

 

Zabbixのメディアタイプに登録する


Zabbixのメディアタイプに登録します。 手順は面倒なので割愛です。

 

 

トリガーを作成する

今回はサーバー、ルーター、スイッチのCPU温度のいずれかが 60℃を超えたらエアコンがONになるって感じ。

 

 

アクションを作成する

トリガー名にEaconを含めておけば、アクションもこんな感じで設定できます。

 

 

動作確認

動画を撮って載せるのは面倒くさいのでしないんですけど エアコンを切って家をでるとSlackから通知がきます。

数分後に温度を確認すると60℃を下回っていい感じ。

 

素晴らしい~~~

ただ、このまま運用すると 60℃超える → エアコンON → 59℃辺りになる → エアコンOFF(ループ) となるので閾値だったり、トリガー条件をもうちょっと考えないとダメですね。