Задача: При срабатывании движения хочу в Telegram
получать изображения по срабатываемому триггеру. Плюс не просто по движению, а если через ПО настроена отслеживаемая маска, то только тогда мне приходит в Telegram
скриншот захватываемого действия.
У меня программное обеспечение установлено, как VM
внутри гипервизора на базе Debian 10 + Proxmox
либо я в последнее время склоняюсь что поднимать интересующиеся меня сервисы внутри LXC
-контейнера. Но это все мелочи.
Реализую свою задумку.
- В наличии камеры
D-Link DCS-2103
(она у меня вVLAN 7
и имеет адрес192.168.7.101)
- В наличии
VM: srv-motioneye on Ubuntu 18.04 Server
- В наличии VM внутри моей локальной сети с сервисом
TOR + 3Proxy
"Установить и настроить 3proxy + Tor на Zabbix 5.0"
мне это нужно дабы через него соединяться сAPI Telegram
. Я не особо верю, что провайдеры разрешают доступ к заблокированному/разблокированному. Так надежнее.
Шаг №1:
Итак беру прошлую заметку "Обновленное развертывание MotionEye on Ubuntu 18.04 Server"
Шаг №2:
Авторизуюсь в MotionEyE
через URL
-ссылку http://srv-monitoneye:8765
Login: admin
Pass: пустой
после переходу в Setting
и устанавливаю пароль через настройки "General Settings"
Admin username: admin
Admin password: устанавливаю пароль, как 712mbddr@
нажимаю клавишу Enter
, и нажимаю Apply
для применения изменений.
Шаг №3:
Добавляю камеру D-Link DCS-2103
в MotionEyE:
http://srv-motioneye:8765 — user&pass (Login: admin Password: 712mbbdr@)
и нажимаю Войти
, затем нажимаю на "You have not configured any camera yet. Click here to add one..."
, указываю параметры подключения к своей камере
Camera Type: Network Camera
URL: rtsp://172.33.7.101/live1.sdp
Username: Admin
Password: Aa1234567
Camera: RTSP/TCP Camera
и после нажатия на OK
камера, успешно добавляется в Web
-интерфейс:
Отлично!!!
Шаг №4:
Теперь подключаюсь по SSH
к системе Ubuntu 18.04 Server
на которой у меня работает сервис Motioneye и создаю скрипт посредством которого будет вестись отправка изображения мне в Telegram
.
ekzorchik@srv-dbionic:~$ ssh -l ekzorchik srv-motioneye The authenticity of host 'srv-motioneye (172.33.33.116)' can't be established. ECDSA key fingerprint is SHA256:dQT0Jzja8oAYogI6od1ey9lhcfzBaElTh6Bd8WiWyck. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added 'srv-motioneye' (ECDSA) to the list of known hosts. ekzorchik@srv-motioneye's password: Welcome to Ubuntu 18.04.5 LTS (GNU/Linux 4.15.0-99-generic x86_64) * Documentation: https://help.ubuntu.com * Management: https://landscape.canonical.com * Support: https://ubuntu.com/advantage Last login: Sat Nov 7 12:18:55 2020 from 172.33.33.106 ekzorchik@srv-motioneye:~$
Motioneye
работает от имени суперпользователя:
ekzorchik@srv-motioneye:~$ ps aux | grep motioneye root 500 0.4 2.0 416448 41108 ? Ssl 12:54 0:06 /usr/bin/python /usr/local/bin/meyectl startserver -c /etc/motioneye/motioneye.conf root 557 0.0 1.1 185936 23064 ? S 12:54 0:00 /usr/bin/python /usr/local/bin/meyectl startserver -c /etc/motioneye/motioneye.conf root 1223 15.2 2.4 542212 50820 ? Sl 13:12 0:45 /usr/bin/motion -n -c /etc/motioneye/motion.conf -d 5 ekzorch+ 13608 0.0 0.0 15660 1072 pts/0 S+ 13:17 0:00 grep --color=auto motioneye ekzorchik@srv-motioneye:~$
а значит он (суперпользователь) сможет выполнить данный скрипт из любого места какой я пропишу в Web
-интерфейсе.
Итак мой скрипт воплощающий мою задумку:
ekzorchik@srv-motioneye:~$ nano telsend #!/bin/bash #My id Telegram Account CHAT_ID="<MY_TELEGRAM_ID>" #My Token_ID moego Bot'a TOKEN="<MY_TOKEN_BOT>" #Сделать снимок через MotionEyE и сохранить в файле #wget -O http://srv-motioneye:8765/picture/1/current/ -O screen.jpg curl -u 'Admin:712mbddr@' http://srv-motioneye:8765/picture/1/current/ --output screen.jpg PHOTO="/home/ekzorchik/screen.jpg" #My Socks Service in LAN SOCKSIP=172.35.35.8 SOCKSPORT=50001 # команда отправки изображения curl -x socks5://$SOCKSIP:$SOCKSPORT -s -X POST "https://api.telegram.org/bot"$TOKEN"/sendPhoto" -F chat_id="$CHAT_ID" -F photo="@$PHOTO" ekzorchik@srv-motioneye:~$ chmod +x telsend
В скрипте фигурирует URL
адрес вида: http://srv-motioneye:8765/picture/1/current/
— это строка берется если зайти в свойства добавленной камеры в MotionEyE — Video Streaming — Useful URLs
- Snapshot URL — линк формата http://ip:порт motioneye/picture/номер камеры/current/, делает скриншот текущего изображения по запросу (удобно использовать для телеграм бота);
- http://srv-motioneye:8765/picture/1/current/
- Streaming URL — линк формата http://ip:порт камеры/, позволяет по данной ссылке просматривать камеры real-time (тоже можно использовать для телеграм бота в некоторых случаях);
- http://srv-motioneye:8081
- Embed URL — линк формата http://ip:порт камеры/picture/номер камеры/frame/, позволяет по данной ссылке встраивать в web камеры real-time (можно, например, встроить в Home Assistant через iFrame в lovelace).
- http://srv-motioneye:8765/picture/1/frame/
Проверяю, как работает скрипт если запустить его вручную сейчас:
ekzorchik@srv-motioneye:~$ ./telsend % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 47276 100 47276 0 0 45.0M 0 --:--:-- --:--:-- --:--:-- 45.0M {"ok":true,"result":{"message_id":762,"from":{"id":<BOT_ID>,"is_bot":true,"first_name":"<name_bot>","username":"<name_bot>"},"chat":{"id":<my_id>,"first_name":"ekzorchik","username":"aka_ekzorchik","type":"private"},"date":1604776167,"photo":[{"file_id":"AgACAgIAAxkDAAIC-l-m8Oee6uM98rHHTnzaHQe87KPiAAIvsjEb6W04SdUckajeve7sXNFemi4AAwEAAwIAA20AA2aDAAIeBA","file_unique_id":"AQADXNFemi4AA2aDAAI","file_size":16476,"width":320,"height":240},{"file_id":"AgACAgIAAxkDAAIC-l-m8Oee6uM98rHHTnzaHQe87KPiAAIvsjEb6W04SdUckajeve7sXNFemi4AAwEAAwIAA3gAA2eDAAIeBA","file_unique_id":"AQADXNFemi4AA2eDAAI","file_size":47126,"width":640,"height":480}]}} ekzorchik@srv-motioneye:~$
Тем временем на мой смартфон Honor 9X
в Telegram Client
приходит сообщение от моего бота:
Делаю вывод скрипт работает.
Шаг №5:
Перехожу в MotionEyE
и прописываю настройки для добавленной камеры D-Link DCS-2103
Video Device:
Automatic Brightness: ON
Video Resolution: 640x480
Video Rotation: 0
Frame Rate: 0
Motion Detection:
Motion Gap: 5
Captured Before: 1
Captured After: 1
Minimum Motion Frames: 1
Mask: ON
Mask Type: Editable
нажимаю на Edit Mask
у MotionEye
необходимо отмечать зоны, в которых не надо определять движение. Мышкой маркируются красным именно те участки, где не требуется определение движения.
и отмечаю левой кнопкой мыши квадраты
Можно зажать левую кнопку мыши и беспорядочно водить по изображению исключаю область(и).
После нажимаю Save Mask
На заметку:
- Motion Gap — это промежуток в секундах, который система ждет после прекращения предыдущей сработки на движение, и перед началом новой.
- Minimum Motion Frames — параметр, указывающий количество кадров, изменений в которых достаточно для того, чтобы понять, что происходит движение. Так как нам нужна скорость реакции, то цифра тоже маленькая и равняется 5 кадрам.
Motion Notifications:
Run A Command: ON
Command: прописываю /home/ekzorchik/telsend
выглядит это так:
И для внесенения изменений нужно нажать Apply
Шаг №6:
Проверяю, если поднести руку на то место которое я отметил квадратами, то мне в Telegram
клиент придет сообщение от моего бота со скриншотом:
вот на примере второй камеры, в ее роли выступает Смартфон Honor 9X
где опираясь на заметку
я поставил на него приложение и завел в MotionEyE
строка в скрипте для создания скриншота для второй камеры:
#curl -u 'ekzorchik:712mbddr@' http://srv-motioneye:8765/picture/2/current/ --output /home/ekzorchik/screen.jpg PHOTO="/home/ekzorchik/screen.jpg"
Вот только из всего проделанного выше, как-то уже тормознуто срабатывает триггер по маске на действие или скорее всего у меня такие тугие камеры. Нужна нормальная современная.
По-сути можно средствами Web
-интерфейса камеры настроить зоны за которыми вести наблюдение и уже скриптом на основе датчика движения делать скриншот и отправлять в Telegram
.
А так заметка имеет право на существование.
На этом у меня всё, с уважением автор блога Олло Александр aka ekzorchik.