Отправка видео с предзаписью по детектору движения Synology Surveillance Station в Telegram используя Webhook автоматизации действий.
Первое видео с предзаписью, остальные до окончания детекции движения каждые 10 секунд.
- Полу-автоматическая установка контейнера с Python и его настройка
- Установка через docker-compose
- Установка через docker run
- Описание переменных для docker
- Ручная сборка контейнера
- Настройка Surveillance Station
- Проблемные вопросы
- Благодарности
- Пожертвования
В Реестре находим контейнер "ss_to_tg_video" и Загружаем
Переходим в Образы и Запускаем контейнер с Python
Придумываем имя контейнеру (например: Synology-to-Telegram-video)
и включаем автоматический перезапуск
Настраиваем номер порта, на который будут приходить webhook от Synology Surveillance Station при обнаружении движения
(Я выбрал порт 7878, Вы можете выбрать любой, главное чтобы он не был занят Synology или другими сервисами)
Добавляем папку Synology, которая будет доступна в контейнере (на Ваш выбор).
Из Synology я добавил папку Bot в папке docker, а в контейнере она примонтируется под названием /bot
Папка контейнера Обязательно /bot и права чтение/запись!
В разделе Защита окружающей среды вводим свои данные
Переменная | Значение | Описание |
---|---|---|
TG_CHAT_ID | 1234567890 | ID чата Telegram |
TG_TOKEN | 0987654321:AABBCCDDEEFFGGaabbccddeeffgg | Токен бота |
SYNO_IP | 192.168.1.177 | IP адрес Вашего Synology |
SYNO_PORT | 5000 | Порт Вашего Synology |
SYNO_LOGIN | user | Имя пользователя Вашего Synology |
SYNO_PASS | mypass | Пароль пользователя Вашего Synology |
SYNO_OTP | 079444 | ОТР код двухфакторной авторизации. Если этод метод не используется, то не прописываем |
Сеть оставляем bridge.
Проверяем настройки и запускаем контейнер.
ВАЖНО! Если Вы используете двухфакторную авторизацию, то после внесения 6-ти значного кода ОТР у Вас есть 60 секунд до запуска контейнера! Если меняется конфигурация камер или метод авторизации Synology, то необходимо удалить файл syno_cam_config.json (создается при первом запуске контейнера) из папки, которую прописали выше.
Если ввели правильные конфигурационные данные, то Вам в Telegram поступит сообщение с конфигурацией камер.
Cameras config:
CamId: 1 IP: 192.168.1.196 SynoName: Domofon Model: Define Vendor: User
CamId: 2 IP: 192.168.1.187 SynoName: xiaomicam Model: Define Vendor: User
Нас интересует какой CamId у какой камеры.
version: "3"
services:
yacht:
container_name: VideoSsToTg
restart: unless-stopped
ports:
- 7878:7878
environment:
- "TG_CHAT_ID=123456" #id чата, куда отправлять уведомления
- "TG_TOKEN=1234567890:AAAAAAbbbbbbCCCC1234567890abcdefgh" #токен бота, полученного от https://t.me/BotFather
- "SYNO_IP=192.168.1.1" #ip DSM
- "SYNO_PORT=5000" #Порт веб-морды DSM
- "SYNO_LOGIN=login" #логин
- "SYNO_PASS=password" #пароль
- "SYNO_OTP=123" #ОТР код двухфакторной авторизации, если используете. Если нет - удалить.
volumes:
- /docker/bot/:/bot #/docker/bot/ - меняем на свой путь, где будет хранится конфиг с камерами
image: striker72rus/ss_to_tg_video:latest
docker run \
-p 7878:7878 \
-v /docker/bot/:/bot/ \
-e TG_CHAT_ID='123456' \
-e TG_TOKEN='1234567890:AAAAAAbbbbbbCCCC1234567890abcdefgh' \
-e SYNO_IP='192.168.1.1' \
-e SYNO_PORT='5000' \
-e SYNO_LOGIN='login' \
-e SYNO_PASS='password' \
--name ssToTgVideo ss_to_tg_video:latest
Описание
docker build -t название:тэг .
docker tag название:тэг пользователь/название:тэг
docker push пользователь/название:тэг
Пример
docker build -t ss_to_tg_video:v1 . && \
docker tag ss_to_tg_video:v1 striker72rus/ss_to_tg_video:v1 && \
docker push striker72rus/ss_to_tg_video:v1
Warning
ℹ️ Причина:
При обнаружении события Surveillance Station создает видео файл с событием. Части этого файла отправляются в Телеграм начиная с 0 секукды.
При записи 24/7 Surveillance Station создает видео файл длительностью 30 минут. При обнаружении события в течении 30 минут Вы всегда будете получать одно и тоже видео начиная с 0 секукды (т.е. до 29 минут назад).
В Surveillance Station в Правилах действия добавляем новое правило
Вводим удобное Имя
Выбираем нужную камеру
Настраиваем действие Веб-перехватчика
Метод: POST
URL: 192.168.1.177 - IP Synology, 7878 - порт, который был выбран ранее.
Тип содержимого: application/json
Основной текст: {"idcam":"1"} - где 1 это id камеры, который Вы можете узнать из первого сообщения в Telegram.
В моем случае камера Domofon имеет id - 1
Нажимем тест отправки и через 5 секунд вы получите подтверждение и сообщение в Telegram.
Настраиваем расписание действия правила (если надо).
На этом настройка завершена.
Если камер несколько, то необходимо создать для каждой камеры такое же правило, указывая соответствующее камере ID.
- Выполнено! Автозапуск скрипта после перезагрузки Synology.
- Исправлено! (Неправильное поведение скрипта при одновременном обнаружении движения на нескольких камерах длительностью более 10 секунд.) Требуется тестирование на 2 видеокамерах. (в наличии пока одна).
- Отправка видео в несколько чатов, используя ссылку на файл ID Telegram после отправки в первый чат. (загрузка видео осуществляется 1 раз, остальные получают видео через ссылку на сервере Telegram). Протестиравано, будет реализовано.
- Подключение бота Telegram для вкл/выкл режима Home mode Surveillance Station и других функций.
- Surveillance Station умеет вещать видео в режиме Life, но не разобрался еще с Telegram, как это можно использовать.
Спасибо Sergey Dontsov