今回は私がラズパイメイン機を何に使ってるのかざくっと紹介したい。
また、今後やりたいこととや開発管理で困っていること、その打開策等を紹介する。
興味はあるけど何に使えるのか分からないという方の参考になればと思う。
現在の用途
私は現在メインのラズパイ(3B+)を次の用途で使用している。
- 体重測定
- 室内環境測定
- 定刻に行動を促す音声ガイダンス
体重測定は、乗ると音声で体重を読み上げてくれて、株価の変動みたいにローソク足チャートで変動を表示してくれるシステムを作成した。
thom.hateblo.jp
室内環境測定はArduinoで読み取った温度・湿度・気圧・PM2.5、CO2の値をUSBシリアル通信で受け取り、電光掲示板を担当するラズパイZeroにネットワーク経由で送信システムである。
thom.hateblo.jp
thom.hateblo.jp
音声ガイダンスは音声ファイルを用意しておいて、単にcron(自動実行の為のスケジューラー)からaplay(音声ファイルを再生するコマンド)で実行しているだけ。これはかなりシンプルなので特に紹介記事を書いたことはない。
今後ラズパイでやりたいこと
今後、というかまさに今やりたいことが、摂取カロリーの記録である。
在宅勤務がながびく中、最近また太ってきたのでそろそろダイエットを再開しないとまずい。最近は基本的に3食コンビニになってしまってるんだけど、一つだけ強みがある。それは、全品カロリーが書いてあるので計測できること。
それで、とりいそぎ紙で記録表を作ってみたのがこちら。
日付ごとに、最初は△が並び、次に〇が並び、最後にまた△になっている。
100kcalごとに1マス、左から消し込んでいき、〇の範囲に収めれば自然にやせていくように計算して作った表である。
〇に届かずに前半の△で終わると基礎代謝を下回るので健康被害の可能性が出てくる・〇を超えて後半の△に差し掛かると痩せないもしくは太る。
これをラズパイでシステム化したい。
ちなみに摂取カロリー目安は体重とともに変動するので月に1回くらいは見直しが必要である。
その変動値を計算するマクロがこちら。
thom.hateblo.jp
ラズパイ上では既にPythonで直近の体重から摂取カロリー目安を割り出してくれるプログラムを作っているので、カロリー記録と目安カロリー計算の仕組みを連動させることができる。
開発管理で困ってること
開発そのものは色々調べながらやっていくしかないんだけど、今まさに困ってるのが開発の管理である。
具体的には成果物のデプロイ管理。
/home/pi/workの中身をご覧いただこう。
作りかけのサンプルやバックアップファイルが散乱して結構カオスになってきている。
しかも何がまずいって、この中の「pandasample.py」が、本番運用されてる体重グラフ表示プログラムだってこと。。
体重グラフ表示の仕組みはこうだ。
1) 体重計から飛んでくる赤外線信号は常時Daemonで監視している。
2) Daemonの本体であるPythonプログラムが信号をキャッチすると音声で体重を読み上げ、ファイルに記録する。
3) Daemonは/home/pi/Desktop(は?)に置いてあるPlot.shをキックする。
4) Plot.shは/home/pi/work(は?)/pandasample.py(は?)をキックする。
5) pandasample.pyはグラフを表示させる。
他にもいくつか本番運用されてるpythonスクリプトがいかにも作業用であるworkフォルダに、いかにも検証用の名前で格納されてしまっている。
いや、されてしまったというか、私がやったんだけど。
ラズパイで運用を始めてからけっこう月日が経っているので既にどれが何のファイルなのか分からなくなっている。
もう一から綺麗に作り直したいけど、当時色々躓きながら一つずつ問題をクリアしてきたので、もう一度環境を再現できる自信がない。
一体どうすれば。。。
打開策
ということで打開策である。
単純に、開発・テスト機と本番運用機を分けることにした。
普段私が仕事でやっている管理である。
実はずいぶん前にこの結論にはたどり着いていて、ラズパイ3B+はもう1台持っているのだ。
ただ当時一緒に購入したタッチスクリーンディスプレイで間違えて5インチのものを買ってしまって使い勝手か微妙だったので放置していた。
今回は公式の7インチタッチスクリーンディスプレイを買ってきたので、本番環境と同じハード構成である。
ケースがメイン機より使い勝手良かったり、アダプターが足りないので実験用の可変電源でカバーしてたりするけど。。
※テスターで測ってみたところ、USBからの出力はVOLTAGE設定にかかわらず常に5V強だった。そりゃそうか。普通のUSB機器は5V前提で設計されてるし可変にするメリットもない。
現行運用している本番機を参照しつつ、必要な環境だけを新しいラズパイに再現してそちらを本番機に切り替えるということを考えている。
また、環境の再現にあたって今回はきちんと変更管理を導入することにした。
実は購入時にも同じように途中までのセットアップできちんと変更を管理していたのだが、そのときの資料がこちら。
ただ放置してしばらくしてまた実験的用途に使ってしまったので環境がよく分からなくなっていた。
今回はまたOSの再インストールからスタート。ただ前回の記録があるので前回試行錯誤してたところは今回スムーズに再現できた。
Linuxは大体の設定作業がコマンドで片付くのでテキスト形式で記録を残しやすい。
変更を適切に記録しておくことで、次に同じ作業が必要になっても、本番運用環境がぶっ壊れても再現することができるのでおススメ。
これまでは再現性の低い奇跡的に出来上がった環境でなんとか動いていたようなものなので、これがぶっ壊れたらもう一度調べなおす気力は無かったと思う。
しかし自分で組んだこのシステムが既に生活に欠かせないものになってしまったので、もう1台分の費用をかけてでも安定化を図りたい。
今回なんとか、一番複雑な体重読み上げとグラフ表示の仕組みを新環境で再現することに成功したので、ひとまず今回の試みは成功だったと思う。