ラズパイ ブート時にコマンドを実行する ( .bashrc )


ラズパイ(Linux)で、ブート時にコマンドを実行するには、大きく3つ方法があります。
1. サービスデーモンを記述する
2. /etc/rc.local に記述する
3. ユーザ毎の .bashrc を記述する

今回は、3. ユーザ毎の .bashrc を記述する 方法です。

注意
ブート時以外にも、ログインすると、実行されます。
複数回実行されると、不都合なものには、適しません。

/etc/inittab を編集して、ブート時に特定のユーザ (pi) にログインするようにします。

$ sudo nano /etc/inittab

(この行をコメントにして)
# 1:2345:respawn:/sbin/getty --noclear 38400 tty1
(この行を追加する)
1:2345:respawn:/bin/login -f pi tty1 </dev/tty1>/dev/tty1 2>&1

.bashrc を編集して、ログイン時に特定にコマンドを実行するようにします。

$ cd ~
$ nano  .bashrc
(一番最後に実行するコマンドを記述する)
*** &

これで、電源投入時、あるいはリブート時に、特定のコマンドを実行します。

参考
.BASHRC AND .BASH_ALIASES – raspberrypi
ドットファイル


ラズパイ sumobot turn


sumobot turn は、Sumobot が左回転と右回転を繰り返すプログラムです。
sumobot_turn.py と sumobot_turn_check.py の2つがあります。
後者は、前者に、ピンの状態をチェックする処理を追加したものです。

インストール
Github から持ってきて、ラズパイの好きな場所 (例えば /home/pi/sumobot/ ) に置きます。

起動

$ sudo python /home/pi/sumobot/sumobot_turn.py

Sumobot が左回転と右回転を繰り返します。

注意
無線LANでログインして起動してください。
有線LANだと、LANケーブルが絡まります。

自動起動
電源を投入したときに、自動的に起動するようにします。
しかし、常に Sumobot が動き出すと、扱いにくいのです。
sumobot_turn_check.py を使用します。
これは、特定のピン (P13) の状態をチェックして、Sumobot を動かさずに、プログラムを終了する処理を追加したものです。

自動起動するには、/etc/rc.local を変更します。
exit 0 の前に、1行追加します。

$ sudo nano /etc/rc.local
...
# add
python /home/pi/sumobot/sumobot_turn_check.py
exit 0 

ハードの設定
P13(GPIO27) と P17(3.3V) の間に10KΩの抵抗を入れます。
プログラムが自動起動して、Sumobot は動き続けます。
P17(3.3V) に代わりに P14(GND) につなぐと、プログラムは終了して、Sumobot Jr は停止したままです。
20160505_raspi_circuit_p13


ラズパイ USBカメラ (Motion)


Motion を使用して、ラズパイにUSBカメラを接続します。
Motion は、カメラからの映像信号を監視するプログラムです。
MJPG-streamer と異なり、画像に動きがあったときに、記録することができます。

インストール

$ sudo apt-get install motion

起動

$ motion -n
...
[0] [NTC] [ALL] motion_startup: Motion 3.2.12+git20140228 Started
cap.driver: "uvcvideo"
cap.card: "BUFFALO BSW20KM15 USB Camera"
...

表示画面
WEBブラウザでアクセスする

http://localhost:8081/

20160316_motion_control

設定画面
WEBブラウザでアクセスする

http://localhost:8080/

20160316_motion_stream

動きがあると、/var/lib/motion に画像が記録されます。

デーモン化して、外部から閲覧できるようにする

$ sudo nano /etc/motion/motion.conf
(デーモン化)
#daemon off
daemon on
...
(※ 外部から閲覧できるようにする)
#stream_localhost on
stream_localhost off

※ 以前のバージョンでは、webcam_localhost でした。

$ sudo nano /etc/default/motion
(デーモンを起動する)
#start_motion_daemon=no
start_motion_daemon=yes

起動

$ sudo service motion start

ドキュメント
MotionGuide

日本語で公開しているサイトもあります。
Motion の導入手順 ~ 指定した内容、パラメータの意味について

参考
[Raspberry Pi]motionでお手軽監視カメラをつくる
Raspberry Piと安めのウェブカメラで監視カメラを作る。何か動きがあったら画像保存もする
Webカメラを使ったライブ映像配信、監視、定点観測システム構築


ラズパイ USBカメラ (MJPG-streamer)


ラズパイにUSBカメラを接続します。
MJPG-streamer は、UVC (USB Video Class) 対応のWEBカメラからjpeg画像を取り出して、Motion-JPEG としてストリーミング配信するアプリです。

インストール
subversion

$ sudo apt-get install subversion

imagemagick

$ sudo apt-get install imagemagick

libjpeg-dev

$ sudo apt-get install libjpeg-dev

libv4l-dev

$ sudo apt-get install libv4l-dev

v4l-utils

$ sudo apt-get install v4l-utils

MJPG-streamer

(ダウンロード)
$ cd ~
$ mkdir builds
$ cd builds
$ svn co https://svn.code.sf.net/p/mjpg-streamer/code/mjpg-streamer mjpg-streamer
(ビルド)
$ cd mjpg-streamer
$ make

起動

$ ./mjpg_streamer -i "./input_uvc.so -d /dev/video0 -r 640x480 -f 60 -y -n" -o "./output_http.so -p 8080 -w ./www"
MJPG Streamer Version: svn rev: 3:172M
 i: Using V4L2 device.: /dev/video0
 i: Desired Resolution: 640 x 480
 i: Frames Per Second.: 60
 i: Format............: YUYV
 i: JPEG Quality......: 80
 i: TV-Norm...........: DEFAULT
 i: FPS coerced ......: from 60 to 37
 o: www-folder-path...: ./www/
 o: HTTP TCP port.....: 8080
 o: username:password.: disabled
 o: commands..........: enabled

WEBブラウザでアクセスする

http://IP_ADDR:8080/

20160315_mjpg_streamer_home

http://IP_ADDR:8080/stream.html

20160315_mjpg_streamer_stream

デーモン化
Githubに rpi-mjpg-streamer が公開されているので、それを使用します。

(ダウンロード)
$ cd /tmp
$ git clone https://github.com/meinside/rpi-mjpg-streamer.git

環境に合わせて変更する
>Buffalo BSW20KM15 では、-y (YUYV format) の指定が必要でした。
Github に変更済みの mjpg-streamer.sample ファイルを公開しました。

$ sudo nano rpi-mjpg-streamer/init/mjpg-streamer.sample
#PLUGIN_IN="$MJPG_STREAMER_INSTALL/input_uvc.so -d $DEVICE_IN -r $RESOLUTION -f $FPS -l $LED"
PLUGIN_IN="$MJPG_STREAMER_INSTALL/input_uvc.so -d $DEVICE_IN -r $RESOLUTION -f $FPS -l $LED -y"

自動起動を設定する

$ sudo cp rpi-mjpg-streamer/init/mjpg-streamer.sample /etc/init.d/mjpg-streamer
$ sudo chmod 755 /etc/init.d/mjpg-streamer
$ sudo insserv mjpg-streamer

パラメータの意味
ドキュメントがありませんが、コマンドのヘルプが使えます。

$ ./mjpg_streamer --help
$ ./mjpg_streamer -i "./input_uvc.so --help"
$ ./mjpg_streamer -o "./output_http.so --help"

日本語で公開しているサイトもあります。
ウェブカメラでストリーミング


CentOS で node.js を自動起動する


node.js を自動起動するツールはいくつかあるようです。
今回は forever を使います。

インストール

# npm install forever -g
/usr/local/node-v0.12.2/bin/forever

パスを通す

# ln -s /usr/local/node-v0.12.2/lib/node_modules/forever/bin/forever /usr/local/bin/forever

自動起動
起動スクリプトを書いて、/etc/rc.local に追加する

#!/bin/bash/
/usr/local/bin/node /usr/local/bin/forever start \
  -p /var/run/forever \
  --pidfile /var/run/node-app.pid \
  -l /var/log/node-app.log -a \
  /home/node/app.js

参考
Node.js 自動再起動モジュール
node.js node.jsスクリプトをforeverでデーモン化する


MAC に MySQL をインストールする


20120306mysql

インストール

$ sudo port install mysql5-server

基本DB作成

$ sudo -u _mysql mysql_install_db5

パスワード設定

$ /opt/local/lib/mysql5/bin/mysqladmin -u root password 'new-password'

動作確認

$ mysql5 -u root -ppassword

自動起動設定

sudo launchctl load -w /Library/LaunchDaemons/org.macports.mysql5.plist

PHP から MySQL を使えるようにする

$ sudo vi /private/etc/php.ini
-----
mysql.default_socket = /var/mysql/mysql.sock
⬇
mysql.default_socket = /opt/local/var/run/mysql5/mysqld.sock

mysqli.default_socket = /var/mysql/mysql.sock
⬇
mysqli.default_socket = /opt/local/var/run/mysql5/mysqld.sock
-----

$ sudo /usr/sbin/apachectl restart

参考
MacPortsを使ってMySQL 5をインストールする
mac portsのmysql5とPHPの接続でエラー