YU2TA7KA's BLOG ~take one step at a time~

派生開発、組み込み開発周りのこと。

起動時の自動実行の実装【おうちカメラ】

www.yu2ta7ka-emdded.com

先日、おうちカメラのベース環境を構築しました。その後の実装リストとしていた、起動時の自動実行の実装が完了しました。

編集したファイル

連番 ファイル名 概要 ファイル名の付け方
1 /etc/systemd/system/XXXX.service systemdからプログラムを起動するための設定ファイル XXXXのところを好きな名前(英数字)に変えて下さい.
2 /opt/パッケージ名/bin/YYYY.sh systemdからプログラムを起動するプログラムを呼び出すためのシェルスクリプト パッケージ名やYYYYのところは好きな名前(英数字)に変えて下さい.

systemdを用いたプログラムの自動起動 - Qiita

今後実装したい機能

  • ラズパイ起動時の自動実行(最優先) 20190615完了
  • 気温表示
  • 気温によるエアコン制御
  • 定期撮影した画像をGoogle フォトへ自動アップロード
  • 撮影画像による表情分類

参考Webページ

Raspberry Piでプログラムを自動起動する5種類の方法を比較・解説
/etc/rc.localに起動時に実行したいコマンドを書いてしまうのが一番楽です。ただ、推奨されている自動起動の方法はsystemdのしくみを使ったものになります。

systemdを用いたプログラムの自動起動 - Qiita
systemdの使い方はこちらの記事がとても丁寧でした。これを参考に実行しました。実行時のパス設定や複数のファイルを編集する必要があり、細かなミスがあり時間がかかりました(1時間くらい)。

今後

ラズパイの電源を入れるだけで運用可能な状態になったので、平日に起動させて定期撮影が動作するかの確認をしていきたいと思います。あとは、温度センサを接続して、室内温度を画面表示する機能を追加したいと思います。ここまではすぐにできるはず。

作業メモ

serviceファイル

$ sudo cp XXXX.service /etc/systemd/system
$ sudo chown root:root /etc/systemd/system/XXXX.service
$ sudo chmod 644 /etc/systemd/system/XXXX.service

実行スクリプトファイル

$ sudo mkdir -p /opt/XXXX/bin
$ sudo chmod 755 /opt/XXXX/bin
$ sudo cp autoexec.sh /opt/XXXX/bin
$ sudo chown root:root /opt/XXXX/bin/autoexec.sh
$ sudo chmod 755 /opt/XXXX/bin/autoexec.sh

自動起動させるために必要な手順

$ sudo systemctl daemon-reload
$ sudo systemctl status XXXX.service
$ sudo systemctl enable XXXX.service
$ sudo systemctl status XXXX.service
$ sudo systemctl start  XXXX.service
$ sudo systemctl status XXXX.service

期待するサービスが実行されているか確認する。

起動時に環境変数を設定する場合

以下ファイルを作成しパスの設定を行い、XXXX.serviceファイルにEnvironmentFileの行を追記する。

PATH="パス設定"