Как стать автором
Обновить

Комментарии 37

Как вы решаете проблему разнообразия аппаратной части? Даже один чип пять производителей могут подключить пятью разными способами. При этом потребуется пять разных прошивок, либо фокусы с подгрузкой правильного device tree.
очень хороший вопрос, спасибо.

В данный момент у нас агент достаточно примитивный, т.е. он оставляет на штатной вендорской софтине задачу по захвату видео и общается с ней по HTTP, RTSP, а теперь ещё и по 34567 начали.

Т.е. по сути сейчас нам надо собрать программу на C с libevent под разные платформы, а это оказалось достаточно несложно: несколько разных ARM-ов (uclibc, glibc, ешё-какая-то-libc) и MIPS для OpenWRT. Тот же агент очень хорошо подошел для установки на роутеры.

Прошивки действительно разные, более того, мы их всё равно помогаем готовить для каждого клиента. От 500 камер уже брендируют, лепят свой логотип и т.п.

То, о чём вы говорите — это вместо штатной прошивки, выкинуть Sofia, Sonya или чего туда ещё впихнут. Такой проект у нас есть, это своя прошивка. В данный момент он в стадии отладки механизма обновлений.
Я и не представлял, что все так плохо на рынке IP-камер. Как люди могут открывать свои камеры в интернет? Дополнительные уроки компьютерной грамотности нужно вводить в школах.

Появилась идея для стартапа: OpenSource IP-камера, на базе какой-нибудь Raspberry PI, со встроенным архивом и синхронизацией с внешним облаком. Что-нибудь такое безопасное и современное, но доступное не только гикам. Хотя, такое уже есть, да?
Все варианты с raspberry pi и прочими разбиваются о жестокую реальность питания и корпуса.

Сегодня китайские IP камеры упали в цене до 9$ в розницу (может есть и ниже) и это за компьютер с сенсором, объективом, корпусом и питанием.

Для малинки хороших защищенных корпусов с решенным питанием (про POE молчу) особо не видать.
у длинка такие камеры
подключаешь, вставляешь sd карточку
и готово. трансляция через их вебморду
Такие производители сейчас встречаются.

У многих есть только трансляция, некоторые дают и запись. Но так что бы хотя бы через флеш, а не через activex сделали трансляцию видео — почти ни у кого нет.
Опять-таки, нужно открывать в интернет? Я не доверяю веб-интерфейсам роутеров/камер. Уже сколько новостей было про найденные backdoor в роутерах, а сколько еще не найдено…
ну если хотите просматривать через web морду dlink (http://my.dlink.ru) то дать интернет камере придеться, но пробрасывать порты не нужно
это как раз то, о чём я упомянул: сами вендоры начали давать такие сервисы.

У китайцев такого сейчас много, но это совершенно не интернационально, весь трафик строго через китай.
Это вы про школы, которые порой веб-камерами светятся в интернете же?
ох, и чего только не светится незапароленными IP-камерами в интернете!
Администрирую сеть в которой около 300 ip камер разных производителей и годов выпуска, больше всего проблем доставляют относительно новые камеры (2014-2016 годов). Так не редко камеры hikvision начинают общаться (или матерится) с людьми в торговом комплексе =) Самая большая проблема в том что не понятно как это делается. Пароли сложные, в логах доступа к камере пусто, серверный софт самописный. В сети полностью заблокирован трафик на всех используемых портах (которые указанны в инструкциях) но этого мало…

mirai меня немного зацепил, 2 камеры генерировали бешеное количество трафика.

Резюмируя:
ip камеры зло которое заперто под семью замками, но у некоторых есть ключи от них.
интересно как. А что значит хиквижн общается? Цепляется к каким-то приложениям, запущенным на смартфонах?

Может вы видите по каким портам идет обмен?
в камере есть микрофон и динамик. Пару раз когда в интернет были закрыты только указанные в инструкциях порты (80,455, 8000) кто-то умудрялся подключатся к камерам и пользоваться динамиком и микрофоном. После того как камера заговорила с директором сеть камер была полностью отключена от интернета.
Как к ним цеплялись мы частично разобрались: по неустановленной причине камеры начинали требовать по UPnP себе порт наружу к которому и подключались «Хакеры». Что за софт установить не удалось но обмен был очень похож на стандартный софт SADPTool. Что заставляло камеры требовать порт неизвестно.
Ага, ясно.

Да, это ужасная история и это именно как раз те самые решения, которые порождают мираи. При этом попытка обсудить это с вендором заканчивается раз за разом одним и тем же: нет там никакого линукса, все протоколы закрыты, всё безопасно, проходите дальше мы и без вас продадим миллион камер.
а что за гений включил на маршрутизаторе UPnP?
Абсолютно правильные тезисы. Не так давно я сам задумался над решением обозначенной в статье проблемы. Рассматривал разные варианты, в частности установку некоего агента на камеру, но в конечном итоге отказался от этой идеи.
Причины следующие:
  • Зоопарк камер. Неизвестно с какой камерой придет клиент. Неизвестно какая будет у нее аппаратная ревизия. Неизвестно какая будет ревизия программного обеспечения. Тестировать все варианты — смерти подобно.
  • Зачастую камеры имеют ограниченные вычислительные возможности. Да и с памятью у них зачастую все печально, как оперативной так и флэш.
  • Могут встретиться камеры на которых агента подсадить будет проблематично. Тем самым ограничиваем себя и пользователей по ассортименту.
  • С большой долей вероятности агента на камеры придется ставить самому, т.к. объяснить пользователю как это делать, с большой вероятностью, будет нереально. Для Москвы/Питера/иного-региона-присутствия это может и не сильно большая проблема, но с удалением от столиц проблема становится все острее. В итоге все может вылиться в решение используемое iVideon, а именно работа с производителями камер и предоставлением им некоего sdk. Но опять же, нельзя будет прийти в магазин и купить первую понравившуюся камеру.
  • … возможно что-то еще о чем подзабыл...;


В конечном итоге я решил идти по иному пути. Взять Raspberry Pi 3, и реализовать агента на нем.
Почему так:
  • RPi 3 имеет wi-fi на борту, камеры можно подключать через wi-fi;
  • ARM устройства кушают мало, греются относительно слабо, имеют относительно компактные размеры;
  • RPi 3 очень хорошо оттестированная железяка, кроме того на начальном этапе нет необходимости заморачиваться с проектированием своего собственного устройства, т.к. это имеет смысл только при больших тиражах;
  • RPi более производителен чем типовая IP камера (4 ядра все-таки);
  • RPi относительно дешев;
  • Можно использовать мощные библиотеки типа GStreamer, и не ограничивать себя только камерами умеющими RTSP;
  • VPN не обязателен, можно обойтись SSL/TLS;
  • … возможно что-то еще о чем подзабыл...;


Для упрощения первоначального конфигурирования хочу сделать простенький сервис к которому устройство подключаться при включении и получать всю конфигурацию с него. Соответственно пользователь конфигурирует устройство подключаясь к веб сайту в интернете/интранете, а не непосредственно к устройству.

Может возникнуть вопрос зачем я это все написал — ответ простой, хочу услышать критику.
Чуть выше есть ответ на похожий вопрос. Использование малинки вдвое удорожает стоимость установки камеры, даже если одна малинка будет обслуживать несколько камер.
С этим тезисом согласен. Но надеюсь этот недостаток перекрыть более широким функционалом, например из того что забыл упомянуть:
  • Возможность загрузки видео в облачные хранилища общего назначения, такие как DropBox, Google Drive, Microsoft OneDrive. Да и тот же iVideon в конце концов (если дадут доступ к SDK конечно);
  • Возможность шифрования видео, через ту же PKI (надеюсь мощности RPi для этого достаточно, еще не проверял);
  • Опять же, h264 стрим в браузере без костылей не проиграть, поэтому можно проводить конвертацию перед отправкой, например в набор .mp4 файлов;
  • Реализация гарантированной доставки через медленные/ненадежные каналы (например GSM модем, но тут, возможно, без детектора движения уже не обойтись);
На шифрование мощности хватит. Камера без проблем шифрует мегабитный поток.

H264 в браузере проигрывается, но для этого его надо упаковать в контейнер. Например в то, что играется через dash или в rtmp.

С малинкой главная и основная проблема: это настольная платка для которой нет массово доступного корпуса. Нельзя повесить малинку на улицу на стену. IP камеру можно, все современные камеры уже и без кожухов идут.
> H264 в браузере проигрывается, но для этого его надо упаковать в контейнер.

Да, я об этом и говорю, .ts (для HLS) и .mp4 (для DASH) можно готовить непосредственно на RPi, благо перепаковка не сильно ресурсоемкая задача. Вопрос только в быстродействии дисковой подсистемы. Тем более что если реализовывать выгрузку в DropBox или другие облачные хранилища, перепаковку в любом случае делать придется. Да и гарантированную доставку проще сделать для нескольких мелких файлов, чем для одного большого. Так что HLS для этой задачи очень неплох.

> С малинкой главная и основная проблема: это настольная платка для которой нет массово доступного корпуса.

Тут вопрос масштаба. На первоначальном этапе можно вполне обойтись корпусами отпечатанными на 3d принтере, либо нарезанными из пластика на лазерных станках. А при больших объемах можно и на заводе в китае заказать (но конечно же до этого еще дорасти надо).
А по поводу уличного исполнения — в любом случае камеры будут работать через некий роутер, его же вы не будете на улице крепить, соответственно не проблема рядом еще одну коробочку поставить.

Здесь мы пошли другим путем и заказали в Китае dd-wrt роутер с POE.

Исправно работает, питает 4 камеры. На роутере стоит наш агент, который очень прилично забирает видео и публикует его на сервер.
Какова его стоимость и характеристики, если не секрет? Просто для информации.

А так подход возможно правильный, другой вопрос что не будут ли пользователи возмущаться ограниченностью выбора.
стоимость кого?
> заказали в Китае dd-wrt роутер с POE

Этого самого роутера
нам сделали на базе Asus rt-n11p, к нему приделали железный корпус для охлаждения и вставили POE модуль.

Вышло что-то в районе 40-50$ в розницу кажется.
Действительно не дорого. Но опять же, получается это вопрос масштаба. У вас есть возможность делать для себя некую специальную железяку (пусть и на неком более менее стандартном железе), у меня же такой возможности, к сожалению, нет. Вот и приходится, на этом этапе, выбирать из массовых устройств.
500$ за кастом дизайн и ещё по 50$ выкупили партию из 10 штук.
Хм… достаточно смешные цифры. Не думал что такое возможно. Спасибо за информацию.
да, я сам удивился. Но алибаба тут в помощь и будьте готовы перезаложиться здесь.

Китайцы сорвали срок на 5 месяцев и я с ними уже попрощался, а потом взяли и всё прислали.
вы всё верно говорите про сложность работы с камерами.

Конечно отдать человеку агента, что бы он прошил его на камеру — это практически невозможная задача в общем случае. Да, есть лапочки типа Аксиса, которые дают целую инфраструктуру для кастомных заливок софта, но не все же умеют делать камеры так, как Аксис.

Честно скажу: некоторые камеры мы пока не осилили вскрыть, несчастная Сонька лежит в углу кирпичом, а безымянная китайская капелька запускает агента только с SD карты. В основном к счастью залить агента на камеру получается, но это всё сложная лабораторная работа, индивидуальная для каждой прошивки. После подготовки конечно обновить эту прошивку уже проще.
А где посмотреть/почитать более конкретно? Ну например, какие модели камер точно работают в вашей реализации, какая стоимость решения?
про это мы чуть позже расскажем.

Агент — это не просто шмоточек кода на камере, это ещё целый бизнес-процесс по заливке прошивки и техпроцесс по активации камеры и привязке к хозяину.
это закрытое устройство, в котором вроде как и линукса-то никакого нет

В общем то, это уже явно противоречит GPL.

Надеюсь, недавние атаки все таки сподвигнут, например, FSF заслужить на американском рынке каких нибудь крупных производителей и заставить их открыть исходники. Это может решить эту проблему в корне
Да, это очень разумное замечание. Возможно у больших вендоров что-то есть на этот счёт.
заслужить

опечатался, имел ввиду «засудить»
Три года назад работал в компании, предоставляющей набор охранной системы для частников — это набор беспроводных датчиков и базовой станции, которая общается с «центром» через GSM/3G и имеет бекапную батарейку (грабители обычно обесточивают дом, обрезают телефонную линию, разбивают панель ввода пинкода, думая, что он посылает сигнал тревоги). Я разрабатывал для них IP камеру (прошивку на основе hi3518 и Ambarella A5s/S2Lm) и серверную часть. SDK обычно предоставляет высокоуровневый RTSP/RTP стриминг, но я брал с уровня NAL h264 фреймов и запихивал в пропраетный протокол. Общение камеры с клаудом по типу dropcam, основан на TLS соединении (каждая камера имеет свой сертификат с UUID, подписанный единым CA, что авторизует каждую камеру, и сертификат сервера может быть проверен тоже с помощью CA паблика вшитого в камеру), и протокол на основе protobuf. Серверная часть C++ Boost::ASIO позволяет держать десятки тысяч одновременно подключенных камер на один сервер (стриминг происходит по активации со стороны приложения или по срабатыванию датчиков в доме).
Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.