ラズパイHomeKitカメラをUSBカメラに変更してみる

f:id:TedWada:20200203130554j:plain

こんにちは。Tedです。 前回、下記のようにラズパイ4を使ってHomeKit対応カメラを作りました。

blog.ingage.jp

作成したシステムを使っていく内に、いくつか気になるところがでてきました。

気になる点

  • カメラの画角にて広角が足りない。
  • Mac, iPhoneなどからHomeアプリで接続する際、タイムアウトで繋がらないことがよく起こる。

そこで...

そこで、下記を行うことにしました。

  • 広角カメラに換える。そのカメラはラインアップ豊富なWin, Mac用USBカメラ(Webカメラ)を使う。

    Win, Mac用のWebカメラであれば比較的安価に広角カメラが手に入ります。今回は以下のWebカメラを使うことにしました。

    BSW200MBK : Webカメラ | バッファロー

  • 問題を切り分けるために、別のHomebridge用カメラプラグインを使ってみる。

    タイムアウトの原因を探るために、別のカメラプラグインでの動作を試すことにします。また、前回利用したhomebridge-camera-rpiプラグインはUSBカメラに対応していない(ビデオソースの選択ができない)ため、USBカメラを使うためにもプラグインの変更の必要がありました。 今回使用するプラグインは homebridge-camera-ui としました。

まずは不要なモジュールの削除から

まずは前回構築したシステムから、今回不要なもの、残しておくと衝突が起きそうなものを削除します。 具体的には下記を行います。

  • カメラモジュールをオフにする。
  • カメラプラグインを削除する。

それぞれ以下のように進めます。

カメラインタフェースをオフにする

pi@raspberrypi:~ $ sudo raspi-config

f:id:TedWada:20191223180809p:plain
「5 Interfacing Options」を選択。

f:id:TedWada:20191223180901p:plain
「P1 Camera」を選択。

f:id:TedWada:20200131212516p:plain
カメラインタフェースを削除するので「No」を選択。

f:id:TedWada:20200131212621p:plain
カメラインタフェースが削除された。「Enter」を押す。

f:id:TedWada:20200131212828p:plain
「Finish」を選択。

f:id:TedWada:20200131212914p:plain
「Yes」を選択してリブートする。

これでシステムからカメラインタフェースは削除されました。 本体に接続しているカメラモジュールのケーブルも取り外してOKです。(その際は電源OFFで行ってください)

カメラプラグインを削除する

いったんHomebridgeを停止

pi@raspberrypi:~ $ ps -aux | grep homebridge  #homebridgeプロセスIDを表示
root       432  0.2  1.8 181880 72148 ?        Sl   Dec18  36:25 homebridge  #この場合プロセスIDは 432

pi@raspberrypi:~ $ sudo kill <killしたいPID(上記の場合は432>  #いったんHomebridgeプロセスを終了

config.jsonから該当設定を削除

Homebridge設定ファイルであるconfig.jsonから削除するプラグインに該当する設定を削除します。 他にHomebridgeプラグインを使っていない場合は、いったんconfig.jsonを削除してもよいかと思います。

編集する場合:

pi@raspberrypi:~ $ vi .homebridge/config.json

削除する場合:

pi@raspberrypi:~ $ rm .homebridge/config.json

プラグインをアンインストール

pi@raspberrypi:~ sudo npm uninstall -g homebridge-camera-rpi

新たにシステムを構築

USBカメラの取り付け

WebカメラをUSB端子に接続したら、そのカメラが使えるか確認を行います。

pi@raspberrypi:~ $ lsusb  #USB接続されているデバイス一覧を表示

...
Bus 001 Device 003: ID 0458:708c KYE Systems Corp. (Mouse Systems) Genius WideCam F100
...

このようにカメラが認識されていればOKです。

次にOSがビデオデバイスとして認識しているのかを確認します。

pi@raspberrypi:~ $ ls /dev/video*

/dev/video0  /dev/video1  /dev/video10  /dev/video11  /dev/video12

上記のように /dev/video から始まるデバイスが表示されればOKです。

homebridge-camera-uiのインストール

pi@raspberrypi:~ $ sudo npm i -g homebridge-camera-ui@latest

設定

pi@raspberrypi:~ $ vi .homebridge/config.json

ファイル内に下記を記述します。

{
  "bridge": {
    "name": "Homebridge",  #名称を設定
    "username": "1A:2B:3C:4D:5E:6F",  #16進数で自由に設定
    "port": 46183,
    "pin": "111-22-333"  #自由に設定
  },

  "description": "HomeCamera",  #名称を設定

  "platforms": [
    {
      "platform" : "CameraUI",
      "videoProcessor": "ffmpeg",
      "cameras": [{
        "name": "Home Camera 2",  #名称を設定(Homeアプリでのデバイス名)
        "active": true,
        "videoConfig": {
          "source": "-re -i /dev/video0",
          "maxStreams": 3,
          "maxWidth": 1920,
          "maxHeight": 1080,
          "maxFPS": 10
        }
      }]
    }
  ]
}

以上でインストール・設定は完了です。 最後に以下のコマンドでシステムを再起動します。

pi@raspberrypi:~ $ sudo reboot

最後に

MacやiPhoneでの利用方法は前回書いたとおりになります。 広角カメラに換えたのでこのように視野角が十分広くなりました。

f:id:TedWada:20200203130748p:plain

以前はこんな感じでした。

f:id:TedWada:20191229173256p:plain
ラズパイカメラモジュールでの画角

しかも、一ヶ月くらい使っていますがタイムアウトは全く起こらなくなりました。