оповещение

Постов: 4 Рейтинг: 8902
4032

Отправляем снимок с веб-камеры в Telegram при обнаружении движения

Развернуть
На работе возникла идея фиксировать всех кто входит к нам в кабинет до начала и после окончания рабочего дня.


Потребность в этом появилась после того как мы не досчитались двух наборов мелких отвёрток.

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


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


В итоге я это реализовал и решил написать инструкцию для тех кто тоже хочет подобное.


Сразу обозначим два момента:

1. Инструкция адаптирована для варианта когда веб-камера находится физически в одном месте, а сервер - в другом, тогда нужно транслировать поток по сети.

Если у вас и камера и серверная часть будет на одном компьютере или камера изначально сетевая - можно обойтись без пунктов  1 и 2, а сразу перейти к пункту 3.

2. Подразумевается что у вас уже есть свой бот для Telegram, если нет, то вот инструкция:  шаг 1 и 2


Итак, собственно сама инструкция:


1. Подключаем к компьютеру веб-камеру.

2. Устанавливаем на комп YawCam и настраиваем YawCam так:

Отправляем снимок с веб-камеры в Telegram при обнаружении движения
Отправляем снимок с веб-камеры в Telegram при обнаружении движения
Теперь камера ведет трансляцию в потоке MJPEG, далее нужно настроить сервер на котором его будем принимать и обрабатывать дальше.


3. Ставим на другой компьютер/сервер iSpy, добавляем камеру в качестве источника указываем MJPEG

Отправляем снимок с веб-камеры в Telegram при обнаружении движения

4. Далее указываем маску детектора движения, в данном случае это дверь кабинета

Отправляем снимок с веб-камеры в Telegram при обнаружении движения

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

Отправляем снимок с веб-камеры в Telegram при обнаружении движения

6. Указываем запись при срабатывании движения:

Отправляем снимок с веб-камеры в Telegram при обнаружении движения

7. Указываем сохранять снимок с камеры в папку – далее этот снимок будет отсылаться в Telegram

Отправляем снимок с веб-камеры в Telegram при обнаружении движения

8. Для того чтобы сервер не слал фото в Telegram при каждом срабатывании тревоги (открытия двери) – настраиваем расписание так чтобы оно срабатывало только до начала рабочего дня и после окончания рабочего дня, когда кабинет закрыт и никто посторонний заходить не может.

При этом запись видео и снимков все равно будет производиться при каждом срабатывании, но слаться в Telegram не будет.

Отправляем снимок с веб-камеры в Telegram при обнаружении движения

9. Указываем место сохранения файлов.

Отправляем снимок с веб-камеры в Telegram при обнаружении движения

10. Итог выглядит так:

Отправляем снимок с веб-камеры в Telegram при обнаружении движения

11. Самое главное: скрипт отсылки снимка в Telegram.


По какой-то непонятной причине отправка фото в Telegram не срабатывает из PowerShell, приходится использовать curl:

https://chocolatey.org/packages/curl

https://winampplugins.co.uk/curl/


Используем такой скрипт:


pushd e:\Video\IT\video\IT\grabs\

for /f "tokens=*" %%a in ('dir /b /od') do set newest=%%a

popd

set bottoken="ТОКЕН_БОТА"

set chat="ЧАТ_ГРУППЫ"

set File="e:\Video\IT\video\IT\grabs\%newest%"

"c:\Program Files\curl-7.60.0-win64-mingw\bin\curl.exe" -s -X POST "https://api.telegram.org/bot%bottoken%/sendPhoto?chat_id=%ch..." -F photo="@%File%" -F caption="Motion detected on IT-room!"

Где:

1. e:\Video\IT\video\IT\grabs\ - путь до снимков с камеры, которые делаются в момент срабатывания тревоги.

2. %newest% - имя самого последнего снимка с камеры, непосредственно в момент срабатывания тревоги, берется первыми тремя строчками скрипта.

3. bottoken – это токен вашего бота Telegram.

4. chat – это ID вашей группы в Telegram, если есть знак «-» то это группа, без знака «-» это ID пользователя, т.е. шлем либо в личку либо в группу.

5. %File% - переменная путь+имя файла снимка, которые и отправляются в Telegram последней командой в скрипте.


12. Итоговый результат:

Отправляем снимок с веб-камеры в Telegram при обнаружении движения
1325

Сбербанк, ну, не до такой же степени? :-)

Развернуть
Вчера приходит смс от Сбербанка (реально от них, не мошенники): "Уважаемый клиент, срок действия Вашей карты истекает 28 февраля. Поскольку Вы давно ей не пользовались, она не будет перевыпущена автоматически".
Ну, спасибо, конечно, за напоминание, хотя я это и сам прекрасно знаю. Но вот насчет "давно не пользовался"...
Во-первых, у меня на эту карту начисляется зарплата. Во-вторых, к этой карте подключены 5 автоплатежей, включая мобильный банк. И в-третьих, я всего два дня назад, в пятницу, снимал с этой карты наличные.
Понятное дело, что все эти оповещения шаблонные, но не до такой же степени? :-)
169

В случае опасности - продолжай спать

Развернуть
В случае опасности - продолжай спать
3376

Внимательность

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