OSMC として使っている Raspberry Pi Zero が よくフリーズするようになり、ケースをさわってみると暖かいことから熱対策をすることにしました. そのための ヒートシンク付きケースを C4 Labs さん から購入 しました.
そのままヒートシンクを付けたいところ、ちょっと待って簡易的ではありますが Raspberry Pi の 温度を取得して変化を見てみたいと思います.
作業環境
- Raspberry Pi Zero
- OSMC rbp1
- Crystal Signal Pi
- Raspbian Jessie Lite
現在の温度を取得する
Raspberry Pi の 温度は /sys/class/thermal
あたりに格納されています.
そこからファイルを参照することで取得できます. 温度は 1,000倍 になっています.1
2pi@raspberrypi:~ $ cat /sys/class/thermal/thermal_zone0/temp
34166
上記の場合は 34.166 ℃ ということになります.
切り捨てにはなりますが expr
コマンドと組み合わせると、こんな感じにもできます.1
2pi@raspberrypi:~ $ expr `cat /sys/class/thermal/thermal_zone0/temp` / 1000
34
上記は OSMC で 使っている Raspberry Pi Zero で、Crystal Signal Pi の Raspberry Pi 3 は 57996 でした.
vcgencmd で 温度を取得する
また vcgencmd
というコマンドを使っても温度を取得することができます.
こちらは記号も入っています. (2バイト文字がないから ‘C で ℃ を 表現するんですね)1
2 vcgencmd measure_temp
temp=34.2'C
温度を定期的に取得して記録する
ローカルファイルに取得した温度を追記していき、どのように変化しているのかが分かるようにします.
ヒートシンクの有無で温度の変化が出るかを見たいだけなので、単純に cron
で 上記コマンドを仕掛けておくようにします.
OSMC は cron
が 入っていなかったので、インストールします.1
2pi@raspberrypi:~ $ sudo apt-get update
pi@raspberrypi:~ $ sudo apt-get install cron -y --no-install-recommends
10分に1回なので */10 * * * *
で 指定し、日付 と 温度 を /tmp/thermal.txt
に 追記します.
※ /tmp
は リブートするとファイルが消えるので恒久的に取っておく場合は他のディレクトリにします.1
2pi@raspberrypi:~ $ crontab -e
*/10 * * * * /bin/echo -e "`date`\\t`cat /sys/class/thermal/thermal_zone0/temp`" >> /tmp/thermal.txt
こんな感じで出力されます. 特に処理していない状態で 10分間なので温度変化は無いようです.1
2
3pi@raspberrypi:~ $ cat /tmp/thermal.txt
Thu Sep 28 15:30:01 JST 2017 37932
Thu Sep 28 15:40:01 JST 2017 37932
Crystal Signal Pi
Raspberry Pi に 光り輝く四角柱 を 立てた Crystal Signal Pi、ついに Amazon.co.jp さん で 買えるようになりました! 実物を見ると輝く姿に圧倒されます. 監視用とのことですが、天気に合わせて色を変えたりと楽しめます.
Raspberry Pi 3
ラズパイを始めるには 全部入りの Raspberry Pi 3 が 手ごろではないでしょうか. Raspberry Pi Zero - ラズベリー・パイ ゼロ や Raspberry Pi Zero W - ラズベリー・パイ ゼロ W は 国内では入手しずらいため値上がりしてしてますし、GPIO ピン も 自分で付ける必要があったりと色々と手がかかります. その分楽しいというのもありますが.
届くまで時間がかかってもよい場合は こちら Raspberry Pi Zero の 購入 で 記事にしました Pimoroni さん から購入する手もあります.
Raspberry Pi 3 の 電源
Raspberry Pi 3 は 5V/3A の 電源が必要になります. スマホの充電アダプタでは出力が足りない場合もあるので確認が必要です.
マイクロ SD カード
ラズパイ の OS や ストレージに必要です. 16GB あれば十分だと思いますが、用途次第なので お好みのサイズで用意します.
10分間隔で取得するようにしたので、これで温度の変化を知ることができます. しばらく記録しておき、ヒートシンクを付けてから違いを確認したいと思います.
本来はちゃんとした監視ツールなどでデータ収集してグラフ化などしたいところですが、直近の問題と対策を検討するようなのでスクリプトで逃げました. ラズパイの台数が多いので、ちゃんと監視できるようにしたいところです. ラズパイの監視は何のツールがいいんだろう…