OBONO’s Diary

へっぽこプログラマの戯言

OLED 続き

前回の続き。OLED に文字を出せることができたので、あとは「タクトスイッチを押したタイミングで画面に何かしら表示して、しばらくしたら画面を消す」を実現する。
画面表示方法を調べた時もそうだったけど、ネットで調べると大抵 python で書かれたサンプルコードが見つかるんだよね。これまで python を書いたことが無かったのだが、見よう見まねで頑張ってコードを書いてみた。(書いたコードは Gist にアップロード済み)

このコードでは、引数に任意のコマンド文字列を渡せるようにしてあり、タクトスイッチを押した際、そのコマンドの実行結果が画面に表示されるようになっている。そのため、別途、以下のようなシェルスクリプトを用意しておく。

#!/bin/bash
date '+%F %T'
uptime | sed -r 's/^.+up ([^,]+),.+$/UP \1/'
uptime | sed -r 's/^.+\s(\S+),\s(\S+),\s(\S+)$/CPU \1 \2 \3/'
df -h | grep /mnt/exhdd | awk '{print "HDD",$3,"/",$2,$5}'
free -h | sed -n -e 2p | awk '{print "MEM",$3,"/",$2}'

あとは、こいつをサービスとして常駐させるべく、以下のような内容で /etc/systemd/system/monitor-status.service ファイルを作成し、

[Unit]
Description=Status monitor daemon

[Service]
WorkingDirectory=/root/monitor-status
ExecStart=/root/monitor-status/monitor.py ./script.sh
Restart=always

[Install]
WantedBy=multi-user.target

systemctl コマンドを実行すれば完成。

# systemctl daemon-reload
# systemctl enable monitor-status
# systemctl start monitor-status


というわけで、普段は画面表示は消えているが、
f:id:OBONO:20190703224516j:plain
タクトスイッチを押すと、現在時刻、稼働日数、CPU Load 値、HDD 使用量、メモリ使用量を画面に表示。
f:id:OBONO:20190703224546j:plain
約 30 秒で自動的に画面表示が消える。よしよし、想定通りに動作しているぞ。

大した事をやったわけではないのだが、これはこれで妙な満足感を得られたのであった。めでたしめでたし。

参考記事