1000 рублга кытай камераларын булутка туташтырганды кантип үйрөндүк. Эч кандай каттоочулар же SMS жок (жана миллиондогон долларларды үнөмдөгөн)

Баарына салам!

Булуттук видео көзөмөл кызматтары акыркы убакта популярдуулукка ээ болуп жатканы эч кимге жашыруун эмес. Эмне үчүн мындай болуп жатканы түшүнүктүү, видео - бул "оор" мазмун, аны сактоо инфраструктураны жана чоң көлөмдөгү дискти сактоону талап кылат. Жергиликтүү видеокөзөмөл системасын колдонуу жүздөгөн байкоочу камераларды колдонгон уюм үчүн да, бир нече камерасы бар жеке колдонуучу үчүн да иштөө жана колдоо үчүн каражатты талап кылат.

1000 рублга кытай камераларын булутка туташтырганды кантип үйрөндүк. Эч кандай каттоочулар же SMS жок (жана миллиондогон долларларды үнөмдөгөн)

Булуттагы видеокөзөмөл системалары бул көйгөйдү кардарларга учурдагы видео сактоо жана иштетүү инфраструктурасы менен камсыз кылуу аркылуу чечет. Булуттагы видеобайкоо кардары жөн гана камераны Интернетке туташтыруу жана аны булут эсебине байланыштыруу керек.

Булутка камераларды туташтыруунун бир нече технологиялык жолдору бар. Албетте, эң ыңгайлуу жана эң арзан ыкма – бул камера сервер же жазгыч сыяктуу кошумча жабдуулардын катышуусуз эле булут менен түз байланышып, иштеши.

Бул үчүн камерага булут менен иштеген программалык модулду орнотуу зарыл. Бирок, биз арзан камералар жөнүндө сөз кыла турган болсок, анда алар өтө чектелген аппараттык ресурстарга ээ, алар дээрлик 100% камера сатуучунун жергиликтүү микропрограммасы ээлейт жана булут плагини үчүн зарыл болгон ресурстар жок. ivideon иштеп чыгуучулары бул маселени арнашкан макала, бул эмне үчүн алар плагинди арзан камераларга орното албашын түшүндүрөт. Натыйжада, камеранын минималдуу баасы 5000 рубль (80 доллар) жана жабдууларга миллиондогон акча сарпталган.

Биз бул маселени ийгиликтүү чечтик. Эгер сиз кантип кызыксаңыз - кесипке кош келиңиз

Бир аз тарыхы

2016-жылы биз "Ростелеком" үчүн булуттагы видеокөзөмөл платформасын иштеп чыга баштадык.

Камеранын программалык камсыздоосу боюнча, биринчи этапта биз мындай тапшырмалар үчүн "стандарттык" жолду кармандык: биз өзүбүздүн плагинибизди иштеп чыктык, ал сатуучунун камерасынын стандарттык микропрограммасында орнотулган жана биздин булут менен иштейт. Бирок, дизайн учурунда биз эң жеңил жана эффективдүү чечимдерди колдонгонубузду белгилей кетүү керек (мисалы, протобуф, libev, mbedtls жөнөкөй C ишке ашыруу жана толугу менен ташталган ыңгайлуу, бирок boost сыяктуу оор китепканалар)

Учурда IP камера рыногунда универсалдуу интеграциялык чечимдер жок: ар бир сатуучунун плагинди орнотуунун өз жолу, микропрограмманы иштетүү үчүн API'лердин өзүнүн топтому жана уникалдуу жаңыртуу механизми бар.

Бул ар бир камера сатуучу үчүн интеграциялык программалык камсыздоонун комплекстүү катмарын жекече иштеп чыгуу керек дегенди билдирет. Жана иштеп чыгууну баштаганда, булут менен иштөө логикасын иштеп чыгууга команданын күч-аракетин топтоо үчүн 1 сатуучу менен гана иштөө сунушталат.

Биринчи сатуучу тандалган Hikvision болду, камералар рыногундагы дүйнөлүк лидерлердин бири, жакшы документтештирилген API жана компетенттүү инженердик-техникалык колдоо көрсөтүү.

Hikvision камераларын колдонуу менен биз биринчи пилоттук долбоорбузду ишке киргиздик, булуттук видеобайкоо Video Comfort.

Ишке киргизгенден кийин дээрлик дароо эле биздин колдонуучулар башка өндүрүүчүлөрдүн арзаныраак камераларын кызматка туташтыруу мүмкүнчүлүгү жөнүндө суроолорду бере башташты.

Мен дээрлик дароо ар бир сатуучу үчүн интеграциялык катмарды ишке ашыруу вариантынан баш тарттым - анткени ал начар масштабдалат жана камеранын жабдыктарына олуттуу техникалык талаптарды коёт. Бул киргизүү талаптарына жооп берген камеранын баасы: ~60-70$

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

Жана эң негизгиси, камера менен төмөн деңгээлде иштегенде, аз кубаттуу процессорго кошумча жүктү жаратпастан маалыматтарды шифрлеген 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
+
+

колдонуу
+
+

сүйлөгүч
+
+

IRLed
+
+

IRCut
+
+

Биз алар менен баштадык.

Учурда биз 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

Бир өзгөчөлүгү эки жолу аталат bootm, бул тууралуу бир аздан кийин, жаңыртуу подсистемасына келгенде.

Линияга көңүл буруңуз mem=38M. Ооба, ооба, бул ката эмес - Linux ядросу жана бардыгы, бардык тиркемелер 38 мегабайт оперативдик эстутумга гана кире алышат.

Ошондой эле uboot жанында деп аталган атайын блок бар reg_info, анда DDR инициализациялоо үчүн төмөнкү деңгээлдеги скрипт жана бир катар SoC системалык регистрлери бар. Мазмун reg_info камера моделине жараша болот жана ал туура эмес болсо, камера uboot да жүктөй албайт, бирок жүктөөнүн эң алгачкы этабында катып калат.

Башында, биз сатуучунун колдоосуз иштегенде, биз бул блокту жөн гана камеранын түпнуска микропрограммасынан көчүрүп алдык.

Linux ядросу жана rootfs

Камералар чиптин SDK бөлүгү болгон Linux ядросун колдонушат; адатта булар 3.x бутагынын эң акыркы ядролору эмес, андыктан кошумча жабдуулар үчүн драйверлер колдонулган ядро ​​менен шайкеш келбеген фактылар менен күрөшүүгө туура келет. , жана биз аларды ядро ​​​​камераларына артка ташташыбыз керек.

Дагы бир маселе - ядронун өлчөмү. FLASH өлчөмү болгону 8МБ болгондо, анда ар бир байт эсептелинет жана биздин милдетибиз өлчөмдү минимумга чейин азайтуу үчүн бардык пайдаланылбаган ядро ​​функцияларын кылдаттык менен өчүрүү.

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

Тамыр файл системасы ядрого initramfs катары туташты жана куруунун натыйжасында биз бир файлды алабыз uImage, ал өзөктү да, тамырларды да камтыйт.

Видео колдонмо

Микропрограмманын эң татаал жана ресурсту көп талап кылган бөлүгү видео-аудио тартууну, видеону коддоону, сүрөттүн параметрлерин конфигурациялоону, видео аналитиканы, мисалы, кыймыл же үн детекторлорун ишке ашырууну, PTZди башкарууну жана күндү которуу үчүн жооптуу тиркеме болуп саналат. түн режимдери.

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

Арзан жабдыкта иштей албаган салттуу "сатуучу микропрограммасы + булут плагининде" камеранын ичиндеги видео RTSP протоколу аркылуу өткөрүлөт - бул чоң чыгым: розетка аркылуу маалыматтарды көчүрүү жана берүү, керексиз системалар.

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

1000 рублга кытай камераларын булутка туташтырганды кантип үйрөндүк. Эч кандай каттоочулар же SMS жок (жана миллиондогон долларларды үнөмдөгөн)

Чакан системаны жаңыртуу

Өзгөчө мактанаарлык нерсе - программалык камсыздоону онлайн жаңыртуу үчүн каталарга чыдамдуу подсистема.

Маселени түшүндүрүп берейин. Микропрограмманы жаңыртуу техникалык жактан атомдук операция эмес жана жаңыртуунун ортосунда электр жарыгы үзгүлтүккө учураса, анда флэш эс тутумда жаңы микропрограмманын "төмөн жазылган" бөлүгү камтылат. Эгер сиз атайын чараларды көрбөсөңүз, анда камера "кыш" болуп калат, аны тейлөө борборуна алып баруу керек.

Биз бул көйгөйдү да чечкенбиз. Жаңыртуу учурунда камера өчүк болсо да, ал автоматтык түрдө жана колдонуучунун кийлигишүүсүз микропрограмманы булуттан жүктөп алып, ишти калыбына келтирет.

Келгиле, техниканы кененирээк карап көрөлү:

Эң аялуу учур - бул Linux ядросу жана тамыр файл системасы менен бөлүктү кайра жазуу. Эгерде бул компоненттердин бири бузулса, камера булуттан микропрограмманы жүктөп ала албаган uboot жүктөгүчтөн тышкары такыр жүктөлбөйт.

Бул жаңыртуу процессинде каалаган убакта камерада иштеген ядро ​​жана rootfs бар экенине кепилдик беришибиз керек дегенди билдирет. Эң жөнөкөй чечим флэш эстутумда rootfs менен ядронун эки нускасын дайыма сактоо жана негизги ядро ​​бузулган болсо, аны резервдик көчүрмөдөн жүктөө болуп көрүнөт.

Жакшы чечим - бирок rootfs менен өзөк 3.5 МБга жакынды ээлейт жана туруктуу камдык көчүрмө үчүн 3.5 МБ бөлүү керек. Эң арзан камераларда резервдик ядро ​​үчүн бош орун жок.

Ошондуктан, микропрограмманы жаңыртуу учурунда ядронун камдык көчүрмөсүн сактоо үчүн биз колдонмо бөлүмүн колдонобуз.
Жана өзөк менен керектүү бөлүмдү тандоо үчүн эки команда колдонулат bootm uboot ичинде - башында биз негизги ядрону жүктөөгө аракет кылабыз жана ал бузулган болсо, анда камдык.

1000 рублга кытай камераларын булутка туташтырганды кантип үйрөндүк. Эч кандай каттоочулар же SMS жок (жана миллиондогон долларларды үнөмдөгөн)

Бул каалаган убакта камера rootfs менен туура ядрого ээ болорун жана микропрограмманы жүктөө жана калыбына келтирүүнү камсыздайт.

Микропрограмманы түзүү жана жайылтуу үчүн CI/CD системасы

Микропрограмманы түзүү үчүн биз бардык колдоого алынган камера моделдери үчүн микропрограмманы автоматтык түрдө түзгөн gitlab CIди колдонобуз жана микропрограмманы кургандан кийин, ал автоматтык түрдө камеранын программалык камсыздоосун жаңыртуу кызматына орнотулат.

1000 рублга кытай камераларын булутка туташтырганды кантип үйрөндүк. Эч кандай каттоочулар же SMS жок (жана миллиондогон долларларды үнөмдөгөн)

Кызматтан микропрограмма жаңыртуулары биздин QA сыноо камераларына жана бардык тестирлөө этаптары аяктагандан кийин колдонуучулардын камераларына жеткирилет.

Маалымат коопсуздугу

Азыр эч кимге жашыруун эмес, маалыматтык коопсуздук ар бир IoT аппаратынын, анын ичинде камералардын эң маанилүү аспектиси. Mirai сыяктуу ботнеттер Интернетте роумингде, миллиондогон камераларды сатуучулардын стандарттуу микропрограммалары менен жуктуруп жатышат. Камеранын сатуучуларын урматтоо менен, мен стандарттуу микропрограмма булут менен иштөө үчүн зарыл болбогон көптөгөн функцияларды камтыганын, бирок ботнеттер пайдаланган көптөгөн кемчиликтерди камтыганын белгилей кете албайм.

Ошондуктан, биздин микропрограммадагы бардык пайдаланылбаган функциялар өчүрүлгөн, бардык tcp/udp порттору жабылган жана микропрограмманы жаңыртууда программалык камсыздоонун санариптик колтамгасы текшерилет.

Мындан тышкары, микропрограмма маалыматтык коопсуздук лабораториясында үзгүлтүксүз текшерүүдөн өтөт.

жыйынтыктоо

Азыр биздин микропрограммабыз видео көзөмөл долбоорлорунда активдүү колдонулат. Балким, алардын ичинен эң чоңу – Россия Федерациясынын Президентин шайлоо күнү добуш берүүнүн уктуруулары.
Долбоорго биздин өлкөнүн шайлоо участкаларында орнотулган биздин микропрограммасы бар 70 миңден ашык камера тартылган.

Бир катар татаал, ал эми кээ бир жерлерде, ал тургай ошол кездеги дээрлик мүмкүн эмес маселелерди чечип, биз, албетте, инженер катары чоң канааттануу алдык, бирок мындан тышкары фотоаппараттарды сатып алуудан миллиондогон долларларды унемдедук. Ал эми бул учурда, үнөмдөө сөз жана теориялык эсептөөлөр гана эмес, жабдууларды сатып алуу боюнча буга чейин аяктаган тендердин жыйынтыгы. Демек, булуттагы видеокөзөмөл жөнүндө сөз кыла турган болсок: эки ыкма бар - стратегиялык жактан төмөн деңгээлдеги тажрыйбага жана өнүгүүгө таянуу, натыйжада жабдууларды үнөмдөө же кымбат баалуу жабдууларды колдонуу, эгер сиз керектөөчү өзгөчөлүктөрүн карасаңыз, иш жүзүндө эч кандай болбойт. окшош арзан айырмаланып турат.

Эмне үчүн интеграциялык ыкманы тандоону мүмкүн болушунча эртерээк чечүү стратегиялык жактан маанилүү? Плагинди иштеп чыгууда иштеп чыгуучулар белгилүү бир технологияларга (китепканаларга, протоколдорго, стандарттарга) таянышат. Ал эми технологиялардын жыйындысы кымбат жабдуулар үчүн гана тандалган болсо, анда келечекте арзан камераларга өтүү аракети, кыязы, эң аз дегенде, акылга сыйбаган көп убакытты талап кылат же ал тургай, ишке ашпай калат жана кымбат баалуу жабдууларга кайтып келет.

Source: www.habr.com

Комментарий кошуу