Видеонаблюдение на даче

в 12:11, , рубрики: bash, expect, Hamachi, Raspberry Pi, видеонаблюдение, видеотехника, Настройка Linux, опыт, Серверное администрирование

Обратились ко мне за помощью. Задача стояла: подключить и настроить комплект видеонаблюдения на даче. Опыт в этой сфере был минимальный, баловался дома с USB камерами. И на работе была уже настроенная система с отдельным сервером. Представление было как устроено видеонаблюдение, благо есть опыт в IT сфере.

Для статьи я старался найти оригиналы фото устройств. У некоторых качество хромает. Остальные будут взяты с интернета.

Установку видеонаблюдения начали в 2019 году. Вносили изменения вплоть до конца 2021 года. Интересное началось, когда заказчик захотел проверять камеры из дома.

Часть 1 - монтаж, подключение, настройка

Начнем со знакомства "виновника" маленького приключения.

Комплект видеонаблюдения IP 5Мп Ps-Link KIT-C504IP-POE 4 камеры для улицы
Комплект видеонаблюдения IP 5Мп Ps-Link KIT-C504IP-POE 4 камеры для улицы

Комплект похожий. В состав комплекта входит:

  • Видеорегистратор с жестким диском и встроенным POE

  • 4 уличные IP камеры с ИК-подсветкой

  • Мышь

  • 4 провода по 10м (возможно заказчик отдельно приобретал)

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

Выбрали оптимальные точки для камер и принялись крепить к обшивке дома. Наружная часть дома была сделана из черепицы (Если честно не разбираюсь в стройматериалах). Сверлили ее аккуратно, а то в запасе была только одна штучка такого покрытия. Основа дома была из дерева. Через нее и утеплитель было легко проделать отверстия и попасть внутрь.

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

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

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

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

Часть 2 - все хорошо, но хочется лучше

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

Пораскидав мыслями, еще раз изучив видеорегистратор. Есть у него подключение через порт Ethernet. Значит к интернету подключим. Вопрос следующий, как смотреть камеры удаленно по web-интерфейсу? Связь с интернетом можно настроить, только через роутер с поддержкой 3G/4G модема. Но за серым IP адресом не попадешь на видеорегистратор. Нашлось два способа.

Способ 1. Лежал у меня без надобности Raspberry Pi 2. Можно установить его, и через хамачи настроить подключение.

Способ 2. Тот который мы использовали. Оказался в том, что видеорегистратор имеет свое облачное хранилище на xmeye. А так же есть и приложение для андроид.

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

4G+ (LTE) модем M150-2
4G+ (LTE) модем M150-2

Начали все это дело подключать в связку: видеорегистратор - роутер - USB модем. Началось самое печальное, как ни пробовал настроить подключение на роутере, он не подключался к интернету.

Я подумал, что придется отказаться от этой затеи с интернетом. А может дело в прошивке? Осталось рискнуть и поискать свежую прошивку на роутер. И действительно нашлась. Но даже после обновления, интернет никак не хотел работать.

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

Мы сдали тот роутер и я подобрал другой. Который видите ниже.

D-Link DIR-620S
D-Link DIR-620S

В очередной раз из коробки подключить не удалось. Ищем прошивку. Прошиваем. И наконец нам удается достигнуть цели! С души прям камень упал. Оно работает!

К интернету подключили. На видеорегистраторе добавили учетную запись пользователя. Пришло время настроить приложение на андроид XMEye

Иконка приложения XMEye
Иконка приложения XMEye

Подключение оказалось простым. В видеорегистраторе где информация о системе, есть два QR кода. Один с серийным номером, другой на установку приложения. После добавления в приложение устройства по серийному номеру, запросило логин/пароль. Авторизовавшись под учеткой пользователя мы увидели камеры.

Приложение простое в работе. Есть просмотр камер онлайн. Можно смотреть старые записи. Можно загрузить запись на телефон или сделать снимок. А так же некоторые настройки видеорегистратора, которые доступны с учетной записи админа. Но они не были интересны, т.к. все уже было настроено как надо.

Ну и как же без минусов. Тариф, который устроил, был с лимитным интернетом. Бывало, что кто-нибудь трафик использовал через Wi-Fi и до конца месяца камеры не были доступны.

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

Часть 3 - время спустя

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

Сменили оператора с мегафона на мтс. Там безлимитный интернет, оказалось ловит тоже хорошо. Был один нюанс, не сразу подключился интернет. Как оказалось, USB модем имел свой локальный IP адрес, который конфликтовал с роутером. Пришлось на роутере сменить подсеть, а вместе с ним и перенастраивать видеорегистратор.

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

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

Часть 4 - малинка

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

Идея была такая. Установить на даче мой Raspberry Pi 2, который до сих пор был без надобности (наигрался). И настроить его на перезагрузку роутера, через telnet. Заодно по VPN можно подключить к моему домашнему серверу. Идея супер. Обоим понравилась. Только из всего предложенного я не знал как настроить перезагрузку роутера.

Благодаря гуглу я нашел решение. Expect. Для меня это было открытием.

Expect поддерживает механизм регулярных выражений и основные возможности программирования, позволяющие простым скриптам эффективно управлять такими программами как telnet, ftp, и ssh, не обладающими встроенным скрипт-языком, макросами, или другими механизмами программирования.

https://ru.wikipedia.org/wiki/Expect

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

Raspberry Pi 2 на момент приобретения
Raspberry Pi 2 на момент приобретения

К этому моменту старый корпус развалился. И я сделал импровизированный из нерабочего свича. Выглядит этот франкенштейн сейчас вот так

Колхозный корпус
Колхозный корпус

В качестве ОС выбрал Raspbian Stretch. Скачал я его из архива.

Настраивал систему через SSH, т.к. под рукой не было ничего с HDMI входом. Для включения SSH на малине, нужно создать пустой файл в корне флешки с именем "ssh". После первой настройки осталось напичкать скриптами. Сразу отступлюсь, подключить к домашнему серверу по PPTP не удалось, скорее всего данный протокол не дружит с серыми IP адресами. Поэтому настраивали хамачи.

Первый скрипт "ping.sh" содержал проверку интернет соединения, а затем проверку соединения VPN. Выглядит это так:

#!/bin/bash

# Есть интернет?
if ! /bin/ping -c 1 8.8.8.8
then
# Нету. Перезагружаем роутер
/home/pi/router.sh
fi


# Есть интернет?
if /bin/ping -c 1 8.8.8.8
then

# Есть. А есть VPN подключение? (IP моего сервера в хамачи изменен)
if ! /bin/ping -c 1 25.25.25.25
then
# Нету. Перезапускаем хамачи
/etc/init.d/logmein-hamachi restart
fi

fi

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

Приехали на дачу. Подключили малину. Подключили ноутбук. В настройках роутера включил telnet. Пробуем подключиться. И вуаля, есть приглашение на ввод логина.

Фото сделано уже по удаленке
Фото сделано уже по удаленке

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

Устанавливаю клиет. Запускаю скрипт. Молчание, скрипт завершает работу без ошибок. Ждем перезагрузки роутера. Урааа! Работает!

Скрипт перезагрузки роутера "router.sh" получился таким для D-Link DIR-620S:

#!/usr/bin/expect -f

# Открываем telnet сессию на удалённом сервере, и ждем запроса имени пользователя.
spawn telnet 192.168.2.1

expect "dlinkrouter login:"
# Посылаем имя пользователя и ждем запроса пароля.
send "adminr"

expect "Password:"
# Посылаем пароль и ждем приглашения ввода командного интерпретатора.
send "passwordr"

expect "$"
# Посылаем команду, и ждем следующего приглашения ввода командного интерпретатора.
send "rebootr"

expect eof

Отправка команды выхода не нужна, т.к. при перезагрузке, соединение сбрасывается. И на последок настройка крона:

SHELL=/bin/bash

#Перезагрузка каждый день в 6 утра
0 6 * * * /sbin/reboot

#Проверка интернета при старте системы
@reboot /home/pi/ping.sh

#Проверка интернета каждый час
0 * * * * /home/pi/ping.sh

Еще несколько раз протестировав скрипты, убедились в работоспособности решения проблемы. И вы думаете на этом все? Пока да. Доступ к камерам ни разу не пропадал до сих пор.

Хамачи настраивается довольно таки легко, через dpkg. Пакетный файл можно скачать тут: https://www.vpn.net/linux называется logmein-hamachi_*.*.*.***-*_armhf.deb

Подключение к серверам хамачи:

sudo hamachi login

Добавление в группу (заранее настроенную в личном кабинете):

sudo hamachi do-join ***-***-***

Добавляем в автозагрузку:

sudo update-rc.d logmein-hamachi defaults

Заключение

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

Главное не забывать на даче отдыхать. Спасибо за внимание.

UPD: Борьба с низкой температурой.

Роутер и малинка были помещены в коробку. С расчетом на то, что выделяемого тепла устройствами хватит в замкнутом пространстве. И навсякий случай поместили пару мешочков с влаговпитывающими шариками, взял с работы из коробки нового принтера.

Можно проверить темпаратуру процессора малинки, командой:

vcgencmd measure_temp

Температура процессора в холод достигала 17 'C
Сейчас допустим на улице -6 'C, а температура малинки 25'C
Все это с учетом, что малинка работает без нагрузки.

Автор: Сергей

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js