Всем привет!


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



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


Есть несколько технологических способов подключения камер к облаку. Бесспорно, наиболее удобный и дешевый способ — камера напрямую подключается и работает с облаком, без участия дополнительного оборудования типа сервера или регистратора.


Для этого необходимо, чтобы на камере был установлен модуль ПО работающий с облаком. Однако, если говорить про дешевые камеры, то у них очень ограничены аппаратные ресурсы, которые почти на 100% занимает родная прошивка вендора камеры, а ресурсов необходимых для облачного плагина — нет. Этой проблеме разработчики из ivideon посвятили статью, в которой говорится почему они не могут установить плагин на дешевые камеры. Как итог, минимальная цена камеры — 5000р ($80 долларов) и миллионы потраченных денег на оборудование.


Мы эту проблему успешно решили. Если интересно как — велком под кат


Немного истории


В 2016 году мы стартовали разработку платформы облачного видеонаблюдения для Ростелекома.


В части ПО камер на первом этапе пошли "стандартным" для таких задач путем: разработали свой плагин, который устанавливается в штатную прошивку камеры вендора и работает с нашим облаком. Однако, стоит отметить, что при проектировании мы использовали наиболее легковесные и эффективные решения (например, plain C реализацию protobuf, libev, mbedtls и полностью отказались от удобных, но тяжелых библиотек типа boost)


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


Это означает, что для каждого вендора камер необходимо индивидуально разрабатывать объемный слой интеграционного ПО. И на момент старта разработки целесообразно работать только с 1-ним вендором, что бы сосредоточить усилия команды на разработке логики работы с облаком.


Первым вендором был выбран Hikvision — один из мировых лидеров на рынке камер, предоставляющий хорошо документированное API и грамотную инженерную техническую поддержку.


На камерах Hikvision мы и запустили наш первый пилотный проект облачное видеонаблюдение Видеокомфорт.


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


Вариант с реализацией слоя интеграции под каждого вендора я отбросил практически сразу — как плохо масштабируемый и предъявляющий к железу камеры серьезные технические требования. Стоимость камеры, удовлетворяющий таким требованиям на входе: ~60-70$


Поэтому, я принял решение копать глубже — сделать полностью свою прошивку для камер любых вендоров. Этот подход существенно снижает требования к аппаратным ресурсам камеры — т.к. слой работы с облаком на порядок более эффективно интегрирован с video application, и в прошивке нет лишнего не используемого жирка.


И что важно, при работе с камерой на низком уровне есть возможность использовать аппаратный AES, который шифрует данные, не создавая дополнительной нагрузки на маломощный CPU.



В тот момент у нас не было вообще ничего. Вообще ничего.


Практически все вендоры не были готовы работать с нами на таком низком уровне. Информации о схемотехнике и компонентах — нет, официальных SDK чипсетов и документации сенсоров — нет.
Технической поддержки так же нет.


Ответы на все вопросы приходилось получать реверс инжинирингом — методом проб и ошибок. Но мы справились.


Первыми моделями камер, на которых мы набивали шишки стали камеры Xiaomi Yi Ants, Hikvision, Dahua, Spezvision, D-Link и несколько сверх дешевых безымянных китайских камер.


Техника


Камеры на чипсете Hisilicon 3518E. Аппаратные характеристики камер такие:


Xiaomi Yi Ants Noname
SoC Hisilicon 3518E Hisilicon 3518E
RAM 64MB 64MB
FLASH 16MB 8MB
WiFi mt7601/bcm43143 -
Sensor ov9732 (720p) ov9712 (720p)
Ethernet - +
MicroSD + +
Microphone + +
Speaker + +
IRLed + +
IRCut + +

С них мы начинали.


Сейчас поддерживаем чипсеты Hisilicon 3516/3518, а так же Ambarella S2L/S2LM. Количество моделей камер — десятки.


Состав прошивки


uboot


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


На камерах используется ядро Linux, входящее в состав SDK чипа, обычно это не самые свежие ядра из ветки 3.x, поэтому часто приходится сталкиваться с тем, что драйвера дополнительного оборудования не совместимы с используемым ядром, и нам приходится их бэк-портировать под ядро камеры.


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


Rootfs — это базовая файловая система. В нее включены busybox, драйвера wifi модуля, набор стандартных системных библиотек, типа libld и libc, а так же ПО нашей разработки, отвечающее за логику управления светодиодами, управление сетевыми подключениями и за обновление прошивки.


Корневая файловая система подключена к ядру как initramfs и в результате сборки мы получаем один файл uImage, в котором есть и ядро и rootfs.


Video application


Наиболее сложная и ресурсоемкая часть прошивки — приложение, которое обеспечивает видео-аудио захват, кодирование видео, настраивает параметры картинки, реализует видео-аналитики, например, детекторы движения или звука, управляет PTZ и отвечает за переключения дневного и ночного режимов.


Важная, я бы даже сказал ключевая особенность — каким образом видео приложение взаимодействует с облачным плагином.


В традиционных решениях 'прошивка вендора + облачный плагин', которые не могут работать на дешевом железе, видео внутри камеры передается по протоколу RTSP — а это огромный оверхед: копирование и передача данных через socket, лишние syscall-ы.


Мы в этом месте используем механизм shared memory — видео не копируется и не пересылается через socket между компонентами ПО камеры, тем самым оптимально и бережно используя скромные аппаратные возможности камеры.



Подсистема обновления


Предмет отдельной гордости — подсистема fault-tolerant онлайн обновления прошивки.


Поясню проблематику. Обновление прошивки — это технически не атомарная операция и в случае если посередине обновления произойдет сбой питания, то на флеш памяти будет часть "недозаписанной" новой прошивки. Если не предпринять специальных мер, то камера после этого станет "кирпичом", который нужно нести в сервисный центр.


Мы справились и с этой проблемой. Даже если камеру выключить в момент обновления, она автоматически и без участия пользователя скачает прошивку из облака и восстановит работу.


Разберем технику подробнее:


Наиболее уязвимый момент — перезапись раздела с ядром Linux и корневой файловой системой. В случае, если один из этих компонентов окажется поврежденным, то камера вообще не загрузиться дальше начального загрузчика uboot, который не умеет скачивать прошивку из облака.


Значит, нам нужно обеспечить гарантию наличия на камере работоспособного ядра и rootfs в любой момент процесса обновления. Казалось бы самым простым решением было бы постоянно хранить на флеш памяти две копии ядра с rootfs и в случае повреждения основного ядра загружать его из резервной копии.


Годное решение — однако, ядро с rootfs занимает около 3.5MB и для постоянной резервной копии нужно выделить 3.5MB. На самых дешевых камерах просто нет столько свободного места под backup ядра.


Поэтому для backup ядра во время обновления прошивки используем application партицию.
А для выбора нужной партиции с ядром как раз и используется две команды bootm в uboot — в начале пытаемся загрузить основное ядро и если оно повреждено, то резервное.



Это гарантирует, что в любой момент времени на камере будет корректное ядро с rootfs, и она сможет загрузиться и восстановить прошивку.


CI/CD система сборки и деплоя прошивок


Для сборки прошивок мы используем gitlab CI, в котором автоматически собираются прошивки под все поддерживаемые модели камер, после сборки прошивки автоматически деплоятся на сервис обновления ПО камер.



Из сервиса обновления ПО прошивки доставляются на тестовые камеры наших QA, а по завершению всех этапов тестирования и на камеры пользователей.


Информационная безопасность


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


Поэтому, весь не используемый функционал в нашей прошивке отключен, все tcp/udp порты закрыты и при обновлении прошивки проверяется цифровая подпись ПО.


И кроме этого, прошивка проходит регулярное тестирование в лаборатории информационной безопасности.


Заключение


Сейчас наша прошивка активно используется в проектах по видеонаблюдению. Пожалуй самый масштабный из них — трансляция голосования в день выборов Президента Российской Федерации.
В проекте было задействовано более 70 тысяч камер с нашей прошивкой, которые были установлены по избирательным участкам нашей страны.


Решив ряд сложных, а местами, даже на тот момент практически невозможных задач, мы, конечно, получили огромное удовлетворение как инженеры, но кроме этого, и сэкономили миллионы долларов на закупке камер. И в данном случае, экономия — это не только слова и теоретические расчёты, а результаты уже случившегося тендера на закупку оборудования. Соответственно, если говорить про облачное видеонаблюдение: есть два подхода — стратегически заложиться на низкоуровневую экспертизу и разработку, получив на выходе огромную экономию на оборудовании или использовать дорогое оборудование, которое, если смотреть именно на потребительские характеристики, практически ничем не отличается от аналогичного дешевого.


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

Комментарии (111)


  1. zxweed
    01.07.2018 17:05

    прошивка доступна?


  1. olegator99 Автор
    01.07.2018 17:17

    Обычно прошивка либо устанавливается вендором на заводе, либо приезжает через online сервис обновления.


    Вот, например, апдейт для камер на hi3518: http://camera-updater.videocomfort.ru/agent/hi3518/prod/firmware/v1.0.1-155-gfe91e4a_hi3518_prod-b22307/firmware_v1.0.1-155-gfe91e4a_hi3518_prod-b22307.bin — (апдейты идут без uboot)


    Вот, например, полный образ http://camera-updater.videocomfort.ru/agent/r2/prod/digicap_v0.9.8-89-gcf0ead1_hi3518_prod-b8641.dav для Hikvision VC1W


    1. datacompboy
      01.07.2018 17:18

      то есть можно уже имеющуюся камеру на hi3518 заменить?


      1. olegator99 Автор
        01.07.2018 17:24

        Не совсем. Камеры все же отличаются по железу (разные сенсоры, разные wifi модули, разные GPIO, разные DDR).
        Поэтому, просто так установить не получится — необходимо, что бы прошивка знала специфику оборудования, и что бы в ней были необходимые дрова сенсора и wifi модуля.


      1. erlyvideo
        01.07.2018 19:05

        там всё очень грустно.

        Конечно очень хочется сделать одну прошивку, которая будет работать под всеми 3518, 3516 и 3519, но пока, судя по всему, нет даже способа программно определить разные сенсоры. Т.е. прежде чем заливать прошивку, надо точно знать, какой там сенсор.

        Это как если бы надо было точно знать, какой линукс скачивать под распаянный на материнке жесткий диск, учитывая, что нет програмного способа его сдетектировать.

        Грустно.


        1. olegator99 Автор
          01.07.2018 19:19

          Ну мы выкручиваемся так: код модели камеры зашита в разделе env, а в самой rootfs есть реестр поддерживаемых моделей и описание оборудования которое соотвествует этой модели.
          А kernel+rootfs и application универсален для всего семейства чипов.


          А так да, никакого плаг & плэй (


          1. erlyvideo
            01.07.2018 19:24

            вот да, только писать в env.

            Я не оставляю надежду на то, что общением через i2c получится хотя бы косвенными способами угадать сенсор.


            1. olegator99 Автор
              01.07.2018 20:43

              Иногда можно, но не всегда поможет.
              Даже один и тот же сенсор может быть подключен по разному схемотехнически в разных камерах. А от этого зависят настройки режима захвата видео…


              Кроме этого узнать к каким GPIO подключены светодиоды/кнопки/IRLed/IRCut — вообще не возможно впринципе...


              Единственное — wifi чип можно опознать по USB vid/pid, и то если он подключен по USB, а не по SDIO.


              1. userEqNewUser
                02.07.2018 10:56

                Кроме этого узнать к каким GPIO подключены светодиоды/кнопки/IRLed/IRCut — вообще не возможно впринципе...

                На самом деле GPIO возможно определить простым перебором, приходилось несколько раз такое проворачивать, когда вендор не давал даташит на плату.


                1. olegator99 Автор
                  02.07.2018 11:00

                  У hisi 351x порядка 100 GPIO выводов.


                  Мы для поиска задействованных GPIO разработали специальную утилиту, которая умеет
                  а) выводить какие GPIO переведены в режим OUT, при запуске на стоковой прошивке, это сужает круг поиска выходов, к которым подключены светодиоды и IRCut
                  б) выводить состояния всех входов GPIO подключенных к процессору.


                  Во времена, когда не было поддержки вендоров — это очень помогало.


            1. gorbln
              02.07.2018 09:03

              Может, сморожу глупость, но всё-таки — сенсор — он же под стеклом? А нельзя просто посмотреть на этот сенсор через микроскоп? Там по-любому есть какие-нибудь «пасхалки» от производителя в виде номера модели или ещё чего. И по ним определить. Ну, как-то так.
              image


              1. olegator99 Автор
                02.07.2018 11:01
                +2

                Ага, модель сенсора можно определить и по внешнему виду, и по составу стоковой прошивки.


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


        1. scaldov
          02.07.2018 11:31

          а разве там нигде нету файла device tree??


          1. olegator99 Автор
            02.07.2018 11:33

            У Hisilicon — обычно нет. Да и задачу создания "универсальной прошивки" он не решит, т.к. нет аппаратного идентификатора типа оборудования.


  1. TheRaven
    01.07.2018 18:16

    В традиционных решениях 'прошивка вендора + облачный плагин', которые не могут работать на дешевом железе, видео внутри камеры передается по протоколу RTSP — а это огромный оверхед: копирование и передача данных через socket, лишние syscall-ы.

    Мы в этом месте используем механизм shared memory — видео не копируется и не пересылается через socket между компонентами ПО камеры, тем самым оптимально и бережно используя скромные аппаратные возможности камеры.

    Т.е. RTSP вы убрали совсем и камеру иначе как с вашим сервисом использовать не получится?


    1. olegator99 Автор
      01.07.2018 18:21

      Технически, RTSP у нас в прошивке есть, и в некоторых проектах он используется.


  1. alexey115
    01.07.2018 18:24

    С вашей прошивки на заводскую можно вернуться?


    1. olegator99 Автор
      01.07.2018 18:27

      У нас есть утилита, которая позволяет бэкапнуть, а в последующем восстановить родную прошивку.
      Естественно, если бэкап не сделан, то вернуть на родную прошивку будет сложнее — прийдется искать такую же камеру с оригинальной прошивкой, что бы с нее снять бэкап.


  1. erlyvideo
    01.07.2018 18:41

    > как плохо масштабируемый и предъявляющий к железу камеры серьезные технические требования. Стоимость камеры, удовлетворяющий таким требованиям на входе: ~60-70$


    > В традиционных решениях 'прошивка вендора + облачный плагин', которые не могут
    > работать на дешевом железе, видео внутри камеры передается по протоколу RTSP — а это
    > огромный оверхед

    какие например? Очень интересно, как можно сделать _огромный_ оверхед на проксировании RTSP внутри камеры. У нас сделать огромный не получилось, наш агент для облака работает на камерах от $8 с шифрованием, проксированием и очень несложным процессом адаптации вендорской прошивки. По крайней мере он сильно проще, чем портирование целой прошивки под очередную комбинацию сенсор+чип+всё остальное.

    >Наиболее уязвимый момент — перезапись раздела с ядром Linux и корневой файловой системой.

    Угу. Поэтому её вообще часто не трогают никак. У вас прикольно получилось.


    1. olegator99 Автор
      01.07.2018 19:12

      какие например? Очень интересно, как можно сделать огромный оверхед на проксировании RTSP внутри камеры. У нас сделать огромный не получилось, наш агент для облака работает на камерах от $8 с шифрованием, проксированием и очень несложным процессом адаптации вендорской прошивки. По крайней мере он сильно проще, чем портирование целой прошивки под очередную комбинацию сенсор+чип+всё остальное.

      Ваш комментарий противоречит вашей же статье: https://habr.com/company/erlyvideo/blog/334912/,
      в которой вы пишете, что работаете с железом напрямую, получая из железа кадры, и что сделали прошивку на Rust.


      По существу: вендоров — огромное количество, адаптироваться под прошивку каждого с учетом осбенностей каждой модели — это очень ресурсоемкий процесс. Чипсетов намного меньше.


      Про оверхед — когда всего 38МБ ОЗУ — любые лишнее буфера, которые требуются для "проксирования" — это существенный оверхед. Когда у процессора всего 400MHZ каждый syscall с копированием данных, да это существенный оверхед.


      Угу. Поэтому её вообще часто не трогают никак. У вас прикольно получилось.

      Т.е. rootfs на обновляют вообще? Как так — в ней находятся системные компоненты, типа dropbear, wpa_supplicant, busybox и т.д.
      Что делать, когда в намертво прошитой версии wpa_supplicant или dropbear обнаружится уязвимость?


      1. erlyvideo
        01.07.2018 19:28

        У нас есть два решения: наша прошивку, которая является заменой китайскому коду и агент — то, что мы ставим на камеры.

        По нашему опыту поставить агента на 400 Мгц камеру с проксированием через TLS — не проблема. Ни с памятью, ни с процессором.

        > Что делать, когда в намертво прошитой версии wpa_supplicant или dropbear обнаружится уязвимость?

        по мнению длинного ряда производителей — забить длинный китайский болт на это и выпустить новую камеру, у которой телнет с беспарольным рутовым логином.


        1. olegator99 Автор
          01.07.2018 20:49
          +1

          Ну тут такое. Такая конфигурация действительно работает (у нас тоже в варианте с наш плагин+прошивка вендора).
          Но, если, например битрейт потока большой, и паралелльно захватывается и пишется на флешку другой поток, то проца и памяти уже может не хватить — и тут как раз вспоминаем про оверхед на RTSP.


          Кроме этого в схеме без RTSP высвобождаются дополнительные ресурсы процессора, но более продвинутые аудио и видео аналитики, на которые с RTSP не хватало ресурсов.


          1. erlyvideo
            03.07.2018 16:07

            про аналитику — всё понятно. Нужны сырые данные, чего тут и говорить.

            Вот только что перепроверил нашего агента на Hiwatch DS-I114:

            Mem: 62076K used, 3092K free, 0K shrd, 5372K buff, 38344K cached
            CPU: 10.3% usr 10.9% sys 0.0% nic 75.9% idle 0.0% io 0.0% irq 2.7% sirq
            Load average: 11.81 8.36 3.98 1/149 736
            PID PPID USER STAT VSZ %VSZ CPU %CPU COMMAND
            327 1 admin S < 234m367.3 0 16.9 /home/davinci
            728 323 admin S 1736 2.6 0 4.4 /home/peeklio -c /devinfo/peeklio_
            603 2 admin SW 0 0.0 0 0.7 [RTW_CMD_THREAD]
            39 2 admin DW 0 0.0 0 0.5 [kworker/u:1]
            16 2 admin SWN 0 0.0 0 0.4 [ksmd]


            порядка 4%

            # cat /proc/cpuinfo
            Processor : ARM926EJ-S rev 5 (v5l)
            BogoMIPS : 218.72
            Features : swp half thumb fastmult edsp java
            CPU implementer : 0x41
            CPU architecture: 5TEJ
            CPU variant : 0x0
            CPU part : 0x926
            CPU revision : 5

            Hardware : r2
            Revision : 0000
            Serial : 0000000000000000


            64 MB памяти.

            Основное потребление, которое может быть — сетевой буфер для компенсации колебания скорости сети.


            1. iTuneDVR
              03.07.2018 21:14

              В той прошивке с агентом, что сделана была под меня, на одной камере раз в 30 минут сервис на камере падал и перезапускался, что отразилось в консольных логах. Что не хватало или был перелив — непонятно.


            1. olegator99 Автор
              03.07.2018 22:18

              Основное CPU time из за RTSP, думаю уходит на davinci, когда он пишет в сокет (write существенно прожерливее, чем read) — а davinci кушает 16% CPU.
              R2 кстати не самая бюджетная платформа. У нее 3518С + 128 MB ОЗУ на внешнем DDR, что, кстати, заметно увеличивает стоимость.


              Вот самый треш на 3518E, которые используются на бюджетных ezviz-ах и hiwatch — у них 64 MB ОЗУ, из которых 26 отдано под видеоядро.


              На них davinci выедает практически всю память...


  1. Stealch
    01.07.2018 19:14

    А под Hiwatch DS-I220 имеется решение? Камера практически идентична Hikvision DS-2CD2042WD-I, модули взаимозаменяемы.


    1. olegator99 Автор
      01.07.2018 19:15

      На такой модели мы не пробовали. Но думаю никаких принципиальных проблем с ней быть не должно.


      1. Stealch
        01.07.2018 19:22

        Да я вообще сильно удивился, когда узнал что эта камера без поддержки ivideon. Столько раз они служили донорами запчастей для более дорогих 2042… честно считал их идентичными, но в ivideon считают не так. Было бы замечательно запилить поддержку для этих камер, ведь по характеристикам они идентичны 2042, за исключением модуля ivideon.


        1. olegator99 Автор
          01.07.2018 23:15

          Не могу дать точный ответит за коллег из ivideon, о причинах отсутствия поддержки.


          Могу лишь предположить, что проблема в том, что с завода i220 идут с новой прошивкой, например 5.5.5, а ivideon еще не успел портировать плагин под эту прошивку…


          А downgrade на более раннюю прошивку с плагином, которая бы заработала — заблокирован.


          1. Stealch
            01.07.2018 23:25

            Нет, у ivideon нету в списках поддерживаемых моделей этих камер и не было никогда. Про их идентичность и взаимозаменяемость модулей выяснено методом научного тыка. Процессор у i220 все же слабее, в остальном они полностью идентичны — совпадает размер флешки, CMOS, ик-подсветка, разъемы на модулях — любой модуль может быть поставлен на 2042, и будет работать (за исключением основного модуля — иначе получим Hiwatch на выходе). Даже корпус идентичен. Но эти камеры даже не позиционируются как полноценные Hikvision — они идут только с отсылкой — «HiWatch by Hikvision» и часто являются частью комплекта с видеорегистратором. Своего рода бюджетный вариант.


            1. olegator99 Автор
              01.07.2018 23:29

              А сколько у нее RAM? Насколько мне известно, для hikvision камер с 64MB ОЗУ интеграция способом 'прошивка вендора + плагин' практически не возможна, из за причин перечисленных в статье...


              1. Stealch
                02.07.2018 00:18

                К сожалению вытащить эту информацию из камеры у меня не выходит :( В характеристиках не указано (по крайней мере я с наскока найти не смог). В интерфейсе отсутствует кнопка диагностической информации. А вот hikvision DS-2CD2042WD-I отчиталась по-полной, привожу маленький кусочек:
                dmesg
                [ 0.000000] Booting Linux on physical CPU 0x0
                [ 0.000000] Initializing cgroup subsys cpu
                [ 0.000000] Linux version 3.10.73+ (zhangjianzhong@Cpl-Frt-BSP) (gcc ?? 4.8.2 20130902 (prerelease) (crosstool-NG - Ambarella Linaro Multilib GCC [CortexA9 & ARMv6k] 2013.09) ) #12 PREEMPT Thu Jul 20 11:10:40 CST 2017
                [ 0.000000] CPU: ARMv7 Processor [414fc091] revision 1 (ARMv7), cr=10c53c7d
                [ 0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache
                [ 0.000000] Machine: Ambarella S2L (Flattened Device Tree), model: Ambarella S2LM Kiwi Board
                [ 0.000000] dev type:0x0
                [ 0.000000] Memory policy: ECC disabled, Data cache writeback
                [ 0.000000] Ambarella: AHB = 0xe0000000[0xe0000000],0x01000000 0
                [ 0.000000] Ambarella: APB = 0xe8000000[0xe8000000],0x01000000 0
                [ 0.000000] Ambarella: PPM = 0x00000000[0xdfe00000],0x00200000 9
                [ 0.000000] Ambarella: AXI = 0xf0000000[0xf0000000],0x00030000 0
                [ 0.000000] Ambarella: DRAMC = 0xdffe0000[0xef000000],0x00020000 0
                [ 0.000000] Ambarella: DBGBUS = 0xec000000[0xec000000],0x00200000 0
                [ 0.000000] Ambarella: DBGFMEM = 0xee000000[0xee000000],0x01000000 0
                [ 0.000000] Ambarella: IAVMEM = 0x07000000[ ],0x09000000
                [ 0.000000] On node 0 totalpages: 28160
                [ 0.000000] free_area_init_node: node 0, pgdat 807d48f8, node_mem_map 80805000
                [ 0.000000] Normal zone: 220 pages used for memmap
                [ 0.000000] Normal zone: 0 pages reserved
                [ 0.000000] Normal zone: 28160 pages, LIFO batch:7
                [ 0.000000] CPU: All CPU(s) started in SVC mode.
                [ 0.000000] pcpu-alloc: s0 r0 d32768 u32768 alloc=1*32768
                [ 0.000000] pcpu-alloc: [0] 0
                [ 0.000000] Built 1 zonelists in Zone order, mobility grouping on. Total pages: 27940
                [ 0.000000] Kernel command line: console=ttyS0 KRN_PRT=pri
                [ 0.000000] PID hash table entries: 512 (order: -1, 2048 bytes)
                [ 0.000000] Dentry cache hash table entries: 16384 (order: 4, 65536 bytes)
                [ 0.000000] Inode-cache hash table entries: 8192 (order: 3, 32768 bytes)
                [ 0.000000] Memory: 110MB = 110MB total
                [ 0.000000] Memory: 103364k/103364k available, 9276k reserved, 0K highmem
                [ 0.000000] Virtual kernel memory layout:
                [ 0.000000] vector : 0xffff0000 - 0xffff1000 ( 4 kB)
                [ 0.000000] fixmap : 0xfff00000 - 0xfffe0000 ( 896 kB)
                [ 0.000000] vmalloc : 0x87000000 - 0xff000000 (1920 MB)
                [ 0.000000] lowmem : 0x80000000 - 0x86e00000 ( 110 MB)
                [ 0.000000] modules : 0x7f000000 - 0x80000000 ( 16 MB)
                [ 0.000000] .text : 0x80008000 - 0x80502750 (5098 kB)
                [ 0.000000] .init : 0x80503000 - 0x80793bd4 (2627 kB)
                [ 0.000000] .data : 0x80794000 - 0x807dc690 ( 290 kB)
                [ 0.000000] .bss : 0x807dc690 - 0x808002b0 ( 144 kB)
                [ 0.000000] NR_IRQS:240
                [ 0.000000] sched_clock: 32 bits at 54MHz, resolution 18ns, wraps every 79536ms

                Подозреваю что У DS-I220 меньше 110 mb, но что либо утверждать не могу, попробую поискать прошивку по-свежее, может тогда она отчитается.


                1. olegator99 Автор
                  02.07.2018 11:36

                  Судя по логу — это вообще R6, на базе чипа ambarella.


                  1. Stealch
                    02.07.2018 12:46

                    Ну мне это практически ни о чем не говорит. В камерном железе я не силен, и единственное что понял — это что архитектура ARM. Я не встречал R6, а вот с камерами hikvision и hiwatch работаю постоянно. Все еще не смог вытащить лог с i220 — не хочет она делиться инфой, похоже придется цеплять ее по rs232, хоть я и слабо представляю как…


                    1. olegator99 Автор
                      02.07.2018 13:23

                      R6 это название программно-аппаратнатной платформы камер Hikvision на чипах Ambarela S2LM.
                      Про i220 увы, подсказать не могу — не доводилось сталкиваться.


                      1. Stealch
                        03.07.2018 05:00

                        Ну как пишет

                        iTuneDVR
                        02.07.18 в 19:35
                        0
                        I220 — Hikvision R2 серии камер судя по прошивке DS-I114_I120_I122_I126_I128_I220_5.4.3_170316.zip с ftp.hikvision.ru
                        — это R2 серия. Судя по всему Ambarella тоже.


                    1. iTuneDVR
                      02.07.2018 19:35

                      I220 — Hikvision R2 серии камер судя по прошивке DS-I114_I120_I122_I126_I128_I220_5.4.3_170316.zip с ftp.hikvision.ru
                      DS-2CD2042WD-I — Hikvision R6 серия камер.
                      Все разбирается по прошивкам и собирается ;)


                      1. Stealch
                        03.07.2018 04:57

                        Для меня тяжеловато будет собрать прошивку под незнакомый девайс с нуля при этом не окирпичив пару-тройку девайсов… что для меня непозволительная роскошь.


                        1. iTuneDVR
                          03.07.2018 13:26

                          Кое-какие сторонние инструменты есть в сети, которыми можно сделать и ту и ту, а так да, с нуля сделать такой инструмент без подсказок и прочего очень не просто.
                          Цель-то по итогу какая, что туда внедрить какой свой модуль?


                          1. Stealch
                            03.07.2018 13:34

                            Цель — поддержка ivideon, ибо мы с ними давно работаем. Сейчас у нас много таких камер с демонтажа, если удастся запилить прошивку с ivideon для них — то на мелкие объекты их можно будет устанавливать без регистраторов и серверов. Судя по сабжу в статье — это вполне реализуемо, притом даже более эффективно, чем предлагают сами ivideon. Процессор на этих камерах все же слабее, так что данное решение очень заманчиво.


                            1. iTuneDVR
                              03.07.2018 21:03

                              Все возможно, было бы желание у ivideon ;)
                              Слабо, там и ли нет, но на R2 таких работает spacecam и не жужжит, также надавно мне flusonic делал прошивку под подобную камеру с их агентом.
                              Они добавляют своего пользователя с хитрым паролем и он получает доступ к видео.
                              Раньше было проще, т.к. пароль в базе был в открытом виде и ivideon его юзал на R0 серии.
                              В свое время было сделано с костылями для новых R0 и R2 их клиенты.
                              Не знаю, что там предлагают в ivideon по этому поводу, но
                              если захотят и не будут ленится то сделают, но крови попьют, а раз ты привыкший то… ;)
                              Все технические нюансы можно решить. ;)


                              1. Stealch
                                03.07.2018 21:37

                                Они ленеивые и им это не выгодно — им лучше продавать свои камеры, чем обеспечивать поддержку дешевых. К тому же им надо и гибридные видеорегистраторы впаривать вместе с подобными камерами, коих у них еще не на одну распродажу на складах, например серия камер OcO, по сути аналогичных этой…


                                1. iTuneDVR
                                  03.07.2018 22:16

                                  Обвинять их в том, что что им лучше зарабатывать деньги на более выгодном, чем впустую поддерживать чужие камеры, по сути ничего не зарабатывая… не вижу тут проблем, даже я ;)
                                  Хотя есть же их софтовое сервер-приложение которое подключает любые камеры и транслирует, ну не мне объяснять…
                                  В любом случае надо будет решить вопрос с лицензиями, а официально цена вопроса для обычных пользователей — волосатая…
                                  Но, как и говорил, при определенных условиях и отсечение лишнего вполне возможно поднять встроенный сервис на R2 серии, но…
                                  Тема не вчерашняя…


                                  1. Stealch
                                    03.07.2018 22:20

                                    Может ткнете носом где брать сырцы как прошивки, так и модуля ivideon? Попытаюсь собрать что-либо работоспособное… надеюсь не слишком много камер превращу в кирпичи =))


                                    1. iTuneDVR
                                      03.07.2018 22:37

                                      Чтобы не убить все камеры, надо работать только с одной, к тому же там загрузчики не затрагивается, поэтому сразу не убить ;)
                                      Если не решен вопрос с лицензиями, то все остальное беЗполезно.
                                      Почему не устраивает вариант iVideon Server?


                                      1. Stealch
                                        03.07.2018 22:49

                                        Потому что сервер. На мелких объектах (1-2 камеры) лучше предлагать решение без доп. оборудования для занижения ценового барьера.


                                        1. iTuneDVR
                                          03.07.2018 23:11

                                          Сервер можно в на VPS засунуть и не держать на объекте.
                                          Да, понимаю, что удобней будет сразу, и без лишних проблем и завязок, но я не встречал адекватных вариантов, хотя обращались многие по поводу изготовления или готовой прошивке, но у всех желание отбивала цена за лицензию ivideon.
                                          В любом случае нюансов много, и получится так, что сделать можно, но прошивка старая и,… а на новой или специальной надо кое-что допиливать до полноценного.
                                          Как написано выше, если есть много свободного времени, непреодолимое желание оптимизировать свои затраты и пристроить имеющуюся технику, то все возможно.
                                          Сторонние инструменты не рекламирую, чтобы не породить вопросов, а как ими пользоваться. Своими пользуюсь сам и не задаю никаких вопросов. ;)


  1. jonywtf
    01.07.2018 19:26

    Хотелось написать обзорную статейку, но оставлю пока комментарий.
    ZigFisher ведет работу над похожим открытым решением на базе openwrt!
    zftlab.org/pages/2018020900.html
    github.com/ZigFisher/chaos_calmer
    github.com/ZigFisher/Glutinium
    Группа общая по модификации прошивок: t.me/joinchat/FhtyHxDpQsv8HlRliQDgqw
    Группа по разработке прошивки на базе openwrt: t.me/joinchat/FhtyHwrU0fwfQlAkvoeVJA
    Пытаемся привести китайские ядра из sdk от разных чипов разных ревизий (hi3516c, hi3518e, hi3520d) к какому-то одному и вынести в конфиг то, что разработчики захардкордили через #define. А то собирать слишком много и долго) Инициализация библиотек сенсоров, конфиг драйвера ethernet, но пока с переменным успехом… Работа идет, но не хватает скилов, а еще больше времени!
    Если кто-то хочет попробовать собрать и запустить, то подготовил сборку прошивки и ядер в докере: github.com/chertov/camopenwrt_docker
    Очень буду рад если кто-то присоединится, поможет, проявит интерес)
    На данный момент смогли запустить открытую прошивку, получили изображение в виде jpg, сжатые фреймы в h264, тестовый поток rtsp. Фактически просто причесали китайскую демку. Сейчас все это прилично глючит и факт успешного запуска на произвольной камере зависит от погоды на луне) Если интересно, то в группах могут подсказать конкретные бюджетные модели плат чип+сенсор+провода или целиком камер.
    Исходники на базе китайской демки тут github.com/ZigFisher/Glutinium/tree/master/hisi-sample/src
    А еще мы собрали gstreamer последней версии с поддержкой webRTC! Попробуем построить p2p стриминг видео на его базе сразу в браузер или на мобилки.

    Авторы статьи молодцы, качественное решение в сфере видеонаблюдения давно необходимо!!! Это как раз одна из причин появления открытого проекта! Железо в камерах еще ничего, но софт просто ужасен… естественно очень бы хотелось посмотреть на Ваш вариант модификации кода загрузчика и ядра, код uboot и ядер вроде же под GPL, китайцы его поставляют в составе sdk.

    Также в свободное время пилю небольшой сервис для проброса ethernet, uart, spi (для перепрошивки флеш памяти камеры) и gpio (управление питанием камеры) на машины разработчиков или в контейнеры CI через облако. А то (лично мне) с железом не очень-то и удобно работать, тем более когда камер много…
    Хотелось бы дать возможность сообществу шарить свои камеры разработчикам и системе тестирования и т.д!


    1. erlyvideo
      01.07.2018 19:31
      +2

      github.com/ZigFisher/Glutinium/blob/master/hisi-sample/src/ringfifo.c#L169

      не надо так. Берите младшие 5 бит, у SPS номер 7, а не 67.


    1. olegator99 Автор
      01.07.2018 21:05
      +1

      Класс! Спасибо за ссылки на чатики сообщества.


      Идея сделать универсальное ядро под hisi — огонь, но не представляю как его дружить с модулями отвечающими за видеозахват. Они в SDK идут без исходников, и ооооочень большая вероятность, что они просто не заведутся на свежем ядре.


      Показать наши патчи ядра и uboot — не проблема (хотя они на самом деле минимальны — не думаю, что от них будет какая то польза )


      Проект с удаленым доступом к железу — интересная история, мы тоже ± работаем над похожей задачей. Будет интересно посмотреть, что у вас получается.


      1. ZigFisher
        01.07.2018 21:29
        +1

        Версию ядра мы оставляем какая есть от Хайсиликона под конкретный чип (v1 = 3.0.8, v2 = 3.4.35, v3 = 3.18.20) но собираем всё в среде OpenWrt, что даёт свои преимущества.
        На свежем ядре можно собрать универсальную прошивку, но толку от неё будет мало, т.к. действительно, имеющиеся только в бинарном виде драйвера для видео работать не будут.


        1. olegator99 Автор
          01.07.2018 22:19
          +1

          Ага, еще есть 3.10.x на 3516A/D, но это уже отдельная история...


          А с libc и gcc так же поступаете, или удалось привести к общему знаменателю?


          1. ZigFisher
            01.07.2018 23:18
            +1

            В OpenWrt — общий знаменатель, т.е. меняется только ядро и модули ядра к видео, остальное всё одинаковое.


    1. jaiprakash
      01.07.2018 21:44
      +1

      Конечно пишите статью!


  1. Mobile1
    01.07.2018 21:26

    дел


  1. iTuneDVR
    01.07.2018 22:51
    +1

    Финальный релиз статьи норм.
    Олег молодец!


    1. olegator99 Автор
      02.07.2018 11:02

      Спасибо!


  1. RafaelRS
    01.07.2018 22:52
    +4

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

    Надеюсь разработчиков не обидели ;)


    1. olegator99 Автор
      02.07.2018 11:02

      Спасибо!


  1. geisha
    01.07.2018 23:59

    И на момент старта разработки целесообразно работать только с 1-ним вендором, что бы сосредоточить усилия команды на разработке логики работы с облаком.
    Дальше не читал потому что мои 2-ва глаза выпали.


  1. ivideon
    02.07.2018 01:26

    olegator99, очень крутая статья! Вы большие молодцы!


    1. olegator99 Автор
      02.07.2018 10:56

      спасибо :)


  1. reversecode
    02.07.2018 10:01

    В 2016 году мы стартовали разработку платформы облачного видеонаблюдения для Ростелекома.

    а вы это кто — ivideon?


    1. reversecode
      02.07.2018 10:12

      ага увидел, videocomfort, кстати ссылки с сайта на иос и андроид ведут в космос, приложений нет


      1. olegator99 Автор
        02.07.2018 10:55

        Приложения сейчас называются "Умный дом ростелеком" и "Видеонаблюдение ростелеком". ссылки поправим — спасибо!


        1. AlKozlov
          02.07.2018 14:43

          Также на сайте нет тарифов, регистрация через ВК не работает, при регистрации через ФБ и создании пароля вылазит «Plan не может быть пустым». Сервис videocomfort как самостоятельный продукт не существует больше?


          1. olegator99 Автор
            02.07.2018 20:02

            Новых пользователей к Видеокомфорту больше не подключаем.
            За багрепорты еще раз спасибо — поправим поведение в этом месте.


    1. olegator99 Автор
      02.07.2018 10:51

      Мы это — Рестрим, дочка Ростелекома.


  1. viktordenisenko
    02.07.2018 12:10

    А вот такую камеру вы можете прошить? Она работает с приложением YCC365 www.alibaba.com/product-detail/Motion-detection-alarm-alert-cloud-storage_60740861286.html?spm=a2700.7724838.2017115.23.13b35390Z9KXEK


    1. olegator99 Автор
      02.07.2018 13:21

      Нет. Судя по описанию у нее чипсет Grainmedia 8135S, мы пока его не поддерживаем.


      1. viktordenisenko
        02.07.2018 14:31

        У нас такая проблема: изображение у китайских камер отстает от PTZ свайпа временами до 5 сек. Кроме того, у китайцев выскакивает реклама, а иногда сервис вообще не работает. Поэтому мы хотели сделать свой клиент и свой видеосервис и расположить его на хорошем сервере, чтобы задержку свести к минимуму. Но нет никаких данных о протоколах и как прошить в камеру IP адрес сервера, пароли, серийный номер. Китайцы SDK не дают.
        Можете что-то подсказать? А если у вас получится и эту камеру перепрошить — обязательно сообщите, деньги заплатим :-)


        1. erlyvideo
          02.07.2018 18:56

          погоня за дешевыми камерами тоже имеет свои пределы.

          Имеется ввиду, что можно взять hikvision 3518 вместо аксиса и получить рабочее решение под определенные задачи.

          Но есть сильное подозрение, что на GM (grainmedia) может и не получится сделать приличного решения под какую-либо задачу.


          1. viktordenisenko
            03.07.2018 08:16

            К сожалению, у hikvision нет подходящих камер. Нужна маленькая, легкая, PTZ, с подходящим дизайном. Мы ее ставим на такого робота: boteyes.ru/ToTripRus.aspx.


            1. erlyvideo
              03.07.2018 10:02

              у нас что-то подобного плана валялось в офисе и вроде мы туда даже прошивались.

              Было и на GM и на чем-то ещё. Посмотрю, чего есть.


            1. olegator99 Автор
              03.07.2018 10:22

              Хороший у вас робот — мне понравился :)


              На ali есть широкий выбор недорогих и маленьких PTZ камер ± похожих по дизайну (например такая)[https://ru.aliexpress.com/item/Lintratek-HD-1080-P/32841830056.html]. Но по картинкам и спекам затрудняюсь сказать про то, на каком они чипсете, и насколько хороши.


              1. viktordenisenko
                03.07.2018 11:56

                Мы покупали у 7 китайских производителей камеры для тестирования. Для нас главное — чтобы задержка изображения была менее 1 сек, иначе получается, что робот уже поехал, а по изображению кажется, что он стоит на месте. Вот из этих камер только та, на которую я дал ссылку, самая хорошая. У нее облако на AWS Амазона, но приложение иногда посылает за обновлениями на левые ресурсы, показывает рекламу и камера подключается не сразу. А после обновления может вообще не работать.


                1. olegator99 Автор
                  03.07.2018 22:34

                  Посмотрите — есть ли среди них камеры на hisilicon. Это можно понять либо подключившись к UART — по логу загрузки, либо по маркировке чипа.


        1. olegator99 Автор
          02.07.2018 19:18

          Ну в данном случае перепрошить — означает разработать прошивку для этого чипсета. В это входит как портирование видеоприложения (наиболее сложная задача), так и подготовка системы сборки ядра/рутфс.


          У нас вот пока таких планов нет — лично я не видел ни одной камеры на GM, которую было бы не стыдно предложить клиентам…
          Если на GM появятся более менее приличные по потребительским свойствам камеры — то с удовольствием посмотрим на них более серьезно.


    1. basmaxx
      02.07.2018 19:13

      +100500 Сам несколько лет устанавливал такие камеры: За 1500 руб. получаешь PTZ, хорошую подстветку и двухстороннюю аудисвязь. + в 2 шага без танцев прикручиваются к NAS Synology. Рандомное исходное качество компенсируется низкой ценой. Но над софтом конечно надо поработать, к сожалению сам не осилил, максимум отвязал от китайских облаков.


      1. viktordenisenko
        03.07.2018 08:20

        «максимум отвязал от китайских облаков» — т.е. привязал к другому облаку? Это очень интересно. Можете поделиться идеями?


    1. ZigFisher
      03.07.2018 12:44

      Посмотрите пожалуйста вот тут — zftlab.org/pages/2018010500.html
      Там у меня в ссылках была подборка различной инфо, в том числе о SDK и RTSP демоне на GitHub


      1. viktordenisenko
        03.07.2018 16:40

        ZigFisher, большое спасибо!


  1. kresh
    02.07.2018 12:49

    А работаети ли вы с ip камерами с динамиком, приводами(по осям) и датчиками(освещенность, звук, температура)? Интересует возможность использования такой камеры для умного дома, но со своим приложением.


    1. olegator99 Автор
      02.07.2018 13:19

      Да, работаем. У нас есть поддержка динамика (Push-To-Talk) функционал. Есть поддержка PTZ (тут важна модель камеры, т.к. аппаратно механизм управления моторами сильно отличается от камеры к камере).
      Датчик звука так же есть, это по сути "аудио-аналитика" — модуль в приложении, который мониторит уровень звука на микрофоне, и при превышении порога отправляет событие в облако.


  1. ChemodaH
    02.07.2018 13:34

    Не сочтите за рекламу.
    Мы пользуемся облачным сервисом видеонаблюдения TRASSIR Cloud: cloud.trassir.com
    С ним работaют камеры от 2990р. www.citilink.ru/catalog/photo_and_video/video_observation/cctv_cams/1030858
    olegator99 будет ли ваша прошивка с этими камерами работать?

    Кстати, и для камер HiWatch у них вроде тоже есть облачная прошивка: www.dssl.ru/support/tech/support_ip/cloud.php


    1. olegator99 Автор
      02.07.2018 19:38

      Значит ребята молодцы, и неплохо оптимизировали свой облачный плагин.


      Если камеры на hisilicon (а по внешним признакам это похоже он), то не вижу больших сложностей портировать нашу прошивку на эти камеры...


  1. Sat0shi
    02.07.2018 19:20

    Xiaomi XiaoFang Smart Camera Wi-Fi (FullHD) 1451р + github.com/samtap/fang-hacks/releases (RTSP + печеньки) + ivideon = Profit


    1. olegator99 Автор
      02.07.2018 19:35

      Спасибо за ссылку.
      Если я правильно понял, то что бы работать с ivideon нужна отдельная железка для запуска ivideon сервера


      И итоговое решение будет стоит 1451р + (стоимость железки для запуска ivideon сервера)...


      1. Sat0shi
        02.07.2018 19:57

        Да, подойдёт Неттоп.


        1. olegator99 Автор
          02.07.2018 21:12

          Судя по яндекс маркету минимальная цена на неттоп — 5т.р. итого возвращаемся к решению за 5т.р.+ :)


  1. divanus
    03.07.2018 09:55
    -2

    Зачем в принципе использовать рт или иви для облака? Платить бешенные деньги, когда можно спокойно все своё реализовать — это дешевле. И да, видео писать надо по движению.
    нафиг даже с серым IP все легко и просто решается и такие прокладки как говнодеон и его клон от рт нафиг не нужны. Лет 10 как своё все работает успешно:
    любой говнороутер с прошивкой опенврт, любой опсососвский модем, пара аккумуляторов, бп и говнокамера любая. И всё отлично пашет. За доллар в месяц любой говнохостинг, на котором openSSH развернут. И всё.


    1. AllexIn
      03.07.2018 10:49
      +1

      Вот смотрите.
      У нас два дома рядом, без забора.
      В одном — я, моя жена и ребенок.
      В другом — мои родители, сестра, её муж и дети.

      У нас общая локальная сеть. У нас общая система видео наблюдения.
      НАстроен сервер на Linux + ZM. Проложены IP камеры.
      Я слежу за этим хозяйством.

      Завтра я уехал/умер.
      Что будет?

      Пол года, может год система проживет в лучшем случае без вмешательства. Дальше — гикнется один из винчестеров на сервере, или обновление уронит систему, или сервер отключат и не смогут включить.
      И что делать?
      Админа нанимать?

      А с облачными камерами — работают и работают. В локалку их воткнул, по инструкции настроил и ОК. Если что-то сломалось — пишешь в саппорт. Решаешь проблему. Сломалась камера — выкидываешь, и ставишь новую вместо неё. Любой справится.


  1. Orient
    03.07.2018 11:59

    Могли бы вы объяснить как можно получить образ Linux свой кастомный (под определённое железо). Как получить 3.5 МБ размер? Есть какие-нибудь туториалы?


    1. Craggy
      03.07.2018 12:57
      +2

      Мы используем следующие хинты для уменьшения размера ядра:
      1) Из конфига ядра убрано определённое количество фич в сравнении с конфигом от вендора, которые мы не используем, и которые не влияют на работоспособность.
      2) Все shared libraries (и всё что можно безболезненно) мы стрипаем. Это также рекомендует linuxfromscratch:
      www.linuxfromscratch.org/lfs/view/stable/chapter05/stripping.html
      3) В само ядро мы включаем rootfs: урезанный busybox (дефолтная поставка тоже занимает место). Сама rootfs ужимается с lzma и подключается как initramfs, как написал Олег в статье.


      1. erlyvideo
        03.07.2018 13:44

        а вы (и кто «вы») чего делаете?


        1. Craggy
          03.07.2018 17:16
          +1

          Я с olegator99 работаю в одной компании.


  1. gromka
    03.07.2018 12:03

    Сорян, а зачем каждый раз покупать новые камеры на выборы? Что мешает использовать камеры с прошлых выборов или например с егэ? Отсутсвие отката?


    1. olegator99 Автор
      03.07.2018 22:39

      Тут такое — на самом деле во многих избирательных участках оставались старые ПАК (ноуты с вебкамерами, еще с выборов 2012 года). Они уже морально и физически устарели — сыпались по просту. Все же 6 лет прошло. В основном их меняли.
      P.S. Ну вообще я за технику отвечаю, вопросы про закупки и прочее с этим связанное — это не ко мне.


  1. Balagan
    03.07.2018 13:53

    Можно ссылку на Ваш облачный сервис и список поддерживаемых камер?


    1. olegator99 Автор
      03.07.2018 22:24

      camera.rt.ru — на нем сейчас практически полный спектр моделей Hikvision
      smarthome.rt.ru — тут сейчас только Hikvision vc1w, который достаточно дорогой и на запуске сервиса использовался вариант прошивка Hikvision + наш плагин, а сейчас мы их переводим на нашу прошивку.
      В скором времени +9 моделей начиная от бюджетных моделей на 3518E, с 64MB ОЗУ


  1. ZigFisher
    03.07.2018 14:12

    Из интересных облачных сервисов в последнее время еще неплохо себя зарекомендовал ipeye.ru (не реклама, я там и на них НЕ работаю).
    Ребята написали удачный миниатюрный плагин, при помощи которого интегрируют к себе на сервис камеры различных производителей железа (в том числе «отвёрточных») и по-этому процесс интеграции быстр, лёгок, а так-же может быть протестирован практически на любом железе путём записи плагина в RW раздел, в котором сохраняются настройки камеры. Прайсы этой компании я обсуждать не буду, но бесплатный тариф на просмотр видео с камеры, стоящей далеко и за NAT-ом, крайне радует меня и друзей-гиков. Родное встроенное китайское облако выключено и забыто как страшный сон.

    Еще забыл выше упомянуть, что помимо экспериментов с OpenWrt потихоньку развивается тема и «моддинга» прошивок для XM, JVT, Topsee и прочих производителей видеокамер бюджетного сегмента.


    1. reversecode
      03.07.2018 17:49

      Для подключения камеры к облачному сервису вам не нужно устанавливать специальное программное обеспечение

      ни слова про миниатюрный плагин там нет


      1. ZigFisher
        03.07.2018 18:15

        Это если камеры брать у них или их партнёров-производителей, всё внутри.
        Я-же говорю всего-лишь как это сделано технически (про плагин).
        Ссылки на прошивки под популярные типы плат XM я привёл выше.
        Покупайте плату на Алиэкспесс, заливайте прошивку — и в облака ;)


        1. reversecode
          03.07.2018 18:20

          Я только хотел на мини плагин посмотреть, что то не нашел, как он называется в прошивке?


          1. ZigFisher
            03.07.2018 18:31

            Выполните ps в прошивке, он сразу запущен и на виду.


            1. reversecode
              03.07.2018 19:42

              Да зачем что то запускать, когда хочу только в прошивке посмотреть.
              Нашел ipeye демон, vtund итд да уж…
              Помню в детстве, когда был маленьким меня взрослые научили делать рацию, два спичечных коробка и между ними натягивается нитка
              Эти облачные сервисы сделаны еще похлеще моей рации, webrtc укатается от смеха


              1. ZigFisher
                03.07.2018 20:31

                К проекту ipeye.ru имеет отношение только одноимённый демон, а vtund никакого отношения к ним не имеет.
                Сильно язвить Вам, думаю, не стоит, так как скорее всего Вы даже не читали какие эксперименты проводятся и какие цели преследуются в этих тестовых сборках прошивок, а вот показать или рассказать присутствующим на Хабре о своих, как я понимаю более перспективных и взрослых разработках связанных с Webrtc, дело достойное не мальчика, но мужа…


                1. reversecode
                  03.07.2018 20:46

                  про vtund я упомянул что бы дать понять что я нашел где оно все гуськом лежит
                  да я не только о вас, я озвучил свои мысли по поводу всего что я уже смотрел и наблюдаю в целом о этих облачных видео наблюдениях
                  — а где почитать по какие цели преследуете и эксперименты ставите?


                  1. ZigFisher
                    03.07.2018 20:55

                    Там не только ipeye и vtund, там есть mqtt, ssh/scp, ftp, curl, телеметрия и куча других мелких но полезных фишек интегрировано. Ссылка выше в комменте была моём про ipeye, если не увидели — слово «моддинг».
                    Вариантов облачных наблюдений сейчас уже мешочек разных на самом деле. Просто ipeye своим маленьким демоном гармонично вписался в подборку нашего проекта, а основная суть моего рассказа была в том, что его можно запустить даже не меняя родную прошивку на камере, вот и всё. Если есть возможность сменить прошивку — естественно, все эти разработки становятся ненужны автоматически.


                    1. reversecode
                      03.07.2018 21:53

                      да это все понятно,
                      где почитать по какие цели преследуете и какие эксперименты ставите?
                      или цели — это что то для себя
                      а эксперименты это всяческие сервисы которые туда понапихали в моддинг?


                      1. ZigFisher
                        03.07.2018 22:18

                        Если речь про моддинг — расширение функционала, который детально описан по ссылке выше. Там-же указана и группа в телеграме, в которой присутствуют как разработчики и сотрудники различных сервисов, гуру кодинга и embedded реверс-инжиниринга так и просто интересующиеся. Обмен опытом, поиск неисправностей и багов, обсуждение интересных програмных и аппаратных решений. А в параллельной ветке все наработки постепенно переводятся на OpenWrt рельсы.