Колхозное видеонаблюдение
К сожалению, даже живя в небольшой деревушке, приходится сталкиваться с массой маргинальных личностей, которые так и наровят что-нибудь украсть и где-нибудь нагадить. Особо одаренных не пугает даже расположенная по соседству пасека на сотню ульев.
По этой причине возникла острая необходимость в видеонаблюдении. Задача минимум - снимки с камеры через определенный интервал времени, задача максимум - возможность просмотра видео в реальном времени, датчик движения и архив периодических снимков. Желательно, чтобы решение было масштабируемым, поскольку в дальнейшем планируется охватить подобной системой порядка 100 гектар. Ну и конечно же первостепенный фактор - стоимость.
- Подойдет практически любое б/у устройство, даже не совсем исправное.
- Цена - в пределах 1,5 тысяч рублей за б/у аппарат, что дешевле любой китайской камеры с поддержкой wifi или 3g
- Наличие готового софта, что здорово экономит время, хотя и накладывает определенные ограничения.
- Самодостаточность системы - не нужно роутера, модема и.т.д.
Из минусов могу отметить только один - отсутствие режима ночного видения (решается модификацией телефона или установкой ir прожектора).
Итак, прикинув все за и против, я раздобыл андроид смартфон Мегафон Логин2 за 1500 руб (новый, в упаковке и на гарантии), розетку за 30 руб, аккумуляторные зажимы за 50 руб., чуток кабеля, стабилизатор на 5в, немного старых досок и стеблей какой-то травы. После этого приступил к реализации.
Первым делом был собран вот такой неказистый скворечник
Далее на смартфон было установлено приложение IP Webcam (платная версия). К слову, это лучшая программа для видеонаблюдения под андроид, превращающая смартфон в видеорегистратор. Дополнительно поставил Airdroid, что позволило удаленно скачивать записанные IP Webcam файлы.
В месте монтажа камеры, нормальный 3g обеспечивал только билайн, что наложило определенные ограничения на схему работы. Дело в том, что билайн не предоставляет белых ip физическим лицам, поэтому доступ к камере было решено организовать через сервис Ivideon (ip webcam прекрасно его поддерживает).
Конечно были варианты с пробросом портов через ssh и openvpn туннель, но во первых не обеспечивалась должная скорость работы, во вторых, оба варианта регулярно теряли соединение. Кроме того андроидовский openvpn клиент при каждом запуске спрашивал разрешения. С ssh возникла проблема другого рода - таймаут соединения. Решением стала правка кода ssh (стоило лишь закомментировать пару строк), но, к сожалению, я использовал самый дешевый тариф vps, на котором проброс портов через ssh не работал, как и openvpn, а поскольку система работала в пилотном режиме, я решил не тратить деньги и оставить все как есть, то есть через ivideon, по крайней мере до тех пор пока система не пройдет обкатку.
Для сохранения снимков с камеры, предварительно открытой для публичного просмотра, я использую следующую команду
wget --no-check-certificate -O new.jpg "https://streaming.ivideon.com/preview/live?server=ID Сервера&camera=0&sessionId=demo&q=2"
До этого использовался костыль на phantomjs. Был еще вариант с отправкой снимков непосредственно со смартфона, но для этого необходимо было рутовать телефон, а с этим возиться мне не хотелось.Что касается обнаружения движений, то для этого я использовал программу motiontrack, точнее одну утилиту из этого набора программ - mdiffer (предварительно модифицированный, для выдачи нужного результата). С её помощью сравниваются старый и новый снимок. Если разница превышает заданное число, то новый снимок посредством heirloom-mailx отправляется адресатам. Для экономии трафика, снимки делаются раз в 3 минуты. Архивы за каждый день хранятся столько, сколько нужно.
После того как программная часть была готова, камера была водружена на свое рабочее место. С электричеством подфартило, поэтому для питания была задействована соседская электросеть. Это избавило меня от мороки с заменой и зарядкой аккумуляторов (на 1 плохеньком автомобильном аккумуляторе 40 ампер/часов, смартфон проработал двое суток, при этом напряжение батареи упало с 12 до 8 вольт. Мог бы работать еще не меньше суток, но я не стал дальше мучать аккумулятор).
Общая схема работы выглядит так:
- Камера всегда доступна онлайн.
- Каждые 3 минуты скрип, запускаемый на vps, делает снимок с камеры и сохраняет его на сервере.
- Далее этот же скрипт проверяет соответствие старого и нового снимков и, при наличии расхождений, отправляет снимок на email.
- Дополнительно, при обнаружении движения, камера записывает видео в память смартфона. Если случается какое-то чп, я скачиваю записанные видео через Airdroid.
Данная система была установлена в 2015 году и прекрасно себя зарекомендовала. Лишь зимой 2017 года с камерой случился небольшой конфуз - в корпус попала вода, а в результате весеннего заморозка вода превратилась в лед (как это ни странно) и немного раздавила матрицу телефона. Впрочем, основной функционал телефона не пострадал, поэтому камера продолжает успешно работать в прежнем режиме.