ホッタラカシのSenseHATを動かしてみる。
LEDへ時計を上3段に表示、2進数表示なので可読性は全くなし。
4段目はメモリ使用率、残り4段をCPUコアの使用率を表示してみました。

Rasbian StreachにはSenseHAT用Pythonモジュールも既にインストールされている状態なので、難しい設定は無し。APIリファレンスを読めば特に難しいところもなく、、、
それだけでは面白くないのでsystemdによるデーモン(サービス)化もしてみました。十分な理解は出来てませんが、以下Pythonスクリプトです。
#!/usr/bin/python
from __future__ import with_statement
import sys
import time
import datetime
import psutil
import math
from sense_hat import SenseHat
from daemon import DaemonContext
from lockfile.pidlockfile import PIDLockFile
sense = SenseHat()
sense.set_rotation(180)
sense.low_light=True
message = ""
WHITE = [50,50,50]
BLUE = [0,0,50]
BLANK = [0,0,0]
RED = [50,0,0]
YELLOW = [50,50,0]
GREEN = [0,50,0]
dc = DaemonContext(
pidfile=PIDLockFile('/tmp/sense_messaged.pid'),
stderr=open('/tmp/sense_messaged.log','w+'))
def main():
'''
now = datetime.datetime.now()
message = now.strftime("Time:%H:%M:%S")
sense.show_message(message ,text_colour=[50,50,50])
'''
now = datetime.datetime.now()
h = [BLANK if x == '0' else WHITE for x in list(format(now.hour,'08b'))]
m = [BLANK if x == '0' else WHITE for x in list(format(now.minute,'08b'))]
s = [BLANK if x == '0' else WHITE for x in list(format(now.second,'08b'))]
pict = []
pict.extend(h)
pict.extend(m)
pict.extend(s)
memory = int(max(0,min(psutil.virtual_memory().percent,100))/100 * 8)
memoryPic = ([BLUE] * (8-memory)) + ([YELLOW] * memory)
pict.extend(memoryPic)
cpu = [int(max(0,min(x,100))/100 * 8) for x in psutil.cpu_percent(percpu=True)]
for c in cpu:
cPic = ([GREEN] * (8-c)) + ([RED] * c)
pict.extend(cPic)
sense.set_pixels(pict)
with dc:
while True:
main()
time.sleep(1)
sys.exit(0)
daemon、psutilモジュールが必要です。
$ sudo pip install python-daemon
psutilモジュールはpipからインストールしようとするとエラーが発生するのでaptでインストールしました。
$ sudo apt install python-psutil
あとはsystemctl用のunitファイル(ExecStartはPythonスクリプトへのパスで書きかえ)
[Unit] Description=SenseHat Message [Service] ExecStart=/PATH_TO_PYTHON_SCRIPT/sensemessaged.py Restart=always Type=simple PIDFile=/tmp/sense_messaged.pid [Install] WantedBy=multi-user.target
起動してみる。
$ sudo systemctl reload-daemon $ sudo systemctl start sensemessaged
停止
$ sudo systemctl start sensemessaged
自動で起動するように設定
$ sudo systemctl enable sensemessaged.service
pidファイルの置き場所等、お作法があるとは思いますが、今の所はこれでOK。