Çin kameralarını 1000 rubla buludla birləşdirməyi necə öyrəndik. Qeydiyyatçılar və SMS olmadan (və milyonlarla dollar qənaət etdi)

Hello!

Yəqin ki, sirr deyil ki, bulud video nəzarət xidmətləri son vaxtlar populyarlıq qazanır. Bunun niyə baş verdiyi aydındır, video "ağır" məzmundur, saxlanması infrastruktur və böyük həcmdə disk yaddaşı tələb edir. Yerli videomüşahidə sistemindən istifadə həm yüzlərlə müşahidə kamerasından istifadə edən təşkilat, həm də bir neçə kamerası olan fərdi istifadəçi üçün işləmək və dəstəkləmək üçün vəsait tələb edir.

Çin kameralarını 1000 rubla buludla birləşdirməyi necə öyrəndik. Qeydiyyatçılar və SMS olmadan (və milyonlarla dollar qənaət etdi)

Bulud video nəzarət sistemləri bu problemi müştərilərə mövcud video saxlama və emal infrastrukturu ilə təmin etməklə həll edir. Bulud video nəzarəti müştərisi sadəcə olaraq kameranı İnternetə qoşmalı və onu bulud hesabına əlaqələndirməlidir.

Kameraları buludla birləşdirməyin bir neçə texnoloji yolu var. Şübhəsiz ki, ən əlverişli və ən ucuz üsul kameranın server və ya yazıcı kimi əlavə avadanlıqların iştirakı olmadan birbaşa buludla əlaqə saxlaması və işləməsidir.

Bunun üçün kamerada buludla işləyən proqram modulunun quraşdırılması zəruridir. Ancaq ucuz kameralar haqqında danışırıqsa, onda onların çox məhdud aparat resursları var, demək olar ki, 100% kamera satıcısının yerli proqram təminatı tərəfindən işğal edilir və bulud plagini üçün lazım olan heç bir resurs yoxdur. ivideon tərtibatçıları bu problemə həsr etdilər Məqalə, bu, plagini niyə ucuz kameralara quraşdıra bilmədiklərini izah edir. Nəticədə kameranın minimum qiyməti 5000 rubl (80 dollar) və avadanlıqlara milyonlarla pul xərclənir.

Biz bu problemi uğurla həll etdik. Necə maraqlanırsınızsa - kəsimə xoş gəlmisiniz

Bir az tarixi

2016-cı ildə biz Rostelecom üçün bulud video nəzarət platformasını hazırlamağa başladıq.

Kamera proqramı baxımından, ilk mərhələdə bu cür tapşırıqlar üçün "standart" yolu getdik: satıcının kamerasının standart proqram təminatında quraşdırılmış və buludumuzla işləyən öz plaginimizi hazırladıq. Bununla belə, qeyd etmək lazımdır ki, dizayn zamanı biz ən yüngül və səmərəli həllərdən istifadə etdik (məsələn, protobuf, libev, mbedtls-in sadə C tətbiqi və boost kimi tamamilə tərk edilmiş rahat, lakin ağır kitabxanalar)

Hal-hazırda IP kamera bazarında universal inteqrasiya həlləri yoxdur: hər bir satıcının plagini quraşdırmaq üçün öz yolu, mikroproqramı idarə etmək üçün öz API dəsti və unikal yeniləmə mexanizmi var.

Bu o deməkdir ki, hər bir kamera satıcısı üçün fərdi olaraq inteqrasiya proqram təminatının hərtərəfli təbəqəsini hazırlamaq lazımdır. İnkişafa başladıqda, komandanın səylərini buludla işləmək üçün məntiqi inkişaf etdirməyə cəmləşdirmək üçün yalnız 1 təchizatçı ilə işləmək məsləhətdir.

Seçilmiş ilk təchizatçı yaxşı sənədləşdirilmiş API və səriştəli mühəndislik texniki dəstəyi təmin edən kamera bazarında dünya liderlərindən biri olan Hikvision oldu.

Biz Hikvision kameralarından istifadə edərək ilk pilot layihəmiz olan “Video Comfort” bulud video nəzarətini işə saldıq.

Demək olar ki, işə salındıqdan dərhal sonra istifadəçilərimiz digər istehsalçıların daha ucuz kameralarının xidmətə qoşulmasının mümkünlüyü barədə suallar verməyə başladılar.

Mən demək olar ki, hər bir satıcı üçün inteqrasiya qatının tətbiqi variantını rədd etdim - çünki o, zəif miqyaslana bilir və kamera aparatına ciddi texniki tələblər qoyur. Bu giriş tələblərinə cavab verən kameranın qiyməti: ~60-70$

Buna görə də, daha dərindən qazmağa qərar verdim - hər hansı bir satıcıdan kameralar üçün öz proqram təminatımı düzəltmək. Bu yanaşma kamera aparat resurslarına olan tələbləri əhəmiyyətli dərəcədə azaldır - çünki Buludla işləmək üçün təbəqə video tətbiqi ilə daha effektiv şəkildə inteqrasiya olunub və proqram təminatında lazımsız istifadə olunmamış yağ yoxdur.

Və vacib olan odur ki, kamera ilə aşağı səviyyədə işləyərkən, aşağı güclü CPU-da əlavə yük yaratmadan məlumatları şifrələyən AES aparatından istifadə etmək mümkündür.

Çin kameralarını 1000 rubla buludla birləşdirməyi necə öyrəndik. Qeydiyyatçılar və SMS olmadan (və milyonlarla dollar qənaət etdi)

O an bizim heç nəyimiz yox idi. Heç bir şey.

Demək olar ki, bütün satıcılar bizimlə belə aşağı səviyyədə işləməyə hazır deyildilər. Sxem və komponentlər haqqında heç bir məlumat yoxdur, çipsetlərin və sensor sənədlərinin rəsmi SDK-sı yoxdur.
Texniki dəstək də yoxdur.

Bütün suallara əks mühəndislik - sınaq və səhv vasitəsilə cavab verilməli idi. Amma biz bunun öhdəsindən gəldik.

Test etdiyimiz ilk kamera modelləri Xiaomi Yi Ants, Hikvision, Dahua, Spezvision, D-Link kameraları və bir neçə ultra ucuz adsız Çin kameraları idi.

Texnika

Hisilicon 3518E çipsetinə əsaslanan kameralar. Kameraların aparat xüsusiyyətləri aşağıdakılardır:

Xiaomi Yi Qarışqalar
noname

SoC
Hisilicon 3518E
Hisilicon 3518E

RAM
64MB
64MB

FLASH
16MB
8MB

WiFi
mt7601/bcm43143
-

Sensor
ov9732 (720p)
ov9712 (720p)

Ethernet
-
+

MicroSD
+
+

mikrafon
+
+

Natiq
+
+

IRLed
+
+

IRCut
+
+

Onlarla başladıq.

Hazırda biz Hisilicon 3516/3518 çipsetlərini, həmçinin Ambarella S2L/S2LM-ni dəstəkləyirik. Onlarla kamera modeli var.

Firmware tərkibi

sualtı qayıq

uboot yükləmə yükləyicisidir, işə salındıqdan sonra ilk olaraq yüklənir, avadanlığı işə salır və linux nüvəsini yükləyir.

Kamera yükləmə skripti olduqca mənasızdır:

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

Xüsusiyyətlərindən biri də iki dəfə çağırılmasıdır bootm, bu barədə bir az sonra, yeniləmə alt sisteminə keçdikdə.

Xəttə diqqət yetirin mem=38M. Bəli, bəli, bu yazı səhvi deyil - Linux nüvəsi və hamısı, hamısı, bütün tətbiqlər yalnız 38 meqabayt RAM-a çıxışı var.

Həmçinin uboot-un yanında adlı xüsusi bir blok var reg_info, DDR-nin işə salınması üçün aşağı səviyyəli skripti və SoC-nin bir sıra sistem registrlərini ehtiva edir. Məzmun reg_info kamera modelindən asılıdır və düzgün deyilsə, kamera hətta uboot-u yükləyə bilməyəcək, lakin yükləmənin çox erkən mərhələsində donacaq.

Əvvəlcə satıcı dəstəyi olmadan işlədiyimiz zaman bu bloku sadəcə orijinal kamera proqram təminatından köçürdük.

Linux kernel və rootfs

Kameralar çipin SDK-nın bir hissəsi olan Linux nüvəsindən istifadə edir; adətən bunlar 3.x filialının ən son ləpələri deyil, ona görə də biz tez-tez əlavə avadanlıq üçün sürücülərin istifadə olunan ləpə ilə uyğun gəlməməsi ilə məşğul oluruq. , və biz onları nüvə kameralarına geri köçürməliyik.

Başqa bir məsələ nüvənin ölçüsüdür. FLASH ölçüsü yalnız 8MB olduqda, hər bayt sayılır və bizim vəzifəmiz ölçüsü minimuma endirmək üçün istifadə olunmamış bütün nüvə funksiyalarını diqqətlə söndürməkdir.

Rootfs əsas fayl sistemidir. O daxildir busybox, wifi modul drayverləri, standart sistem kitabxanaları dəsti kimi libld и libc, həmçinin LED idarəetmə məntiqi, şəbəkə bağlantısının idarə edilməsi və proqram təminatı yeniləmələri üçün cavabdeh olan proqram təminatımız.

Kök fayl sistemi nüvəyə initramfs olaraq qoşulur və qurma nəticəsində bir fayl əldə edirik. uImage, həm nüvəni, həm də kökləri ehtiva edir.

Video proqram

Mikroproqramın ən mürəkkəb və resurs tutumlu hissəsi video-audio çəkilişini, videonun kodlaşdırılmasını təmin edən, şəkil parametrlərini konfiqurasiya edən, video analitikasını, məsələn, hərəkət və ya səs detektorlarını həyata keçirən, PTZ-yə nəzarət edən və gün və videonun dəyişdirilməsinə cavabdeh olan proqramdır. gecə rejimləri.

Əhəmiyyətli, hətta deyərdim ki, əsas xüsusiyyət video tətbiqinin bulud plagini ilə necə qarşılıqlı əlaqədə olmasıdır.

Ucuz aparatda işləyə bilməyən "satıcı mikroproqramı + bulud plagini" ənənəvi həllərində kamera daxilindəki video RTSP protokolu ilə ötürülür - və bu, çox böyük yükdür: məlumatların rozetka vasitəsilə kopyalanması və ötürülməsi, lazımsız sistem zəngləri.

Burada biz paylaşılan yaddaş mexanizmindən istifadə edirik - video kameranın proqram komponentləri arasında yuva vasitəsilə kopyalanmır və göndərilmir, bununla da kameranın təvazökar aparat imkanlarından optimal və diqqətlə istifadə edilir.

Çin kameralarını 1000 rubla buludla birləşdirməyi necə öyrəndik. Qeydiyyatçılar və SMS olmadan (və milyonlarla dollar qənaət etdi)

Alt sistemi yeniləyin

Xüsusi qürurverici məqam onlayn proqram təminatı yeniləmələri üçün səhvlərə dözümlü alt sistemdir.

Problemi izah edim. Mikroproqramın yenilənməsi texniki cəhətdən atom əməliyyatı deyil və yeniləmənin ortasında elektrik kəsilməsi baş verərsə, fləş yaddaş yeni proqram təminatının “az yazılmış” hissəsini ehtiva edəcəkdir. Xüsusi tədbirlər görməsəniz, kamera daha sonra xidmət mərkəzinə aparılmalı olan "kərpicə" çevriləcəkdir.

Biz bu problemlə də məşğul olmuşuq. Yeniləmə zamanı kamera söndürülsə belə, o, avtomatik olaraq və istifadəçinin müdaxiləsi olmadan buluddan proqram təminatını endirəcək və əməliyyatı bərpa edəcək.

Texnikaya daha ətraflı baxaq:

Ən həssas nöqtə Linux nüvəsi və kök fayl sistemi ilə bölmənin üzərinə yazmaqdır. Bu komponentlərdən biri zədələnərsə, kamera buluddan proqram təminatını endirə bilməyən uboot bootloader-dən kənarda heç yüklənməyəcək.

Bu o deməkdir ki, yeniləmə prosesi zamanı istənilən vaxt kameranın işlək nüvəsi və rootf-lərə malik olmasını təmin etməliyik. Görünür ki, ən sadə həll nüvənin iki nüsxəsini daim fləş yaddaşda saxlamaq və əsas nüvə zədələnibsə, onu ehtiyat nüsxədən yükləmək olacaq.

Yaxşı bir həll - bununla belə, rootfs ilə nüvə təxminən 3.5 MB yer tutur və daimi ehtiyat üçün 3.5 MB ayırmalısınız. Ən ucuz kameraların ehtiyat nüvəsi üçün o qədər də boş yer yoxdur.

Buna görə də, proqram təminatı yeniləməsi zamanı nüvənin ehtiyat nüsxəsini çıxarmaq üçün proqram bölməsindən istifadə edirik.
Və nüvə ilə istədiyiniz bölməni seçmək üçün iki əmrdən istifadə olunur bootm uboot-da - başlanğıcda əsas nüvəni yükləməyə çalışırıq və əgər zədələnibsə, ehtiyat nüsxəsini.

Çin kameralarını 1000 rubla buludla birləşdirməyi necə öyrəndik. Qeydiyyatçılar və SMS olmadan (və milyonlarla dollar qənaət etdi)

Bu, istənilən vaxt kameranın rootfs ilə düzgün nüvəyə malik olmasını təmin edir və o, proqram təminatını yükləyə və bərpa edə bilər.

Firmware qurmaq və yerləşdirmək üçün CI/CD sistemi

Mikroproqram yaratmaq üçün biz bütün dəstəklənən kamera modelləri üçün proqram təminatını avtomatik quran gitlab CI-dən istifadə edirik və proqram təminatını qurduqdan sonra o, avtomatik olaraq kamera proqram təminatı yeniləmə xidmətinə yerləşdirilir.

Çin kameralarını 1000 rubla buludla birləşdirməyi necə öyrəndik. Qeydiyyatçılar və SMS olmadan (və milyonlarla dollar qənaət etdi)

Xidmətdən proqram təminatı yeniləmələri QA test kameralarımıza və bütün sınaq mərhələləri başa çatdıqdan sonra istifadəçilərin kameralarına çatdırılır.

İnformasiya təhlükəsizliyi

Heç kimə sirr deyil ki, bu gün informasiya təhlükəsizliyi istənilən IoT cihazının, o cümlədən kameraların ən vacib cəhətidir. Mirai kimi botnetlər internetdə dolaşaraq milyonlarla kameraları satıcıların standart proqram təminatı ilə yoluxdurur. Kamera satıcılarına hörmətlə yanaşaraq qeyd etməliyəm ki, standart proqram təminatı buludla işləmək üçün lazım olmayan, lakin botnetlərin istifadə etdiyi bir çox zəiflikləri ehtiva edən bir çox funksionallıq ehtiva edir.

Buna görə də, proshivkamızda istifadə olunmayan bütün funksionallıqlar söndürülür, bütün tcp/udp portları bağlanır və proqram təminatı yenilənərkən proqram təminatının rəqəmsal imzası yoxlanılır.

Bundan əlavə, proqram təminatı informasiya təhlükəsizliyi laboratoriyasında müntəzəm sınaqdan keçirilir.

Nəticə

İndi bizim proqram təminatımız video nəzarət layihələrində fəal şəkildə istifadə olunur. Bəlkə də onlardan ən böyüyü Rusiya Federasiyası Prezidentinin seçkiləri günü səsvermənin yayımıdır.
Layihəyə ölkəmizdəki seçki məntəqələrində quraşdırılmış mikroproqramlı 70 mindən çox kamera cəlb edilib.

Bir sıra mürəkkəb, bəzi yerlərdə isə, hətta o vaxtlar demək olar ki, mümkün olmayan problemləri həll edərək, biz, əlbəttə ki, mühəndislər kimi böyük məmnunluq hissi keçirmişik, lakin bununla yanaşı, kameraların alınmasına da milyonlarla dollar qənaət etmişik. Və bu vəziyyətdə qənaət yalnız sözlər və nəzəri hesablamalar deyil, avadanlıqların alınması üçün artıq başa çatmış tenderin nəticələridir. Müvafiq olaraq, bulud video nəzarəti haqqında danışsaq: iki yanaşma var - strateji olaraq aşağı səviyyəli təcrübə və inkişafa etibar edin, nəticədə avadanlıqlara böyük qənaət və ya bahalı avadanlıqdan istifadə edin, əgər istehlakçı xüsusiyyətlərinə nəzər salsanız, praktiki olaraq heç bir şey yoxdur. oxşar ucuz olanlardan fərqlidir.

İnteqrasiya yanaşmasının seçiminə mümkün qədər tez qərar vermək nə üçün strateji baxımdan vacibdir? Plugin hazırlayarkən tərtibatçılar müəyyən texnologiyalara (kitabxanalar, protokollar, standartlar) etibar edirlər. Bir sıra texnologiyalar yalnız bahalı avadanlıq üçün seçilərsə, gələcəkdə ucuz kameralara keçmək cəhdi, çox güman ki, ən azı olduqca uzun müddət çəkəcək və ya hətta uğursuz olacaq və bahalı avadanlıqlara qayıdış baş verəcəkdir.

Mənbə: www.habr.com

Добавить комментарий