Raspberry Piで自動起動する方法
参考の記事によると大きく5つがあるようです。
本記事はautostartを使った自動起動を試行た際のメモを記載しておきます。
- /etc/rc.local
- autostart ←今回の記事
- crontab @reboot
- /etc/init.d
- systemd ←別の記事 Raspberry Piでプログラムを自動起動(1)_systemd
autostartを使用した自動起動は(Raspbian Buster以降)
GUIのプログラムを起動時に実行したいときに使います。
1. 起動したい.py
.sh
を準備する
Ex. momoの自動起動の場合
home/pi/momo…/auto_launch.sh
echo
の部分は確認用なので記述は任意
auto_launch.shの中
#!/bin/sh
echo Start auto_launch
sleep 15
# google.comにpingして通信状態を確認する。
while true
do
if ping -c 1 google.com > /dev/null; then
echo "connected network"
break
else
echo "retry"
sleep 2
fi
sleep 1
done
sleep 2
echo Start video capturecd /home/pi/momo*****/
#起動したいプログラムを記述する。
./momo — no-audio- *****
- bashファイルの起動確認
home/pi/mo***/
bash auto_launch.sh
- 所望の.shや.pyが実行できることを確認しておく。
2.autostartファイルの作成、編集する
以下コマンドを実行して、autostartファイルの雛形を、ホームディレクトリのコンフィグにコピーします。
autostartファイルの雛形をコピー
mkdir -p ~/.config/lxsession/LXDE-pi
cp /etc/xdg/lxsession/LXDE-pi/autostart ~/.config/lxsession/LXDE-pi/
autostartファイルに実行したコマンドを追記する。
autostartをvimで編集
cd ~/.config/lxsession/LXDE-pi/
sudo vim atuostart
autostart
****************************************
@lxpanel --profile LXDE-pi
@pcmanfm --desktop --profile LXDE-pi
@xscreensaver -no-splash
@lxterminal -e “/home/pi/momo-*****/auto_launch.sh" #<---ここを追加
****************************************
3.autostartの機能
コマンドラインに表示
echo "hoge hoge"
""で囲むと文字列として認識される。
スクリーンセーバー
$ xset s on #スクリーンセーバーをオン
$ xset s off #スクリーンセーバーをオフ
ネットワーク接続を待つ
googleにpingして結果を判断に使う。(例)
auto_launch.sh
#!/bin/sh
while true
do
ping -t 6 -i 2 www.google.com 1>/dev/null 2>/dev/null
if [ $? -ne 0 ]
then
echo "Network Has Gone"
if [ `cat ~/.netcheck.last` = "OK" ]
then
say "Network Has Gone"
fi
echo "Error" > ~/.netcheck.last
sleep 6
else
echo "Network Has Come"
if [ `cat ~/.netcheck.last` = "Error" ]
then
say "Network Has Come"
fi
echo "OK" > ~/.netcheck.last
fi
done
以上