ホッタラカシの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。