1000 ルヌブルの䞭囜補カメラをクラりドに接続する方法をどのようにしお孊んだのか。 ロガヌやSMSは䞍芁ですそしお数癟䞇ドルを節玄できたす

みなさん、こんにちは

最近、クラりドビデオ監芖サヌビスの人気が高たっおいるこずはおそらく呚知の事実でしょう。 なぜこのようなこずが起こるかは明らかです。ビデオは「重い」コンテンツであり、そのストレヌゞにはむンフラストラクチャず倧量のディスク ストレヌゞが必芁です。 オンプレミスのビデオ監芖システムを䜿甚するには、数癟台の監芖カメラを䜿甚する組織ず、耇数のカメラを䜿甚する個人ナヌザヌの䞡方の運甚ずサポヌトのための資金が必芁です。

1000 ルヌブルの䞭囜補カメラをクラりドに接続する方法をどのようにしお孊んだのか。 ロガヌやSMSは䞍芁ですそしお数癟䞇ドルを節玄できたす

クラりドビデオ監芖システムは、顧客に既存のビデオストレヌゞず凊理むンフラストラクチャを提䟛するこずで、この問題を解決したす。 クラりド ビデオ監芖クラむアントは、カメラをむンタヌネットに接続し、クラりド アカりントにリンクするだけで枈みたす。

カメラをクラりドに接続する技術的な方法はいく぀かありたす。 間違いなく、最も䟿利で安䟡な方法は、サヌバヌやレコヌダヌなどの远加機噚を䜿甚せずに、カメラをクラりドに盎接接続しお動䜜させるこずです。

これを行うには、クラりドず連携する゜フトりェア モゞュヌルがカメラにむンストヌルされおいる必芁がありたす。 ただし、安䟡なカメラに぀いお蚀えば、ハヌドりェア リ゜ヌスが非垞に限られおおり、カメラ ベンダヌのネむティブ ファヌムりェアによっおほが 100% 占有されおおり、クラりド プラグむンに必芁なリ゜ヌスはありたせん。 ivideon の開発者がこの問題を提䟛したした статью、これは、安䟡なカメラにプラグむンをむンストヌルできない理由を説明しおいたす。 その結果、カメラの最䜎䟡栌は5000ルヌブル80ドルずなり、機材には数癟䞇ドルが費やされるこずになる。

私たちはこの問題を無事に解決したした。 方法に興味があるなら - カットぞようこそ

歎史を少し

2016 幎に、圓瀟は Rostelecom 向けのクラりド ビデオ監芖プラットフォヌムの開発を開始したした。

カメラ ゜フトりェアに関しおは、最初の段階で、このようなタスクの「暙準」パスに埓いたした。独自のプラグむンを開発したした。これは、ベンダヌのカメラの暙準ファヌムりェアにむンストヌルされ、クラりドで動䜜したす。 ただし、蚭蚈䞭に最も軜量で効率的な゜リュヌションを䜿甚したこずは泚目に倀したす (たずえば、protobuf、libev、mbedtls のプレヌンな C 実装、および boost のような䟿利だが重いラむブラリは完党に攟棄されたした)。

珟圚、IP カメラ垂堎には汎甚の統合゜リュヌションはありたせん。各ベンダヌは、プラグむンをむンストヌルする独自の方法、ファヌムりェアを操䜜するための独自の API セット、および独自の曎新メカニズムを持っおいたす。

これは、各カメラ ベンダヌが統合゜フトりェアの包括的なレむダヌを個別に開発する必芁があるこずを意味したす。 たた、開発を開始する時点では、チヌムの劎力をクラりドず連携するためのロゞックの開発に集䞭させるために、1 ぀のベンダヌずのみ連携するこずをお勧めしたす。

最初に遞ばれたベンダヌは、カメラ垂堎の䞖界的リヌダヌの XNUMX ぀である Hikvision で、十分に文曞化された API ず有胜な゚ンゞニアリング技術サポヌトを提䟛しおいたす。

圓瀟は、Hikvision カメラを䜿甚した最初のパむロット プロゞェクト、クラりド ビデオ監芖 Video Comfort を開始したした。

リリヌス盎埌、ナヌザヌは他のメヌカヌの安䟡なカメラをサヌビスに接続する可胜性に぀いお質問をし始めたした。

私は、ベンダヌごずに統合レむダヌを実装するずいうオプションをすぐに拒吊したした。拡匵性が䜎く、カメラ ハヌドりェアに重倧な技術芁件を課すためです。 これらの入力芁件を満たすカメラのコスト: ~60  70 ドル

そこで、私はさらに深く掘り䞋げお、どのベンダヌのカメラでも䜿甚できる独自のファヌムりェアを䜜成するこずにしたした。 このアプロヌチにより、カメラのハヌドりェア リ゜ヌスの芁件が倧幅に軜枛されたす。 クラりドを操䜜するためのレむダヌはビデオ アプリケヌションずより効果的に統合されおおり、ファヌムりェアには䞍芁な未䜿甚の芁玠がありたせん。

そしお重芁なのは、カメラを䜎レベルで操䜜する堎合、䜎電力 CPU に远加の負荷を䞎えるこずなくデヌタを暗号化するハヌドりェア AES を䜿甚できるこずです。

1000 ルヌブルの䞭囜補カメラをクラりドに接続する方法をどのようにしお孊んだのか。 ロガヌやSMSは䞍芁ですそしお数癟䞇ドルを節玄できたす

その瞬間、私たちには䜕もありたせんでした。 䜕もありたせん。

ほずんどすべおのベンダヌは、このような䜎いレベルで私たちず協力する準備ができおいたせんでした。 回路やコンポヌネントに関する情報はなく、チップセットの公匏 SDK やセンサヌのドキュメントもありたせん。
技術サポヌトもありたせん。

すべおの質問は、リバヌス ゚ンゞニアリング、぀たり詊行錯誀によっお答える必芁がありたした。 しかし、私たちはなんずかなりたした。

私たちがテストした最初のカメラモデルは、Xiaomi Yi Ants、Hikvision、Dahua、Spezvision、D-Link カメラ、およびいく぀かの超安䟡な無名䞭囜補カメラでした。

機噚

Hisilicon 3518E チップセットをベヌスにしたカメラ。 カメラのハヌドりェア特性は次のずおりです。

Xiaomi Yi Ants
NONAME

SoCの
ハむシリコン 3518E
ハむシリコン 3518E

RAM
64MB
64MB

FLASH
16MB
8MB

無線LAN
mt7601/bcm43143
-

センサヌ
ov9732 (720p)
ov9712 (720p)

むヌサネット
-
+

MicroSD
+
+

マむク
+
+

スピヌカヌ
+
+

IRLED
+
+

IRカット
+
+

私たちは圌らから始めたした。

珟圚、Hisilicon 3516/3518 チップセットず Ambarella S2L/S2LM をサポヌトしおいたす。 カメラのモデルは数十ありたす。

ファヌムりェア構成

朜氎艊

uboot はブヌト ロヌダヌであり、電源投入埌に最初に起動し、ハヌドりェアを初期化し、Linux カヌネルをロヌドしたす。

カメラの読み蟌みスクリプトは非垞に簡単です。

bootargs=mem=38M console=ttyAMA0,115200 rootfstype=ramfs mtdparts=hi_sfc:256K(boot),64K(tech),4096K(kernel),8192K(app),-(config) hw_type=101
bootcmd=sf probe 0; sf read 0x82000000 0x50000 0x400000; bootm 0x82000000; setenv bootargs $(bootargs) bkp=1; sf read 0x82000000 0x450000 0x400000; bootm 0x82000000

特城のXNUMX぀はXNUMX回呌び出されるこずです。 bootm、これに぀いおは、少し埌で、曎新サブシステムに到達するずきに詳しく説明したす。

ラむンに泚目 mem=38M。 はい、はい、これはタむプミスではありたせん。Linux カヌネルずすべおのすべおのアプリケヌションは、38 メガバむトの RAM にしかアクセスできたせん。

たた、uboot の隣には、ず呌ばれる特別なブロックがありたす。 reg_info、これには、DDR ず SoC のいく぀かのシステム レゞスタを初期化するための䜎レベル スクリプトが含たれおいたす。 コンテンツ reg_info カメラのモデルによっお異なりたす。これが正しくない堎合、カメラは uboot をロヌドするこずさえできず、ロヌドの非垞に初期の段階でフリヌズしたす。

最初、ベンダヌのサポヌトを受けずに䜜業しおいたずきは、このブロックを元のカメラのファヌムりェアからコピヌするだけでした。

Linux カヌネルず rootfs

カメラは、チップの SDK の䞀郚である Linux カヌネルを䜿甚したす。通垞、これらは 3.x ブランチの最新カヌネルではないため、倚くの堎合、远加機噚のドラむバヌが䜿甚されおいるカヌネルず互換性がないずいう事実に察凊する必芁がありたす。そしお、それらをカヌネルカメラにバックポヌトする必芁がありたす。

もう 8 ぀の問題は、カヌネルのサむズです。 FLASH サむズがわずか XNUMXMB の堎合、すべおのバむトが重芁になるため、サむズを最小限に抑えるために、未䜿甚のカヌネル機胜をすべお慎重に無効にするこずがタスクずなりたす。

Rootfs は基本的なファむル システムです。 それには以䞋が含たれたす busybox、Wi-Fi モゞュヌル ドラむバヌ、暙準システム ラむブラリのセット、など libld О libc、LED 制埡ロゞック、ネットワヌク接続管理、ファヌムりェアの曎新を担圓する゜フトりェアも含たれたす。

ルヌト ファむル システムは initramfs ずしおカヌネルに接続されおおり、ビルドの結果ずしお XNUMX ぀のファむルを取埗したす。 uImage、これにはカヌネルず rootfs の䞡方が含たれたす。

ビデオアプリケヌション

ファヌムりェアの最も耇雑でリ゜ヌスを倧量に消費する郚分はアプリケヌションです。アプリケヌションは、ビデオ/オヌディオ キャプチャ、ビデオ ゚ンコヌディングを提䟛し、画像パラメヌタを構成し、モヌション怜出噚やサりンド怜出噚などのビデオ分析を実装し、PTZ を制埡し、曜日ず時刻の切り替えを担圓したす。ナむトモヌド。

重芁な、鍵ずなる機胜ずさえ蚀えるのは、ビデオ アプリケヌションがクラりド プラグむンずどのように察話するかです。

埓来の゜リュヌション「ベンダヌ ファヌムりェア + クラりド プラグむン」では、安䟡なハヌドりェアでは動䜜せず、カメラ内のビデオは RTSP プロトコル経由で送信されたす。これは、゜ケット経由でのデヌタのコピヌず送信、䞍必芁なシステムコヌルなど、膚倧なオヌバヌヘッドになりたす。

ここでは共有メモリ メカニズムを䜿甚したす。ビデオは、カメラ ゜フトりェア コンポヌネント間の゜ケットを介しおコピヌたたは送信されたせん。これにより、カメラの控えめなハヌドりェア機胜が最適か぀慎重に䜿甚されたす。

1000 ルヌブルの䞭囜補カメラをクラりドに接続する方法をどのようにしお孊んだのか。 ロガヌやSMSは䞍芁ですそしお数癟䞇ドルを節玄できたす

サブシステムの曎新

特別な誇りは、オンラむン ファヌムりェア アップデヌト甚のフォヌルト トレラント サブシステムです。

問題を説明したしょう。 ファヌムりェアの曎新は技術的にはアトミックな操䜜ではなく、曎新の途䞭で停電が発生した堎合、フラッシュ メモリには「䞋曞きされた」新しいファヌムりェアの䞀郚が含たれるこずになりたす。 特別な措眮を講じないず、カメラはサヌビスセンタヌに持ち蟌たなければならない「レンガ」になっおしたいたす。

私たちもこの問題に察凊したした。 アップデヌト䞭にカメラの電源がオフになった堎合でも、ナヌザヌの介入なしに自動的にファヌムりェアがクラりドからダりンロヌドされ、動䜜が埩元されたす。

このテクニックをさらに詳しく芋おみたしょう。

最も脆匱な点は、Linux カヌネルずルヌト ファむル システムでパヌティションを䞊曞きするこずです。 これらのコンポヌネントのいずれかが砎損するず、カメラは uboot ブヌトロヌダヌを超えおたったく起動しなくなり、クラりドからファヌムりェアをダりンロヌドできなくなりたす。

これは、曎新プロセス䞭い぀でも、カメラに動䜜するカヌネルず rootfs があるこずを確認する必芁があるこずを意味したす。 最も簡単な解決策は、rootfs を含むカヌネルの XNUMX ぀のコピヌをフラッシュ メモリに垞に保存し、メむン カヌネルが砎損した堎合はバックアップ コピヌからロヌドするこずだず思われたす。

良い解決策ですが、rootfs を䜿甚するカヌネルは玄 3.5MB を占有し、氞続バックアップには 3.5MB を割り圓おる必芁がありたす。 最も安䟡なカメラには、バックアップ カヌネル甚の空きスペヌスがあたりありたせん。

したがっお、ファヌムりェアの曎新䞭にカヌネルをバックアップするには、アプリケヌション パヌティションを䜿甚したす。
カヌネルで目的のパヌティションを遞択するには、XNUMX ぀のコマンドを䜿甚したす。 bootm uboot では、最初にメむン カヌネルをロヌドしようずしたすが、それが砎損しおいる堎合は、バックアップ カヌネルをロヌドしたす。

1000 ルヌブルの䞭囜補カメラをクラりドに接続する方法をどのようにしお孊んだのか。 ロガヌやSMSは䞍芁ですそしお数癟䞇ドルを節玄できたす

これにより、い぀でもカメラに rootfs を備えた正しいカヌネルが確保され、ファヌムりェアを起動しお埩元できるようになりたす。

ファヌムりェアを構築および展開するための CI/CD システム

ファヌムりェアの構築には、サポヌトされおいるすべおのカメラ モデルのファヌムりェアを自動的に構築する gitlab CI を䜿甚したす。ファヌムりェアの構築埌、カメラ ゜フトりェア アップデヌト サヌビスに自動的に展開されたす。

1000 ルヌブルの䞭囜補カメラをクラりドに接続する方法をどのようにしお孊んだのか。 ロガヌやSMSは䞍芁ですそしお数癟䞇ドルを節玄できたす

このサヌビスから、ファヌムりェアのアップデヌトが QA テスト カメラに配信され、すべおのテスト段階が完了するずナヌザヌのカメラに配信されたす。

情報セキュリティ

珟圚、情報セキュリティがカメラを含むあらゆる IoT デバむスにずっお最も重芁な偎面であるこずは呚知の事実です。 Mirai のようなボットネットがむンタヌネット䞊を埘埊し、ベンダヌの暙準ファヌムりェアを搭茉した䜕癟䞇台ものカメラに感染しおいたす。 カメラ ベンダヌに敬意を衚し、暙準ファヌムりェアにはクラりドでの䜜業に必芁のない機胜が倚数含たれおいるものの、ボットネットが悪甚する倚くの脆匱性が含たれおいるこずを指摘せざるを埗たせん。

したがっお、ファヌムりェアの未䜿甚の機胜はすべお無効になり、すべおの tcp/udp ポヌトが閉じられ、ファヌムりェアを曎新するずきに゜フトりェアのデゞタル眲名がチェックされたす。

これに加えお、ファヌムりェアは情報セキュリティ研究所で定期的にテストされたす。

たずめ

珟圚、圓瀟のファヌムりェアはビデオ監芖プロゞェクトで積極的に䜿甚されおいたす。 おそらくそれらの最倧のものは、ロシア連邊倧統領遞挙圓日の投祚の攟送です。
このプロゞェクトには、圓瀟のファヌムりェアを搭茉した 70 䞇台以䞊のカメラが関䞎し、我が囜の投祚所に蚭眮されたした。

倚くの耇雑な、そしお䞀郚の堎所では圓時でさえほずんど䞍可胜だった問題を解決できたので、私たちぱンゞニアずしおもちろん倧きな満足を埗たしたが、これに加えお、カメラの賌入にかかる䜕癟䞇ドルも節玄できたした。 そしおこの堎合、節玄は単なる蚀葉や理論的な蚈算ではなく、すでに完了した蚭備賌入の入札の結果です。 したがっお、クラりドビデオ監芖に぀いお話す堎合、XNUMX ぀のアプロヌチがありたす。XNUMX ぀は䜎レベルの専門知識ず開発に戊略的に䟝存し、結果ずしお機噚を倧幅に節玄する方法、たたは高䟡な機噚を䜿甚する方法ですが、特に消費者の特性に着目するず、実際には䜿甚する必芁はありたせん。䌌たような安䟡なものずは異なりたす。

できるだけ早く統合アプロヌチの遞択を決定するこずが戊略的に重芁なのはなぜですか? プラグむンを開発するずき、開発者は特定のテクノロゞヌ (ラむブラリ、プロトコル、暙準) に䟝存したす。 そしお、高䟡な機噚に察しおのみ䞀連のテクノロゞヌが遞択されおいる堎合、将来的には安䟡なカメラに切り替えようずするず、少なくずも非垞に長い時間がかかるか、倱敗しお高䟡な機噚に戻る可胜性が高くなりたす。

出所 habr.com

コメントを远加したす