Xitoy kameralarini 1000 rublga qanday qilib bulutga ulashni o'rgandik. Ro'yxatga oluvchilar va SMSlarsiz (va millionlab dollarlarni tejash)

Hammaga salom!

So'nggi paytlarda bulutli video kuzatuv xizmatlari mashhur bo'lib borayotgani sir emas. Va nima uchun bu sodir bo'lishi aniq, video "og'ir" kontent bo'lib, uni saqlash infratuzilma va katta hajmdagi diskni saqlashni talab qiladi. Mahalliy video kuzatuv tizimidan foydalanish yuzlab kuzatuv kameralaridan foydalanadigan tashkilot uchun ham, bir nechta kameralari bo'lgan individual foydalanuvchi uchun ham ishlashi va qo'llab-quvvatlashi uchun mablag' talab qiladi.

Xitoy kameralarini 1000 rublga qanday qilib bulutga ulashni o'rgandik. Ro'yxatga oluvchilar va SMSlarsiz (va millionlab dollarlarni tejash)

Bulutli video kuzatuv tizimlari ushbu muammoni mijozlarga mavjud video saqlash va qayta ishlash infratuzilmasi bilan ta'minlash orqali hal qiladi. Bulutli video kuzatuv mijozi shunchaki kamerani Internetga ulashi va uni bulutli hisobiga ulashi kerak.

Kameralarni bulutga ulashning bir necha texnologik usullari mavjud. Shubhasiz, eng qulay va arzon usul - bu kamera server yoki magnitafon kabi qo'shimcha uskunalar ishtirokisiz to'g'ridan-to'g'ri bulutga ulanadi va ishlaydi.

Buning uchun kameraga bulut bilan ishlaydigan dasturiy ta'minot moduli o'rnatilishi kerak. Ammo, agar arzon kameralar haqida gapiradigan bo'lsak, unda ular juda cheklangan apparat resurslariga ega, ular deyarli 100% kamera sotuvchisining mahalliy dasturiy ta'minoti bilan band va bulutli plagin uchun zarur bo'lgan resurslar yo'q. Ivideon ishlab chiquvchilari ushbu muammoni hal qilishdi maqola, bu plaginni nima uchun arzon kameralarga o'rnatolmasligini tushuntiradi. Natijada, kameraning minimal narxi 5000 rubl (80 dollar) va uskunaga millionlab pul sarflanadi.

Biz bu muammoni muvaffaqiyatli hal qildik. Agar siz qanday qilib qiziqsangiz - kesishga xush kelibsiz

Biroz tarix

2016 yilda biz Rostelecom uchun bulutli video kuzatuv platformasini ishlab chiqishni boshladik.

Kamera dasturiy ta'minoti nuqtai nazaridan, birinchi bosqichda biz bunday vazifalar uchun "standart" yo'ldan bordik: biz o'z plaginimizni ishlab chiqdik, u sotuvchining kamerasining standart dasturiy ta'minotiga o'rnatiladi va bulutimiz bilan ishlaydi. Ammo shuni ta'kidlash kerakki, dizayn davomida biz eng engil va samarali echimlardan foydalanganmiz (masalan, protobuf, libev, mbedtls-ning oddiy C ilovasi va boost kabi butunlay tark etilgan qulay, ammo og'ir kutubxonalar)

Hozirgi vaqtda IP-kamera bozorida universal integratsiya echimlari mavjud emas: har bir sotuvchida plaginni o'rnatishning o'ziga xos usuli, proshivka bilan ishlash uchun o'z API to'plami va noyob yangilash mexanizmi mavjud.

Bu shuni anglatadiki, har bir kamera sotuvchisi uchun integratsiya dasturiy ta'minotining keng qamrovli qatlamini alohida ishlab chiqish kerak. Rivojlanishni boshlash vaqtida jamoaning sa'y-harakatlarini bulut bilan ishlash mantig'ini ishlab chiqishga jamlash uchun faqat 1 ta sotuvchi bilan ishlash tavsiya etiladi.

Tanlangan birinchi sotuvchi Hikvision bo'ldi, u yaxshi hujjatlashtirilgan API va malakali muhandislik texnik yordamini ta'minlovchi kamera bozorida jahon yetakchilaridan biri edi.

Biz Hikvision kameralaridan foydalangan holda bulutli video kuzatuv Video Comfort boβ€˜lgan birinchi pilot loyihamizni ishga tushirdik.

Ishga tushirilgandan so'ng deyarli darhol foydalanuvchilarimiz boshqa ishlab chiqaruvchilarning arzonroq kameralarini xizmatga ulash imkoniyati haqida savollar berishni boshladilar.

Men har bir sotuvchi uchun integratsiya qatlamini joriy etish variantini deyarli darhol rad etdim - chunki u yomon kengaytiriladi va kamera uskunasiga jiddiy texnik talablar qo'yadi. Ushbu kiritish talablariga javob beradigan kameraning narxi: ~60-70$

Shuning uchun men chuqurroq qazishga qaror qildim - har qanday sotuvchidan kameralar uchun o'zimning dasturiy ta'minotimni yaratish. Bu yondashuv kamera apparat resurslari uchun talablarni sezilarli darajada kamaytiradi - chunki Bulut bilan ishlash uchun qatlam video ilovasi bilan ancha samarali integratsiyalangan va proshivkada keraksiz foydalanilmagan yog 'yo'q.

Va eng muhimi, kamera bilan past darajada ishlaganda, kam quvvatli protsessorga qo'shimcha yuk yaratmasdan ma'lumotlarni shifrlaydigan AES apparatidan foydalanish mumkin.

Xitoy kameralarini 1000 rublga qanday qilib bulutga ulashni o'rgandik. Ro'yxatga oluvchilar va SMSlarsiz (va millionlab dollarlarni tejash)

O'sha paytda bizda umuman hech narsa yo'q edi. Hech narsa.

Deyarli barcha sotuvchilar biz bilan bunday past darajada ishlashga tayyor emas edilar. Sxema va komponentlar haqida ma'lumot yo'q, chipsetlarning rasmiy SDK va sensor hujjatlari mavjud emas.
Bundan tashqari, texnik yordam yo'q.

Barcha savollarga teskari muhandislik - sinov va xato orqali javob berish kerak edi. Lekin uddaladik.

Biz sinovdan o'tkazgan birinchi kamera modellari Xiaomi Yi Ants, Hikvision, Dahua, Spezvision, D-Link kameralari va bir nechta o'ta arzon nomsiz Xitoy kameralari edi.

Texnika

Hisilicon 3518E chipsetiga asoslangan kameralar. Kameralarning texnik xususiyatlari quyidagilardan iborat:

Xiaomi Yi Chumolilar
noname

SoC
Hisilicon 3518E
Hisilicon 3518E

Ram
64MB
64MB

FLASH
16MB
8MB

Wifi
mt7601/bcm43143
-

Sensor
ov9732 (720p)
ov9712 (720p)

Ethernet
-
+

MicroSD
+
+

Mikrofon
+
+

notiq
+
+

IRL qilingan
+
+

IRCut
+
+

Biz ular bilan boshladik.

Biz hozirda Hisilicon 3516/3518 chipsetlarini, shuningdek Ambarella S2L/S2LM ni qo'llab-quvvatlaymiz. O'nlab kamera modellari mavjud.

Mikrodastur tarkibi

yuklash

uboot yuklovchi bo'lib, u yoqilgandan so'ng birinchi bo'lib ishga tushadi, apparatni ishga tushiradi va Linux yadrosini yuklaydi.

Kamerani yuklash skripti juda ahamiyatsiz:

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

Xususiyatlaridan biri shundaki, u ikki marta chaqiriladi bootm, bu haqda birozdan keyin, yangilanish quyi tizimiga kirganimizda.

Chiziqga e'tibor bering mem=38M. Ha, ha, bu xato emas - Linux yadrosi va barchasi, barcha ilovalar atigi 38 megabayt operativ xotiraga kirish huquqiga ega.

Shuningdek, uboot yonida maxsus blok mavjud reg_info, unda DDRni ishga tushirish uchun past darajadagi skript va SoC ning bir qator tizim registrlari mavjud. Tarkib reg_info kamera modeliga bog'liq va agar u to'g'ri bo'lmasa, kamera ubootni ham yuklay olmaydi, lekin yuklashning eng dastlabki bosqichida muzlab qoladi.

Dastlab, biz sotuvchining yordamisiz ishlaganimizda, biz ushbu blokni asl kamera proshivkasidan ko'chirib oldik.

Linux yadrosi va rootfs

Kameralar chipning SDK qismi bo'lgan Linux yadrosidan foydalanadi; odatda bu 3.x filialining eng so'nggi yadrolari emas, shuning uchun biz ko'pincha qo'shimcha uskunalar uchun drayverlar ishlatilgan yadroga mos kelmasligi bilan shug'ullanishimiz kerak. , va biz ularni yadro kameralariga qaytarishimiz kerak.

Yana bir muammo - yadro hajmi. FLASH hajmi atigi 8 MB bo'lsa, har bir bayt hisoblanadi va bizning vazifamiz o'lchamni minimal darajaga tushirish uchun barcha foydalanilmagan yadro funktsiyalarini ehtiyotkorlik bilan o'chirib qo'yishdir.

Rootfs - bu asosiy fayl tizimi. O'z ichiga oladi busybox, wifi modul drayverlari, standart tizim kutubxonalari to'plami, masalan libld ΠΈ libc, shuningdek, LED boshqaruv mantig'i, tarmoq ulanishini boshqarish va proshivka yangilanishlari uchun mas'ul bo'lgan dasturimiz.

Ildiz fayl tizimi yadroga initramfs sifatida ulanadi va qurish natijasida biz bitta faylga ega bo'lamiz. uImage, u ham yadro, ham rootflarni o'z ichiga oladi.

Video dastur

Mikrodasturning eng murakkab va resurs talab qiladigan qismi bu video-audio yozib olish, video kodlashni ta'minlaydigan, rasm parametrlarini sozlaydigan, video tahlilini, masalan, harakat yoki ovoz detektorlarini amalga oshiradigan, PTZ-ni boshqaradigan va kunni almashtirish uchun javobgar bo'lgan ilovadir. tungi rejimlar.

Muhim, hattoki, asosiy xususiyat deb aytardim, bu video ilovaning bulut plagini bilan qanday ishlashidir.

Arzon uskunada ishlay olmaydigan "sotuvchi proshivka + bulutli plagin" an'anaviy echimlarida kamera ichidagi video RTSP protokoli orqali uzatiladi - bu juda katta yuk: rozetka orqali ma'lumotlarni nusxalash va uzatish, keraksiz tizimli qo'ng'iroqlar.

Bu erda biz umumiy xotira mexanizmidan foydalanamiz - video nusxa ko'chirilmaydi yoki kamera dasturiy komponentlari o'rtasida rozetka orqali yuborilmaydi, shu bilan kameraning oddiy apparat imkoniyatlaridan optimal va ehtiyotkorlik bilan foydalaniladi.

Xitoy kameralarini 1000 rublga qanday qilib bulutga ulashni o'rgandik. Ro'yxatga oluvchilar va SMSlarsiz (va millionlab dollarlarni tejash)

Quyi tizimni yangilash

Onlayn mikrodastur yangilanishlari uchun nosozliklarga chidamli quyi tizim alohida g'ururdir.

Muammoni tushuntirib beraman. Mikrodasturni yangilash texnik jihatdan atom operatsiyasi emas va agar yangilanish o'rtasida elektr uzilishi sodir bo'lsa, u holda flesh-xotirada "kam yozilgan" yangi proshivkaning bir qismi bo'ladi. Agar siz maxsus choralar ko'rmasangiz, kamera keyinchalik xizmat ko'rsatish markaziga olib borilishi kerak bo'lgan "g'isht" ga aylanadi.

Biz bu muammoni ham hal qildik. Yangilanish vaqtida kamera o'chirilgan bo'lsa ham, u avtomatik ravishda va foydalanuvchi aralashuvisiz proshivkani bulutdan yuklab oladi va ishlashni tiklaydi.

Keling, texnikani batafsil ko'rib chiqaylik:

Eng zaif nuqta Linux yadrosi va ildiz fayl tizimi bilan bo'limni qayta yozishdir. Agar ushbu komponentlardan biri shikastlangan bo'lsa, kamera bulutdan dasturiy ta'minotni yuklab ololmaydigan uboot bootloaderdan tashqarida umuman yuklanmaydi.

Bu shuni anglatadiki, yangilanish jarayonida istalgan vaqtda kamerada ishlaydigan yadro va rootfs mavjudligiga ishonch hosil qilishimiz kerak. Ko'rinishidan, eng oddiy yechim yadroning ikkita nusxasini rootfs bilan doimiy ravishda flesh-xotirada saqlash va agar asosiy yadro shikastlangan bo'lsa, uni zaxira nusxasidan yuklash bo'ladi.

Yaxshi yechim - ammo rootfsli yadro taxminan 3.5 MB ni egallaydi va doimiy zaxira uchun siz 3.5 MB ajratishingiz kerak. Eng arzon kameralarda zaxira yadrosi uchun unchalik bo'sh joy yo'q.

Shuning uchun, dasturiy ta'minotni yangilash paytida yadroning zaxira nusxasini yaratish uchun biz dastur bo'limidan foydalanamiz.
Va yadro bilan kerakli bo'limni tanlash uchun ikkita buyruq ishlatiladi bootm ubootda - boshida biz asosiy yadroni yuklashga harakat qilamiz va agar u shikastlangan bo'lsa, zaxira nusxasini.

Xitoy kameralarini 1000 rublga qanday qilib bulutga ulashni o'rgandik. Ro'yxatga oluvchilar va SMSlarsiz (va millionlab dollarlarni tejash)

Bu har qanday vaqtda kamera rootfs bilan to'g'ri yadroga ega bo'lishini ta'minlaydi va u mikrodasturni yuklash va qayta tiklash imkoniyatiga ega bo'ladi.

Mikrodasturlarni yaratish va o'rnatish uchun CI/CD tizimi

Mikrodasturni yaratish uchun biz barcha qo'llab-quvvatlanadigan kamera modellari uchun proshivkani avtomatik ravishda yaratadigan gitlab CI dan foydalanamiz va mikrodasturni yaratgandan so'ng u avtomatik ravishda kamera dasturiy ta'minotini yangilash xizmatiga o'rnatiladi.

Xitoy kameralarini 1000 rublga qanday qilib bulutga ulashni o'rgandik. Ro'yxatga oluvchilar va SMSlarsiz (va millionlab dollarlarni tejash)

Xizmatdan proshivka yangilanishlari QA sinov kameralariga va barcha sinov bosqichlari tugagandan so'ng foydalanuvchilarning kameralariga yetkaziladi.

Axborot xavfsizligi

Hech kimga sir emaski, bugungi kunda axborot xavfsizligi har qanday IoT qurilmasi, shu jumladan kameralar uchun eng muhim jihatdir. Mirai kabi botnetlar Internetda rouming bo'lib, millionlab kameralarni sotuvchilarning standart dasturiy ta'minoti bilan yuqtirmoqda. Kamera sotuvchilarni hurmat qilgan holda, shuni ta'kidlab o'tishim mumkinki, standart dasturiy ta'minot bulut bilan ishlash uchun kerak bo'lmagan juda ko'p funksiyalarni o'z ichiga oladi, lekin botnetlar foydalanadigan ko'plab zaifliklarni o'z ichiga oladi.

Shuning uchun, bizning proshivkamizdagi barcha foydalanilmagan funksiyalar o'chirilgan, barcha tcp/udp portlari yopilgan va proshivkani yangilashda dasturiy ta'minotning raqamli imzosi tekshiriladi.

Bundan tashqari, proshivka axborot xavfsizligi laboratoriyasida muntazam sinovdan o'tkaziladi.

xulosa

Endi bizning proshivkamiz video kuzatuv loyihalarida faol foydalanilmoqda. Ehtimol, ularning eng kattasi Rossiya Federatsiyasi Prezidenti saylovi kuni ovoz berishning translyatsiyasidir.
Loyihaga mamlakatimizdagi saylov uchastkalarida oβ€˜rnatilgan proshivkali 70 mingdan ortiq kameralar jalb etildi.

Bir qator murakkab va ba'zi joylarda, hatto o'sha paytda deyarli imkonsiz muammolarni hal qilib, biz, albatta, muhandislar sifatida katta mamnuniyat oldik, lekin bundan tashqari, biz kameralar sotib olishda millionlab dollarlarni ham tejadik. Va bu holda, tejamkorlik nafaqat so'zlar va nazariy hisob-kitoblar, balki asbob-uskunalar sotib olish uchun allaqachon tugallangan tender natijalaridir. Shunga ko'ra, agar bulutli video kuzatuv haqida gapiradigan bo'lsak: ikkita yondashuv mavjud - strategik jihatdan past darajadagi tajriba va ishlab chiqishga tayanish, natijada asbob-uskunalarni katta tejash yoki qimmatbaho uskunalardan foydalanish, agar siz iste'molchi xususiyatlariga qarasangiz, deyarli yo'q. shunga o'xshash arzonlardan farq qiladi.

Integratsiya yondashuvini tanlash to'g'risida imkon qadar tezroq qaror qabul qilish nima uchun strategik ahamiyatga ega? Plaginni ishlab chiqishda ishlab chiquvchilar ma'lum texnologiyalarga (kutubxonalar, protokollar, standartlar) tayanadilar. Va agar texnologiyalar to'plami faqat qimmatbaho uskunalar uchun tanlansa, kelajakda arzon kameralarga o'tishga urinish, eng kamida, juda uzoq vaqt talab etadi yoki hatto muvaffaqiyatsiz bo'ladi va qimmat uskunalarga qaytish sodir bo'ladi.

Manba: www.habr.com

a Izoh qo'shish