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(ループ)
となるので閾値だったり、トリガー条件をもうちょっと考えないとダメですね。