Bookwormが出てからしばらくたちましたが、そう言えば自宅の常設ラズピッピはいまだにBusterとかBullseyeのままなので、ぼちぼち入れ替えをしようかなと思いたち、軽めのやつから手を付けてみました。コミケの原稿?アッハハハwwwいや、これをやってたら記事にできそうなことも出るかもしれないじゃないですかガハハww(そんなにない)
ブログに書くと、バックアップを取ったつもりが取っていなかったみたいなバカをしたときに、ブログからサルベージできることがわかったので、書きます。
夜ふかしアラート
うすい本に書いた、22時になるとミクにはよ寝ろと怒られ続けるだけの装置です。
やってることは3点で、照度センサーとスピーカーを使ったモノになります。
/boot/firmware/config.txtの中身
# I2C dtparam=i2c_arm=on # オンボードサウンドはいちおう切っとく #dtparam=audio=on # I2S dtoverlay=hifiberry-dac # 一応BTを切る(Wi-Fiは切らないので多分節電にはならないけど) dtoverlay=disable-bt # ACT LEDはつけない dtparam=act_led_trigger=none dtparam=act_led_activelow=off # ヘッドレスなPiZeroWなのでGPUをカツカツにしてRAMを稼ぐ gpu_mem=32
wav再生はaplayなのでそのままでよく、mp3再生はmpg123を使用しました。
$ sudo apt install mpg123
Bookwormに採用のPython 3.11からは、pipでライブラリを使用するのにvenvが必要になったので、そうします。I2C周りはシステムパッケージpython3-smsubを使いたいのだけど、そう言うときにvenvとうまく合わせるには「--system-site-packages」を使うと良いらしいです。
$ sudo apt install python3-smbus $ python3 -m venv --system-site-packages venv $ source venv/bin/activate (venv)$ pip install py-zabbix
crontab。いくつか端折りましたが、venvのpythonを使うにはvenvディレクトリ以下のpythonを呼べばOK。簡単でしたね。
* * * * * /home/akkie/py-hayonero/bin/python3 /home/akkie/send-illuminance-to-zabbix.py 30 23 * * 0-4 /home/akkie/py-hayonero/bin/python3 /home/akkie/hayonero.py /home/akkie/04_hayakunenasai.wav 0 10-11,14-17 * * 1-5 /usr/bin/mpg123 /home/akkie/nc119745.mp3 0 9,12-13,18 * * 1-5 /usr/bin/mpg123 /home/akkie/Japanese_School_Bell04-1.mp3
あとはzabbix-agentをいれて完了。
CM4 デュアルカメラのメダカメラシステム
バックアップのtarballを作ったのに、tarballを転送し忘れたままBookworkのイメージを書き込んで再構築となりました……あほすぎる。スクリプトのバックアップもMacに保管されておらず、どうしようかと思いながらブログを探したら、Pi 5のときに試していた記事を見てUSB SSDにスクリプトをコピーしていたのを確認。USB SSDから無事原稿のスクリプトをサルベージできました。ブログに書くのは大事なんやね。
餌やりのギミックに使っていたシェルスクリプトもブログからサルベージ。他のファイルたちは過去のスクリプトなので、再構築に必要なものは最低限揃いました。あぶねー。
スクリプトはMacにバックアップを置いて、環境構築開始。まずはconfig.txt。CM4のデュアルカメラは、以前はデュアルカメラを有効化するdt-blob.binを作って置く必要がありましたが、いつの間にか不要になり、dtoverlayだけで使用できるようになりました。ただし、自動検出はだめらしいので、camera_auto_detect=1をコメントアウトしたうえで、カメラポートに接続したカメラのモデルと、cam0 or cam1のポート番号を明示する必要がありました。また、以前は入れていたgpu_memは、むしろカメラが使えなくなることがわかったので削除しています。
[all] # 水温センサー用の1-Wire dtoverlay=w1-gpio # 餌やり装置用のUART enable_uart=1 dtparam=uart0=on # カメラの認識は手動の模様 # camera_auto_detect=1 dtoverlay=imx708,cam0 dtoverlay=imx219,cam1 # むしろカメラが使えなくなることがわかったので削除 # gpu_mem=512 # 電源LEDを切る dtparam=pwr_led_trigger=none
カメラ周りの整備。夜ふかしアラートと同様、Picamera2はシステムパッケージを使い、残りはvenvとしました。1-Wire用ライブラリと、餌やりのServo2040をいじるようのadafruit-ampy(念のため)の2点。
$ sudo apt install python3-picamera2 $ python3 -m venv --system-site-packages venv $ source venv/bin/activate (venv)$ pip install w1thermsensor adafruit-ampy
あとはスクリプトをおき、systemdのserviceファイルを配置。こちらもpythonの実行パスはvenvを使います。
[Unit] Description = Live camera daemon Requires=network-online.target Wants=network-online.target After=network-online.target [Service] ExecStart = /home/akkie/venv/bin/python3 /home/akkie/livecam_libcamera_dual.py Restart = always Type = simple [Install] WantedBy = multi-user.target
あとはzabbix-agentをいれて完了。
zabbix-agent
昔何気なしにどこかから拾って入れたと思われる、ラズピッピのCPU温度、クロック数、電圧を取るやつが動いていなかったので修正しました。
多分ここから拾ったのかも?
scripts/userparameter_rpi.conf · master · qrl / zabbix · GitLab
vcgencmdのパスを/usr/binに修正。
UserParameter=rpi.cpuClock,/usr/bin/vcgencmd measure_clock arm|cut -d"=" -f2 UserParameter=rpi.cpuVoltage,/usr/bin/vcgencmd measure_volts | tr -d "volt=" | tr -d "V" UserParameter=rpi.cpuTemperature,cat /sys/class/thermal/thermal_zone*/temp
vcgencmdはvideoグループに所属している必要があるので、zabbixをvideoグループに入れました。
# コマンドでできた気がするけど忘れたので雑にファイル編集 $ sudo vi /etc/group video:x:44:akkie,zabbix $ sudo systemctl restart zabbix-agent
テンプレートはこれをインポートすればOKです。
zbx_template_rpi.xml · master · qrl / zabbix · GitLab
ホストにテンプレートを割り当ててやれば出てくるはず。
まとめ
きのうは2台をやっつけました。カメラ周りとvenv周りはうすい本にできそうなネタですね。深掘りの余地を感じます。
そして次はベランダ方面用の3A+に着手の予定。こいつはlibcamera移行前のBusterなので、カメラのリソース使用量が増える見込みなのがわかっていてアレですが、まあいい加減やらざるを得ない……がんばる。