Raspberry PIでブート時にアプリを自動で立ち上げる方法は、以前は/etc/rc.localに記述という方法もありましたが、今は
https://www.raspberrypirulo.net/entry/systemd
にあるように/lib/systemd/system/配下にxxx.serviceファイルで条件記述して、
$ sudo systemctl start xxx.service
を使うのが推奨だし安定して使えるかと思いますが、震度計で記述したときに問題が起きたのでその状況と回避方法を
/lib/systemd/system/seismic.serviceで以下の内容を記述して、
[Unit]
Description = measure
[Service]
ExecStart=/usr/bin/python3 /home/pi/python/seismic.py
Restart=no
Type=oneshot
[Install]
WantedBy=multi-user.target
ラズパイブート時のseismic.serviceの起動で,
Sep 27 20:44:06 rasp-z python3[298]: File "/home/pi/python/seismic.py", line 47, >
Sep 27 20:44:06 rasp-z python3[298]: spi.open(0,0)
Sep 27 20:44:06 rasp-z python3[298]: FileNotFoundError: [Errno 2] No such file or d>
こんなエラーが出て起動できない、起動後の実行
$ sudo systemctl start seismic.service
だと問題ない、ということはタイミング問題じゃないかということでseismic.pyの最初で時間待ち(20秒)させてやったら、問題なく起動できました。
本来はサービスの起動条件をseismic.serviceファイルのパラメータで設定して対応すべきことかと思いますが、
<systemdの解説記事>
https://office54.net/iot/linux/systemd-unit-create
admin