Orange Pi Zero 3、7インチIPSタッチディスプレイやFreenove ESP32 S3カメラ、VoIP/ボイスチャットアプリMumble、Python/PyQt(PyQt5/PyQt6)などを使い、LANケーブルによる有線&Wi-Fiによる無線とハイブリッド通信なスマートテレビドアホンを親機・子機ともども自作してみた話。
電子工作・IoT/スマートガジェット製作を始めるにあたり目標にしてから約8年、実際に着手し始めてから約2年、未だ検索しても見当たらないので市販品ではない趣味のテレビドアホンの自作は世界初...かも!?
テレビドアホン室内機は、映像表示はもちろん、操作含めタッチパネル、PTT/Push To Talkを実装しつつ、通話はローカルサーバなVoIPアプリ、各種制御用にSBC/Single Board Computer、テレビドアホン子機は、マイコンによるIPカメラの他、マイク&スピーカー制御用にSBC。
よって専用の室内機に加え、LAN内のパソコンやスマホも室内機として、また、音声応答だけなら今回併用するに至った既設インターホン室内機も使用することもできます。
VPNを使えば、スマホ・タブレットで外出先からでも。
既存の複数のアプリを組み合わせるだけでも、自作スマートロック連携含め、実現できなくもありませんが、手間やラグなど実用を考えると一連の作業をワンストップでできる専用アプリの方が現実的。
ただ、アプリ開発経験はなく、必要性が高いわけでもないこともあり、現時点で専用アプリ開発は未着手ですが。
他方、状況は限定的ではありますが、VPN経由のPCなら、すぐにでもできそうですね。
親機・子機とも電源と通信をLANケーブル(CAT5e以上)1本で賄うことができるPoE(Power on Ethernet)を採用、PoE+(IEEE802.3af/IEEE802.3at)対応なPoEスイッチングハブ、PoEエクステンダ/中継・拡張機から、SBC、マイコンともにPoE非対応につき、PoE受信すべく、PoEスプリッタを採用したので給電・通信用の配線はテレビドアホン室内機・子機ともにシンプルでスッキリ。
160度広角ナイトビジョン対応カメラの通信は無線・ワイヤレス、カメラボードへの給電と併せ、SBC/Single Board Computerへの給電、そして通信はLANケーブルだけと「有線」でもあるドアホンでありながらもAC100V側には触れないので設置にあたって電気工事士の資格は不要。
よって後付可能、電池も使わないので電池交換も不要。
電源については親機はSBCのみのため、これ用にType-CタイプのPoEスプリッタ(実際は想定していたラズパイを2台もショートさせてしまった結果、持て余していたmicroUSBタイプ+Type-Cアダプタ)。
子機については、SBC、カメラ用マイコンに5V、MOSFETを介し、ライトアップ用でも使用につき、PoEスプリッタ 12V 2A DCプラグタイプ(+DCコネクタケーブル+降圧モジュール)としました。
この方法なら、親機にはSBC用ACアダプタが要らず、配線もスッキリし、電源がとりにくいドアの外に設置のドアホン子機に至っては、なおさら好都合。
今回の自作テレビドアホンにおいて、通話には、クライアント&ローカルサーバとしたVoIP|ボイスチャット(ボイチャ)アプリMumble(Androidでは非公式ながらF-Droid版Mumla)を採用。
自作したテレビドアホンについては、ハウリングを回避すべく、(MumbleにもありますがPythonによる)交互通信なPTT/Push To Talk式で室内機操作パネル上のボタンを押している間、室内機→子機、放すと子機→室内機の発話可(相互にマイク・スピーカーも排他設定)。
よってドアホン室内機となり得る室内機専用機やPC、スマホなど複数のデバイスで映像を同時に確認することは可能な一方、一人で切り替えるのは別として複数人でドアホン子機と同時に通話するというわけにはいきません。
他方、子機と応対中ではなく、ハウリングさえおきない環境であれば、今回PTTを実装したPythonとは別に各Mumble設定で通信開始トリガーを音声にしておくことで複数の室内機デバイス同士は、リアルタイムでボイスチャットもできたりします。
もし、これが可能であれば、家やオフィスなど利用空間が広い場合やテレビ・ラジオなどの他、騒々しさで遮られる状況にある場合、音声を聴き取りにくい・耳が遠い人がいる場合など重宝するシーンもあるかと。
ただ、インターネット越しの通話を想定したVoIPアプリなので同一屋内で、こうした環境というのは、だいぶ限られるでしょう。
とはいえ、VPN越しなら、また、同一屋内でも3者以上が後述の設定をする場合、話者以外の全てが通話対象にはなるものの、Mumbleの設定における通話トリガーをPTT/Push To Talk(≒ボタンを押している間だけ発信できるよう)にしておくことで交互に通信するという手もあります。
子機の呼び出しボタン押下連動、コールボタンを押下するまでもなく、人がいることを検知時に自動、もしくは、パネル操作(手動)でストリーム映像/画像表示・保存や映像配信通知で動画/画像を保存のように状況に応じて親機のストレージやLAN内NASに画像・映像録画もできます。
動体検知時は、一定時間検知しなければ、録画終了、録画データは、一定期間経過で自動削除。
この目的は、不在時にコールボタンを押さずにドアをノックしたり、ドアを叩いたりする方が知人の場合、状況に応じて後で声掛けできるよう、はたまた、今の時代でも直撃訪問してくる営業・勧誘の類い含め、不審者対策。
この時、画像や映像を添付しつつSMS、メールやLINEなどへの送信・通知も可能は可能なのでしょうが、今のところ、自身は、あまり必要性を感じていないため、実装する気はなく、とは言え、ドアホン用スマホアプリにおいて、トリガーとしては必要か...となれば、実装するかもしれません。
尚、映像を伴う場合、映像ストリーム1つに対し、表示デバイス1台となるユニキャストではなく、複数のデバイス(マルチデバイス)に同時に配信できるマルチキャスト配信の方が便利なのですが、マルチキャストの場合、配信の過程で遅延をゼロにすることはできません。
その点、完成直前まで悩んだ結果、ギリギリ実用に足りそうということでマルチキャストを採用、複数のデバイスを親機にし、同時にすら応答できるのは、マルチキャスト配信だからこそ成せるワザ。
ただし、ユニキャスト配信でも一人住まい、もしくは、応答は特定の人のみといった状況であれば、1デバイスでならパソコン、スマホ、タブレット何れであっても、また、この時、やはり、1デバイスであれば、今回、既に導入済みのVPNで外(外出先)から映像・音声ともどもスマホでドアホン応対も可ですが。
よって、ある程度の期間、運用してみてマルチキャストによる配信が、どうにもドアホンとしての実用に耐えないという状況になれば、ユニキャストやあれば他の方法をとることになるかもしれません。
子機には、自動点灯用ライト(夜間用にSMD白色LED48灯/映像確認用に砲弾型赤外線LED48灯)を装備。
ドアホン室内機となるデバイスにおいては、自作・運用中のスマートロック機能の1つであるWebロックと連携、操作パネル上の玄関外のカメラ映像とポップアップされるWebロック用ブラウザ画面上のスマートロック映像を見ながらロック・アンロック操作、ロック機構部、ドアホン子機何れも周囲が暗い場合は、ライトアップするようにしてあります。
尚、子機もまるごと自作するつもりでいたものの、今回は、つい数ヶ月前に流用するのもありかと縁あってWi-Fiドアベルと差し替える恰好で取り付けた音声のみのインターホン子機のボタンをタッチセンサーを使って物理的にハック、自作ドアホンと連動させています。
専用のテレビドアホン室内機は、大ぶりになってしまったこともあり、ダイニングテーブル上にタッチパネル+架台、テーブル下に他機器収納の筐体を分けて配置することにしましたが、室内機につながるのは、PoEのおかげで電源と通信共用のLANケーブル1本で済むので移動する場合も自由度は高くなっています。
テレビドアホン子機については、インターホン子機も併用するため、SBC、カメラ、ライト、マイク、スピーカー等を収め別途設置。
さて、当初、サーバ目的だったとはいえ、自身にとって電子工作やIoTへのきっかけと言っても過言ではない中、なぜ、お気に入りのラズパイじゃないのか...?
それは、端的に言えば、コスパ。
当初、ラズパイ製防犯カメラと兼ねることを想定もドアホンカメラ1つで十分かなと思っていた矢先、試作中にラズパイ3B+を2台立て続けにショートさせてしまい、手持ちのラズパイがサーバとしている2B+と今やメインPCとして使用の400しかなくなってしまったのが転機。
また、新たに買うにしても一時的な価格高騰は沈静化したものの、急激な円安から心理的にラズパイ4BやRAM4GB/8GBバージョンしかなさ気なラズパイ5は決してコスパが良いとは言い難い...。
ラズパイには他のラインナップもあるもラズパイ5はパソコンや4K/8K...映像、AI向け、他は、ルーターその他や電子工作向けという方向性に見え、他のラインナップについては特にRAM512MBを超えるものはないなど、その中間のラインナップがない点が微妙...。
他方、一部、大陸製+Linuxにさえも手が入っているものもあり、どの程度メンテナンスがなされるのかという点で懸念は、かなり大きいながらも同じ大陸製のESP32も常用・多用しているし、一般庶民にとって心揺らがずにはいられないほどコスパは圧倒的。
無線チップに技適がないため、必要なら別途対応ドングルを用意しなければならないとか、見かけ上の仕様が同じでも、Orange Pi Zero 3のRAMが2GBでも、RAM1GBのラズパイの方が性能が高かったかも?と感じる部分もなくもないですが、正常に流通していた頃のラズパイ3B+と同程度でRAM4GBが手に入るのならOrange Pi Zero 3を使うのも、ましてこの用途だとRAMも1GB/1.5GB/2GBというより安価な選択肢もありかと。
今のところ、Debianのリポジトリに変更したあとも問題はなさ気、ドアホン室内機・子機ともにOrange Pi Zero 3でも支障はなく、正常に機能しています。
自作テレビドアホン用のスマホアプリ作成は、やるとしたら自身初、開発環境はReact Native + Expoなのかなと薄っすら思ってはいますが、必要性の観点から、迷い中。
DebianベースOrange Pi Bookwormをtrixieへアップグレード。
失念していた自作テレビドアホン室内機ページ作成・アップに伴う記事再構成。