やっとというか、遂にというか温度監視をGUIでできました。pythonのGUIツールTkinterを使ってます。
今まではSlackでつぶやいたり、単発だったのですが、今回は連続監視です。
ラズパイと接続している素子はadt7410ってていう温度センサーでI2Cで通信しています。
↑↑マイニングマシンのグラボ排気をリアルタイムで計測しています。
けっこう素子の反応が良くて0.7秒毎でもいけそうです。(GUIはもっさりしますが)
import smbus
import time
import sys
import RPi.GPIO as GPIO
import tkinter as tk
GPIO.setmode(GPIO.BCM)
i2c = smbus.SMBus(1)
address = 0x48
root = tk.Tk()
root.geometry("600x300")
t = tk.Label(text='温度[℃]',font = ('', 70))
t.pack()
while True :
block = i2c.read_i2c_block_data(address, 0x00, 12)
temp = (block[0] << 8 | block[1]) >> 3
print("Temperature:%6.2f" % (temp / 16.0))
time.sleep(0.7)
temp2 = (temp / 16.0)
s = tk.Label(text=temp2,font = ('', 70))
s.pack()
s.update()
s.forget()
root.mainloop()
正直、かなりTkinterは手ごわいです。update()とかforget()の使い方を間違えるとブラクラみたいになります笑 一度表示した数値を消して上書きするのは大変でした。
t = tk.Label(text='温度[℃]',font = ('', 70))
↑このあたりもtext=をいれないとAttributeError: 'Label' object has no attribute '_w'となったりします。
変数がNoneになった時に出るそうですが…
これをうまく使えばモニターで常時監視できそうです、温度以外ではビットコインをやってみました。
モニターによってはGPIOが死んでしまいますが…
もうちょっと勉強すればデジタルサイネージ、設備監視装置なんてできる・・・ かも。