Kumaha urang diajar nyambungkeun kaméra Cina pikeun 1000 rubles ka awan. Tanpa pendaptaran sareng SMS (sareng disimpen jutaan dolar)

Hello dulur!

Panginten sanés rusiah yén jasa panjagaan pidéo awan parantos janten populer ayeuna. Sareng jelas naha ieu kajantenan, pidéo mangrupikeun eusi "beurat", panyimpen anu peryogi infrastruktur sareng panyimpen disk anu ageung. Nganggo sistem panjagaan vidéo di tempat ngabutuhkeun dana pikeun beroperasi sareng ngadukung, boh pikeun organisasi anu ngagunakeun ratusan kaméra panjagaan sareng pikeun pangguna individu sareng sababaraha kaméra.

Kumaha urang diajar nyambungkeun kaméra Cina pikeun 1000 rubles ka awan. Tanpa pendaptaran sareng SMS (sareng disimpen jutaan dolar)

Sistem panjagaan pidéo awan ngabéréskeun masalah ieu ku nyayogikeun panyimpen pidéo sareng infrastruktur pamrosésan anu tos aya. Klién panjagaan pidéo awan ngan saukur kedah nyambungkeun kaméra ka Internét sareng numbu ka akun méga na.

Aya sababaraha cara téknologi pikeun nyambungkeun kaméra ka méga. Undoubtedly, metoda nu pangmerenahna tur cheapest nya éta kaméra langsung nyambungkeun jeung jalan kalawan awan, tanpa partisipasi parabot tambahan kayaning server atawa recorder.

Jang ngalampahkeun ieu, perlu yén modul software gawé bareng awan dipasang dina kaméra. Sanajan kitu, lamun urang ngobrol ngeunaan kaméra mirah, aranjeunna gaduh sumberdaya hardware pohara kawates, nu ampir 100% dikawasaan ku firmware asli ti ngajual kaméra, sarta euweuh sumber daya diperlukeun pikeun plugin awan. Pamekar ti ivideon devoted masalah ieu tulisan, nu ngécéskeun naon pangna maranéhna teu bisa install plugin dina kaméra mirah. Hasilna, harga minimum kaméra téh 5000 rubles ($80 dollar) jeung jutaan duit spent dina parabot.

Kami geus hasil direngsekeun masalah ieu. Mun anjeun kabetot dina kumaha - wilujeng sumping ka motong

A sajarah saeutik

Dina 2016, urang mimitian ngembangkeun platform panjagaan video awan pikeun Rostelecom.

Dina hal parangkat lunak kaméra, dina tahap kahiji urang nuturkeun jalur "standar" pikeun tugas-tugas sapertos kitu: kami ngembangkeun plugin sorangan, anu dipasang dina firmware standar kaméra vendor sareng tiasa dianggo sareng awan kami. Nanging, éta kedah diperhatoskeun yén nalika desain kami nganggo solusi anu paling énténg sareng épisién (contona, palaksanaan C polos protobuf, libev, mbedtls sareng lengkep ditinggalkeun perpustakaan anu merenah tapi beurat sapertos dorongan)

Ayeuna, teu aya solusi integrasi universal dina pasar kaméra IP: unggal padagang gaduh cara sorangan pikeun masang plugin, set API sorangan pikeun ngoperasikeun firmware, sareng mékanisme update anu unik.

Ieu ngandung harti yén pikeun tiap ngajual kaméra perlu individual ngamekarkeun lapisan komprehensif software integrasi. Sareng dina waktos ngamimitian pamekaran, disarankeun pikeun ngan ukur damel sareng 1 vendor supados tiasa konsentrasi usaha tim pikeun ngembangkeun logika pikeun damel sareng awan.

Anu ngajual munggaran anu dipilih nyaéta Hikvision, salah sahiji pamimpin dunya dina pasar kaméra, nyayogikeun API anu didokumentasikeun sareng dukungan téknis rékayasa anu kompeten.

Kami ngaluncurkeun pilot project munggaran, panjagaan video awan Video Comfort, nganggo kaméra Hikvision.

Ampir langsung saatos diluncurkeun, pangguna urang mimiti naroskeun patarosan ngeunaan kamungkinan nyambungkeun kaméra anu langkung mirah ti pabrikan sanés ka jasa éta.

Kuring nampik pilihan pikeun nerapkeun lapisan integrasi pikeun unggal padagang ampir langsung - sabab kirang scalable sareng maksakeun syarat téknis anu serius dina hardware kaméra. Biaya kaméra anu nyumponan sarat input ieu: ~60-70$

Ku alatan éta, kuring mutuskeun pikeun ngagali deeper - nyieun firmware sorangan pikeun kaméra ti vendor nanaon. Pendekatan ieu sacara signifikan ngirangan sarat pikeun sumber hardware kaméra - sabab Lapisan pikeun damel sareng awan langkung efektif terpadu sareng aplikasi pidéo, sareng henteu aya gajih anu teu perlu dina firmware.

Sareng anu penting nyaéta nalika damel sareng kaméra dina tingkat anu rendah, anjeun tiasa nganggo hardware AES, anu énkripsi data tanpa nyiptakeun beban tambahan dina CPU kakuatan rendah.

Kumaha urang diajar nyambungkeun kaméra Cina pikeun 1000 rubles ka awan. Tanpa pendaptaran sareng SMS (sareng disimpen jutaan dolar)

Dina momen éta urang teu boga nanaon pisan. Euweuh pisan.

Ampir kabéh ngical paralatan éta teu siap gawé bareng kami dina tingkat low sapertos. Henteu aya inpormasi ngeunaan sirkuit sareng komponén, henteu aya SDK resmi chipset sareng dokuméntasi sensor.
Aya ogé henteu rojongan teknis.

Sadaya patarosan kedah dijawab ku rékayasa balik - trial and error. Tapi urang junun.

Model kaméra munggaran anu kami uji nyaéta Xiaomi Yi Ants, Hikvision, Dahua, Spezvision, kaméra D-Link sareng sababaraha kaméra Cina anu teu aya namina ultra-mirah.

pakakas

Kaméra dumasar kana chipset Hisilicon 3518E. Karakteristik hardware kaméra nyaéta kieu:

Xiaomi Yi Sireum
Euweuh ngaran

SoC
Hisilicon 3518E
Hisilicon 3518E

Ram
64MB
64MB

cahaya
16MB
8MB

Wifi
mt7601 / bcm43143
-

sensor
ov9732 (720p)
ov9712 (720p)

Ethernet
-
+

MicroSD
+
+

mikropon
+
+

Jelema nu ngomong
+
+

IRLed
+
+

IRCut
+
+

Urang mimitian ku aranjeunna.

Urang ayeuna ngarojong Hisilicon 3516/3518 chipsets, kitu ogé Ambarella S2L / S2LM. Aya puluhan model kaméra.

Komposisi firmware

kapal selam

uboot mangrupikeun boot loader, éta boot heula saatos diaktipkeun, ngamimitian hardware sareng ngamuat kernel linux.

Skrip ngamuat kaméra rada sepele:

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

Salah sahiji fitur anu disebut dua kali bootm, langkung seueur ngeunaan ieu sakedik engké, nalika urang dugi ka subsistem update.

Nengetan garis mem=38M. Leres, leres, ieu sanés typo - kernel Linux sareng sadayana, sadayana, sadaya aplikasi gaduh aksés ngan ukur 38 megabyte RAM.

Ogé di gigireun uboot aya blok husus disebut reg_info, nu ngandung hiji Aksara tingkat low pikeun initializing DDR jeung sajumlah registers sistem tina SoC. eusi reg_info gumantung kana modél kaméra, sarta lamun teu bener, kaméra malah moal bisa ngamuat uboot, tapi bakal freeze dina tahap pisan mimiti loading.

Mimitina, nalika urang damel tanpa dukungan vendor, urang ngan saukur nyalin blok ieu tina firmware kaméra asli.

Linux kernel sareng rootfs

Kaméra nganggo kernel Linux, anu mangrupikeun bagian tina SDK chip; biasana ieu sanés kernel panganyarna tina cabang 3.x, janten urang sering kedah nungkulan kanyataan yén supir pikeun alat tambahan henteu cocog sareng kernel anu dianggo. , sareng urang kedah nga-back-port aranjeunna ka kaméra kernel.

Masalah sanésna nyaéta ukuran kernel. Nalika ukuran FLASH ngan ukur 8MB, maka unggal bait diitung sareng tugas urang nyaéta nganonaktipkeun sacara saksama sadaya fungsi kernel anu henteu dianggo pikeun ngirangan ukuranana ka minimum.

Rootfs mangrupikeun sistem file dasar. Ieu ngawengku busybox, supir modul wifi, susunan perpustakaan sistem baku, kayaning libld и libc, kitu ogé software urang, nu jawab logika kontrol LED, manajemén sambungan jaringan sarta apdet firmware.

Sistem file root disambungkeun ka kernel salaku initramfs sarta salaku hasil tina ngawangun urang meunang hiji file uImage, nu ngandung duanana kernel jeung rootfs.

Aplikasi video

Bagian anu paling rumit sareng sumber daya-intensif tina firmware nyaéta aplikasi, anu nyayogikeun pidéo-audio, enkoding pidéo, ngonpigurasikeun parameter gambar, ngalaksanakeun analitik pidéo, contona, detektor gerak atanapi sora, ngatur PTZ sareng tanggung jawab pikeun gentos dinten sareng. modeu peuting.

Anu penting, kuring malah bakal nyarios konci, fitur nyaéta kumaha aplikasi pidéo berinteraksi sareng plugin awan.

Dina solusi tradisional 'firmware vendor + plugin awan', nu teu tiasa dianggo dina hardware mirah, video di jero kaméra dikirimkeun via protokol RTSP - sarta ieu overhead badag: nyalin jeung ngirimkeun data via stop kontak, syscalls teu perlu.

Di tempat ieu kami nganggo mékanisme mémori anu dibagikeun - pidéo henteu disalin atanapi dikirim via stop kontak antara komponén software kaméra, ku kituna sacara optimal sareng taliti ngagunakeun kamampuan hardware anu sederhana tina kaméra.

Kumaha urang diajar nyambungkeun kaméra Cina pikeun 1000 rubles ka awan. Tanpa pendaptaran sareng SMS (sareng disimpen jutaan dolar)

Ngamutahirkeun subsistem

Hiji titik kareueus husus nyaéta subsistem toleran lepat pikeun apdet firmware online.

Hayu atuh ngajelaskeun masalah. Ngamutahirkeun firmware téh téhnisna lain operasi atom, sarta lamun gagalna kakuatan lumangsung di tengah update, lajeng memori flash bakal ngandung bagian tina firmware anyar "dina-tulisan". Upami anjeun henteu nyandak ukuran khusus, kaméra teras janten "bata" anu kedah dibawa ka pusat jasa.

Kami ogé parantos ngurus masalah ieu. Sanaos kaméra dipareuman salami pembaruan, éta bakal otomatis sareng tanpa campur tangan pangguna ngaunduh firmware tina méga sareng malikkeun operasi.

Hayu urang nempo téhnik dina leuwih jéntré:

Titik anu paling rentan nyaéta nimpa partisi nganggo kernel Linux sareng sistem file akar. Lamun salah sahiji komponén ieu ruksak, kaméra moal boot pisan saluareun bootloader uboot, nu teu bisa ngundeur firmware ti awan.

Ieu ngandung harti yén urang kudu mastikeun yén kaméra boga kernel gawéna sarta rootfs iraha wae salila prosés update. Sigana yén solusi pangbasajanna bakal terus-terusan nyimpen dua salinan kernel sareng rootfs dina mémori flash sareng, upami kernel utama ruksak, muatkeun tina salinan cadangan.

Solusi anu saé - kumaha oge, kernel sareng rootfs nyandak sakitar 3.5MB sareng pikeun cadangan permanén anjeun kedah ngalokasikeun 3.5MB. Kaméra anu paling murah ngan saukur teu gaduh rohangan bébas pikeun kernel cadangan.

Ku alatan éta, pikeun nyadangkeun kernel salami apdet firmware, kami nganggo partisi aplikasi.
Sareng pikeun milih partisi anu dipikahoyong sareng kernel, dua paréntah dianggo bootm dina uboot - dina awal urang nyobian ngamuat kernel utama sareng upami ruksak, teras cadanganna.

Kumaha urang diajar nyambungkeun kaméra Cina pikeun 1000 rubles ka awan. Tanpa pendaptaran sareng SMS (sareng disimpen jutaan dolar)

Ieu ensures yén iraha wae kaméra bakal boga kernel bener kalawan rootfs, sarta eta bakal tiasa boot tur malikkeun firmware nu.

Sistem CI / CD pikeun ngawangun sareng nyebarkeun firmware

Pikeun ngawangun firmware, kami nganggo gitlab CI, anu sacara otomatis ngawangun firmware pikeun sadaya modél kaméra anu dirojong, sareng saatos ngawangun firmware, éta sacara otomatis disebarkeun kana jasa update software kaméra.

Kumaha urang diajar nyambungkeun kaméra Cina pikeun 1000 rubles ka awan. Tanpa pendaptaran sareng SMS (sareng disimpen jutaan dolar)

Tina jasa éta, apdet firmware dikirimkeun ka kaméra uji QA kami, sareng saatos réngsé sadaya tahapan tés, ka kaméra pangguna.

Kaamanan Émbaran

Henteu aya rahasia yén ayeuna kaamanan inpormasi mangrupikeun aspék anu paling penting tina sagala alat IoT, kalebet kaméra. Botnets kawas Mirai keur roaming Internet, infecting jutaan kaméra kalawan firmware baku ti ngical paralatan. Kalayan hormat ka nu ngical paralatan kaméra, abdi teu tiasa ngabantu tapi dicatet yén firmware baku ngandung loba pungsi nu teu diperlukeun pikeun gawé bareng awan, tapi ngandung loba vulnerabilities nu botnets mangpaatkeun.

Ku alatan éta, sadaya pungsionalitas anu henteu kapake dina firmware kami ditumpurkeun, sadaya palabuhan tcp / udp ditutup, sareng nalika ngamutahirkeun firmware, tanda tangan digital parangkat lunak dipariksa.

Sareng sajaba ti ieu, firmware ngalaman uji rutin di laboratorium kaamanan inpormasi.

kacindekan

Ayeuna firmware kami aktip dianggo dina proyék panjagaan pidéo. Panginten anu panggedéna di antarana nyaéta siaran voting dina dinten pamilihan Présidén Féderasi Rusia.
Proyék éta ngalibatkeun langkung ti 70 rébu kaméra sareng firmware kami, anu dipasang di tempat polling di nagara urang.

Ngarengsekeun sababaraha pajeulitna, sareng di sababaraha tempat, bahkan dina waktos éta masalah ampir teu mungkin, urang, tangtosna, nampi kapuasan hébat salaku insinyur, tapi salian ti ieu, urang ogé ngahémat jutaan dolar pikeun mésér kaméra. Sareng dina hal ieu, tabungan henteu ngan ukur kecap sareng itungan téoritis, tapi hasil tina tender anu parantos réngsé pikeun mésér alat. Sasuai, lamun urang ngobrol ngeunaan panjagaan video awan: aya dua pendekatan - strategis ngandelkeun kaahlian-tingkat low sarta ngembangkeun, hasilna tabungan badag dina alat-alat, atawa ngagunakeun alat-alat mahal, nu, lamun nempo husus dina ciri konsumen, praktis euweuh. béda jeung nu sarupa murah.

Naha éta strategis penting pikeun mutuskeun dina pilihan pendekatan integrasi pas mungkin? Nalika ngembangkeun plugin, pamekar ngandelkeun téknologi (perpustakaan, protokol, standar). Sareng upami sakumpulan téknologi dipilih ngan ukur pikeun alat-alat anu mahal, maka ka hareupna usaha pikeun ngalih ka kaméra murah bakal paling dipikaresep, sahenteuna, nyandak waktos anu luar biasa atanapi malah gagal sareng uih deui ka alat anu mahal bakal kajantenan.

sumber: www.habr.com

Tambahkeun komentar