Smart HomeをDIYする

Apple HomeKit は対応製品が少なくて高価なのでHomebridgeでがんばります

PoE IPカメラ (2,059円) をHomeKitから使う

Ethernetに接続する安価な有線IPカメラを、Raspberry Pi4にインストールしたFFmpegとHomebridgeを使って、HomeKitに接続しました。Power over Ethernet接続の機種を選べば、カメラへの配線は1本で済みます。

IPカメラが安い

セキュリティ目的のカメラにはいろいろなタイプのものがあります。その中でもIP接続するカメラは、柔軟に接続できるので使いやすいです。これらのカメラは、一般的にはWiFiEthernetで接続して、RTSP (Real Time Streaming Protocol) で動画データを配信します。

WiFi接続のIPカメラは、配線が楽ですが、WiFiの帯域に動画データが負荷をかけます。また、WiFiであっても、電源ケーブルが必要な場合が一般的なので、配線が全く不要というわけではないです。

一方、Ethernet方式のIPカメラの中には、PoE (Power over Ethernet) に対応したものもあります。これならばEthernetだけの配線で、電力も供給できるので配線が楽です。 ということで、今回はPoE対応有線IPカメラを使いました。

PoEハブを揃える

PoE機器を使用するためには、Ethernetに電力を供給するデバイスが必要です。Ethernetはもともと通信データを送る配線の規格で、電力を供給する配線は含まれていませんでした。でも、電力も送れると便利なので、使われない配線を電力線に使うPoE規格が作られてます。いくつか規格があるようですが、基本的なもの (IEEE 802.3af) は48V15Wを供給する方式です。IPカメラは消費電力が少ないので、この規格のPoEで機能します。

Ethernetで使われるケーブルの中には、2本ずつ捻り合わされた4対の銅線(合計8本)が使われてます。

( http://www.aim-ele.co.jp/tech/metal-tech6/ )

100Base-Tではこのうちの2対が使われるので、2対が余ります。上の図でPin 4, 5, 7, 8が余ります。その余った2対(合計4本)の線を電力供給に使ってしまおうというのがPoE (IEEE 802.3af) の規格です。余った配線に48Vの電圧をかけて、電力を送ります。一方で、現在一般的に使われている1000Base-TEthernetでは、転送速度を稼ぐために4対全部の配線を通信に使用してます。なので、この規格のPoE機器は、必然的に100Base-Tで機能します。

PoEを使う場合は、PoEハブを用意すると簡単です。PoEハブは上流から1000Base-TEthernetを受けて、これを下流100Base-TのPoEに流します。PoEに必要な電力はハブから供給されます。また、PoEのコネクタに、PoE非対応の1000Base-T機器が接続された場合は、自動判定して1000Base-Tでの接続をします。

PoEハブは、以前は日本で買うと高価でしたが(AliExpressなどでは安かった)、最近は日本のAmazonでも手頃な価格で買えるようになりました。

IPカメラを選ぶ

ネット通販でPoE接続のIPカメラを探しました。これも少し前はAliExpressの品揃えが豊富でしたが、最近は日本のAmazonでもそこそこの価格で買えるようになりました。でもやはりAliExpressの方が安くて豊富です。ということで、この機種を選びました。

品定ポイントの第一は、PoE対応かどうかです。48V PoEと書いてあれば、規格に沿っていると思われるのでより安心です。

素数が1M画素の機種は1280x720の標準HDで、2M画素が1920x1080のフルHDです。あまり高画素だとデータが大きくて負担になるので、1M画素にしました。またレンズの焦点距離が、2.8mm, 3.6mm, 6mmとあるのは、広角・標準・望遠のような位置付けです。これは使用目的次第ですが、セキュリティカメラとしては広角の方が何かと使いやすいです。なので2.8mmにしました。

IPカメラを選択する際に、RTSPの仕様がわかっている機種が望ましいです。RTPSはHTTPと同様に、IPアドレスディレクトリ構造、ファイル名などを指定してアクセスします。その詳細が不明でも、色々と試せば発見できるのですが(それはそれで謎解きのようで楽しいのですが)、すでにわかっているメーカならば手間が省けます。それには、こちらのサイトが役立ちます。

www.ispyconnect.com

ここに、いろいろなブランドがアルファベット順に記載されてます。ここにURLが掲載されたブランドの該当機種ならば、ほぼ問題なくFFmegから接続可能です。今回の製品は、Xmeyeというブランドのようで、上記のサイトにも掲載されています。なので、安心して購入できました。

分解してみる

1M画素のPoEモデルの価格は送料無料で2,059円でした。人感センサと同じくらいの価格で、カメラが買えてしまうのはすごいかと思います。

品物は、適切に梱包されていて問題なく到着しました。全体に肉薄の軽いプラスチックで作られていて、コストダウンされている感じです。でも角度調整(雲台)の部分は、3軸の回転が可能で、調整後はネジで固定できるようになってます。堅牢ではないですが、価格を考えたらよく作られていると思いました。

カメラを傾けると、カサカサと音がするので、プラスチック片でも混入しているのかなと思って蓋を開けました。背面のネジ3個で裏蓋を開けることができます。中の基盤は綺麗に作られてます。

蓋はゴムでパッキングされていて、ケーブルの入り口はホットボンドでしっかり固めてあります。一応の防水はできているようです。傾けると音が出る正体は、乾燥剤でした。接着剤で止めてありました。湿気対策のようです。

全体に高級感はありませんがしっかりと作られてます。この基板の裏側には、レンズ、撮像素子、照明用赤外LEDがあるわけで、これらが2,000円ちょっとで販売されているのは驚きです。コスパがすごいです。

Webインタフェースは使えない

PoEハブに接続すると、青いLEDが点灯して、しばらく経つとリレー音が聞こえます。赤外線照明LEDのon/offだと思われます。動作しているようです。

製品と一緒に入っていた説明書によると、工場出荷時には192.168.1.10にアドレス設定されているようです。LANのネットワークアドレスは別の値だったので、コンピュータの方を手動で192.168.1.XXXに設定して、webブラウザでアクセスします。こんなページが現れました。

ユーザ名admin、パスワードなしでログインできるのですが、カメラ画像の表示は出ません。Macなのでダメなのかと思い、Windowsで試しても「このプラグインはサポートされていません」という表示が出るだけです。説明書によるとActiveXが必要とのことです。今更ActiveXに対応させる気にはならないです。さらに説明書によると、webからは映像が確認できるだけで、設定はできないようです。Webインタフェースは、カメラのアドレス、ユーザ名、パスワードが正しく設定できたかどうかの確認用に使うのが良いと思いました。

設定アプリが必要

このwebページが現れるタイプのIPカメラは、今までも使ったことがあります。格安の製品に多いです。おそらくは、昔に開発された仕組みを使った部品が出回っていて、複数の会社がそれを使ってカメラを商品化しているのだと思います。

このタイプのカメラは、設定に専用のWindowsアプリが必要です。MacLinuxスマホからは設定できません。Windowsを起動し、説明書に書いてあるURLからVMSという名前のアプリをダウンロードしました。こんな画面のアプリです。

上のDevice Managerというボタン

から現れるページで、IPアドレスを使ってカメラを登録します。ここでIPアドレスとパスワードが変更できます。IPアドレスをLANで使っている範囲に書き換えた後、Windowsのアドレスも元に戻して、再びVMSで接続します。

この後は、Device Configのボタンを押して、タイムゾーンとかNTPの設定をします。設定項目としては、

の設定くらいをしておけば良いと思います。他にも細かい設定が可能なので、一通り見ておくのも良いと思います。ちなみに、このVMSアプリでも、カメラの映像は表示されませんでした。今のWindowsでは使われていない古い仕組みを使っているのかと思われます。

FFmpegを使う

ネットワーク関係の設定が終了したら、Macから(Windows, Linuxでも良いですが)FFmpegでIPカメラ映像取得のテストをします。以前の記事で、FFmpegを使ってUSBカメラの映像を利用しました。今回も同様です。FFmpegの説明は、こちらの記事を見てください。

diysmarthome.hatenablog.com

FFmpegのコマンドの一つであるffplayを使って、IPカメラの映像を確認します。

ffplay -i rtsp://192.168.xxx.xxx/ ...

のようにして、IPカメラのRTSPのURLを指定すると、映像が表示されるはずです。問題は、このURLが何かという点です。この辺りの規格化はされていないらしく、カメラによってバラバラです。それを調べ上げてまとめてくれているのが、上で紹介したサイトです。今回使用したXmeyeというブランドのURLは、こちらのページに書かれてます。

www.ispyconnect.com

このページでは、URL雛形リストをクリックすると、環境に合わせたURLを自動生成するダイアログパネルが現れます。ここのアドレス、パスワードなどの項目に使用中の値を入れて、「Generate URL」ボタンを押します。生成されたURLをターミナルにコピペすれば、すぐに動作確認できます。&などが含まれるURLをffplayの引数に使う場合は、その前に逆スラッシュを入れておく必要はあります。この生成結果をいろいろ試して、動作するURLを探します。

このページのURLを試したところ、

ffplay -i rtsp://192.168.x.x/user=admin_password=xxx_channel=1_stream=0.sdp

で720pのHD画像が、また、

ffplay -i ffplay -i rtsp://192.168.x.x/user=admin_password=xxx_channel=1_stream=1.sdp

でその半分のサイズの画像が表示されました。以下のようなウィンドウです。

Homebridgeの設定

見つかったURLを使って、HomeKit対応カメラとして設定します。前回の記事と同様に、HomebridgeにHomebridge Camera FFmpegプラグインを使用しました。今回は、Raspberry Pi4で動かしているサーバにインストールしました。前回の記事のUbuntuで行ったのと全く同じ手順ですので、詳しくはこちらをご覧ください。

Homebridgeのコンフィグでカメラの名前をSky Cameraとしました。"source"の設定には、上で動作確認できたハーフサイズの映像のURLを使いました。

{
    "name": "Camera FFmpeg",
    "cameras": [
        {
            "name": "Sky Camera",
            "videoConfig": {
                "source": "-i rtsp://192.168.x.x/user=admin_password=xxx_channel=1_stream=1.sdp"             
} } ], "platform": "Camera-ffmpeg" }

その結果、iPhoneMacのホーム.appにカメラ映像が表示されます。以下はiPhoneスクリーンショットです。

映像の部分をタップすると、拡大表示されます。

Homebridge Camera FFmpegプラグインのデフォルトは、音声を伝えない設定です。これを伝える設定にしてみましたが、音声は伝わりませんでした。このカメラにはマイクロフォンやスピーカが搭載されていないようです。監視カメラとしては一般的な仕様だと思います。

Amazonで買えるIPカメラ

Amazonで見つけたPoE IPカメラのうち、RTSP URLが特定されているブランドの1万円未満の製品を以下にまとめておきます。AliExpressほど安くは無いですが、お試しするのに適当ではないかと思います。

Amazonでは、有線接続よりも、WiFi接続のカメラの方が豊富でした。PoEハブが不要なことを考えると、有線よりも安く導入できます。ペットや子供の見守りが目的の製品のようで、音声を伝える機能もついています。以下は、RTSP URLが判明しているとされている型番のWiFi IP カメラです。型番末尾が1番違いくらいでしたら、おそらくは旧製品のバージョンアップなので使えると思います(この一覧からは外してあります)。

これらはFFmpegとHomebridgeの組み合わせでHomeKitから使用できると考えられます。

まとめ

送料込み2,000円ほどのIPカメラを入手して、HomeKitカメラとして使用しました。他にも安価なIPカメラをいくつか使ったことがありますが、今回使用した製品は、さらにコスパが高いです。Webインタフェースや設定ソフトがしょぼいのも許せます。

PoE IPカメラは、この他にも、AliExpressやAmazonでいろいろな製品が揃ってます。RTSPのURLがわかっているブランドや品番を選べば、大体はFFmpegとHomebridgeで使用可能だと思います。また、今回の製品では厄介だった初期設定ですが、製品によってはwebインタフェースから全ての設定ができる製品もあります。ただ、雲台部分の作りがあまり良くなかった印象があります。