知識ゼロから始めるラズパイ -CPU温度の監視をGUIで-

前回の記事では、Pythonを使用してラズベリーパイのCPU温度を連続監視するプログラムを作成しました。

ComoAki Site
知識ゼロから始めるラズパイ -CPU温度の監視ー ラズパイにCPUファンを設置したところ「ぶーーん」という音が気になって仕方なかったので、GPIOピンやトランジスタを使用してファンの回転数制御に挑戦します。まずは、Pyt...

今回はそのプログラムをGUI化して監視するプログラムを作成していきたいと思います。GUI化には特になにも準備しなくても使用できるので「tkinter」ライブラリを利用します。

目次

今回作ったプログラムの全容

tkinterの呼び方はわかりませんが、私は「Tキンター」と呼んでいます。(そう呼ぶと、綴りが覚えやすいです)

今回作ったプログラムは表のとおりです。下のほうに解説を記載しています。

import subprocess
import time
import tkinter as tk 

win = tk.Tk()

win.geometry("300x50") 
win.title("CPU温度の監視")

label1 = tk.Label(win,text=" CPUの温度 = ") 
label1.pack(side=tk.LEFT) 

tempvar = tk.StringVar() 
tempvar.set("st") 

label2 = tk.Label(win,textvariable=tempvar) 
label2.pack(side=tk.LEFT) 

label3 = tk.Label(win,text=" ℃") 
label3.pack(side=tk.LEFT) 

cut = 0

while cut < 86400: #Ends after 24 hours 
   cut = cut + 1 
   time.sleep(1) #Wait for 1 second
   args = ['cat','/sys/class/thermal/thermal_zone0/temp']
   temp = subprocess.run(args,stdout=subprocess.PIPE,encoding='utf8') 
   temp = round(int(temp.stdout)/1000,1) 
   tempvar.set(temp) 
   win.update_idletasks() 

else:
     tempvar.set("END") 

win.update_idletasks() 
win.mainloop()

プログラムの解説

subprocessとtimeについては、前回の記事で解説しています。

ComoAki Site
知識ゼロから始めるラズパイ -CPU温度の監視ー ラズパイにCPUファンを設置したところ「ぶーーん」という音が気になって仕方なかったので、GPIOピンやトランジスタを使用してファンの回転数制御に挑戦します。まずは、Pyt...
(3行目)import tkinter as tk

「import tkinter as tk」でtkinterライブラリを読みだしています。毎回tkinterと記入するのは大変なので「as tk」を追加して、tk=tkinterとする記述としています。なお、importではなく、fromで読みだすと「tk」すら省略可能のようですが、まだ理解不足ですので今回は使いません。

(5行目)win = tk.Tk()

「win」という名前のtkinterウインドウを作成します。また、「win.geometry(“300×50”)」でウインドウサイズの指定、「win.title(“CPU温度の監視”)」でウインドウのタイトルを記述しています。

(10行目)label

laber1~3をpacで左から順番に配置するように指定しています。label2だけは「StringVar」で記述内容を更新できるように工夫しています。最初は”st”という適当な文字を入れていますが、あとでwhile文の中の「tempvar.set(temp)」でcpu温度を入力するように指定しています。

(31行目)win.update_idletasks()

winの記載をアップデートする命令です。while文との組み合わせにより、1秒に1回ラベルを更新させています。

また、while文の最後にも「win.update_idletasks()」をもう一度記載していますが、24時間経過してwhileから抜けた後に「END」と表示するように指定しています。

(36行目)win.mainloop()

一番最初に記述した「win = tk.Tk()」に対して、最後に記述することでウインドウが作られます。

プログラムを実行

今回作ったプログラムを実行するとこのようになります。

プログラム実行結果

真ん中の「34.6」と記載されている部分が1秒に1回更新されます。

次回

次回は、取得したCPU温度の情報をもとに、CPUファンの回転数を制御できるようにしたいのですが、調べたり覚えたりすることが沢山ありますので、更新には時間がかかりそうです。

ComoAki Site
知識ゼロから始めるラズパイ -GUIでLEDの点灯制御- GPIOを使用する基本である「Lチカ」の点灯、消灯のタイミングをGUIのウインドウに数字を入力して制御するプログラムを作成しました。私自信が初心者ですので、初心者でも...
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次