3 заметки с тегом

motion

Создание бота Telegram

Для чего мне это понадобилось? Как писал ранее, телефон не всегда почему-то проверяет почту, несмотря на заданный минимальный интервал проверки. Более удобным показалось использовать telegram для срочных оповещений. Задавшись этой целью, установил на сервер telegram-cli, который, как оказалось позднее, не понадобился. Снесу, однако :-)
Для начала создаем бота при помощи @BotFather. Задаем ему имя и описание. Я также задал и юзерпик для красоты. Открываем чат с этим ботом, набрав в браузере ссылку https://t.me/<имя_вашего_бота>. Затем нужно узнать ваш идентификатор. Для этого я воспользовался ботом @userinfobot, вы можете использовать другие методы. В принципе, вся нужная информация у нас есть.
Следующей задачей стала отправка сообщений из скрипта linux. Здесь нам поможет стандартный curl. После серии опытов обрисовалось примерно вот такое тело скрипта:

ChatID=*****
BotToken=******
Text="Hello, world!"

curl -s -X POST "https://api.telegram.org/bot$BotToken/sendMessage" -F chat_id="$ChatID" -F text="$Text"

Здесь ChatID, BotToken и Text — ваш идентификатор в telegram, токен бота, который вам выдали при его создании, и текст сообщения, соответственно. Хочу обратить внимание на то, что переменные в строке curl взяты в двойные кавычки. Это сделано для того, чтобы избежать утери части текста, если в нем присутствуют пробелы.
С текстом разобрались, остается отправка фотографии. Здесь все чуть-чуть сложней:

curl -s -X POST "https://api.telegram.org/bot$BotToken/sendPhoto" -F chat_id="$ChatID" -F photo="@$1" -F caption="$Text"

Добавился еще один параметр photo, в который передается имя файла. Полный путь к файлу у меня передается самому скрипту, поэтому просто используем его. Также параметр text из предыдущего примера я заменил на необязательный caption — название фото.
На текущий момент motion оповещает меня об обнаружении движения, чуть позже присылает фото и ссылку на файл с записью. В планах еще добавить обнаружение лиц на фото, чтобы было видно кто пришел или ушел. Следующим шагом может стать, например, автоматическое включение моего компьютера когда прихожу домой.

Настройка motion

Так как незадолго до этого мой сервер «приказал жить» (оказалось, что проблема в кабеле питания камеры, но сейчас не об этом), то заодно заново установил систему и, соответственно, перенастраивал половину программ. В том числе и motion.
После настройки оказалось, что в кадре присутствуют помехи, на счет которых у меня была мысль. Но проверить ее удалось только вчера. И действительно, оказалось, что я подключил питание камеры к кабелю, на котором было расположено питание жесткого диска, который и создавал наводки в питании камеры. Переключение на другой кабель устранило эту проблему.
Затем вспомнил, что давно хотел ускорить получение сообщений о появлении движения в поле зрения камеры. Самым подходящим для этого показался Telegram. Поиск соответствующих пакетов в репозитории выдал результат в виде пакета telegram-cli. После его установки никак не получалось его активизировать. По идее, после запуска программы она должна выдать запрос на авторизацию, но ничего не происходило. Процесс висел достаточно продолжительное время, после чего просто выдавал сообщение о крахе. «Игры» с ключами ни к чему не привели, результат был таким же. Вопрос в чат разработчиков остался без ответа. Остается только оставить такой же вопрос на форуме и надеяться на то, что хоть кто-то ответит на него. И, конечно, гуглить, яндексить и так далее...

2017   motion   telegram   неудача   ошибка

Установка видеонаблюдения

Первоначальные испытания

Все подготовительные работы завершены, камера установлена, программное обеспечение тоже. Все работает, все снимает, можно просматривать в «онлайн» режиме. А теперь как все это было.
Установка кронштейна для камеры никаких проблем не вызвала — пробурил три отверстия, два их них пришлось делать неглубокими, бур во что-то уперся и ни в какую не хотел идти дальше. Ладно, мне и половинной глубины хватит, камера легкая. После закрепления камеры проверил как она держится и остался вполне доволен результатом. Кабель для подключения со стоны камеры был распаян еще раньше, поэтому мне оставалось только осуществить подключение. Затем проложил его до сервера, обрезал лишнее, распаял второй конец и подключил к серверу. Во избежание лишних проблем сервер перед подключением выключил.
Затем настала очередь программного обеспечения. Поначалу был установлен ZoneMinder. Настроил его на использование сигнала с ТВ-тюнера, указал с какого входа его брать и... в принципе, на этом основная настройка была завершена. Но потом я несколько дней бился с проблемой отображения «живой» картинки с камеры — ее просто не было. И так подходил к проблеме, и этак — ни в какую. Общение на форуме с одним из разработчиков показало, что мне не хватает... видеокарты в сервере. Этот момент я слегка не понял, но, в любом случае, покупка и установка дополнительных плат в сервер меня не устраивала. К тому же в ZoneMinder обнаружился еще несколько моментов, которые меня тоже не устраивали:

  1. создание нескольких событий (и, соответственно, видеофайлов) в журнале, если в движении была пауза;
  2. всё событие сохранялось в куче jpeg-файлов (момент спорный, но все же);
  3. не было также нормального отображения события в формате видео;
  4. для выгрузки/создания видеофайла нужно было лезть достаточно далеко, чтобы нажать соответствующую кнопку;
  5. нет возможности создать свою реакцию на событие.

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

  1. Есть возможность задать длительность паузы между двумя событиями. В этом случае два события считаются одним и записываются в один видеофайл;
  2. событие сохраняется в куче jpeg-файлов, которые, впрочем, затем можно удалить автоматически;
  3. есть «живой» просмотр камеры, наличие/отсутствие видеокарты не сказывается никак;
  4. видеофайл создается автоматически сразу по завершении события;
  5. на каждый «чих» можно задать свою реакцию.

С motion поначалу тоже пришлось поразбираться. Например, не мог понять почему jpeg-файлы создаются в максимальном качестве, а в видеофайле картинка в виде «квадратов». Решилось увеличением скорости потока видео. Размер видео оказался снова привязан к числу 16, но в файле конфигурации можно указать число кратное 8-ми. В этом случае программа изменит разрешение на ближайшее 16-тикратное. Были еще несколько моментов, но это были лично мои предпочтения, поэтому не буду их описывать.
Так как видео создается автоматически, оставалось только создать реакцию на конец создания видеофайла. В моем случае ей стало выполнение нескольких действий:

а) удаление «старых» файлов jpeg, из которых было создано видео;
б) отправка сообщения на электронную почту о событии с именем созданного файла.

Изначально сообщение «повесил» на одноименное событие, но оказалось, что оно происходит каждый кадр, поэтому писем было более сотни за раз.
Следующее, что мне захотелось, это просматривать камеру с телефона на android и с компьютера. Для телефона нашлась программа SimpleMjpegView. Единственным ее недостатком можно считать то, что показывать она может только одну камеру, для всех других придется переписывать путь подключения. Для Windows также нашлась «легкая» и простая в использовании программа SecurityCamViewer. Ее настройка, так же как и многих других подобных программ, производится в единственном конфигурационном файле, открыть который можно в обычном блокноте.
Еще одна «хотелка», которую я пока что не реализовал, остается выгрузка avi-файлов куда-нибудь в облако. Для пущей сохранности и увеличения доступности.