Бид 1000 рублийн хятад камерыг үүлэнд хэрхэн холбож сурсан. Мод бэлтгэгч эсвэл SMS байхгүй (мөн сая доллар хэмнэсэн)

хүн бүрт Сайн байна уу!

Сүүлийн үед үүлэн видео тандалтын үйлчилгээ түгээмэл болж байгаа нь нууц биш байх. Яагаад ийм зүйл болж байгаа нь ойлгомжтой, видео нь "хүнд" контент бөгөөд хадгалахад дэд бүтэц, их хэмжээний диск хадгалах шаардлагатай байдаг. Байрны видео хяналтын системийг ашиглах нь олон зуун хяналтын камер ашигладаг байгууллага болон хэд хэдэн камертай хувь хүний ​​аль алинд нь ажиллах, дэмжлэг үзүүлэхэд хөрөнгө шаарддаг.

Бид 1000 рублийн хятад камерыг үүлэнд хэрхэн холбож сурсан. Мод бэлтгэгч эсвэл SMS байхгүй (мөн сая доллар хэмнэсэн)

Үүлэн видео тандалтын систем нь хэрэглэгчдэд одоо байгаа видео хадгалах, боловсруулах дэд бүтцээр хангах замаар энэ асуудлыг шийддэг. Клоуд видео тандалтын үйлчлүүлэгч камерыг интернетэд холбож, үүлэн дансандаа холбоход л хангалттай.

Камерыг үүлэнд холбох хэд хэдэн технологийн арга байдаг. Хамгийн тохиромжтой, хямд арга бол камер нь сервер, бичигч гэх мэт нэмэлт тоног төхөөрөмжийн оролцоогүйгээр шууд үүлэнд холбогдож, ажилладаг нь эргэлзээгүй юм.

Үүнийг хийхийн тулд камер дээр үүлтэй ажилладаг програм хангамжийн модулийг суулгах шаардлагатай. Гэсэн хэдий ч, хэрэв бид хямд камеруудын тухай ярих юм бол тэдгээр нь маш хязгаарлагдмал техник хангамжийн нөөцтэй бөгөөд эдгээр нь камер үйлдвэрлэгчийн програм хангамжийн бараг 100% -ийг эзэлдэг бөгөөд үүлэн залгаасуудад шаардлагатай нөөц байхгүй байна. Ivideon-ийн хөгжүүлэгчид энэ асуудлыг зориулав нийтлэл, энэ нь яагаад хямд камер дээр залгаасыг суулгаж чадахгүй байгааг тайлбарладаг. Үүний үр дүнд камерын доод үнэ 5000 рубль (80 доллар) бөгөөд тоног төхөөрөмжид сая сая мөнгө зарцуулсан байна.

Бид энэ асуудлыг амжилттай шийдэж чадсан. Хэрэв та хэрхэн сонирхож байгаа бол - тайралтанд тавтай морил

Түүх бага

2016 онд бид Ростелекомын үүлэн видео тандалтын платформыг боловсруулж эхэлсэн.

Камерын програм хангамжийн хувьд эхний шатанд бид ийм даалгаврын "стандарт" замыг дагаж мөрдсөн: бид үйлдвэрлэгчийн камерын стандарт програм хангамжид суулгасан, манай клоудтай ажилладаг өөрийн залгаасыг боловсруулсан. Гэсэн хэдий ч дизайны явцад бид хамгийн хөнгөн бөгөөд үр ашигтай шийдлүүдийг ашигласан гэдгийг тэмдэглэх нь зүйтэй (жишээ нь, protobuf, libev, mbedtls-ийн энгийн C хувилбарууд болон boost гэх мэт тохиромжтой боловч хүнд сангуудыг бүрэн орхисон)

Одоогийн байдлаар IP камерын зах зээл дээр бүх нийтийн интеграцийн шийдэл байхгүй байна: борлуулагч бүр залгаасыг суулгах өөрийн арга, програм хангамжийг ажиллуулах өөрийн API-ууд, өвөрмөц шинэчлэлтийн механизмтай байдаг.

Энэ нь камер үйлдвэрлэгч бүрийн хувьд интеграцийн програм хангамжийн иж бүрэн давхаргыг тус тусад нь боловсруулах шаардлагатай гэсэн үг юм. Хөгжиж эхлэх үед үүлтэй ажиллах логикийг хөгжүүлэхэд багийн хүчин чармайлтыг төвлөрүүлэхийн тулд зөвхөн 1 үйлдвэрлэгчтэй ажиллахыг зөвлөж байна.

Сонгосон анхны борлуулагч нь камерын зах зээлд дэлхийн тэргүүлэгчдийн нэг болох 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
Таны өгсөн

Со
Hisilicon 3518E
Hisilicon 3518E

RAM
64MB
64MB

FLASH
16MB
8MB

WiFi
mt7601/bcm43143
-

мэдрэгч
ov9732 (720p)
ov9712 (720p)

Ethernet
-
+

MicroSD
+
+

Микрофон
+
+

дарга
+
+

IRL-тэй
+
+

IRCut
+
+

Бид тэдэнтэй хамт эхэлсэн.

Одоогоор бид Hisilicon 3516/3518 чипсет, мөн Ambarella S2L/S2LM-ийг дэмждэг. Олон арван камерын загварууд байдаг.

Програм хангамжийн найрлага

шумбагч онгоц

uboot нь ачаалагч бөгөөд асаалттай болсны дараа эхлээд ачаалж, техник хангамжийг эхлүүлж, линукс цөмийг ачаална.

Камерыг ачаалах скрипт нь маш энгийн:

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

Нэг онцлог нь хоёр удаа дуудагддаг bootm, энэ талаар хэсэг хугацааны дараа шинэчлэлтийн дэд систем рүү орох үед.

Шугам дээр анхаарлаа хандуулаарай mem=38M. Тийм ээ, тийм ээ, энэ нь үсгийн алдаа биш - Линукс цөм ба бүх, бүх програмууд зөвхөн 38 мегабайт RAM-д хандах боломжтой.

Мөн uboot-ийн хажууд тусгай блок гэж нэрлэгддэг reg_info, энэ нь DDR-ийг эхлүүлэх доод түвшний скрипт болон SoC-ийн хэд хэдэн системийн регистрүүдийг агуулдаг. Агуулга reg_info Энэ нь камерын загвараас шалтгаална, хэрэв энэ нь буруу бол камер нь uboot-ыг ачаалах ч боломжгүй, харин ачааллын эхний үе шатанд хөлддөг.

Эхлээд бид худалдагчийн дэмжлэггүйгээр ажиллаж байхдаа энэ блокийг камерын анхны програм хангамжаас хуулсан.

Линуксийн цөм ба rootfs

Камерууд нь чипийн SDK-ийн нэг хэсэг болох Линукс цөмийг ашигладаг; ихэвчлэн эдгээр нь 3.x салбарын хамгийн сүүлийн үеийн цөмүүд биш тул нэмэлт тоног төхөөрөмжийн драйверууд ашигласан цөмтэй таарахгүй байдагтай тулгардаг. , мөн бид тэдгээрийг цөмийн камер руу буцаах ёстой.

Өөр нэг асуудал бол цөмийн хэмжээ юм. FLASH хэмжээ нь ердөө 8МБ бол байт бүрийг тоолох бөгөөд бидний даалгавар бол хэмжээг хамгийн бага хэмжээнд хүртэл бууруулахын тулд ашиглагдаагүй бүх цөмийн функцийг болгоомжтой идэвхгүй болгох явдал юм.

Rootfs бол үндсэн файлын систем юм. Үүнд багтана busybox, wifi модулийн драйверууд, стандарт системийн номын сангуудын багц гэх мэт libld и libc, түүнчлэн LED хяналтын логик, сүлжээний холболтын удирдлага, програм хангамжийн шинэчлэлтийг хариуцдаг манай програм хангамж.

Үндэс файлын систем нь цөмд initramf хэлбэрээр холбогдсон бөгөөд угсралтын үр дүнд бид нэг файлыг авдаг. uImage, энэ нь цөм болон rootfs хоёуланг нь агуулдаг.

Видео програм

Програм хангамжийн хамгийн төвөгтэй, нөөц ихтэй хэсэг нь видео-аудио бичлэг хийх, видео кодчилол хийх, зургийн параметрүүдийг тохируулах, видео аналитик, жишээлбэл, хөдөлгөөн эсвэл дуу чимээ мэдрэгчийг хэрэгжүүлэх, PTZ-ийг хянах, өдөр болон цагийг өөрчлөх үүрэгтэй програм юм. шөнийн горимууд.

Хамгийн чухал, гол онцлог нь видео програм нь үүлэн залгаастай хэрхэн харьцаж байгаа явдал юм.

Хямдхан техник хангамж дээр ажиллах боломжгүй "борлуулагчийн програм хангамж + үүл залгаас" уламжлалт шийдлүүдийн хувьд камер доторх видеог RTSP протоколоор дамжуулдаг бөгөөд энэ нь асар их зардал юм: залгуураар өгөгдлийг хуулж, дамжуулах, шаардлагагүй системийн дуудлага.

Энд бид хуваалцсан санах ойн механизмыг ашигладаг - видеог камерын програм хангамжийн бүрэлдэхүүн хэсгүүдийн хооронд залгуураар хуулж эсвэл илгээдэггүй, ингэснээр камерын техник хангамжийн боломжуудыг оновчтой, болгоомжтой ашигладаг.

Бид 1000 рублийн хятад камерыг үүлэнд хэрхэн холбож сурсан. Мод бэлтгэгч эсвэл SMS байхгүй (мөн сая доллар хэмнэсэн)

Дэд системийг шинэчлэх

Онцгой бахархалтай зүйл бол програм хангамжийн онлайн шинэчлэлтийн алдааг тэсвэрлэх чадвартай дэд систем юм.

Асуудлыг тайлбарлая. Програм хангамжийг шинэчлэх нь техникийн хувьд атомын үйлдэл биш бөгөөд хэрэв шинэчлэлтийн дундуур цахилгаан тасарвал флэш санах ой нь "дутуу бичигдсэн" шинэ програм хангамжийн хэсгийг агуулна. Хэрэв та тусгай арга хэмжээ авахгүй бол камер нь "тоосго" болж, үйлчилгээний төвд аваачих шаардлагатай болно.

Бид ч гэсэн энэ асуудлыг шийдсэн. Шинэчлэлтийн үед камер унтарсан ч хэрэглэгчийн оролцоогүйгээр автоматаар программыг үүлэн дээрээс татаж аваад ажиллагааг сэргээнэ.

Техникийг илүү нарийвчлан авч үзье:

Хамгийн эмзэг цэг бол Linux цөм болон root файлын системээр хуваалтыг дарж бичих явдал юм. Хэрэв эдгээр бүрэлдэхүүн хэсгүүдийн аль нэг нь гэмтсэн бол камер нь үүлэн программыг татаж авах боломжгүй uboot ачаалагчаас цааш ачаалахгүй.

Энэ нь бид камерыг шинэчлэх явцад ямар ч үед цөм болон rootfs ажиллаж байгаа эсэхийг баталгаажуулах шаардлагатай гэсэн үг юм. Хамгийн энгийн шийдэл бол rootfs бүхий цөмийн хоёр хувийг флаш санах ойд байнга хадгалах бөгөөд хэрэв үндсэн цөм гэмтсэн бол нөөц хуулбараас ачаалах явдал юм.

Сайн шийдэл - гэхдээ rootfs-тэй цөм нь ойролцоогоор 3.5MB эзэлдэг бөгөөд байнгын нөөцлөхийн тулд та 3.5MB хуваарилах хэрэгтэй. Хамгийн хямд камеруудад нөөц цөмд тийм их зай байдаггүй.

Тиймээс, програм хангамжийг шинэчлэх үед цөмийг нөөцлөхийн тулд бид програмын хуваалтыг ашигладаг.
Цөмтэй хүссэн хуваалтыг сонгохын тулд хоёр командыг ашиглана bootm uboot-д - эхэндээ бид үндсэн цөмийг ачаалахыг оролддог бөгөөд хэрэв энэ нь гэмтсэн бол нөөцлөлт.

Бид 1000 рублийн хятад камерыг үүлэнд хэрхэн холбож сурсан. Мод бэлтгэгч эсвэл SMS байхгүй (мөн сая доллар хэмнэсэн)

Энэ нь ямар ч үед камер нь rootfs-тэй зөв цөмтэй байх бөгөөд програм хангамжийг ачаалж, сэргээх боломжтой болно.

Програм хангамжийг бүтээх, ашиглахад зориулсан CI/CD систем

Програм хангамжийг бүтээхийн тулд бид gitlab CI-г ашигладаг бөгөөд энэ нь дэмжигдсэн бүх камерын загварт зориулж програм хангамжийг автоматаар бүтээдэг бөгөөд програм хангамжийг бүтээсний дараа камерын програм хангамжийг шинэчлэх үйлчилгээнд автоматаар суулгадаг.

Бид 1000 рублийн хятад камерыг үүлэнд хэрхэн холбож сурсан. Мод бэлтгэгч эсвэл SMS байхгүй (мөн сая доллар хэмнэсэн)

Үйлчилгээнээс эхлээд програм хангамжийн шинэчлэлтүүдийг манай QA туршилтын камерууд болон туршилтын бүх үе шат дууссаны дараа хэрэглэгчдийн камерт хүргэдэг.

Мэдээллийн аюулгүй байдал

Орчин үед мэдээллийн аюулгүй байдал нь IoT төхөөрөмж, тэр дундаа камерын хамгийн чухал зүйл болж байгаа нь нууц биш. Мирай шиг ботнетууд интернетээр тэнүүчилж, олон сая камерыг борлуулагчдын стандарт программ хангамжаар халдварлуулж байна. Камер үйлдвэрлэгчдийг хүндэтгэн үзэхийн тулд стандарт програм хангамж нь үүлтэй ажиллахад шаардлагагүй олон функцийг агуулдаг боловч ботнетийн давуу талыг ашигладаг олон сул талыг агуулдаг гэдгийг тэмдэглэхээс өөр аргагүй юм.

Тиймээс манай програм хангамжийн бүх ашиглагдаагүй функцууд идэвхгүй болсон, бүх tcp/udp портууд хаагдсан бөгөөд програм хангамжийг шинэчлэх үед програм хангамжийн тоон гарын үсгийг шалгадаг.

Үүнээс гадна программ хангамжийг мэдээллийн аюулгүй байдлын лабораторид тогтмол туршиж үздэг.

дүгнэлт

Одоо манай программыг видео тандалтын төслүүдэд идэвхтэй ашиглаж байна. Магадгүй тэдний хамгийн том нь ОХУ-ын Ерөнхийлөгчийн сонгуулийн өдөр санал хураалт явуулах нэвтрүүлэг байж магадгүй юм.
Төсөлд манай улсын сонгуулийн хэсгийн хороодод суурилуулсан манай программ хангамж бүхий 70 мянга гаруй камер хамрагдсан.

Хэд хэдэн нарийн төвөгтэй, зарим газар, тэр үед бараг боломжгүй асуудлыг шийдэж, бид инженерүүдийн хувьд мэдээжийн хэрэг маш их сэтгэл ханамжийг хүлээн авсан боловч үүнээс гадна камер худалдаж авахад сая сая доллар хэмнэсэн. Мөн энэ тохиолдолд хэмнэлт нь зөвхөн үг хэллэг, онолын тооцоо биш, харин тоног төхөөрөмж худалдан авах тендерийн үр дүн юм. Үүний дагуу, хэрэв бид үүлэн видео тандалтын талаар ярих юм бол: стратегийн хувьд доод түвшний туршлага, хөгжилд тулгуурлан тоног төхөөрөмжид асар их хэмнэлт гаргах эсвэл үнэтэй тоног төхөөрөмж ашиглах гэсэн хоёр арга бий. ижил төстэй хямд үнээр ялгаатай.

Интеграцийн аргыг аль болох эрт шийдэх нь яагаад стратегийн ач холбогдолтой вэ? Plugin боловсруулахдаа хөгжүүлэгчид тодорхой технологид (номын сан, протокол, стандарт) тулгуурладаг. Хэрэв технологийн багцыг зөвхөн үнэтэй тоног төхөөрөмжид зориулж сонгосон бол ирээдүйд хямд камер руу шилжих оролдлого нь хамгийн багадаа маш их цаг хугацаа шаардагдах эсвэл бүр бүтэлгүйтэж, үнэтэй тоног төхөөрөмж рүү буцах болно.

Эх сурвалж: www.habr.com

сэтгэгдэл нэмэх