Edited at

ラズパイにRPi-Cam-Web-Interfaceとremote.itで遠隔Web IPカメラ


はじめに

~ Remote controlled Web IP camera over the internet via cellular network ~

ラズパイにカメラモジュール「Camera Module V2」を接続して

今回はラズベリーパイ(Raspberry pi)に「RPi-Cam-Web-Interface」をインストールして、そのあとremote.itを追加するとインターネット越しでも監視できるWeb IPカメラが作れちゃいます。ラズパイ設置場所にあるWifiや有線LANにDHCPで接続して、外部向けのポート公開などは不要です。


RPi-Cam-Web-Interface


ラズパイ用カメラ向けのWebインターフェースソフトウェアはいくつかあります。

他にも「MJPG-streamer」なんかも優秀です、ご参考まで。今回は本文では触れません。


「RPi-Cam-Web-Interface」とは

「RPi-Cam-Web-Interface」はラズパイカメラモジュール用のWebインターフェースです。

カメラモジュールの操作を毎回コマンドラインやプログラミングから行うのは面倒、また定期的な撮影と保存、動体検知などがWebブラウザから操作できます。

RPi-Cam-Web-Interface本家での説明では特徴として、高フレームレート、カメラの明るさやコントラストの調節機能、ビデオ画像、静止画をSDカードに保存、ダウンロード可能。また動体検知やスケジュール録画、スクリプトの実行、データのローテーションなどが解説されています。


Raspberry Pi camera Module

カメラモジュールの例はこちら。他にももっと安い汎用品も販売されています。画質とお値段を考慮して選ぶと良いです。


RPi-Cam-Web-Interfaceのインストール

RPi-Cam-Web-Interfaceの Basic Installation に沿ってインストールします。


 ラズパイの準備

 まずはRaspbianを通常通りインストールします。

 NOOBSを使うと簡単ですね。


 カメラモジュールの取り付け

 Getting started with the Camera Module を参考にカメラを取り付けます。

 画像は同じく上記本家サイトから。


 カメラ、SSH、VNCの有効化

 Raspberry Piの設定から、カメラ、ついでにSSH、VNCを有効化します。

 GUIであれば Raspberry Pi Configuration から

 InterfaceタブでそれぞれをEnableを選択しOKをクリック。

 設定を反映するために再起動が実行されます。


 最新パッケージ一覧の取得

 再起動後再度ログインし、ターミナルを開きパッケージリストをアップデートします。

xxx@pi01:~ $ sudo apt update

xxx@pi01:~ $ sudo apt upgrade


 RPi_Cam_Web_Interfaceのダウンロード

 githubからラズパイ上にソフト一式クローン。

xxx@pi01:~ $ git clone https://github.com/silvanmelchior/RPi_Cam_Web_Interface.git


Cloning into 'RPi_Cam_Web_Interface'...
remote: Enumerating objects: 26, done.
remote: Counting objects: 100% (26/26), done.
remote: Compressing objects: 100% (16/16), done.
remote: Total 3095 (delta 12), reused 21 (delta 9), pack-reused 3069
Receiving objects: 100% (3095/3095), 4.35 MiB | 534.00 KiB/s, done.
Resolving deltas: 100% (1925/1925), done.
xxx@pi01:~ $


 RPi_Cam_Web_Interfaceのインストール

 ディレクトリを移動しインストーラーを起動。

xxx@pi01:~ $ cd RPi_Cam_Web_Interface

xxx@pi01:~/RPi_Cam_Web_Interface $ ./install.sh

 インストール中にいくつかの設定ができる選択画面が表示されます。

WebサイトのサブフォルダーやWebサーバーの種類を選択できます。

カメラ画像を表示させる時のUser/Password認証も設定できますが、少し癖があるようなので注意。

今回はデフォルトのまま、一度タブを押してOKを選択。

インストールを完了します。


 ブラウザから動作確認

 一旦ここまでの動作確認をしましょう。

 ブラウザからラズパイのIPアドレスにアクセスします。

 html のリンクをクリックします。

無事、リアルタイムカメラ映像が表示されました。


remote.itのインストール

remote.itをインストールして、RPi_Cam_Web_Interface(カメラ)と、念の為SSH、VNCに接続します。

。先にremote.itアカウント作成が必要ですが「インターネット世界の「どこでもドア」 remote.it」の記事がわかりやすいです。


  • remote.itを配置

xxx@pi01:~ $ sudo apt install connectd


  • このラズパイをremote.itデバイスとして登録するインタラクティブインストーラーを起動

xxx@pi01:~ $ sudo connectd_installer


  • 1 から、先に作ったremote.itアカウントにサインイン

********************* Sign In Menu *********************

1) Sign in to your existing remote.it account
2) Request a code for a new remote.it account
3) Enter a verification code received in e-mail
4) Exit

********************************************************

Choose a menu selection (1 - 4):
1


  • このラズパイへの「アクセス名」にわかりやすい名前をつける(例:「WebCam_pi_01」)

Enter a name for your device (e.g. my_Pi_001).

The Device Name identifies your device in the remote.it portal.
Your services will be grouped under the Device Name.

Only letters, numbers, underscore, space and dash are allowed.

WebCam_pi_01


  • リモートアクセスで利用したいサービスを登録する。1 を選択。

============================ Main Menu ============================

1) Attach/reinstall a remote.it Service to an application
2) Attach/reinstall a remote.it Service to a LAN application
3) Remove a remote.it Service from an application
4) Remove all remote.it Services, then exit
5) Exit

===================================================================
'application' is any TCP service (e.g. SSH, VNC, HTTP, etc.)
running on this device. 'LAN application' is a TCP service
running on another device on this LAN.
===================================================================
Choose a menu selection (1 - 5):
1


  • まずSSHを登録、1 を選択

*********** Protocol Selection Menu ***********

1) SSH on port 22
2) Web (HTTP) on port 80
3) Secure Web (HTTPS) on port 443
4) VNC on port 5900
5) nxWitness on port 7001
6) Samba (SMB) on port 445
7) Remote Desktop (RDP) on port 3389
8) NextCloud on port 443
9) OpenVPN on port 1194
10) Custom (TCP)
11) Return to previous menu

***********************************************

You can change the port value during install

***********************************************

Choose a menu selection (1 - 11):
1


  • SSHの標準ポート番号である22番ポートを利用するなら y。(違う場合はn、その後ポート番号入力画面)

The default port for SSH is 22.

Would you like to continue with the default port assignment? [y/n]
y


  • SSHサービスへのアクセス名を入力(例:「WebCam_pi_01-SSH」)

Enter a name for this remote.it service (e.g. ssh-Pi).

This name will be shown in your remote.it Service List.

Only letters, numbers, underscore, space and dash are allowed.

WebCam_pi_01-SSH


  • これでデバイスとSSHサービスの登録が完了、続けてRPi_Cam_Web_Interfaceを登録しましょう。このまま続けてもう一度 1 を選択

=========================  Installed remote.it Services  ======================

Service Name | Protocol | LAN Address | Port | Application
-------------------------------------------------------------------------------
WebCam_pi_01-SSH | SSH | localhost | 22 | OK: sshd
-------------------------------------------------------------------------------
Device Name: WebCam_pi_01 Platform: arm-linaro-pi
Hardware ID: XXXXXXXX

============================ Main Menu ============================

1) Attach/reinstall a remote.it Service to an application
2) Attach/reinstall a remote.it Service to a LAN application
3) Remove a remote.it Service from an application
4) Remove all remote.it Services, then exit
5) Exit

===================================================================
'application' is any TCP service (e.g. SSH, VNC, HTTP, etc.)
running on this device. 'LAN application' is a TCP service
running on another device on this LAN.
===================================================================
Choose a menu selection (1 - 5):
1


  • さっきと同じ手順で今度はRPi_Cam_Web_Interfaceを割り当てます。

*********** Protocol Selection Menu ***********

1) SSH on port 22
2) Web (HTTP) on port 80
3) Secure Web (HTTPS) on port 443
4) VNC on port 5900
5) nxWitness on port 7001
6) Samba (SMB) on port 445
7) Remote Desktop (RDP) on port 3389
8) NextCloud on port 443
9) OpenVPN on port 1194
10) Custom (TCP)
11) Return to previous menu

***********************************************

You can change the port value during install

***********************************************

Choose a menu selection (1 - 11):
2


  • Webを選択、デフォルトポートの80で y

The default port for Web (http) is 80.

Would you like to continue with the default port assignment? [y/n]
y


  • RPi_Cam_Web_Interfaceサービスへのアクセス名を入力(例:「WebCam_pi_01-WebCam」)

Enter a name for this remote.it service (e.g. web-Pi). 

This name will be shown in your remote.it Service List.

Only letters, numbers, underscore, space and dash are allowed.

WebCam_pi_01-WebCam


  • RPi_Cam_Web_Interfaceも登録完了、続けてVNCを登録しましょう。このまま続けてもう一度 1 を選択

=========================  Installed remote.it Services  ======================

Service Name | Protocol | LAN Address | Port | Application
-------------------------------------------------------------------------------
WebCam_pi_01-SSH | SSH | localhost | 22 | OK: sshd
WebCam_pi_01-WebCam | HTTP | localhost | 80 | OK
-------------------------------------------------------------------------------
Device Name: WebCam_pi_01 Platform: arm-linaro-pi
Hardware ID: XXXXXXXX

============================ Main Menu ============================

1) Attach/reinstall a remote.it Service to an application
2) Attach/reinstall a remote.it Service to a LAN application
3) Remove a remote.it Service from an application
4) Remove all remote.it Services, then exit
5) Exit

===================================================================
'application' is any TCP service (e.g. SSH, VNC, HTTP, etc.)
running on this device. 'LAN application' is a TCP service
running on another device on this LAN.
===================================================================
Choose a menu selection (1 - 5):
1


  • 同様にVNCを割り当てます。

*********** Protocol Selection Menu ***********

1) SSH on port 22
2) Web (HTTP) on port 80
3) Secure Web (HTTPS) on port 443
4) VNC on port 5900
5) nxWitness on port 7001
6) Samba (SMB) on port 445
7) Remote Desktop (RDP) on port 3389
8) NextCloud on port 443
9) OpenVPN on port 1194
10) Custom (TCP)
11) Return to previous menu

***********************************************

You can change the port value during install

***********************************************

Choose a menu selection (1 - 11):
4


  • VNCを選択、通常RealVNCのデフォルトポートの5900で y

The default port for RealVNC is 5900.

The default port for tightVNC is 5901.

Would you like to continue with port 5900? [y/n]
y


  • VNCサービスへのアクセス名を入力(例:「WebCam_pi_01-VNC」)

Enter a name for this remote.it service (e.g. web-Pi). 

This name will be shown in your remote.it Service List.

Only letters, numbers, underscore, space and dash are allowed.

WebCam_pi_01-VNC


  • VNCも登録完了、最後に 5 で終了

=========================  Installed remote.it Services  ======================

Service Name | Protocol | LAN Address | Port | Application
-------------------------------------------------------------------------------
WebCam_pi_01-SSH | SSH | localhost | 22222 | OK: sshd
WebCam_pi_01-WebCam | HTTP | localhost | 80 | OK
WebCam_pi_01-VNC | VNC | localhost | 5900 | OK: vncserver-x11-c
-------------------------------------------------------------------------------
Device Name: WebCam_pi_01 Platform: arm-linaro-pi
Hardware ID: XXXXXXXX

============================ Main Menu ============================

1) Attach/reinstall a remote.it Service to an application
2) Attach/reinstall a remote.it Service to a LAN application
3) Remove a remote.it Service from an application
4) Remove all remote.it Services, then exit
5) Exit

===================================================================
'application' is any TCP service (e.g. SSH, VNC, HTTP, etc.)
running on this device. 'LAN application' is a TCP service
running on another device on this LAN.
===================================================================
Choose a menu selection (1 - 5):
5

Are you sure you want to exit? [y/n]
y


安定した運用のために

念の為にcronで一日一回ぐらいリブートしておけばまあ安心かな。

設定例

xxx@pi01:~ $ sudo crontab -e

エディタ画面で以下の1行を追加

0 2 * * * /sbin/shutdown -r now

上記例は、1日1回深夜2時にリブートするのが私の人生経験上無難だったというだけです、お好みに合わせて変更してください。cronでなくとも、また編集方法なども各宗派お好みで。


RPi_Cam_Web_Interfaceにremote.itでリモートログインしてみる

remote.itにサインインして先程登録したデバイス名を探す

無事、remote.itにデバイス(ラズパイ)が登録されていますね。デバイスの名前「WebCam_pi_01」をクリックします。

すると、そのデバイスに登録されているサービスが3つ表示されました。先程登録したSSHとRPi_Cam_Web_Interface、VNCです。

WebCamをクリックすると…

新しいタブが開いてつながりました!URLの部分がremote.itで払い出された一時アクセス用のリンクになっていますね。これで接続するネットワークを変更してもインターネットに繋がっていればremote.itがその所在を特定してくれます。インターネット越しでもケータイのテザリングでも大丈夫です。


つまりこれは、セキュアかつ簡単で安価な遠隔コントロールIPカメラ

またじいちゃんばあちゃんの住む実家に置きに帰ろうと思います。こないだ作ったデジタルフォトフレームに追加してもいいかもしれないですね。

実家のネットワークの設計は不要、DHCPでインターネットにさえ出られればOK。

設置する場所を変更されてもたいして問題になりません。

私はじいさんの手入れする庭を眺めようと思います。

(カメラの絵はイメージ図です)


まとめ

以前書いたデジタルサイネージとほぼ同様のユースケースですが今回は遠隔側の様子を手元に持ってきました。

ラズパイで実現できる機能をインターネットに「安全に」「簡単に」「便利に」双方向接続する方法としてremote.itはとても良い組み合わせだと思います。他の利用例も紹介したいです。

ご参考


ラズパイにScreenlyとremote.itで遠隔デジタルサイネージ