【ラズパイで猫ちゃんカメラ】 その7 ラズパイ起動時にプログラムを自動起動する
前回 だいぶ日が空いてしまいましたが・・・ 前回はLINE NotifyのAPI制限を確認しました 今回 systemd で自動起動 ラズパイを起動してからプログラムを手動で実行するのは実用的じゃないですね ですので、ラズパイ起動時にプログラムを自動起動します 自動起動には systemd を使います こちらの記事を参照ください↓ systemd の良いところ ちょっと本旨とずれますが、プログラムがエラーで停止しても、systemdがサービスを再起動してくれます ラズパイ自体の再起動はcronでも良いですが、自作のプログラムはバグ取りが不十分なのでエラー停止でサービスを再起動してくれるのは助かります(エラー対策の話につながります) エラー対策 今回はLINEに送信するため、ネットワークを利用します 実際動かしてみて、wi-fi関連処理がうまく行かずエラー停止が結構ありました 自分ではどうしようもない問題でした また、USBが死ぬこともよくあり、これは再起動で復活しますので、定期再起動もサービスにしました 手動でプログラムを再実行できれば対策不要ですが、猫カメラは不在時に使用します なので、手動で再実行はできず、エラー対策は必須です 私も猫カメラ開発でエラー対策が必要だと痛感しました (カメラ止まった!猫の様子がわからない!どうしよう!は飼い主には耐えられないです) 実装の候補は以下2つ Python中にリトライ処理をいれる systemdが勝手に再起動してくれる ← こっちにした リトライ処理も実装してみましたが、よりお手軽な systemd にしました .service の作成 猫カメラなので、名前はnyancam.serviceにしました(何でもOKです) ここでは/lib以下に作っています(上の記事でもあるように、/etc以下に作る方法もあります) sudo nano /lib/systemd/system/nyancam.service nyancam.serviceの中身↓ [Unit] Description = test [Service] ExecStart=/usr/bin/python3 /home/pi/Desktop/nyancam.py Restart=always Type=simple [Install] WantedBy=multi-user.target ExecStart = XXXはプログラムの起動についての記述です /home/pi/Desktop/nyancam.pyをpython3で起動します Restart=alwaysでnayncam.pyがエラー時にサービスを再起動してくれます systemd コマンド sudo systemctl start nyancam.service <--- サービスを起動するコマンド sudo systemctl stop nyancam.service <--- サービスを停止するコマンド sudo systemctl enable nyancam....