Делаем свою систему наблюдения и видеорегистрации
пост написан и отправлен в печать 2011-12-08 примерно в 10:11
Кроме всех известных и неизвестных науке способов заработка в интернете (вентиляторы москва кондиционеры купить ильхамзюлькорнеев download free), у меня есть и оффлайновое место работы. Невообразимо! Причем расположено оно в, мягко выражаясь, неблагоприятном спальном районе, населенным продуктами генной мутации, родившимися и выросшими под воздействием пивных и сигаретных продуктов. И даже учитывая то, что в помещении практически постоянно дежурит охранник с татуировкой Пятак на пальцах левой руки, хотелось дополнительно перестраховаться. Хотя бы от того же Пятака. В итоге было решено своими силами сделать какую-то простую систему видеонаблюдения с регистрацией посторонних, которые шароебятся у дверей в неположенное на то время. Конечно, идеальным вариантом могла быть стать какая-то проводная DVR система, но помещение сравнительно большое и тянуть провод не представлялось возможным по куче разных причин. Именно поэтому я и начал поглядывать в сторону беспроводных IP камер, опыт покупки которых я уже имел. По сути, а IP камера - микрокомпьютер на ARM процессоре с embedded linux, wi-fi адаптером и web-мордой. Разумеется, искать что-либо в пределах Украины не представляется возможным, тут даже пластмассовый прыщеблядский длинк-хуелинк с одним только ethernet портом стоит каких-то дурных неадекватных денег. А вот на ебее или дилэкстриме предложений хоть жопой жуй. Я остановил свой капризный и требовательный выбор на вот таком варианте. Сделан он достаточно хорошо, качество видеопотока тоже радует глаз, но давайте обо всем по порядку.

Прежде всего, забрав свои камеры с почты, продумайте место их крепления. Я советую прикрутить их где-то под навесом, потому что место соединения провода с самой камерой вызывает уж очень сильные подозрения в обещаниях 100% гидроизоляции. Рекомендую залить туда немного силикона, которым обычно герметизируют швы в ванной (водой заливать не будет, а гибкость сохранится), либо, за неимением последнего, замотать это основание провода изолентой. Одним из минусов IP камер является необходимость их питания, обычно это что-то около 9-12 вольт на 1-1,5 ампера. Ну в любом случае вам бы пришлось тащить провод до видео регистратора, так что ищите перфоратор с хорошим сверлом и, смахнув скупую мужскую слезу по красивому оформлению внутренних стен, начинайте бурить. К слову, сотрудники вашего покорного слуги узнали много новых выражений и их сочетаний, ведь непосредственно мне выпала огромная честь перфорировать стену из 50 сантиметров качественного, теплого, лампового армированного бетона с шильдиком "сделано в СССР с любовью" нахуй. Подобные воспоминание еще долго будут заставлять меня кричать во сне. Скорее всего, вам понадобится распределительная коробка (я не знаю, как это называется эта пластмассовая хрень, детальней увидите на фотографиях в конце поста). На конце подобной камеры есть такая вот кишка с эзернет портом и бурить дыру с диаметром 10 см. вам конечно же не захочется. Еще одним конструктивным недостатком является наличие очень слабой ноги крепления. В частности в месте ее соединения с диском, который прикручивается к стене. Китайцы сэкономили и банально сделали две гайки, которые с двух сторон прижимают этот диск. Конечно же эти гайки крутятся в одну и ту же сторону, и, без каких-либо сложностей, камера откручивается от стены и уносится в неизвестном направлении с целью перепродажи или надругательства над вашей частной собственностью. В этом моменте советую деформировать резьбу после закручивания гайки и запаять ее. После этого садится как опытная шлюха на моряка дальнего плаванья, и без стремянки с шуруповертом вашу систему охраны спиздить становится достаточно проблематично. Важным моментом является ограничение свободного доступа к заднице камеры. Ведь если кто и заберется к вам "на огонек", то ему ничего не будет стоить ловким движением руки перерубить кабель питания, оставшись при этом незамеченным. Вообще, защита это достаточно хлипкая. Достаточно купить или собрать направленную шумелку в частотном диапазоне на 2,4Ггц, забить wifi канал и спокойно обойти данную систему наблюдения. Но тут вопрос уже совершенно другого порядка: лично я устанавливал камеры больше для психологического эффекта. Сами понимаете, если захотят залезть и что-то спиздить, то сумеют пробраться даже в Форт Нокс, а всяких малолеток и патологических придурков серьезная железная камера, мигающая светодиодом, хорошо отпугивает. Между прочим, китайцы лепят на свои камеры ик-диоды, ночью все видно великолепно, как днем прямо, но в ЧБ. За это им отдельный пламенный респект. И еще, если у вас есть другие способы защиты, то можете просто поискать на ебее по запросу "fake camera". Выглядят некоторые экземпляры даже покруче настоящих, мигают светодиодом и умеют пищать при приближении к ним. 

Но нас подделки не интересуют, мы любим все настоящее, поэтому продолжим. После подключения ваших камер к эзернет порту для настройки, вы можете впасть в состояние когнитивного диссонанса. На камерах в заводских настройках установлен статический IP 192.168.1.100 и, если для своей домашней сети вы выбрали что-то в диапазоне 10.255.255.255, то кукиш вам, а не веб морда. Веб интерфейс выглядит стандартно практически на всех камерах. Хороших фишек в нем много, но, как и все китайское, работает оно очень эммммм по-особенному. В идеале, если отличная функция Alarm, которая определяет шевеление в зоне видимости камеры и умеет отправлять картинки негодяя вам в почтовый ящик или же загружать их на FTP, а что самое важное - разрешает делать это по расписанию. В идеале. В жизни все работает хуй как пойми. Шедулер там просто для красоты, на FTP в пассивном режиме ничего не загружается, а на почту письма падают постоянно одни и те же.  И да, если собираетесь подключать данную камеру к wifi, то не забудьте в настройках вашего роутера Encription для WPA2-PSK выставить в значение TKIP. Это поможет китайскому говну не терять подключение к сети каждые надцать минут. Не стоит забывать и про то что wifi - радиосигнал, который имеет неприятное свойство теряться в куче железобетонных конструкций. Для этой цели советую докупить для вашего рутера дополнительную усиливающую антенну, прыщеблядский длинк продает подобное. После подключения и настройки всех жизненно важных параметров мы можем приступать к настройке и разработке ПО.

Так как веб морда камеры своей функциональностью нас тотально разочаровала, то писать свою обезьянку, следящую за камерами и отлавливающую праздно шатающихся, мы будет на python. Для меня самым сложным в этой всей затее казалось распознавания движения на изображении, что, впрочем, решилось тремя строками кода благодаря великолепной библиотеке PIL. Все эти ваши GD и ImageMagic-и и в подметки не годятся. Сначала я сделал это на анализе кадров из mjpeg потока, но подобная трата ресурсов оказалось излишеством. В двух словах, сейчас мы просто сравниваем два изображения с камеры с секундным интервалом и получаем разница уровней по R, G и B каналам. При нормальных условиях отсутствие движения дает значение около тройки, при попадании чего-либо крупного в кадр значение возрастает где-то до 15-50 в зависимости от размеров объекта. Все перепады освещения, тараканы и миниатюрные цирковые карлики легко отрубаются повышением уровня чувствительности. Код демона можно посмотреть. Логика состоит в том, что в "неположенное" время при обнаружении движения мы сохраняем изображение и каждые 5 минут отсылаем 10 последних картинок со злыми криминальными рожами на электронную почту "Большого брата", ну в смысле вам. Код не комментирован, но думаю, что сложностей возникнуть не должно. И да, советую запроксировать выдачу jpeg через тот же proxy-pass в nginx с включенной буферизацией. Сам поток камеры любит умирать, если его нагрузить двумя-тремя запросами одновременно. Издержки цены, так сказать. С радостью отвечу на все ваши вопросы, отправленные по адресам в шапке блога. Спасибопожалуйста.

Фотографии сабжа можно посмотреть в пикасе.