raspberry pi と motion でわんちゃんライブカメラを作ってみる

ワンチャンではなく、わんちゃん(犬)です。
最近、わんこ様が家族の仲間入りをしたのですが、普段どうしているのかの確認のために、Raspberry Piを引っ張り出してきて作りました。ModelB+だったと思うけど動きは遅いですね。最近のRaspberryPiがほしいです。 今回は motion を使ってウェブカメラの映像を見れるようにしてみました。

Raspberry Pi OSのインストール

知らないうちにraspbianから名前が変わっていたRasapberry Pi OSをインストールします。まずはイメージをSDに書き込むソフトウェアをダウンロードします。 Raspberry Pi Downloads – Software for the Raspberry Pi https://www.raspberrypi.org/downloads/
ダウンロードが終わったら imager_1.4.exe を起動してインストールします。
起動したら、CHOOSE OSからOSを選択します。
次にSDカードを選択します。
WRITERを選択してイメージを書き込みます。
OSイメージのダウンロードを行って。SDに書き込んでくれているのだと思うのでのんびり待ちます。
おわったらメッセージが出る(次の画像はダウンロードしたイメージを書いたときのものなのでメッセージが違います)

起動する

できあがったSDカードをRaspberryPiに差し込んで起動します。
起動したら pi / raspberry でログインします。

無線LANの設定

まずは無線LANとSSHの設定をしてリモートから接続できるようにします。 USBの無線LANをつけて /etc/wpa_supplicant/wpa_supplicant.conf を設定します。
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=JP

network={
        ssid="SSID"
        psk="xxxxxxxxxxxxxxxxx"
}
iwconfig を実行して次のようになっていたら接続できています。
wlan0     IEEE 802.11  ESSID:"SSID"
          Mode:Managed  Frequency:2.462 GHz  Access Point: XX:XX:XX:XX:XX:XX
          Bit Rate=65 Mb/s   Tx-Power=20 dBm
          Retry short  long limit:2   RTS thr:off   Fragment thr:off
          Power Management:off
          Link Quality=51/70  Signal level=-59 dBm
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:24  Invalid misc:25   Missed beacon:0
接続できていないときは、raspi-config から設定してみても良いかもしれません。raspberryのバージョンによって画面が違うかもしれませんが、Network Optionsあたりから設定しても無線LANに接続できました。 固定IPにしたいので /etc/dhcpcd.conf に設定を追加します。IPの設定は /etc/network/interfaces ではなくなったんですね。
interface wlan0
static ip_address=xxx.xxx.xxx.xxx
static routers=yyy.yyy.yyy.yyy
static domain_name_servers=zzz.zzz.zzz.zzz
次にSSHで接続できるようにします。opnessh-serverはインストール済みだったので、/etc/ssh/sshd_configを変更します。
#Port 22
#AddressFamily any
ListenAddress 0.0.0.0
#ListenAddress ::
とりあえず接続できれば良かったのdえ、ListenAddress 0.0.0.0 だけコメントアウトして自動起動するよう設定し設定を読み込み直します。
sudo systemctl enable ssh
sudo systemctl reload ssh
これで別のPCからSSHで接続できるようになりました。

ウェブカメラを使えるようにする

では本題のウェブカメラを使えるようにしていきます。 まずはおもむろにUSB ウェブカメラを差し込んで、dmesgを実行して認識していることを確認します。次のような感じの出力があれば使用できます。
[ 1042.539163] input: UCAM-DLG200H: UCAM-DLG200H as /devices/platform/soc/20980000.usb/usb1/1-1/1-1.2/1-1.2:1.0/input/input10
[ 1042.544619] usbcore: registered new interface driver uvcvideo
[ 1042.544637] USB Video Class driver (1.1.1)
今回は、motion を使ってウェブカメラのサーバーを構築してみます。まずはインストール
sudo apt update
sudo apt install motion

motionの自動起動の設定

/etc/default/motion の no を yes に変更する
# set to 'yes' to enable the motion daemon
start_motion_daemon=yes

motionの設定

/etc/motion/motion.conf を変更する。設定が多いのでそれぞれ確認しつつちょうどよい設定にしてください。 今回は、ストリーミングでカメラの映像を確認できれば良いので、動体検知機能、静止画撮影、動画撮影はオフにして、フレームレートを15fpsで表示できるようにしました。 設定が終わったら次のコマンドでmotionを再起動
sudo systemstl restart motion
ブラウザで xxx.xxx.xxx.xxx:8080 にアクセスしてカメラの映像が見えることを確認します。
わんこがほぼ見えてない
途中適当に触っていたので、他にも必要だったかもしれませんが、概ねこのような手順で作れました。 わんこの様子を見に現場へ行くと、到着前に気が付かれてスタンバイされているので、これで確認することができて良さそうです。